--- cmucl-20a-20090928.orig/Makefile +++ cmucl-20a-20090928/Makefile @@ -0,0 +1,118 @@ +RELEASE=20a +BRANCH="20a-release" + +.PHONY : clean + +ifeq ($(origin DESTDIR), undefined) +DESTDIR=/ +DESTCMU=/ +DESTSRC=/ +DESTCLM=/ +else +DESTCMU=$(DESTDIR)cmucl/ +DESTSRC=$(DESTDIR)cmucl-source/ +DESTCLM=$(DESTDIR)cmucl-clm/ +endif + +all: + rm -rf target || true + ./src/tools/create-target.sh target linux_gencgc x86 || true + ./src/tools/build-world.sh target + ./src/tools/rebuild-lisp.sh target + ./src/tools/build-world.sh target + ./src/tools/load-world.sh target "CVS $(RELEASE) $(BRANCH) + minimal debian patches" + ./src/tools/build-utils.sh target + + +doc: + (cd src/docs && make all) + +install-dep: + install -g root -o root -m 0755 target/motif/server/motifd \ + $(DESTCLM)usr/lib/cmucl/ + install -g root -o root -m 0644 target/interface/clm-library.sse2f \ + $(DESTCLM)usr/lib/cmucl/subsystems/ + install -g root -o root -m 0644 target/clx/clx-library.sse2f \ + target/hemlock/hemlock-library.sse2f \ + target/pcl/gray-streams-library.sse2f \ + target/pcl/simple-streams-library.sse2f \ + target/pcl/iodefs-library.sse2f \ + target/pcl/gray-compat-library.sse2f \ + $(DESTCMU)usr/lib/cmucl/subsystems/ + install -g root -o root -m 0644 src/lisp/*.h target/lisp/*.h target/lisp/*.map target/lisp/*.nm \ + $(DESTCMU)usr/lib/cmucl/include/ + install -g root -o root -m 0644 \ + own-work/hemlock11.cursor own-work/hemlock11.mask \ + $(DESTCMU)usr/lib/cmucl/ + install -g root -o root -m 0644 \ + own-work/site-init.lisp \ + $(DESTCMU)etc/common-lisp/cmucl/ + install -g root -o root -m 644 own-work/install-clc.lisp \ + $(DESTCMU)usr/lib/cmucl/ + ln -s /etc/common-lisp/cmucl/site-init.lisp $(DESTCMU)usr/lib/cmucl/ + install -g root -o root -m 0644 target/lisp/lisp-sse2.core $(DESTCMU)usr/lib/cmucl/lisp-sse2-dist.core + install -g root -o root -m 0755 target/lisp/lisp $(DESTCMU)usr/bin/cmucl + install -g root -o root -m 0644 src/tools/config.lisp src/code/generic-site.lisp \ + target/lisp/lisp.nm target/lisp/lisp.map target/lisp/internals.h \ + target/lisp/internals.inc $(DESTCMU)usr/lib/cmucl/ + install -g root -o root -m 0755 own-work/cmucl-script.sh $(DESTCMU)usr/lib/common-lisp/bin/cmucl.sh + install -g root -o root -m 0755 own-work/cmucl-run $(DESTCMU)usr/bin/cmucl-run + install -g root -o root -m 0644 own-work/binfmt $(DESTCMU)usr/share/binfmts/cmucl + install -g root -o root -m 0444 src/general-info/cmucl.1 $(DESTCMU)usr/share/man/man1/cmucl-lisp.1 + install -g root -o root -m 0444 src/general-info/lisp.1 $(DESTCMU)usr/share/man/man1/cmucl.1 + install -g root -o root -m 0444 src/general-info/lisp.1 $(DESTCMU)usr/share/man/man1/lisp.1 + install -g root -o root -m 0444 own-work/cmucl-run.1 \ + $(DESTCMU)usr/share/man/man1/cmucl-run.1 + install -g root -o root -m 0444 src/pcl/simple-streams/external-formats/*.lisp \ + $(DESTCMU)usr/lib/cmucl/ext-formats/ + install -g root -o root -m 0444 ./src/i18n/unidata.bin \ + $(DESTCMU)usr/lib/cmucl/ext-formats/ + +install-indep: + install -g root -o root -m 0644 own-work/cmucl-graystream.asd \ + $(DESTSRC)usr/share/common-lisp/source/cmucl-graystream/cmucl-graystream.asd + install -g root -o root -m 0644 own-work/cmucl-clx.asd \ + $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/cmucl-clx.asd + (cd src ; find . -name "*.lisp" -and -type f | tar --create --file=- --files-from=- ) | \ + (cd $(DESTSRC)usr/share/common-lisp/source/cmucl/ ; tar --extract --file=- ) + chown root.root -R $(DESTSRC)usr/share/common-lisp/source/cmucl/ + find $(DESTSRC)usr/share/common-lisp/source/cmucl/ -type f -print0 | xargs -0 chmod 0644 + find $(DESTSRC)usr/share/common-lisp/source/cmucl/ -type d -print0 | xargs -0 chmod 0755 + install -g root -o root -m 0644 src/clx/*.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/ + install -g root -o root -m 0644 src/code/clx-ext.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/ + install -g root -o root -m 0644 src/hemlock/charmacs.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/ + install -g root -o root -m 0644 src/hemlock/key-event.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/ + install -g root -o root -m 0644 src/hemlock/keysym-defs.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/ + install -g root -o root -m 0644 src/clx/debug/*.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/debug/ + install -g root -o root -m 0644 src/clx/demo/*.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/demo/ + install -g root -o root -m 0644 src/clx/test/*.lisp $(DESTSRC)usr/share/common-lisp/source/cmucl-clx/test/ + install -g root -o root -m 0644 src/pcl/gray-streams* $(DESTSRC)usr/share/common-lisp/source/cmucl-graystream/ + install -g root -o root -m 0644 src/hemlock/*.lisp \ + src/hemlock/XKeysymDB \ + src/hemlock/compilation.order \ + src/hemlock/hemlock.log \ + src/hemlock/hemlock.upd \ + src/hemlock/hemlock11.cursor \ + src/hemlock/hemlock11.mask \ + src/hemlock/mh-scan \ + src/hemlock/notes.txt \ + src/hemlock/perq-hemlock.log \ + src/hemlock/spell-dictionary.text \ + src/hemlock/things-to-do.txt \ + $(DESTSRC)usr/share/common-lisp/source/cmucl-hemlock/ + +new-gen: + rm -rf target || true + ./src/tools/create-target.sh target linux_gencgc x86 || true + ./src/tools/build-world.sh target bin/lisp + ./src/tools/rebuild-lisp.sh target + ./src/tools/build-world.sh target bin/lisp + ./src/tools/load-world.sh target "CVS $(RELEASE) + minimal debian patches" + ./src/tools/build-utils.sh target + cp target/lisp/lisp target/lisp/lisp.core bin/ + +clean: + find . -name "*~" -or -name ".#*" | xargs rm ; true + rm -rf target || true + (cd src/docs && make clean) + --- cmucl-20a-20090928.orig/own-work/Pre-Release-Check.sh +++ cmucl-20a-20090928/own-work/Pre-Release-Check.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +cmucl -batch -noinit -eval '(unix:unix-exit 0)' +cmucl -batch -noinit -eval '(require :gray-streams) (unix:unix-exit 0)' +cmucl -batch -noinit -eval '(require :clx) (unix:unix-exit 0)' +cmucl -batch -noinit -eval '(require :clm) (unix:unix-exit 0)' +cmucl -batch -noinit -eval '(require :hemlock) (unix:unix-exit 0)' --- cmucl-20a-20090928.orig/own-work/README.documentation +++ cmucl-20a-20090928/own-work/README.documentation @@ -0,0 +1,22 @@ +The documentation is in +/usr/doc/cmucl +/usr/man/man1/cmucl.1 +/usr/man/man1/lisp.1 +/usr/info + +I haven't included the Common Lisp HyperSpec (TM), from the +The Harlequin Group Limited. They have given permission +to copy etc the files. It is a hypertext HTML reference +to ansi-common lisp. This is meant as a guide and in +case of disputes the book is always right. I've included +the legal file here. (in README.hyperspec) + +You should just untar the file in /usr/doc/cmucl/HyperSpec, +that's all. + +If you find errors in the docs (or in the program), +don't hesitate to email me. The better the documentation +and the tutorials, the more people will be rescued from +the horrors of C++. + +Peter --- cmucl-20a-20090928.orig/own-work/differences-with-the-hyperspec +++ cmucl-20a-20090928/own-work/differences-with-the-hyperspec @@ -0,0 +1,5 @@ +These are the main differences between CMUCL and the HyperSpec: + +- * is a standard-type, everything is member of this type. This is + done to make the parsing of complex types, like (array *), easier. + --- cmucl-20a-20090928.orig/own-work/README.single-image +++ cmucl-20a-20090928/own-work/README.single-image @@ -0,0 +1,5 @@ +The cmucl-normal, cmucl-safe and cmucl-small images have +been replaced with the standard cmucl image to increase +compatibility and due to the fact that the normal image +now contains much of the features of the custom images. + --- cmucl-20a-20090928.orig/own-work/site-init.lisp +++ cmucl-20a-20090928/own-work/site-init.lisp @@ -0,0 +1,91 @@ +;;; -*- Mode: Lisp; Package: System -*- +;;; +;;; ********************************************************************** +;;; This code was written as part of the CMU Common Lisp project at +;;; Carnegie Mellon University, and has been placed in the public domain. +;;; + +;;; Heavy modifications by Peter Van Eynde + +(in-package "SYSTEM") + +(if (probe-file "/etc/lisp-config.lisp") + (load "/etc/lisp-config.lisp") + (format t "~%;;; Hey: there is no /etc/lisp-config.lisp file, please run \"dpkg-reconfigure common-lisp-controller\" as root")) + +;;; If you have sources installed on your system, un-comment the following form +;;; and change it to point to the source location. This will allow the Hemlock +;;; "Edit Definition" command and the debugger to find sources for functions in +;;; the core. +(setf (ext:search-list "target:") + '( + "/usr/share/common-lisp/source/cmucl/" ; object dir + )) + +(setf (ext:search-list "library:") '("/usr/lib/cmucl/")) +;;; for safety... + +;;; optional extentions to the lisp image: delete if you +;;; don't like them :-). +(in-package :common-lisp-user) + +;;; newbie functions, delete if you don't like them +(defun help () + (format t "~ +Welcome to CMUCL for Linux. + +If you aren't running this with ilisp in emacs, +or aren't intending to use hemlock then you +deserve to lose. :-) + +Read the documentation in /usr/share/doc/cmucl. + +(quit) is to quit. +(ed) starts hemlock (if installed) +(demo) shows a list of demos +(describe 'progn) gives information about progn for + example. +(inspect '*a*) interactively inspects *a* for example. +")) + +(defun demo () + (format t "Some demos are in the source package, some in the +normal package. + +General demos: +CLX demos: + (require :clx) + (load \"/usr/share/common-lisp/source/cmucl-clx/demo/hello.lisp\") + + (xlib::hello-world \"\") + (load \"/usr/share/common-lisp/source/cmucl-clx/demo/menu.lisp\") + (xlib::just-say-lisp \"\") + (xlib::pop-up \"\" + '(\"Linux\" \"FreeBSD\" \"OpenBSD\")) + exit by pressing control+C followed by a keypress. + +Clue demos: + if you have installed the clue package you can do: + (clc:clc-require :clue) + (load \"/usr/share/common-lisp/source/clue/examples/menu\") + (clue-examples::beatlemenuia \"\") + (clue-examples::pick-one \"\" + \"One\" + \"Two\" + \"Three\") + (clue-examples::just-say-lisp \"\") + + or you can use the Clio demos: + (clc:clc-require :clio) + (clc:clc-require :clio-examples) + (clio-examples::sketch :host \"\") + +Pictures demos: + (clc:clc-require :pictures) + (load \"/usr/share/common-lisp/source/pictures/examples/road-demo\") + (pictures::road-demo) + press control-a to animate + +")) + + --- cmucl-20a-20090928.orig/own-work/cmucl-script.sh +++ cmucl-20a-20090928/own-work/cmucl-script.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +if [ ! -f /usr/share/common-lisp/source/common-lisp-controller/common-lisp-controller.lisp ] ; then + cat < /dev/null` ; then + cat <= index length))) + (declare (type (unsigned-byte 32) addr) + (type (unsigned-byte 29) index)) + (format t "0x~8x : 0x~8x~%" addr (aref stack index))) + (format t "Stack pointer: 0x~x~%" (aref stack 0)) + (format t "Return address: 0x~x~%" (aref stack (- length 2))) + (format t "Frame pointer: 0x~x~%" (aref stack (- length 1))))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;; Multi-process example. + +;;; All the processes are going to write to the standsard output. Use +;;; an output lock to prevent conflict; also provides a good test. +(defvar *output-lock* nil) + +;;; Results stack. +(defvar *results* nil) + +;;; Do some time consuming work. Occasionally write out some results, +;;; and when done place the result the the *results* stack. +(defun work (itter msg) + (declare (fixnum itter)) + (let ((sum 1d0)) + (declare (double-float sum)) + (do ((i 0 (1+ i))) + ((> i itter)) + (declare (fixnum i)) + (dotimes (i 1000000) + (declare (fixnum i)) + (incf sum 1d-6) + (incf sum 1d-6)) + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "~a ~d ~s~%" msg i sum)) + ;; May want to yield occasionally if an interrupt isn't going to + ;; force a yield. + #+nil (process-yield)) + (push sum *results*))) + + +;;;; +;;; Test catch, unwind, throw. +(declaim (double-float *work2-sum*)) +(defvar *work2-sum* 0d0) + +(defun work2 (itter msg) + (declare (fixnum itter)) + (let ((*work2-sum* 0d0)) + (do ((i 0 (1+ i))) + ((> i itter)) + (declare (fixnum i)) + (dotimes (i 100000) + (declare (fixnum i)) + (incf *work2-sum* (catch 'work2-sum + (work2b)))) + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "~a ~d ~s~%" msg i *work2-sum*)) + ;; May want to yield occasionally if an interrupt isn't going to + ;; force a yield. + #+nil (process-yield)) + (push *work2-sum* *results*))) + +(defun work2b () + (unwind-protect + (work2c) + (incf *work2-sum* 1d-6))) + +(defun work2c () + (unwind-protect + (work2d) + (incf *work2-sum* 1d-6))) + +(defun work2d () + (unwind-protect + (throw 'work2-sum 1d-6) + (incf *work2-sum* 1d-6))) +;;;; + +;;; Some process will require a lock to do any work. +(defvar *work-lock* nil) + + +(declaim (fixnum *int-count*)) +(defvar *int-count* 0) + +(declaim (fixnum *count* *local-count*)) +(defvar *count* 0) +(defvar *local-count* 0) + +(defun tst (&optional (scale 1)) + (init-multi-processing) + ;; Start the yield interrupt - for the brave. + (start-sigalrm-yield 0 5000) + ;; + (setf *output-lock* (make-lock "Output lock")) + + ;; Process to periodically show the processes. + (let ((show-processes-process + (make-process + #'(lambda () + (unwind-protect ; Test process unwinding when destroyed. + (loop + (process-wait-with-timeout "Sleeping" 2 #'(lambda () nil)) + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "-=-=-=-=-=-~%") + (format t "All processes:~%") + (show-processes t) + (format t "-=-=-=-=-=-~%"))) + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "Process ~s unwinding~%" *current-process*)))) + :name "Show processes"))) + + (setf *results* nil) + ;; Process to check and print and results pushed onto the + ;; *results* stack. Will timeout if there have been no result for + ;; 20 seconds, and kill the show-processes-process. + (make-process + #'(lambda () + (loop + (let ((results + (process-wait-with-timeout "Waiting for results" (* 20 scale) + #'(lambda () *results*)))) + (when (null results) + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "~s Timeout~%" *current-process*)) + (destroy-process show-processes-process) + (return)) + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "Results: ~s~%" results)) + (setf *results* nil)))) + :name "Show results")) + + (progn + ;; Two results generating processes, running in parallel. + (make-process #'(lambda () (work (* 5 scale) "P1 working")) + :name "Worker 1") + (make-process #'(lambda () (work2 (* 10 scale) "P2 working")) + :name "Worker 2")) + + (progn + ;; Two processes competing over a lock to work. + (setf *work-lock* (make-lock "Work lock")) + (make-process + #'(lambda () + (dotimes (i (* 5 scale)) + (with-lock-held (*work-lock* "Waiting for work lock") + (work (* 1 scale) "P4 working")))) + :name "Worker 4") + (make-process + #'(lambda () + (dotimes (i (* 5 scale)) + (with-lock-held (*work-lock* "Waiting for work lock") + (work (* 1 scale) "P5 working")))) + :name "Worker 5")) + + ;; Local special counter. + (setq *count* 0) + (setq *local-count* 0) + ;; New processes do not inherit local special bindings and will thus + ;; see the global value of *local-count* even though the parent + ;; process makes a local binding. + (let ((*local-count* 20)) + (make-process + #'(lambda () + (dotimes (i (* 10 scale)) + (with-lock-held (*output-lock* "Waiting for output lock") + (incf *count*) + (incf *local-count*) + (format t "~s ~d ~d ~d~%" + *current-process* i *local-count* *count*)) + (process-wait-with-timeout "Sleeping" 2 #'(lambda () nil)))) + :name "Counter 2")) + ;; This process makes a local binding of *local-count*. + (make-process + #'(lambda () + (let ((*local-count* 0)) + (dotimes (i (* 10 scale)) + (with-lock-held (*output-lock* "Waiting for output lock") + (incf *count*) + (incf *local-count*) + (format t "~s ~d ~d ~d~%" + *current-process* i *local-count* *count*)) + (process-wait-with-timeout "Sleeping" 2 #'(lambda () nil))))) + :name "Counter 1") + + ;; Recursively interrupted processes. + (let (;; Setup three sleepers that will be interrupted. + (ps1 (make-process + #'(lambda () + (process-wait-with-timeout "Sleeping" (* 20 scale) + #'(lambda () nil))) + :name "Sleeper 1")) + (ps2 (make-process + #'(lambda () + (process-wait-with-timeout "Sleeping" (* 20 scale) + #'(lambda () nil))) + :name "Sleeper 2")) + (ps3 (make-process + #'(lambda () + (process-wait-with-timeout "Sleeping" (* 20 scale) + #'(lambda () nil))) + :name "Sleeper 3")) + interrupt) + (setq *int-count* 0) + (setq interrupt + #'(lambda () + (with-lock-held (*output-lock* "Waiting for output lock") + (format t "Process ~s interrupted ~d~%" + *current-process* *int-count*) + (incf *int-count*) + (process-wait-with-timeout "Sleeping" 1 #'(lambda () nil)) + (cond ((eq *current-process* ps1) + (process-interrupt ps2 interrupt)) + ((eq *current-process* ps2) + (process-interrupt ps3 interrupt)) + ((eq *current-process* ps3) + (process-interrupt ps1 interrupt)))))) + ;; Start the ball rolling. + (process-interrupt ps1 interrupt)) + + ;; Have the initial process do some work also. + (work (* 10 scale) "Init. working")) + +(defun tst-comp () + (start-sigalrm-yield 0 50000) + ;; Try compiling two files simultaneously. + (make-process + #'(lambda () + (compile-file "irrat" :error-output nil :byte-compile t))) + (make-process + #'(lambda () + (compile-file "numbers" :error-output nil :byte-compile t)))) + + +(defvar *tst-lock* (make-lock "Test lock")) + +(defun tst-lock () + (declare (optimize (speed 3) (safety 0))) + (let ((sum 0)) + (declare (fixnum sum)) + (dotimes (i 10000000) + (declare (fixnum i)) + (with-lock-held (*tst-lock* "Waiting for test lock") + (incf sum))) + sum)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun tst-alien-stack-save () + (alien:with-alien ((buf (array char 256))) + (format t "~s~%" buf) + (multiple-value-bind (save-stack size alien-stack) + (save-alien-stack (make-array 0 :element-type '(unsigned-byte 32))) + (restore-alien-stack save-stack size alien-stack)) + (format t "~s~%" buf))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Test the stack-group switching speed. + +(defun tst-sg-speed () + (init-stack-groups) + (let* ((num-switch 0) + t1 t2) + (declare (fixnum num-switch) + (type (or stack-group null) t1 t2)) + (setq t1 (make-stack-group "T1" + #'(lambda () + (dotimes (i 100000) + (declare (fixnum i)) + (incf num-switch) + (stack-group-resume t2))))) + (setq t2 (make-stack-group "T2" + #'(lambda () + (dotimes (i 100000) + (declare (fixnum i)) + (incf num-switch) + (stack-group-resume t1))))) + (stack-group-resume t1) + (inactivate-stack-group t1) + (inactivate-stack-group t2) + num-switch)) --- cmucl-20a-20090928.orig/own-work/README.Building +++ cmucl-20a-20090928/own-work/README.Building @@ -0,0 +1,17 @@ +Now rebuilding CMUCL is _very_ easy: get the sources, apply the _debian_ +paches, and type "make". It should work. If it doesn't report it as a bug. + +If you want to experiment with changes, make a bin directory, copy +lisp lisp-safe.core lisp-small.core into it. Copy the lisp to x86/lisp/ +and generate a new lisp.nm and lisp.map file, first make a empty Depends +file and then use the last few lines from "make -n lisp". Then you can use +make new-gen +to generate a new generation. After the first generation, go to the x86/lisp +directory, rm the *.o and lisp file and type make to get your very own +lisp base :-) + +If you change something "sensitive" you won't know if the resulting +lisp works until it survived 3 new generations. (first generation isn't +build with the new compiler, second one is, third one to be certain). + +Peter --- cmucl-20a-20090928.orig/own-work/README.ilisp +++ cmucl-20a-20090928/own-work/README.ilisp @@ -0,0 +1,79 @@ +Use Ilisp. + +Downloaded it from http://ilisp.cons.org + +add to your .emacs: + +(setq load-path (cons (expand-file-name "/usr/local/lib/xemacs/ilisp/") + load-path)) +(autoload 'cmulisp "ilisp" "Inferior CMU Common LISP." t) +(setq cmulisp-program "/usr/bin/lisp") +(setq cmulisp-local-source-directory "/usr/src/18f/src/") + +;;; This makes reading a lisp file load in ilisp. +(set-default 'auto-mode-alist + (append '(("\\.lisp$" . lisp-mode)) auto-mode-alist)) +(setq lisp-mode-hook '(lambda () + (if (eq window-system 'x) + (setq lisp-font-lock-keywords + lisp-font-lock-keywords-2)) + (require 'ilisp))) + +;;; Sample load hook +(add-hook 'ilisp-load-hook + (function + (lambda () + ;; Change default key prefix to C-c + (setq ilisp-prefix "\C-c") + ;; Make sure that you don't keep popping up the 'inferior + ;; lisp' buffer window when this is already visible in + ;; another frame. Actually this variable has more impact + ;; than that. Watch out. + ;(setq pop-up-frames t) + + (message "Running ilisp-load-hook") + ;; Define LispMachine-like key bindings, too. + ;; (ilisp-lispm-bindings) Sample initialization hook. + + (if (eq window-system 'x) + (setq lisp-font-lock-keywords lisp-font-lock-keywords-2)) + + ;; Set the inferior LISP directory to the directory of + ;; the buffer that spawned it on the first prompt. + (add-hook 'ilisp-init-hook + (function + (lambda () + (default-directory-lisp ilisp-last-buffer)))) + ))) + +(add-hook 'ilisp-site-hook + (function + (lambda () + (setq ilisp-init-binary-extension "sse2f") + (setq ilisp-init-binary-command "(progn \"sse2f\")") + ;; (setq ilisp-binary-extension "sparcf") + ))) + +(setq cmulisp-source-directory-regexp + "\\/usr\\/src\\/cmu\\/") + +Start ilisp with M-x cmulisp + +Type + +M-Tab to complete your input +M-C-x to eval the current defun +C-c M to macroexpand the current defun +C-c m to macroexpand-1 +C-c i to describe something +C-c d to see the documentation about something +C-c c to compile the current defun +C-c l to load the file +C-c k to compile the file +C-c I to inspect something + +And if you still want manual control you can just go to the +*cmulisp* buffer. + + + --- cmucl-20a-20090928.orig/own-work/copyright-clm +++ cmucl-20a-20090928/own-work/copyright-clm @@ -0,0 +1,8 @@ +This package was written by Peter Van Eynde pvaneynd@debian.org on Sat, 4 Apr 1998 22:22:24 +0200. + +Copyright: + +;;; This code was written as part of the CMU Common Lisp project at +;;; Carnegie Mellon University, and has been placed in the public domain. + + --- cmucl-20a-20090928.orig/own-work/debug-int.lisp +++ cmucl-20a-20090928/own-work/debug-int.lisp @@ -0,0 +1,4652 @@ +;;; -*- Mode: Lisp; Log: code.log; Package: DI -*- +;;; +;;; ********************************************************************** +;;; This code was written as part of the CMU Common Lisp project at +;;; Carnegie Mellon University, and has been placed in the public domain. +;;; +(ext:file-comment + "$Header: /home/pvaneynd/fakeroot/cvs2.cons.org/src/code/debug-int.lisp,v 1.88 1998/02/14 21:09:48 dtc Exp $") +;;; +;;; ********************************************************************** +;;; +;;; This file contains the implementation of the programmer's interface +;;; to writing debugging tools. +;;; +;;; Written by Bill Chiles and Rob Maclachlan. +;;; +;;; X86 support by Douglas Crosher 1996,1997,1998. + +(in-package "DEBUG-INTERNALS") + + +;;; The compiler's debug-source structure is almost exactly what we want, so +;;; just get these symbols and export them. +;;; +(import '(c::debug-source-from c::debug-source-name c::debug-source-created + c::debug-source-compiled c::debug-source-start-positions + c::make-debug-source c::debug-source c::debug-source-p)) + +(export '(debug-variable-name debug-variable-package debug-variable-symbol + debug-variable-id debug-variable-value debug-variable-validity + debug-variable-valid-value debug-variable debug-variable-p + + top-frame frame-down frame-up flush-frames-above frame-debug-function + frame-code-location eval-in-frame return-from-frame frame-catches + frame-number frame frame-p + + do-debug-function-blocks debug-function-lambda-list + debug-variable-info-available do-debug-function-variables + debug-function-symbol-variables ambiguous-debug-variables + preprocess-for-eval function-debug-function debug-function-function + debug-function-kind debug-function-name debug-function + debug-function-p debug-function-start-location + + do-debug-block-locations debug-block-successors debug-block + debug-block-p debug-block-elsewhere-p + + make-breakpoint activate-breakpoint deactivate-breakpoint + breakpoint-active-p breakpoint-hook-function breakpoint-info + breakpoint-kind breakpoint-what breakpoint breakpoint-p + delete-breakpoint function-end-cookie-valid-p + + code-location-debug-function code-location-debug-block + code-location-top-level-form-offset code-location-form-number + code-location-debug-source code-location-kind + code-location code-location-p code-location-unknown-p code-location= + + debug-source-from debug-source-name debug-source-created + debug-source-compiled debug-source-root-number + debug-source-start-positions form-number-translations + source-path-context debug-source debug-source-p + + debug-condition no-debug-info no-debug-function-returns + no-debug-blocks lambda-list-unavailable + + debug-error unhandled-condition invalid-control-stack-pointer + unknown-code-location unknown-debug-variable invalid-value + ambiguous-variable-name frame-function-mismatch + + set-breakpoint-for-editor set-location-breakpoint-for-editor + delete-breakpoint-for-editor + + *debugging-interpreter*)) + + + +;;;; Conditions. + +;;; The interface to building debugging tools signals conditions that prevent +;;; it from adhering to its contract. These are serious-conditions because the +;;; program using the interface must handle them before it can correctly +;;; continue execution. These debugging conditions are not errors since it is +;;; no fault of the programmers that the conditions occur. The interface does +;;; not provide for programs to detect these situations other than calling a +;;; routine that detects them and signals a condition. For example, +;;; programmers call A which may fail to return successfully due to a lack of +;;; debug information, and there is no B the they could have called to realize +;;; A would fail. It is not an error to have called A, but it is an error for +;;; the program to then ignore the signal generated by A since it cannot +;;; continue without A's correctly returning a value or performing some +;;; operation. +;;; +;;; Use DEBUG-SIGNAL to signal these conditions. +;;; + +(define-condition debug-condition (serious-condition) + () + (:documentation + "All debug-conditions inherit from this type. These are serious conditions + that must be handled, but they are not programmer errors.")) + +(define-condition no-debug-info (debug-condition) + () + (:documentation "There is absolutely no debugging information available.") + (:report (lambda (condition stream) + (declare (ignore condition)) + (fresh-line stream) + (write-line "No debugging information available." stream)))) + +(define-condition no-debug-function-returns (debug-condition) + ((debug-function :reader no-debug-function-returns-debug-function + :initarg :debug-function)) + (:documentation + "The system could not return values from a frame with debug-function since + it lacked information about returning values.") + (:report (lambda (condition stream) + (let ((fun (debug-function-function + (no-debug-function-returns-debug-function condition)))) + (format stream + "~&Cannot return values from ~:[frame~;~:*~S~] since ~ + the debug information lacks details about returning ~ + values here." + fun))))) + +(define-condition no-debug-blocks (debug-condition) + ((debug-function :reader no-debug-blocks-debug-function + :initarg :debug-function)) + (:documentation "The debug-function has no debug-block information.") + (:report (lambda (condition stream) + (format stream "~&~S has no debug-block information." + (no-debug-blocks-debug-function condition))))) + +(define-condition no-debug-variables (debug-condition) + ((debug-function :reader no-debug-variables-debug-function + :initarg :debug-function)) + (:documentation "The debug-function has no debug-variable information.") + (:report (lambda (condition stream) + (format stream "~&~S has no debug-variable information." + (no-debug-variables-debug-function condition))))) + +(define-condition lambda-list-unavailable (debug-condition) + ((debug-function :reader lambda-list-unavailable-debug-function + :initarg :debug-function)) + (:documentation + "The debug-function has no lambda-list since argument debug-variables are + unavailable.") + (:report (lambda (condition stream) + (format stream "~&~S has no lambda-list information available." + (lambda-list-unavailable-debug-function condition))))) + +(define-condition invalid-value (debug-condition) + ((debug-variable :reader invalid-value-debug-variable + :initarg :debug-variable) + (frame :reader invalid-value-frame :initarg :frame)) + (:report (lambda (condition stream) + (format stream "~&~S has :invalid or :unknown value in ~S." + (invalid-value-debug-variable condition) + (invalid-value-frame condition))))) + +(define-condition ambiguous-variable-name (debug-condition) + ((name :reader ambiguous-variable-name-name :initarg :name) + (frame :reader ambiguous-variable-name-frame :initarg :frame)) + (:report (lambda (condition stream) + (format stream "~&~S names more than one valid variable in ~S." + (ambiguous-variable-name-name condition) + (ambiguous-variable-name-frame condition))))) + + +;;;; Errors and DEBUG-SIGNAL. + +;;; The debug-internals code tries to signal all programmer errors as subtypes +;;; of debug-error. There are calls to ERROR signalling simple-errors, but +;;; these dummy checks in the code and shouldn't come up. +;;; +;;; While under development, this code also signals errors in code branches +;;; that remain unimplemented. +;;; + +(define-condition debug-error (error) () + (:documentation + "All programmer errors from using the interface for building debugging + tools inherit from this type.")) + +(define-condition unhandled-condition (debug-error) + ((condition :reader unhandled-condition-condition :initarg :condition)) + (:report (lambda (condition stream) + (format stream "~&Unhandled debug-condition:~%~A" + (unhandled-condition-condition condition))))) + +(define-condition unknown-code-location (debug-error) + ((code-location :reader unknown-code-location-code-location + :initarg :code-location)) + (:report (lambda (condition stream) + (format stream "~&Invalid use of an unknown code-location -- ~S." + (unknown-code-location-code-location condition))))) + +(define-condition unknown-debug-variable (debug-error) + ((debug-variable :reader unknown-debug-variable-debug-variable + :initarg :debug-variable) + (debug-function :reader unknown-debug-variable-debug-function + :initarg :debug-function)) + (:report (lambda (condition stream) + (format stream "~&~S not in ~S." + (unknown-debug-variable-debug-variable condition) + (unknown-debug-variable-debug-function condition))))) + +(define-condition invalid-control-stack-pointer (debug-error) + () + (:report (lambda (condition stream) + (declare (ignore condition)) + (fresh-line stream) + (write-string "Invalid control stack pointer." stream)))) + +(define-condition frame-function-mismatch (debug-error) + ((code-location :reader frame-function-mismatch-code-location + :initarg :code-location) + (frame :reader frame-function-mismatch-frame :initarg :frame) + (form :reader frame-function-mismatch-form :initarg :form)) + (:report (lambda (condition stream) + (format stream + "~&Form was preprocessed for ~S,~% but called on ~S:~% ~S" + (frame-function-mismatch-code-location condition) + (frame-function-mismatch-frame condition) + (frame-function-mismatch-form condition))))) + + +;;; DEBUG-SIGNAL -- Internal. +;;; +;;; This signals debug-conditions. If they go unhandled, then signal an +;;; unhandled-condition error. +;;; +;;; ??? Get SIGNAL in the right package! +;;; +(defmacro debug-signal (datum &rest arguments) + `(let ((condition (make-condition ,datum ,@arguments))) + (signal condition) + (error 'unhandled-condition :condition condition))) + + + +;;;; Structures. + +;;; Most of these structures model information stored in internal data +;;; structures created by the compiler. Whenever comments preface an object or +;;; type with "compiler", they refer to the internal compiler thing, not to the +;;; object or type with the same name in the "DI" package. +;;; + + +;;; +;;; Debug-variables +;;; + +;;; These exist for caching data stored in packed binary form in compiler +;;; debug-functions. Debug-functions store these. +;;; +(defstruct (debug-variable (:print-function print-debug-variable) + (:constructor nil)) + ;; + ;; String name of variable. + (name nil :type simple-string) + ;; + ;; String name of package. Nil when variable's name is uninterned. + (package nil :type (or null simple-string)) + ;; + ;; Unique integer identification relative to other variables with the same + ;; name and package. + (id 0 :type c::index) + ;; + ;; Whether the variable always has a valid value. + (alive-p nil :type c::boolean)) + +(defun print-debug-variable (obj str n) + (declare (ignore n)) + (format str "#" + (debug-variable-package obj) + (debug-variable-name obj) + (debug-variable-id obj))) + +(setf (documentation 'debug-variable-name 'function) + "Returns the name of the debug-variable. The name is the name of the symbol + used as an identifier when writing the code.") + +(setf (documentation 'debug-variable-package 'function) + "Returns the package name of the debug-variable. This is the package name of + the symbol used as an identifier when writing the code.") + +(setf (documentation 'debug-variable-id 'function) + "Returns the integer that makes debug-variable's name and package name unique + with respect to other debug-variable's in the same function.") + + +(defstruct (compiled-debug-variable + (:include debug-variable) + (:constructor make-compiled-debug-variable + (name package id alive-p sc-offset save-sc-offset))) + ;; + ;; Storage class and offset. (unexported). + (sc-offset nil :type c::sc-offset) + ;; + ;; Storage class and offset when saved somewhere. + (save-sc-offset nil :type (or c::sc-offset null))) + +(defstruct (interpreted-debug-variable + (:include debug-variable + (alive-p t)) + (:constructor make-interpreted-debug-variable + (name package ir1-var))) + ;; + ;; This is the IR1 structure that holds information about interpreted vars. + (ir1-var nil :type c::lambda-var)) + +;;; +;;; Frames +;;; + +;;; These represents call-frames on the stack. +;;; +(defstruct (frame (:constructor nil)) + ;; + ;; Next frame up. Null when top frame. + (up nil :type (or frame null)) + ;; + ;; Previous frame down. Nil when the bottom frame. Before computing the + ;; next frame down, this slot holds the frame pointer to the control stack + ;; for the given frame. This lets us get the next frame down and the + ;; return-pc for that frame. + (%down :unparsed :type (or frame (member nil :unparsed))) + ;; + ;; Debug-function for function whose call this frame represents. + (debug-function nil :type debug-function) + ;; + ;; Code-location to continue upon return to frame. + (code-location nil :type code-location) + ;; + ;; A-list of catch-tags to code-locations. + (%catches :unparsed :type (or list (member :unparsed))) + ;; + ;; Pointer to frame on control stack. (unexported) + ;; When is an interpreted-frame, this is an index into the interpreter's + ;; stack. + pointer + ;; + ;; This is the frame's number for prompt printing. Top is zero. + (number 0 :type index)) + +(setf (documentation 'frame-up 'function) + "Returns the frame immediately above frame on the stack. When frame is + the top of the stack, this returns nil.") + +(setf (documentation 'frame-debug-function 'function) + "Returns the debug-function for the function whose call frame represents.") + +(setf (documentation 'frame-code-location 'function) + "Returns the code-location where the frame's debug-function will continue + running when program execution returns to this frame. If someone + interrupted this frame, the result could be an unknown code-location.") + + +(defstruct (compiled-frame + (:include frame) + (:print-function print-compiled-frame) + (:constructor make-compiled-frame + (pointer up debug-function code-location number + #+gengc saved-state-chain + &optional escaped))) + ;; + ;; Indicates whether someone interrupted frame. (unexported). + ;; If escaped, this is a pointer to the state that was saved when we were + ;; interrupted. On the non-gengc system, this is a sigcontext pointer. + ;; On the gengc system, this is a state pointer from saved-state-chain. + escaped + ;; + ;; List of saps to saved states. Each time we unwind past an exception, + ;; we pop the next entry off this list. When we get to the end of the + ;; list, there is nothing else on the stack. + #+gengc (saved-state-chain nil :type list)) + +(defun print-compiled-frame (obj str n) + (declare (ignore n)) + (format str "#" + (debug-function-name (frame-debug-function obj)) + (compiled-frame-escaped obj))) + + +(defstruct (interpreted-frame + (:include frame) + (:print-function print-interpreted-frame) + (:constructor make-interpreted-frame + (pointer up debug-function code-location number + real-frame closure))) + ;; + ;; This points to the compiled-frame for EVAL:INTERNAL-APPLY-LOOP. + (real-frame nil :type compiled-frame) + ;; + ;; This is the closed over data used by the interpreter. + (closure nil :type simple-vector)) + +(defun print-interpreted-frame (obj str n) + (declare (ignore n)) + (format str "#" + (debug-function-name (frame-debug-function obj)))) + +;;; +;;; Debug-functions +;;; + +;;; These exist for caching data stored in packed binary form in compiler +;;; debug-functions. *compiled-debug-functions* maps a c::debug-function to a +;;; debug-function. There should only be one debug-function in existence for +;;; any function; that is, all code-locations and other objects that reference +;;; debug-functions point to unique objects. This is due to the overhead in +;;; cached information. +;;; +(defstruct (debug-function (:print-function print-debug-function)) + ;; + ;; Some representation of the function arguments. See + ;; DEBUG-FUNCTION-LAMBDA-LIST. + ;; NOTE: must parse vars before parsing arg list stuff. + (%lambda-list :unparsed) + ;; + ;; Cached debug-variable information. (unexported). + ;; These are sorted by their name. + (debug-vars :unparsed :type (or simple-vector null (member :unparsed))) + ;; + ;; Cached debug-block information. This is nil when we have tried to parse + ;; the packed binary info, but none is available. + (blocks :unparsed :type (or simple-vector null (member :unparsed))) + ;; + ;; The actual function if available. + (%function :unparsed :type (or null function (member :unparsed)))) + +(defun print-debug-function (obj str n) + (declare (ignore n)) + (format str "#<~A-Debug-Function ~S>" + (etypecase obj + (compiled-debug-function "Compiled") + (interpreted-debug-function "Interpreted") + (bogus-debug-function "Bogus")) + (debug-function-name obj))) + + +(defstruct (compiled-debug-function + (:include debug-function) + (:constructor %make-compiled-debug-function + (compiler-debug-fun component))) + ;; + ;; Compiler's dumped debug-function information. (unexported). + (compiler-debug-fun nil :type c::compiled-debug-function) + ;; + ;; Code object. (unexported). + component + ;; + ;; The :function-start breakpoint (if any) used to facilitate function + ;; end breakpoints. + (end-starter nil :type (or null breakpoint))) + +;;; This maps c::compiled-debug-functions to compiled-debug-functions, so we +;;; can get at cached stuff and not duplicate compiled-debug-function +;;; structures. +;;; +(defvar *compiled-debug-functions* (make-hash-table :test #'eq)) + +;;; MAKE-COMPILED-DEBUG-FUNCTION -- Internal. +;;; +;;; Makes a compiled-debug-function for a c::compiler-debug-function and its +;;; component. This maps the latter to the former in +;;; *compiled-debug-functions*. If there already is a compiled-debug-function, +;;; then this returns it from *compiled-debug-functions*. +;;; +(defun make-compiled-debug-function (compiler-debug-fun component) + (or (gethash compiler-debug-fun *compiled-debug-functions*) + (setf (gethash compiler-debug-fun *compiled-debug-functions*) + (%make-compiled-debug-function compiler-debug-fun component)))) + + +(defstruct (interpreted-debug-function + (:include debug-function) + (:constructor %make-interpreted-debug-function (ir1-lambda))) + ;; + ;; This is the ir1 lambda this debug-function represents. + (ir1-lambda nil :type c::clambda)) + +(defstruct (bogus-debug-function + (:include debug-function) + (:constructor make-bogus-debug-function + (%name &aux (%lambda-list nil) (debug-vars nil) + (blocks nil) (%function nil)))) + %name) + +(defvar *ir1-lambda-debug-function* (make-hash-table :test #'eq)) + +(defun make-interpreted-debug-function (ir1-lambda) + (let ((home-lambda (c::lambda-home ir1-lambda))) + (or (gethash home-lambda *ir1-lambda-debug-function*) + (setf (gethash home-lambda *ir1-lambda-debug-function*) + (%make-interpreted-debug-function home-lambda))))) + +;;; +;;; Debug-blocks. +;;; + +;;; These exist for caching data stored in packed binary form in compiler +;;; debug-blocks. +;;; +(defstruct (debug-block (:print-function print-debug-block)) + ;; + ;; Code-locations where execution continues after this block. + (successors nil :type list) + ;; + ;; This indicates whether the block is a special glob of code shared by + ;; various functions and tucked away elsewhere in a component. This kind of + ;; block has no start code-location. In an interpreted-debug-block, this is + ;; always nil. This slot is in all debug-blocks since it is an exported + ;; interface. + (elsewhere-p nil :type c::boolean)) + +(defun print-debug-block (obj str n) + (declare (ignore n)) + (format str "#<~A-Debug-Block ~S>" + (etypecase obj + (compiled-debug-block "Compiled") + (interpreted-debug-block "Interpreted")) + (debug-block-function-name obj))) + +(setf (documentation 'debug-block-successors 'function) + "Returns the list of possible code-locations where execution may continue + when the basic-block represented by debug-block completes its execution.") + +(setf (documentation 'debug-block-elsewhere-p 'function) + "Returns whether debug-block represents elsewhere code.") + + +(defstruct (compiled-debug-block (:include debug-block) + (:constructor + make-compiled-debug-block + (code-locations successors elsewhere-p))) + ;; + ;; Code-location information for the block. + (code-locations nil :type simple-vector)) + +(defstruct (interpreted-debug-block (:include debug-block + (elsewhere-p nil)) + (:constructor %make-interpreted-debug-block + (ir1-block))) + ;; + ;; This is the IR1 block this debug-block represents. + (ir1-block nil :type c::cblock) + ;; + ;; Code-location information for the block. + (locations :unparsed :type (or (member :unparsed) simple-vector))) + +(defvar *ir1-block-debug-block* (make-hash-table :test #'eq)) + +;;; MAKE-INTERPRETED-DEBUG-BLOCK -- Internal. +;;; +;;; This makes a debug-block for the interpreter's ir1-block. If we have it in +;;; the cache, return it. If we need to make it, then first make debug-blocks +;;; for all the ir1-blocks in ir1-block's home lambda; this makes sure all the +;;; successors of ir1-block have debug-blocks. We need this to fill in the +;;; resulting debug-block's successors list with debug-blocks, not ir1-blocks. +;;; After making all the possible debug-blocks we'll need to reference, go back +;;; over the list of new debug-blocks and fill in their successor slots with +;;; lists of debug-blocks. Then look up our argument ir1-block to find its +;;; debug-block since we know we have it now. +;;; +(defun make-interpreted-debug-block (ir1-block) + (check-type ir1-block c::cblock) + (let ((res (gethash ir1-block *ir1-block-debug-block*))) + (or res + (let ((lambda (c::block-home-lambda ir1-block))) + (c::do-blocks (block (c::block-component ir1-block)) + (when (eq lambda (c::block-home-lambda block)) + (push (setf (gethash block *ir1-block-debug-block*) + (%make-interpreted-debug-block block)) + res))) + (dolist (block res) + (let* ((successors nil) + (cblock (interpreted-debug-block-ir1-block block)) + (succ (c::block-succ cblock)) + (valid-succ + (if (and succ + (eq (car succ) + (c::component-tail + (c::block-component cblock)))) + () + succ))) + (dolist (sblock valid-succ) + (let ((dblock (gethash sblock *ir1-block-debug-block*))) + (when dblock + (push dblock successors)))) + (setf (debug-block-successors block) (nreverse successors)))) + (gethash ir1-block *ir1-block-debug-block*))))) + +;;; +;;; Breakpoints. +;;; + +;;; This is an internal structure that manages information about a breakpoint +;;; locations. See *component-breakpoint-offsets*. +;;; +(defstruct (breakpoint-data (:print-function print-breakpoint-data) + (:constructor make-breakpoint-data + (component offset))) + ;; + ;; This is the component in which the breakpoint lies. + component + ;; + ;; This is the byte offset into the component. + (offset nil :type c::index) + ;; + ;; The original instruction replaced by the breakpoint. + (instruction nil :type (or null (unsigned-byte 32))) + ;; + ;; A list of user breakpoints at this location. + (breakpoints nil :type list)) +;;; +(defun print-breakpoint-data (obj str n) + (declare (ignore n)) + (format str "#" + (debug-function-name + (debug-function-from-pc (breakpoint-data-component obj) + (breakpoint-data-offset obj))) + (breakpoint-data-offset obj))) + +(defstruct (breakpoint (:print-function print-breakpoint) + (:constructor %make-breakpoint + (hook-function what kind %info))) + ;; + ;; This is the function invoked when execution encounters the breakpoint. It + ;; takes a frame, the breakpoint, and optionally a list of values. Values + ;; are supplied for :function-end breakpoints as values to return for the + ;; function containing the breakpoint. :function-end breakpoint + ;; hook-functions also take a cookie argument. See cookie-fun slot. + (hook-function nil :type function) + ;; + ;; Code-location or debug-function. + (what nil :type (or code-location debug-function)) + ;; + ;; :code-location, :function-start, or :function-end for that kind of + ;; breakpoint. :unknown-return-partner if this is the partner of a + ;; :code-location breakpoint at an :unknown-return code-location. + (kind nil :type (member :code-location :function-start :function-end + :unknown-return-partner)) + ;; + ;; Status helps the user and the implementation. + (status :inactive :type (member :active :inactive :deleted)) + ;; + ;; This is a backpointer to a breakpoint-data. + (internal-data nil :type (or null breakpoint-data)) + ;; + ;; With code-locations whose type is :unknown-return, there are really + ;; two breakpoints: one at the multiple-value entry point, and one at + ;; the single-value entry point. This slot holds the breakpoint for the + ;; other one, or NIL if this isn't at an :unknown-return code location. + (unknown-return-partner nil :type (or null breakpoint)) + ;; + ;; :function-end breakpoints use a breakpoint at the :function-start to + ;; establish the end breakpoint upon function entry. We do this by frobbing + ;; the LRA to jump to a special piece of code that breaks and provides the + ;; return values for the returnee. This slot points to the start breakpoint, + ;; so we can activate, deactivate, and delete it. + (start-helper nil :type (or null breakpoint)) + ;; + ;; This is a hook users supply to get a dynamically unique cookie for + ;; identifying :function-end breakpoint executions. That is, if there is one + ;; :function-end breakpoint, but there may be multiple pending calls of its + ;; function on the stack. This function takes the cookie, and the + ;; hook-function takes the cookie too. + (cookie-fun nil :type (or null function)) + ;; + ;; This slot users can set with whatever information they find useful. + %info) +;;; +(defun print-breakpoint (obj str n) + (declare (ignore n)) + (let ((what (breakpoint-what obj))) + (format str "#" + (etypecase what + (code-location what) + (debug-function (debug-function-name what))) + (etypecase what + (code-location nil) + (debug-function (breakpoint-kind obj)))))) + +(setf (documentation 'breakpoint-hook-function 'function) + "Returns the breakpoint's function the system calls when execution encounters + the breakpoint, and it is active. This is SETF'able.") + +(setf (documentation 'breakpoint-what 'function) + "Returns the breakpoint's what specification.") + +(setf (documentation 'breakpoint-kind 'function) + "Returns the breakpoint's kind specification.") + +;;; +;;; Code-locations. +;;; + +(defstruct (code-location (:print-function print-code-location) + (:constructor nil)) + ;; + ;; This is the debug-function containing code-location. + (debug-function nil :type debug-function) + ;; + ;; This is initially :unsure. Upon first trying to access an :unparsed slot, + ;; if the data is unavailable, then this becomes t, and the code-location is + ;; unknown. If the data is available, this becomes nil, a known location. + ;; We can't use a separate type code-location for this since we must return + ;; code-locations before we can tell whether they're known or unknown. For + ;; example, when parsing the stack, we don't want to unpack all the variables + ;; and blocks just to make frames. + (%unknown-p :unsure :type (member t nil :unsure)) + ;; + ;; This is the debug-block containing code-location. + ;; Possibly toss this out and just find it in the blocks cache in + ;; debug-function. + (%debug-block :unparsed :type (or debug-block (member :unparsed))) + ;; + ;; This is the number of forms processed by the compiler or loader before + ;; the top-level form containing this code-location. + (%tlf-offset :unparsed :type (or c::index (member :unparsed))) + ;; + ;; This is the depth-first number of the node that begins code-location + ;; within its top-level form. + (%form-number :unparsed :type (or c::index (member :unparsed)))) + +(defun print-code-location (obj str n) + (declare (ignore n)) + (format str "#<~A ~S>" + (ecase (code-location-unknown-p obj) + ((nil) (etypecase obj + (compiled-code-location "Compiled-Code-Location") + (interpreted-code-location "Interpreted-Code-Location"))) + ((t) "Unknown-Code-Location")) + (debug-function-name (code-location-debug-function obj)))) + +(setf (documentation 'code-location-debug-function 'function) + "Returns the debug-function representing information about the function + corresponding to the code-location.") + + +(defstruct (compiled-code-location + (:include code-location) + (:constructor make-known-code-location + (pc debug-function %tlf-offset %form-number + %live-set kind &aux (%unknown-p nil))) + (:constructor make-compiled-code-location (pc debug-function))) + ;; + ;; This is an index into debug-function's component slot. + (pc nil :type c::index) + ;; + ;; This is a bit-vector indexed by a variable's position in + ;; DEBUG-FUNCTION-DEBUG-VARS indicating whether the variable has a valid + ;; value at this code-location. (unexported). + (%live-set :unparsed :type (or simple-bit-vector (member :unparsed))) + ;; + ;; (unexported) + ;; To see c::location-kind, do "(kernel:type-expand 'c::location-kind)". + (kind :unparsed :type (or (member :unparsed) c::location-kind))) + +(defstruct (interpreted-code-location + (:include code-location + (%unknown-p nil)) + (:constructor make-interpreted-code-location + (ir1-node debug-function))) + ;; + ;; This is an index into debug-function's component slot. + (ir1-node nil :type c::node)) + + +;;; +;;; Debug-sources +;;; + +(proclaim '(inline debug-source-root-number)) +;;; +(defun debug-source-root-number (debug-source) + "Returns the number of top-level forms processed by the compiler before + compiling this source. If this source is uncompiled, this is zero. This + may be zero even if the source is compiled since the first form in the first + file compiled in one compilation, for example, must have a root number of + zero -- the compiler saw no other top-level forms before it." + (c::debug-source-source-root debug-source)) + +(setf (documentation 'c::debug-source-from 'function) + "Returns an indication of the type of source. The following are the possible + values: + :file from a file (obtained by COMPILE-FILE if compiled). + :lisp from Lisp (obtained by COMPILE if compiled). + :stream from a non-file stream.") + +(setf (documentation 'c::debug-source-name 'function) + "Returns the actual source in some sense represented by debug-source, which + is related to DEBUG-SOURCE-FROM: + :file the pathname of the file. + :lisp a lambda-expression. + :stream some descriptive string that's otherwise useless.") + +(setf (documentation 'c::debug-source-created 'function) + "Returns the universal time someone created the source. This may be nil if + it is unavailable.") + +(setf (documentation 'c::debug-source-compiled 'function) + "Returns the time someone compiled the source. This is nil if the source + is uncompiled.") + +(setf (documentation 'c::debug-source-start-positions 'function) + "This function returns the file position of each top-level form as an array + if debug-source is from a :file. If DEBUG-SOURCE-FROM is :lisp or :stream, + this returns nil.") + +(setf (documentation 'c::debug-source-p 'function) + "Returns whether object is a debug-source.") + + + +;;;; Frames. + +;;; This is used in FIND-ESCAPE-FRAME and with the bogus components and LRAs +;;; used for :function-end breakpoints. When a components debug-info slot is +;;; :bogus-lra, then the real-lra-slot contains the real component to continue +;;; executing, as opposed to the bogus component which appeared in some frame's +;;; LRA location. +;;; +(defconstant real-lra-slot vm:code-constants-offset) + +;;; These are magically converted by the compiler. +;;; +(defun kernel:current-sp () (kernel:current-sp)) +(defun kernel:current-fp () (kernel:current-fp)) +(defun kernel:stack-ref (s n) (kernel:stack-ref s n)) +(defun kernel:%set-stack-ref (s n value) (kernel:%set-stack-ref s n value)) +(defun kernel:function-code-header (fun) (kernel:function-code-header fun)) +#-gengc (defun kernel:lra-code-header (lra) (kernel:lra-code-header lra)) +(defun kernel:make-lisp-obj (value) (kernel:make-lisp-obj value)) +(defun kernel:get-lisp-obj-address (thing) (kernel:get-lisp-obj-address thing)) +(defun kernel:function-word-offset (fun) (kernel:function-word-offset fun)) +;;; +(defsetf kernel:stack-ref kernel:%set-stack-ref) + +(declaim (inline cstack-pointer-valid-p)) +(defun cstack-pointer-valid-p (x) + (declare (type system:system-area-pointer x)) + #-:x86 + (and (system:sap< x (kernel:current-sp)) + (system:sap<= #-gengc (alien:alien-sap + (alien:extern-alien "control_stack" (* t))) + #+gengc (kernel:mutator-control-stack-base) + x) + (zerop (logand (system:sap-int x) #b11))) + #+:x86 ;; stack grows to low address values + (and (system:sap>= x (kernel:current-sp)) + (system:sap> (alien:alien-sap + (alien:extern-alien "control_stack_end" (* t))) + x) + (zerop (logand (system:sap-int x) #b11)))) + +#+(or gengc x86) +(alien:def-alien-routine component-ptr-from-pc (system:system-area-pointer) + (pc system:system-area-pointer)) + +#+(or gengc x86) +(defun component-from-component-ptr (component-ptr) + (declare (type system:system-area-pointer component-ptr)) + (kernel:make-lisp-obj + (logior (system:sap-int component-ptr) + vm:other-pointer-type))) + +;;;; X86 support. + +#+x86 +(progn + +(defun compute-lra-data-from-pc (pc) + (declare (type system-area-pointer pc)) + (let ((component-ptr (component-ptr-from-pc pc))) + (unless (sap= component-ptr (int-sap #x0)) + (let* ((code (component-from-component-ptr component-ptr)) + (code-header-len (* (kernel:get-header-data code) vm:word-bytes)) + (pc-offset (- (sap-int pc) + (- (kernel:get-lisp-obj-address code) + vm:other-pointer-type) + code-header-len))) +; (format t "c-lra-fpc ~a ~a ~a~%" pc code pc-offset) + (values pc-offset code))))) + +(defconstant vm::nargs-offset #.vm::ecx-offset) + +;;; Check for a valid return address - it could be any valid C/Lisp +;;; address. +;;; +;;; XX Could be a little smarter. +(declaim (inline ra-pointer-valid-p)) +(defun ra-pointer-valid-p (ra) + (declare (type system:system-area-pointer ra)) + (and + ;; Not the first page which is unmapped. + (>= (sys:sap-int ra) 4096) + ;; Not a Lisp stack pointer. + (or (sys:sap< ra (kernel:current-sp)) + (sys:sap>= ra (alien:alien-sap + (alien:extern-alien "control_stack_end" (* t))))))) + +;;; Try to find a valid previous stack. This is complex on the x86 as +;;; it can jump between C and Lisp frames. To help find a valid frame +;;; it searches backwards. +;;; +;;; XX Should probably check if it has reached the bottom of the +;;; stack. +;;; +;;; XX Should handle interrupted frames, both Lisp and C. A present it +;;; manages to find a fp trail, see linux hack below. +;;; +(defun x86-call-context (fp &key (depth 8)) + (declare (type system-area-pointer fp) + (fixnum depth)) +; (format t "*CC ~s ~s~%" fp depth) + (cond + ((not (cstack-pointer-valid-p fp)) + (format t "Debug invalid fp ~s~%" fp) + nil) + (t + ;; Check the two possible frame pointers. + (let ((lisp-ocfp (sap-ref-sap fp (- (* (1+ vm::ocfp-save-offset) 4)))) + (lisp-ra (sap-ref-sap fp (- (* (1+ vm::return-pc-save-offset) 4)))) + (c-ocfp (sap-ref-sap fp (* 0 vm:word-bytes))) + (c-ra (sap-ref-sap fp (* 1 vm:word-bytes)))) + (cond ((and (sap> lisp-ocfp fp) (cstack-pointer-valid-p lisp-ocfp) + (ra-pointer-valid-p lisp-ra) + (sap> c-ocfp fp) (cstack-pointer-valid-p c-ocfp) + (ra-pointer-valid-p c-ra)) +; (format t "*C Both valid ~s ~s ~s ~s~%" +; lisp-ocfp lisp-ra c-ocfp c-ra) + ;; Look forward another step to check their validity. + (let ((lisp-path-fp (x86-call-context lisp-ocfp + :depth (- depth 1))) + (c-path-fp (x86-call-context c-ocfp :depth (- depth 1)))) + (cond ((and lisp-path-fp c-path-fp) + ;; Both still seem valid - choose the smallest. + (format t "Debug: Both still valid ~s ~s ~s ~s~%" + lisp-ocfp lisp-ra c-ocfp c-ra) + (if (sap< lisp-ocfp c-ocfp) + (values lisp-ra lisp-ocfp) + (values c-ra c-ocfp))) + (lisp-path-fp + ;; The lisp convention is looking good. +; (format t "*C lisp-ocfp ~s ~s~%" lisp-ocfp lisp-ra) + (values lisp-ra lisp-ocfp)) + (c-path-fp + ;; The C convention is looking good. +; (format t "*C c-ocfp ~s ~s~%" c-ocfp c-ra) + (values c-ra c-ocfp)) + (t + ;; Neither seems right? +; (format t "Debug: no valid2 fp found ~s ~s~%" +; lisp-ocfp c-ocfp) + nil)))) + ((and (sap> lisp-ocfp fp) (cstack-pointer-valid-p lisp-ocfp) + (ra-pointer-valid-p lisp-ra)) + ;; The lisp convention is looking good. +; (format t "*C lisp-ocfp ~s ~s~%" lisp-ocfp lisp-ra) + (values lisp-ra lisp-ocfp)) + ((and (sap> c-ocfp fp) (cstack-pointer-valid-p c-ocfp) + #-linux (ra-pointer-valid-p c-ra)) + ;; The C convention is looking good. +; (format t "*C c-ocfp ~s ~s~%" c-ocfp c-ra) + (values c-ra c-ocfp)) + (t +; (format t "Debug: no valid fp found ~s ~s~%" lisp-ocfp c-ocfp) + nil)))))) + +) ; end progn x86 + + +;;; DESCRIPTOR-SAP -- internal +;;; +;;; Convert the descriptor into a SAP. The bits all stay the same, we just +;;; change our notion of what we think they are. +;;; +(declaim (inline descriptor-sap)) +(defun descriptor-sap (x) + (system:int-sap (kernel:get-lisp-obj-address x))) + +;;; TOP-FRAME -- Public. +;;; +(defun top-frame () + "Returns the top frame of the control stack as it was before calling this + function." + (multiple-value-bind (fp pc) + (kernel:%caller-frame-and-pc) + (possibly-an-interpreted-frame + (compute-calling-frame (descriptor-sap fp) + #-gengc pc #+gengc (descriptor-sap pc) + nil) + nil))) + +;;; FLUSH-FRAMES-ABOVE -- public. +;;; +(defun flush-frames-above (frame) + "Flush all of the frames above FRAME, and renumber all the frames below + FRAME." + (setf (frame-up frame) nil) + (do ((number 0 (1+ number)) + (frame frame (frame-%down frame))) + ((not (frame-p frame))) + (setf (frame-number frame) number))) + +;;; FRAME-DOWN -- Public. +;;; +;;; We have to access the old-fp and return-pc out of frame and pass them to +;;; COMPUTE-CALLING-FRAME. +;;; +(defun frame-down (frame) + "Returns the frame immediately below frame on the stack. When frame is + the bottom of the stack, this returns nil." + (let ((down (frame-%down frame))) + (if (eq down :unparsed) + (let* ((real (frame-real-frame frame)) + (debug-fun (frame-debug-function real))) + (setf (frame-%down frame) + (etypecase debug-fun + (compiled-debug-function + (let ((c-d-f (compiled-debug-function-compiler-debug-fun + debug-fun))) + (possibly-an-interpreted-frame + (compute-calling-frame + (descriptor-sap + (get-context-value + real vm::ocfp-save-offset + (c::compiled-debug-function-old-fp c-d-f))) + #-gengc + (get-context-value + real vm::lra-save-offset + (c::compiled-debug-function-return-pc c-d-f)) + #+gengc + (descriptor-sap + (get-context-value + real vm::ra-save-offset + (c::compiled-debug-function-return-pc c-d-f))) + frame) + frame))) + (bogus-debug-function + (let ((fp (frame-pointer real))) + (when (cstack-pointer-valid-p fp) + #+x86 + (multiple-value-bind (ra ofp) (x86-call-context fp) + (compute-calling-frame ofp ra frame)) + #-x86 + (compute-calling-frame + #-alpha + (system:sap-ref-sap fp (* vm::ocfp-save-offset + vm:word-bytes)) + #+alpha + (kernel::int-sap + (system:sap-ref-32 fp (* vm::ocfp-save-offset + vm:word-bytes))) + + #-gengc + (kernel:stack-ref fp vm::lra-save-offset) + #+gengc + (system:sap-ref-sap fp (* vm::ra-save-offset + vm:word-bytes)) + frame))))))) + down))) + + +;;; GET-CONTEXT-VALUE -- Internal. +;;; +;;; Get the old FP or return PC out of frame. Stack-slot is the standard save +;;; location offset on the stack. Loc is the saved sc-offset describing the +;;; main location. +;;; +#-x86 +(defun get-context-value (frame stack-slot loc) + (declare (type compiled-frame frame) (type unsigned-byte stack-slot) + (type c::sc-offset loc)) + (let ((pointer (frame-pointer frame)) + (escaped (compiled-frame-escaped frame))) + (if escaped + (sub-access-debug-var-slot pointer loc escaped) + (kernel:stack-ref pointer stack-slot)))) +#+x86 +(defun get-context-value (frame stack-slot loc) + (declare (type compiled-frame frame) (type unsigned-byte stack-slot) + (type c::sc-offset loc)) + (let ((pointer (frame-pointer frame)) + (escaped (compiled-frame-escaped frame))) + (if escaped + (sub-access-debug-var-slot pointer loc escaped) + (ecase stack-slot + (#.vm::ocfp-save-offset + (kernel:stack-ref pointer stack-slot)) + (#.vm::lra-save-offset + (sap-ref-sap pointer (- (* (1+ stack-slot) 4)))))))) + +;;; +#-x86 +(defun (setf get-context-value) (value frame stack-slot loc) + (declare (type compiled-frame frame) (type unsigned-byte stack-slot) + (type c::sc-offset loc)) + (let ((pointer (frame-pointer frame)) + (escaped (compiled-frame-escaped frame))) + (if escaped + (sub-set-debug-var-slot pointer loc value escaped) + (setf (kernel:stack-ref pointer stack-slot) value)))) + +#+x86 +(defun (setf get-context-value) (value frame stack-slot loc) + (declare (type compiled-frame frame) (type unsigned-byte stack-slot) + (type c::sc-offset loc)) + (let ((pointer (frame-pointer frame)) + (escaped (compiled-frame-escaped frame))) + (if escaped + (sub-set-debug-var-slot pointer loc value escaped) + (ecase stack-slot + (#.vm::ocfp-save-offset + (setf (kernel:stack-ref pointer stack-slot) value)) + (#.vm::lra-save-offset + (setf (sap-ref-sap pointer (- (* (1+ stack-slot) 4))) value)))))) + + +(defvar *debugging-interpreter* nil + "When set, the debugger foregoes making interpreted-frames, so you can + debug the functions that manifest the interpreter.") + +;;; POSSIBLY-AN-INTERPRETED-FRAME -- Internal. +;;; +;;; This takes a newly computed frame, frame, and the frame above it on the +;;; stack, up-frame, which is possibly nil. Frame is nil when we hit the +;;; bottom of the control stack. When frame represents a call to +;;; EVAL::INTERNAL-APPLY-LOOP, we make an interpreted frame to replace frame. +;;; The interpreted frame points to frame. +;;; +(defun possibly-an-interpreted-frame (frame up-frame) + (if (or (not frame) + (not (eq (debug-function-name (frame-debug-function frame)) + 'eval::internal-apply-loop)) + *debugging-interpreter* + (compiled-frame-escaped frame)) + frame + (flet ((get-var (name location) + (let ((vars (di:ambiguous-debug-variables + (di:frame-debug-function frame) name))) + (when (or (null vars) (> (length vars) 1)) + (error "Zero or more than one ~A variable in ~ + EVAL::INTERNAL-APPLY-LOOP?" + (string-downcase name))) + (if (eq (debug-variable-validity (car vars) location) + :valid) + (car vars))))) + (let* ((code-loc (frame-code-location frame)) + (ptr-var (get-var "FRAME-PTR" code-loc)) + (node-var (get-var "NODE" code-loc)) + (closure-var (get-var "CLOSURE" code-loc))) + (if (and ptr-var node-var closure-var) + (let* ((node (debug-variable-value node-var frame)) + (d-fun (make-interpreted-debug-function + (c::block-home-lambda (c::node-block node))))) + (make-interpreted-frame + (debug-variable-value ptr-var frame) + up-frame + d-fun + (make-interpreted-code-location node d-fun) + (frame-number frame) + frame + (debug-variable-value closure-var frame))) + frame))))) + + +;;; COMPUTE-CALLING-FRAME -- Internal. +;;; +;;; This returns a frame for the one existing in time immediately prior to the +;;; frame referenced by current-fp. This is current-fp's caller or the next +;;; frame down the control stack. If there is no down frame, this returns nil +;;; for the bottom of the stack. Up-frame is the up link for the resulting +;;; frame object, and it is nil when we call this to get the top of the stack. +;;; +;;; The current frame contains the pointer to the temporally previous frame we +;;; want, and the current frame contains the pc at which we will continue +;;; executing upon returning to that previous frame. +;;; +;;; Note: Sometimes LRA is actually a fixnum. This happens when lisp calls +;;; into C. In this case, the code object is stored on the stack after the +;;; LRA, and the LRA is the word offset. +;;; +#-(or gengc x86) +(defun compute-calling-frame (caller lra up-frame) + (declare (type system:system-area-pointer caller)) + (when (cstack-pointer-valid-p caller) + (multiple-value-bind + (code pc-offset escaped) + (if lra + (multiple-value-bind + (word-offset code) + (if (ext:fixnump lra) + (let ((fp (frame-pointer up-frame))) + (values lra + (kernel:stack-ref fp (1+ vm::lra-save-offset)))) + (values (kernel:get-header-data lra) + (kernel:lra-code-header lra))) + (if code + (values code + (* (1+ (- word-offset (kernel:get-header-data code))) + vm:word-bytes) + nil) + (values :foreign-function + 0 + nil))) + (find-escaped-frame caller)) + (if (and (kernel:code-component-p code) + (eq (kernel:%code-debug-info code) :bogus-lra)) + (let ((real-lra (kernel:code-header-ref code real-lra-slot))) + (compute-calling-frame caller real-lra up-frame)) + (let ((d-fun (case code + (:undefined-function + (make-bogus-debug-function + "The Undefined Function")) + (:foreign-function + (make-bogus-debug-function + "Foreign function call land")) + ((nil) + (make-bogus-debug-function + "Bogus stack frame")) + (t + (debug-function-from-pc code pc-offset))))) + (make-compiled-frame caller up-frame d-fun + (code-location-from-pc d-fun pc-offset + escaped) + (if up-frame (1+ (frame-number up-frame)) 0) + escaped)))))) + +#+x86 +(defun compute-calling-frame (caller ra up-frame) + (declare (type system:system-area-pointer caller ra)) +; (format t "ccf: ~a ~a ~a~%" caller ra up-frame) + (when (cstack-pointer-valid-p caller) +; (format t "ccf2~%") + ;; First check for an escaped frame. + (multiple-value-bind + (code pc-offset escaped) + (find-escaped-frame caller) + (cond (code + ;; If it's escaped it may be a function end breakpoint + ;; trap. +; (format t "ccf2: escaped ~s ~s~%" code pc-offset) + (when (and (kernel:code-component-p code) + (eq (kernel:%code-debug-info code) :bogus-lra)) + ;; If :bogus-lra grab the real lra. + (setq pc-offset (kernel:code-header-ref + code (1+ real-lra-slot))) + (setq code (kernel:code-header-ref code real-lra-slot)) +; (format t "ccf3 :bogus-lra ~s ~s~%" code pc-offset) + (assert code))) + (t + ;; Not escaped + (multiple-value-setq (pc-offset code) + (compute-lra-data-from-pc ra)) +; (format t "ccf4 ~s ~s~%" code pc-offset) + (unless code + (setf code :foreign-function + pc-offset 0 + escaped nil)))) + + (let ((d-fun (case code + (:undefined-function + (make-bogus-debug-function + "The Undefined Function")) + (:foreign-function + (make-bogus-debug-function + "Foreign function call land")) + ((nil) + (make-bogus-debug-function + "Bogus stack frame")) + (t + (debug-function-from-pc code pc-offset))))) + (make-compiled-frame caller up-frame d-fun + (code-location-from-pc d-fun pc-offset + escaped) + (if up-frame (1+ (frame-number up-frame)) 0) + escaped))))) + +#-(or gengc x86) +(defun find-escaped-frame (frame-pointer) + (declare (type system:system-area-pointer frame-pointer)) + (dotimes (index lisp::*free-interrupt-context-index* (values nil 0 nil)) + (alien:with-alien + ((lisp-interrupt-contexts (array (* unix:sigcontext) nil) :extern)) + (let ((scp (alien:deref lisp-interrupt-contexts index))) + (when (= (system:sap-int frame-pointer) + (vm:sigcontext-register scp vm::cfp-offset)) + (system:without-gcing + (let ((code (code-object-from-bits + (vm:sigcontext-register scp vm::code-offset)))) + (when (symbolp code) + (return (values code 0 scp))) + (let* ((code-header-len (* (kernel:get-header-data code) + vm:word-bytes)) + (pc-offset + (- (system:sap-int + (vm:sigcontext-program-counter scp)) + (- (kernel:get-lisp-obj-address code) + vm:other-pointer-type) + code-header-len))) + ;; Check to see if we were executing in a branch delay slot. + #+(or pmax sgi) ; pmax only + (when (logbitp 31 (alien:slot scp 'mips::sc-cause)) + (incf pc-offset vm:word-bytes)) + (unless (<= 0 pc-offset + (* (kernel:code-header-ref code + vm:code-code-size-slot) + vm:word-bytes)) + ;; We were in an assembly routine. Therefore, use the LRA as + ;; the pc. + (setf pc-offset + (- (vm:sigcontext-register scp vm::lra-offset) + (kernel:get-lisp-obj-address code) + code-header-len))) + (return + (if (eq (kernel:%code-debug-info code) :bogus-lra) + (let ((real-lra (kernel:code-header-ref code + real-lra-slot))) + (values (kernel:lra-code-header real-lra) + (kernel:get-header-data real-lra) + nil)) + (values code pc-offset scp))))))))))) +#+x86 +(defun find-escaped-frame (frame-pointer) + (declare (type system:system-area-pointer frame-pointer)) + (dotimes (index lisp::*free-interrupt-context-index* (values nil 0 nil)) + (alien:with-alien + ((lisp-interrupt-contexts (array (* unix:sigcontext) nil) :extern)) + (let ((scp (alien:deref lisp-interrupt-contexts index))) + (when (= (system:sap-int frame-pointer) + (vm:sigcontext-register scp vm::cfp-offset)) + (system:without-gcing + (let* ((component-ptr + (component-ptr-from-pc (vm:sigcontext-program-counter scp))) + (code (if (sap= component-ptr (int-sap #x0)) + nil + (component-from-component-ptr component-ptr)))) + (when (null code) + (return (values code 0 scp))) + (let* ((code-header-len (* (kernel:get-header-data code) + vm:word-bytes)) + (pc-offset + (- (system:sap-int + (vm:sigcontext-program-counter scp)) + (- (kernel:get-lisp-obj-address code) + vm:other-pointer-type) + code-header-len))) + (unless (<= 0 pc-offset + (* (kernel:code-header-ref code + vm:code-code-size-slot) + vm:word-bytes)) + ;; We were in an assembly routine. Therefore, use the LRA as + ;; the pc. + (format t "** pc-offset ~s not in code obj ~s?~%" + pc-offset code)) + (return + (values code pc-offset scp)))))))))) + +;;; CODE-OBJECT-FROM-BITS -- internal. +;;; +;;; Find the code object corresponding to the object represented by bits and +;;; return it. We assume bogus functions correspond to the +;;; undefined-function. +;;; +#-gengc +(defun code-object-from-bits (bits) + (declare (type (unsigned-byte 32) bits)) + (let ((object (kernel:make-lisp-obj bits))) + (if (functionp object) + (or (kernel:function-code-header object) + :undefined-function) + (let ((lowtag (kernel:get-lowtag object))) + (if (= lowtag vm:other-pointer-type) + (let ((type (kernel:get-type object))) + (cond ((= type vm:code-header-type) + object) + ((= type vm:return-pc-header-type) + (kernel:lra-code-header object)) + (t + nil)))))))) + +;;; *SAVED-STATE-CHAIN* -- maintained by the C code as a list of saps, each +;;; sap pointing to a saved exception state. +;;; +#+gengc +(declaim (special kernel::*saved-state-chain*)) + +#+gengc +(defun lookup-trace-table-entry (component pc) + (declare (type code-component component) + (type unsigned-byte pc)) + (let ((tt (system:sap+ (kernel:code-instructions component) + (kernel:code-header-ref + component + vm:code-trace-table-offset-slot))) + (end (system:sap+ (kernel:code-instructions component) + (* (kernel:%code-code-size component) + vm:word-bytes)))) + (iterate repeat ((sap tt) (offset 0) (state vm:trace-table-normal)) + (cond ((> offset pc) + state) + ((system:sap< sap end) + (let ((entry (system:sap-ref-16 tt 0))) + (repeat (system:sap+ sap 2) + (+ offset + (ldb (byte c::tt-bits-per-offset + c::tt-bits-per-state) + entry)) + (ldb (byte c::tt-bits-per-state 0) entry)))) + (t + vm:trace-table-normal))))) + +;;; EXTRACT-INFO-FROM-STATE -- internal. +;;; +;;; Examine the interrupt state and figure out where we were when the interrupt +;;; hit. Return three values, the debug-function, the pc-offset, and the +;;; control-frame-pointer. +;;; +;;; First, we check to see what component the PC is in the middle of. There +;;; are a couple interesting cases: +;;; +;;; - no component: +;;; we were either in one of the C trampoline routines: +;;; - call_into_lisp +;;; - call_into_c +;;; - undefined_tramp +;;; - closure_tramp +;;; - function_end_breakpoint +;;; arn't ever actually in it, because we copy it into a bogus-lra +;;; component before every actually using it. +;;; or someone jumped someplace strange, in which case we can't do anything. +;;; - component w/ :ASSEMBLER-ROUTINE for debug-info: +;;; we are in an assembly routine. RA will point back into the regular +;;; component. In order to find the CFP we need to check the trace table: +;;; - normal: CFP will hold the correct stack pointer. +;;; - call-site: OCFP will hold the correct stack pointer. +;;; - prologue & epilogue: not used +;;; - component w/ :BOGUS-LRA for debug-info: +;;; we are in the middle of a function-end-breakpoint. +;;; - regular component: +;;; check the trace table: +;;; - normal: everything fine: PC & CFP hold the info we want. +;;; - call-site: same as normal, except use OCFP for the frame pointer. +;;; - prologue: this frame hasn't been initialized. Use the caller, who +;;; can be found by looking at RA and OCFP. +;;; - epilogue: we are in a world of hurt, because we have trashed the +;;; current frame and can't reliably find the caller. +;;; +#+gengc +(defun extract-info-from-state (state) + (declare (type (alien:alien (* unix:sigcontext)) state) + (values debug-function unsigned-byte system:system-area-pointer)) + (let* ((pc (vm:sigcontext-program-counter state)) + (component-ptr (component-ptr-from-pc pc))) + (if (zerop (system:sap-int component-ptr)) + ;; We were in one of the trampoline routines or off in the ether. + ;; ### Need to figure out which one, and do something better. + (values (make-bogus-debug-function "Trampoline routine") + 0 + (system:int-sap 0)) + ;; We have a real component. + (let* ((component (component-from-component-ptr component-ptr)) + (pc-offset (- (sap- pc component-ptr) + (* (kernel:get-header-data component) + vm:word-bytes)))) + (case (kernel:%code-debug-info component) + (:assembler-routine + (ecase (lookup-trace-table-entry component pc-offset) + (#.vm:trace-table-normal + ;; ### Need to do something real. + (values (make-bogus-debug-function "Assembler routine.") + 0 + (system:int-sap + (vm:sigcontext-register state vm::cfp-offset)))) + (#.vm:trace-table-call-site + ;; ### Need to do something real. + (values (make-bogus-debug-function "Assembler routine.") + 0 + (system:int-sap + (vm:sigcontext-register state vm::ocfp-offset)))) + (#.vm:trace-table-function-prologue + (values (make-bogus-debug-function + "Function-Prologue in an assembler routine?") + 0 + (system:int-sap 0))) + (#.vm:trace-table-function-epilogue + (values (make-bogus-debug-function + "Function-Epilogue in an assembler routine?") + 0 + (system:int-sap 0))))) + (:bogus-lra + (values (make-bogus-debug-function "Function-end breakpoing") + 0 + (system:int-sap 0))) + (t + (ecase (lookup-trace-table-entry component pc-offset) + (#.vm:trace-table-normal + (values (debug-function-from-pc component pc-offset) + pc-offset + (system:int-sap + (vm:sigcontext-register state vm::cfp-offset)))) + (#.vm:trace-table-call-site + (values (debug-function-from-pc component pc-offset) + pc-offset + (system:int-sap + (vm:sigcontext-register state vm::ocfp-offset)))) + (#.vm:trace-table-function-prologue + #+nil ;; ### Need to do something real. + (let* ((ra (system:int-sap + (vm:sigcontext-register state vm::ra-offset))) + (caller-ptr (component-ptr-from-pc ra))) + ...) + (values (make-bogus-debug-function + "Interrupted function prologue") + 0 + (system:int-sap 0))) + (#.vm:trace-table-function-epilogue + (values (make-bogus-debug-function + "Interrupted function epiloge.") + 0 + (system:int-sap 0)))))))))) + +;;; COMPUTE-CALLING-FRAME -- GenGC version. +;;; +;;; Compute the frame that called us. The information we have available is +;;; the old control-frame-pointer and the return-address. +;;; +;;; On the gengc system, there are fewer special cases that compute-calling- +;;; frame needs to take into account. +;;; +#+gengc +(defun compute-calling-frame (ocfp ra up-frame) + (declare (type system:system-area-pointer ocfp ra)) + (flet ((make-frame (dfun pc-offset &optional (cfp ocfp) state + (chain (if up-frame + (compiled-frame-saved-state-chain + (frame-real-frame up-frame)) + kernel::*saved-state-chain*))) + (make-compiled-frame + cfp up-frame dfun + (code-location-from-pc dfun pc-offset nil) + (if up-frame (1+ (frame-number up-frame)) 0) + chain state))) + (cond + ((zerop (system:sap-int ocfp)) + ;; If the ocfp is NULL, then we are the first stack frame after an + ;; exception (or at the start). + (let ((saved-state-chain (if up-frame + (compiled-frame-saved-state-chain + (frame-real-frame up-frame)) + kernel::*saved-state-chain*))) + (when saved-state-chain + ;; Well, there are more saved states. + (let ((state + (locally + (declare (optimize (inhibit-warnings 3))) + (alien:sap-alien (car saved-state-chain) + (* unix:sigcontext))))) + (multiple-value-bind + (dfun pc-offset cfp) + (extract-info-from-state state) + (make-frame dfun pc-offset cfp state + (cdr saved-state-chain))))))) + ((cstack-pointer-valid-p ocfp) + ;; The ocfp is valid. Find the code component that ra points into. + (let ((component-ptr (component-ptr-from-pc ra))) + (if (zerop (system:sap-int component-ptr)) + ;; There isn't a component. We must have been called from C. + (make-frame (make-bogus-debug-function "Foreign function land") 0) + ;; There is a component. Figure out what it is. + (let ((component (component-from-component-ptr component-ptr))) + ;; ### Should check to see if it is a bogus lra. + (let* ((pc-offset + (- (sap- ra component-ptr) + (* (kernel:get-header-data component) + vm:word-bytes)))) + (make-frame (debug-function-from-pc component pc-offset) + pc-offset)))))) + (t + ;; ocfp isn't NULL and isn't valid: we can't tell anything about the + ;; caller. This shouldn't happen, and if it does, do something sane. + (make-frame (make-bogus-debug-function "Bogus stack frame") 0))))) + +;;; +;;; Frame utilities. +;;; + +;;; DEBUG-FUNCTION-FROM-PC -- Internal. +;;; +;;; This returns a compiled-debug-function for code and pc. We fetch the +;;; c::debug-info and run down its function-map to get a +;;; c::compiled-debug-function from the pc. The result only needs to reference +;;; the component, for function constants, and the c::compiled-debug-function. +;;; +(defun debug-function-from-pc (component pc) + (let ((info (kernel:%code-debug-info component))) + (cond + ((not info) + (debug-signal 'no-debug-info)) + ((eq info :bogus-lra) + (make-bogus-debug-function "Function End Breakpoint")) + (t + (let* ((function-map (get-debug-info-function-map info)) + (len (length function-map))) + (declare (simple-vector function-map)) + (if (= len 1) + (make-compiled-debug-function (svref function-map 0) component) + (let ((i 1) + (elsewhere-p + (>= pc (c::compiled-debug-function-elsewhere-pc + (svref function-map 0))))) + (declare (type c::index i)) + (loop + (when (or (= i len) + (< pc (if elsewhere-p + (c::compiled-debug-function-elsewhere-pc + (svref function-map (1+ i))) + (svref function-map i)))) + (return (make-compiled-debug-function + (svref function-map (1- i)) + component))) + (incf i 2))))))))) + +;;; CODE-LOCATION-FROM-PC -- Internal. +;;; +;;; This returns a code-location for the compiled-debug-function, debug-fun, +;;; and the pc into its code vector. If we stopped at a breakpoint, find +;;; the code-location for that breakpoint. Otherwise, make an :unsure code +;;; location, so it can be filled in when we figure out what is going on. +;;; +(defun code-location-from-pc (debug-fun pc escaped) + (or (and (compiled-debug-function-p debug-fun) + escaped + (let ((data (breakpoint-data + (compiled-debug-function-component debug-fun) + pc nil))) + (when (and data (breakpoint-data-breakpoints data)) + (let ((what (breakpoint-what + (first (breakpoint-data-breakpoints data))))) + (when (compiled-code-location-p what) + what))))) + (make-compiled-code-location pc debug-fun))) + +;;; FRAME-CATCHES -- Public. +;;; +(defun frame-catches (frame) + "Returns an a-list mapping catch tags to code-locations. These are + code-locations at which execution would continue with frame as the top + frame if someone threw to the corresponding tag." + (let ((catch + #-gengc (descriptor-sap lisp::*current-catch-block*) + #+gengc (kernel:mutator-current-catch-block)) + (res nil) + (fp (frame-pointer (frame-real-frame frame)))) + (loop + (when (zerop (sap-int catch)) (return (nreverse res))) + (when (sap= fp + #-alpha + (system:sap-ref-sap catch + (* vm:catch-block-current-cont-slot + vm:word-bytes)) + #+alpha + (kernel::int-sap + (system:sap-ref-32 catch + (* vm:catch-block-current-cont-slot + vm:word-bytes)))) + (let* (#-(or gengc x86) + (lra (kernel:stack-ref catch vm:catch-block-entry-pc-slot)) + #+(or gengc x86) + (ra (system:sap-ref-sap + catch (* vm:catch-block-entry-pc-slot vm:word-bytes))) + #-x86 + (component + (kernel:stack-ref catch vm:catch-block-current-code-slot)) + #+x86 + (component (component-from-component-ptr + (component-ptr-from-pc ra))) + (offset + #-(or gengc x86) + (* (- (1+ (kernel:get-header-data lra)) + (kernel:get-header-data component)) + vm:word-bytes) + #+gengc + (+ (- (system:sap-int ra) + (kernel:get-lisp-obj-address component) + (kernel:get-header-data component)) + vm:other-pointer-type) + #+x86 + (- (system:sap-int ra) + (- (kernel:get-lisp-obj-address component) + vm:other-pointer-type) + (* (kernel:get-header-data component) vm:word-bytes)))) + (push (cons #-x86 + (kernel:stack-ref catch vm:catch-block-tag-slot) + #+x86 + (kernel:make-lisp-obj + (system:sap-ref-32 catch (* vm:catch-block-tag-slot + vm:word-bytes))) + (make-compiled-code-location + offset (frame-debug-function frame))) + res))) + (setf catch + #-alpha + (system:sap-ref-sap catch + (* vm:catch-block-previous-catch-slot + vm:word-bytes)) + #+alpha + (kernel::int-sap + (system:sap-ref-32 catch + (* vm:catch-block-previous-catch-slot + vm:word-bytes))))))) + +;;; FRAME-REAL-FRAME -- Internal. +;;; +;;; If an interpreted frame, return the real frame, otherwise frame. +;;; +(defun frame-real-frame (frame) + (etypecase frame + (compiled-frame frame) + (interpreted-frame (interpreted-frame-real-frame frame)))) + + + +;;;; Debug-functions. + +;;; DO-DEBUG-FUNCTION-BLOCKS -- Public. +;;; +(defmacro do-debug-function-blocks ((block-var debug-function &optional result) + &body body) + "Executes the forms in a context with block-var bound to each debug-block in + debug-function successively. Result is an optional form to execute for + return values, and DO-DEBUG-FUNCTION-BLOCKS returns nil if there is no + result form. This signals a no-debug-blocks condition when the + debug-function lacks debug-block information." + (let ((blocks (gensym)) + (i (gensym))) + `(let ((,blocks (debug-function-debug-blocks ,debug-function))) + (declare (simple-vector ,blocks)) + (dotimes (,i (length ,blocks) ,result) + (let ((,block-var (svref ,blocks ,i))) + ,@body))))) + +;;; DO-DEBUG-FUNCTION-VARIABLES -- Public. +;;; +(defmacro do-debug-function-variables ((var debug-function &optional result) + &body body) + "Executes body in a context with var bound to each debug-variable in + debug-function. This returns the value of executing result (defaults to + nil). This may iterate over only some of debug-function's variables or none + depending on debug policy; for example, possibly the compilation only + preserved argument information." + (let ((vars (gensym)) + (i (gensym))) + `(let ((,vars (debug-function-debug-variables ,debug-function))) + (declare (type (or null simple-vector) ,vars)) + (if ,vars + (dotimes (,i (length ,vars) ,result) + (let ((,var (svref ,vars ,i))) + ,@body)) + ,result)))) + +;;; DEBUG-FUNCTION-FUNCTION -- Public. +;;; +(defun debug-function-function (debug-function) + "Returns the Common Lisp function associated with the debug-function. This + returns nil if the function is unavailable or is non-existent as a user + callable function object." + (let ((cached-value (debug-function-%function debug-function))) + (if (eq cached-value :unparsed) + (setf (debug-function-%function debug-function) + (etypecase debug-function + (compiled-debug-function + (let ((component + (compiled-debug-function-component debug-function)) + (start-pc + (c::compiled-debug-function-start-pc + (compiled-debug-function-compiler-debug-fun + debug-function)))) + (do ((entry (kernel:%code-entry-points component) + (kernel:%function-next entry))) + ((null entry) nil) + (when (= start-pc + (c::compiled-debug-function-start-pc + (compiled-debug-function-compiler-debug-fun + (function-debug-function entry)))) + (return entry))))) + (interpreted-debug-function + (c::lambda-eval-info-function + (c::leaf-info + (interpreted-debug-function-ir1-lambda debug-function)))) + (bogus-debug-function nil))) + cached-value))) + + +;;; DEBUG-FUNCTION-NAME -- Public. +;;; +(defun debug-function-name (debug-function) + "Returns the name of the function represented by debug-function. This may + be a string or a cons; do not assume it is a symbol." + (etypecase debug-function + (compiled-debug-function + (c::compiled-debug-function-name + (compiled-debug-function-compiler-debug-fun debug-function))) + (interpreted-debug-function + (c::lambda-name (interpreted-debug-function-ir1-lambda debug-function))) + (bogus-debug-function + (bogus-debug-function-%name debug-function)))) + + +;;; FUNCTION-DEBUG-FUNCTION -- Public. +;;; +(defun function-debug-function (fun) + "Returns a debug-function that represents debug information for function." + (case (get-type fun) + (#.vm:closure-header-type + (function-debug-function (%closure-function fun))) + (#.vm:funcallable-instance-header-type + (cond ((eval:interpreted-function-p fun) + (make-interpreted-debug-function + (or (eval::interpreted-function-definition fun) + (eval::convert-interpreted-fun fun)))) + (t + (function-debug-function (funcallable-instance-function fun))))) + ((#.vm:function-header-type #.vm:closure-function-header-type) + (let* ((name (kernel:%function-name fun)) + (component (kernel:function-code-header fun)) + (res (find-if + #'(lambda (x) + (and (c::compiled-debug-function-p x) + (eq (c::compiled-debug-function-name x) name) + (eq (c::compiled-debug-function-kind x) nil))) + (get-debug-info-function-map + (kernel:%code-debug-info component))))) + (if res + (make-compiled-debug-function res component) + ;; This used to be the non-interpreted branch, but William wrote it + ;; to return the debug-fun of fun's XEP instead of fun's debug-fun. + ;; The above code does this more correctly, but it doesn't get or + ;; eliminate all appropriate cases. It mostly works, and probably + ;; works for all named functions anyway. + (debug-function-from-pc component + (* (- (kernel:function-word-offset fun) + (kernel:get-header-data component)) + vm:word-bytes))))))) + + +;;; DEBUG-FUNCTION-KIND -- Public. +;;; +(defun debug-function-kind (debug-function) + "Returns the kind of the function which is one of :optional, :external, + :top-level, :cleanup, nil." + (etypecase debug-function + (compiled-debug-function + (c::compiled-debug-function-kind + (compiled-debug-function-compiler-debug-fun debug-function))) + (interpreted-debug-function + (c::lambda-kind (interpreted-debug-function-ir1-lambda debug-function))) + (bogus-debug-function + nil))) + +;;; DEBUG-VARIABLE-INFO-AVAILABLE -- Public. +;;; +(defun debug-variable-info-available (debug-function) + "Returns whether there is any variable information for debug-function." + (not (not (debug-function-debug-variables debug-function)))) + +;;; DEBUG-FUNCTION-SYMBOL-VARIABLES -- Public. +;;; +(defun debug-function-symbol-variables (debug-function symbol) + "Returns a list of debug-variables in debug-function having the same name + and package as symbol. If symbol is uninterned, then this returns a list of + debug-variables without package names and with the same name as symbol. The + result of this function is limited to the availability of variable + information in debug-function; for example, possibly debug-function only + knows about its arguments." + (let ((vars (ambiguous-debug-variables debug-function (symbol-name symbol))) + (package (if (symbol-package symbol) + (package-name (symbol-package symbol))))) + (delete-if (if (stringp package) + #'(lambda (var) + (let ((p (debug-variable-package var))) + (or (not (stringp p)) + (string/= p package)))) + #'(lambda (var) + (stringp (debug-variable-package var)))) + vars))) + +;;; AMBIGUOUS-DEBUG-VARIABLES -- Public. +;;; +(defun ambiguous-debug-variables (debug-function name-prefix-string) + "Returns a list of debug-variables in debug-function whose names contain + name-prefix-string as an intial substring. The result of this function is + limited to the availability of variable information in debug-function; for + example, possibly debug-function only knows about its arguments." + (declare (simple-string name-prefix-string)) + (let ((variables (debug-function-debug-variables debug-function))) + (declare (type (or null simple-vector) variables)) + (if variables + (let* ((len (length variables)) + (prefix-len (length name-prefix-string)) + (pos (find-variable name-prefix-string variables len)) + (res nil)) + (when pos + ;; Find names from pos to variable's len that contain prefix. + (do ((i pos (1+ i))) + ((= i len)) + (let* ((var (svref variables i)) + (name (debug-variable-name var)) + (name-len (length name))) + (declare (simple-string name)) + (when (/= (or (string/= name-prefix-string name + :end1 prefix-len :end2 name-len) + prefix-len) + prefix-len) + (return)) + (push var res))) + (setq res (nreverse res))) + res)))) + +;;; FIND-VARIABLE -- Internal. +;;; +;;; This returns a position in variables for one containing name as an initial +;;; substring. End is the length of variables if supplied. +;;; +(defun find-variable (name variables &optional end) + (declare (simple-vector variables) + (simple-string name)) + (let ((name-len (length name))) + (position name variables + :test #'(lambda (x y) + (let* ((y (debug-variable-name y)) + (y-len (length y))) + (declare (simple-string y)) + (and (>= y-len name-len) + (string= x y :end1 name-len :end2 name-len)))) + :end (or end (length variables))))) + +;;; DEBUG-FUNCTION-LAMBDA-LIST -- Public. +;;; +(defun debug-function-lambda-list (debug-function) + "Returns a list representing the lambda-list for debug-function. The list + has the following structure: + (required-var1 required-var2 + ... + (:optional var3 suppliedp-var4) + (:optional var5) + ... + (:rest var6) (:rest var7) + ... + (:keyword keyword-symbol var8 suppliedp-var9) + (:keyword keyword-symbol var10) + ... + ) + Each VARi is a debug-variable; however it may be the symbol :deleted it + is unreferenced in debug-function. This signals a lambda-list-unavaliable + condition when there is no argument list information." + (etypecase debug-function + (compiled-debug-function + (compiled-debug-function-lambda-list debug-function)) + (interpreted-debug-function + (interpreted-debug-function-lambda-list debug-function)) + (bogus-debug-function + nil))) + +;;; INTERPRETED-DEBUG-FUNCTION-LAMBDA-LIST -- Internal. +;;; +;;; The hard part is when the lambda-list is unparsed. If it is unparsed, +;;; and all the arguments are required, this is still pretty easy; just +;;; whip the appropriate debug-variables into a list. Otherwise, we have +;;; to pick out the funny arguments including any suppliedp variables. In +;;; this situation, the ir1-lambda is an external entry point that takes +;;; arguments users really pass in. It looks at those and computes defaults +;;; and suppliedp variables, ultimately passing everything defined as a +;;; a parameter to the real function as final arguments. If this has to +;;; compute the lambda list, it caches it in debug-function. +;;; +(defun interpreted-debug-function-lambda-list (debug-function) + (let ((lambda-list (debug-function-%lambda-list debug-function)) + (debug-vars (debug-function-debug-variables debug-function)) + (ir1-lambda (interpreted-debug-function-ir1-lambda debug-function)) + (res nil)) + (if (eq lambda-list :unparsed) + (flet ((frob (v debug-vars) + (if (c::lambda-var-refs v) + (find v debug-vars + :key #'interpreted-debug-variable-ir1-var) + :deleted))) + (let ((xep-args (c::lambda-optional-dispatch ir1-lambda))) + (if (and xep-args + (eq (c::optional-dispatch-main-entry xep-args) ir1-lambda)) + ;; + ;; There are rest, optional, keyword, and suppliedp vars. + (let ((final-args (c::lambda-vars ir1-lambda))) + (dolist (xep-arg (c::optional-dispatch-arglist xep-args)) + (let ((info (c::lambda-var-arg-info xep-arg)) + (final-arg (pop final-args))) + (cond (info + (case (c::arg-info-kind info) + (:required + (push (frob final-arg debug-vars) res)) + (:keyword + (push (list :keyword + (c::arg-info-keyword info) + (frob final-arg debug-vars)) + res)) + (:rest + (push (list :rest (frob final-arg debug-vars)) + res)) + (:optional + (push (list :optional + (frob final-arg debug-vars)) + res))) + (when (c::arg-info-supplied-p info) + (nconc + (car res) + (list (frob (pop final-args) debug-vars))))) + (t + (push (frob final-arg debug-vars) res))))) + (setf (debug-function-%lambda-list debug-function) + (nreverse res))) + ;; + ;; All required args, so return them in a list. + (dolist (v (c::lambda-vars ir1-lambda) + (setf (debug-function-%lambda-list debug-function) + (nreverse res))) + (push (frob v debug-vars) res))))) + ;; + ;; Everything's unparsed and cached, so return it. + lambda-list))) + +;;; COMPILED-DEBUG-FUNCTION-LAMBDA-LIST -- Internal. +;;; +;;; If this has to compute the lambda list, it caches it in debug-function. +;;; +(defun compiled-debug-function-lambda-list (debug-function) + (let ((lambda-list (debug-function-%lambda-list debug-function))) + (cond ((eq lambda-list :unparsed) + (multiple-value-bind + (args argsp) + (parse-compiled-debug-function-lambda-list debug-function) + (setf (debug-function-%lambda-list debug-function) args) + (if argsp + args + (debug-signal 'lambda-list-unavailable + :debug-function debug-function)))) + (lambda-list) + ((bogus-debug-function-p debug-function) + nil) + ((c::compiled-debug-function-arguments + (compiled-debug-function-compiler-debug-fun + debug-function)) + ;; If the packed information is there (whether empty or not) as + ;; opposed to being nil, then returned our cached value (nil). + nil) + (t + ;; Our cached value is nil, and the packed lambda-list information + ;; is nil, so we don't have anything available. + (debug-signal 'lambda-list-unavailable + :debug-function debug-function))))) + +;;; PARSE-COMPILED-DEBUG-FUNCTION-LAMBDA-LIST -- Internal. +;;; +;;; COMPILED-DEBUG-FUNCTION-LAMBDA-LIST calls this when a +;;; compiled-debug-function has no lambda-list information cached. It returns +;;; the lambda-list as the first value and whether there was any argument +;;; information as the second value. Therefore, nil and t means there were no +;;; arguments, but nil and nil means there was no argument information. +;;; +(defun parse-compiled-debug-function-lambda-list (debug-function) + (let ((args (c::compiled-debug-function-arguments + (compiled-debug-function-compiler-debug-fun + debug-function)))) + (cond + ((not args) + (values nil nil)) + ((eq args :minimal) + (values (coerce (debug-function-debug-variables debug-function) 'list) + t)) + (t + (let ((vars (debug-function-debug-variables debug-function)) + (i 0) + (len (length args)) + (res nil) + (optionalp nil)) + (declare (type (or null simple-vector) vars)) + (loop + (when (>= i len) (return)) + (let ((ele (aref args i))) + (cond + ((symbolp ele) + (case ele + (c::deleted + ;; Deleted required arg at beginning of args array. + (push :deleted res)) + (c::optional-args + (setf optionalp t)) + (c::supplied-p + ;; supplied-p var immediately following keyword or optional. + ;; Stick the extra var in the result element representing + ;; the keyword or optional, which is the previous one. + (nconc (car res) + (list (compiled-debug-function-lambda-list-var + args (incf i) vars)))) + (c::rest-arg + (push (list :rest + (compiled-debug-function-lambda-list-var + args (incf i) vars)) + res)) + (c::more-arg + ;; Just ignore the fact that the next two args are the + ;; more arg context and count, and act like they are + ;; regular arguments. + nil) + (t + ;; Keyword arg. + (push (list :keyword + ele + (compiled-debug-function-lambda-list-var + args (incf i) vars)) + res)))) + (optionalp + ;; We saw an optional marker, so the following non-symbols are + ;; indexes indicating optional variables. + (push (list :optional (svref vars ele)) res)) + (t + ;; Required arg at beginning of args array. + (push (svref vars ele) res)))) + (incf i)) + (values (nreverse res) t)))))) + +;;; COMPILED-DEBUG-FUNCTION-LAMBDA-LIST-VAR -- Internal +;;; +;;; Used in COMPILED-DEBUG-FUNCTION-LAMBDA-LIST. +;;; +(defun compiled-debug-function-lambda-list-var (args i vars) + (declare (type (simple-array * (*)) args) + (simple-vector vars)) + (let ((ele (aref args i))) + (cond ((not (symbolp ele)) (svref vars ele)) + ((eq ele 'c::deleted) :deleted) + (t (error "Malformed arguments description."))))) + +;;; COMPILED-DEBUG-FUNCTION-DEBUG-INFO -- Internal. +;;; +(defun compiled-debug-function-debug-info (debug-fun) + (kernel:%code-debug-info (compiled-debug-function-component debug-fun))) + + + +;;;; Unpacking variable and basic block data. + +(defvar *parsing-buffer* + (make-array 20 :adjustable t :fill-pointer t)) +(defvar *other-parsing-buffer* + (make-array 20 :adjustable t :fill-pointer t)) +;;; +;;; WITH-PARSING-BUFFER -- Internal. +;;; +;;; PARSE-DEBUG-BLOCKS, PARSE-DEBUG-VARIABLES and UNCOMPACT-FUNCTION-MAP use +;;; this to unpack binary encoded information. It returns the values returned +;;; by the last form in body. +;;; +;;; This binds buffer-var to *parsing-buffer*, makes sure it starts at element +;;; zero, and makes sure if we unwind, we nil out any set elements for GC +;;; purposes. +;;; +;;; This also binds other-var to *other-parsing-buffer* when it is supplied, +;;; making sure it starts at element zero and that we nil out any elements if +;;; we unwind. +;;; +;;; This defines the local macro RESULT that takes a buffer, copies its +;;; elements to a resulting simple-vector, nil's out elements, and restarts +;;; the buffer at element zero. RESULT returns the simple-vector. +;;; +(eval-when (compile eval) +(defmacro with-parsing-buffer ((buffer-var &optional other-var) &body body) + (let ((len (gensym)) + (res (gensym))) + `(unwind-protect + (let ((,buffer-var *parsing-buffer*) + ,@(if other-var `((,other-var *other-parsing-buffer*)))) + (setf (fill-pointer ,buffer-var) 0) + ,@(if other-var `((setf (fill-pointer ,other-var) 0))) + (macrolet ((result (buf) + `(let* ((,',len (length ,buf)) + (,',res (make-array ,',len))) + (replace ,',res ,buf :end1 ,',len :end2 ,',len) + (fill ,buf nil :end ,',len) + (setf (fill-pointer ,buf) 0) + ,',res))) + ,@body)) + (fill *parsing-buffer* nil) + ,@(if other-var `((fill *other-parsing-buffer* nil)))))) +) ;eval-when + + +;;; DEBUG-FUNCTION-DEBUG-BLOCKS -- Internal. +;;; +;;; The argument is a debug internals structure. This returns the debug-blocks +;;; for debug-function, regardless of whether we have unpacked them yet. It +;;; signals a no-debug-blocks condition if it can't return the blocks. +;;; +(defun debug-function-debug-blocks (debug-function) + (let ((blocks (debug-function-blocks debug-function))) + (cond ((eq blocks :unparsed) + (setf (debug-function-blocks debug-function) + (parse-debug-blocks debug-function)) + (unless (debug-function-blocks debug-function) + (debug-signal 'no-debug-blocks + :debug-function debug-function)) + (debug-function-blocks debug-function)) + (blocks) + (t + (debug-signal 'no-debug-blocks + :debug-function debug-function))))) + +;;; PARSE-DEBUG-BLOCKS -- Internal. +;;; +;;; This returns a simple-vector of debug-blocks or nil. Nil indicates there +;;; was no basic block information. +;;; +(defun parse-debug-blocks (debug-function) + (etypecase debug-function + (compiled-debug-function + (parse-compiled-debug-blocks debug-function)) + (bogus-debug-function + (debug-signal 'no-debug-blocks :debug-function debug-function)) + (interpreted-debug-function + (parse-interpreted-debug-blocks debug-function)))) + + +;;; PARSE-COMPILED-DEBUG-BLOCKS -- Internal. +;;; +;;; This does some of the work of PARSE-DEBUG-BLOCKS. +;;; +(defun parse-compiled-debug-blocks (debug-function) + (let* ((debug-fun (compiled-debug-function-compiler-debug-fun debug-function)) + (var-count (length (debug-function-debug-variables debug-function))) + (blocks (c::compiled-debug-function-blocks debug-fun)) + ;; 8 is a hard-wired constant in the compiler for the element size of + ;; the packed binary representation of the blocks data. + (live-set-len (ceiling var-count 8)) + (tlf-number (c::compiled-debug-function-tlf-number debug-fun))) + (unless blocks (return-from parse-compiled-debug-blocks nil)) + (macrolet ((aref+ (a i) `(prog1 (aref ,a ,i) (incf ,i)))) + (with-parsing-buffer (blocks-buffer locations-buffer) + (let ((i 0) + (len (length blocks)) + (last-pc 0)) + (loop + (when (>= i len) (return)) + (let ((succ-and-flags (aref+ blocks i)) + (successors nil)) + (declare (type (unsigned-byte 8) succ-and-flags) + (list successors)) + (dotimes (k (ldb c::compiled-debug-block-nsucc-byte + succ-and-flags)) + (push (c::read-var-integer blocks i) successors)) + (let* ((locations + (dotimes (k (c::read-var-integer blocks i) + (result locations-buffer)) + (let ((kind (svref c::compiled-code-location-kinds + (aref+ blocks i))) + (pc (+ last-pc (c::read-var-integer blocks i))) + (tlf-offset (or tlf-number + (c::read-var-integer blocks i))) + (form-number (c::read-var-integer blocks i)) + (live-set (c::read-packed-bit-vector + live-set-len blocks i))) + (vector-push-extend (make-known-code-location + pc debug-function tlf-offset + form-number live-set kind) + locations-buffer) + (setf last-pc pc)))) + (block (make-compiled-debug-block + locations successors + (not (zerop (logand + c::compiled-debug-block-elsewhere-p + succ-and-flags)))))) + (vector-push-extend block blocks-buffer) + (dotimes (k (length locations)) + (setf (code-location-%debug-block (svref locations k)) + block)))))) + (let ((res (result blocks-buffer))) + (declare (simple-vector res)) + (dotimes (i (length res)) + (let* ((block (svref res i)) + (succs nil)) + (dolist (ele (debug-block-successors block)) + (push (svref res ele) succs)) + (setf (debug-block-successors block) succs))) + res))))) + +;;; PARSE-INTERPRETED-DEBUG-BLOCKS -- Internal. +;;; +;;; This does some of the work of PARSE-DEBUG-BLOCKS. +;;; +(defun parse-interpreted-debug-blocks (debug-function) + (let ((ir1-lambda (interpreted-debug-function-ir1-lambda debug-function))) + (with-parsing-buffer (buffer) + (c::do-blocks (block (c::block-component + (c::node-block (c::lambda-bind ir1-lambda)))) + (when (eq ir1-lambda (c::block-home-lambda block)) + (vector-push-extend (make-interpreted-debug-block block) buffer))) + (result buffer)))) + + +;;; DEBUG-FUNCTION-DEBUG-VARIABLES -- Internal. +;;; +;;; The argument is a debug internals structure. This returns nil if there is +;;; no variable information. It returns an empty simple-vector if there were +;;; no locals in the function. Otherwise it returns a simple-vector of +;;; debug-variables. +;;; +(defun debug-function-debug-variables (debug-function) + (let ((vars (debug-function-debug-vars debug-function))) + (if (eq vars :unparsed) + (setf (debug-function-debug-vars debug-function) + (etypecase debug-function + (compiled-debug-function + (parse-compiled-debug-variables debug-function)) + (bogus-debug-function nil) + (interpreted-debug-function + (parse-interpreted-debug-variables debug-function)))) + vars))) + + +;;; PARSE-INTERPRETED-DEBUG-VARIABLES -- Internal. +;;; +;;; This grabs all the variables from debug-fun's ir1-lambda, from the IR1 +;;; lambda vars, and all of it's LET's. Each LET is an IR1 lambda. For each +;;; variable, we make an interpreted-debug-variable. We then SORT all the +;;; variables by name. Then we go through, and for any duplicated names we +;;; distinguish the interpreted-debug-variables by setting their id slots to a +;;; distinct number. +;;; +(defun parse-interpreted-debug-variables (debug-fun) + (let* ((ir1-lambda (interpreted-debug-function-ir1-lambda debug-fun)) + (vars (flet ((frob (ir1-lambda buf) + (dolist (v (c::lambda-vars ir1-lambda)) + (vector-push-extend + (let* ((id (c::leaf-name v)) + (pkg (symbol-package id))) + (make-interpreted-debug-variable + (symbol-name id) + (when pkg (package-name pkg)) + v)) + buf)))) + (with-parsing-buffer (buf) + (frob ir1-lambda buf) + (dolist (let-lambda (c::lambda-lets ir1-lambda)) + (frob let-lambda buf)) + (result buf))))) + (declare (simple-vector vars)) + (sort vars #'string< :key #'debug-variable-name) + (let ((len (length vars))) + (when (> len 1) + (let ((i 0) + (j 1)) + (block PUNT + (loop + (let* ((var-i (svref vars i)) + (var-j (svref vars j)) + (name (debug-variable-name var-i))) + (when (string= name (debug-variable-name var-j)) + (let ((count 1)) + (loop + (setf (debug-variable-id var-j) count) + (when (= (incf j) len) (return-from PUNT)) + (setf var-j (svref vars j)) + (when (string/= name (debug-variable-name var-j)) + (return)) + (incf count)))) + (setf i j) + (incf j) + (when (= j len) (return)))))))) + vars)) + + +;;; ASSIGN-MINIMAL-VAR-NAMES -- Internal. +;;; +;;; Vars is the parsed variables for a minimal debug function. We need to +;;; assign names of the form ARG-NNN. We must pad with leading zeros, since +;;; the arguments must be in alphabetical order. +;;; +(defun assign-minimal-var-names (vars) + (declare (simple-vector vars)) + (let* ((len (length vars)) + (width (length (format nil "~D" (1- len))))) + (dotimes (i len) + (setf (compiled-debug-variable-name (svref vars i)) + (format nil "ARG-~V,'0D" width i))))) + + +;;; PARSE-COMPILED-DEBUG-VARIABLES -- Internal. +;;; +;;; This parses the packed binary representation of debug-variables from +;;; debug-function's c::compiled-debug-function. +;;; +(defun parse-compiled-debug-variables (debug-function) + (let* ((debug-fun (compiled-debug-function-compiler-debug-fun debug-function)) + (packed-vars (c::compiled-debug-function-variables debug-fun)) + (default-package (c::compiled-debug-info-package + (compiled-debug-function-debug-info debug-function))) + (args-minimal (eq (c::compiled-debug-function-arguments debug-fun) + :minimal))) + (unless packed-vars + (return-from parse-compiled-debug-variables nil)) + (when (zerop (length packed-vars)) + ;; Return a simple-vector not whatever packed-vars may be. + (return-from parse-compiled-debug-variables '#())) + (let ((i 0) + (len (length packed-vars))) + (with-parsing-buffer (buffer) + (loop + ;; The routines in the "C" package are macros that advance the + ;; index. + (let* ((flags (prog1 (aref packed-vars i) (incf i))) + (minimal (logtest c::compiled-debug-variable-minimal-p flags)) + (deleted (logtest c::compiled-debug-variable-deleted-p flags)) + (name (if minimal "" (c::read-var-string packed-vars i))) + (package (cond + (minimal default-package) + ((logtest c::compiled-debug-variable-packaged + flags) + (c::read-var-string packed-vars i)) + ((logtest c::compiled-debug-variable-uninterned + flags) + nil) + (t + default-package))) + (id (if (logtest c::compiled-debug-variable-id-p flags) + (c::read-var-integer packed-vars i) + 0)) + (sc-offset + (if deleted 0 (c::read-var-integer packed-vars i))) + (save-sc-offset + (if (logtest c::compiled-debug-variable-save-loc-p flags) + (c::read-var-integer packed-vars i) + nil))) + (assert (not (and args-minimal (not minimal)))) + (vector-push-extend + (make-compiled-debug-variable + name package id + (logtest c::compiled-debug-variable-environment-live flags) + sc-offset save-sc-offset) + buffer)) + (when (>= i len) (return))) + (let ((res (result buffer))) + (when args-minimal + (assign-minimal-var-names res)) + res))))) + + +;;;; Unpacking minimal debug functions. + +(eval-when (compile eval) + +;;; MAKE-UNCOMPACTED-DEBUG-FUN -- Internal. +;;; +;;; Sleazoid "macro" to keep our indentation sane in UNCOMPACT-FUNCTION-MAP. +;;; +(defmacro make-uncompacted-debug-fun () + '(c::make-compiled-debug-function + :name + (let ((base (ecase (ldb c::minimal-debug-function-name-style-byte + options) + (#.c::minimal-debug-function-name-symbol + (intern (c::read-var-string map i) + (c::compiled-debug-info-package info))) + (#.c::minimal-debug-function-name-packaged + (let ((pkg (c::read-var-string map i))) + (intern (c::read-var-string map i) pkg))) + (#.c::minimal-debug-function-name-uninterned + (make-symbol (c::read-var-string map i))) + (#.c::minimal-debug-function-name-component + (c::compiled-debug-info-name info))))) + (if (logtest flags c::minimal-debug-function-setf-bit) + `(setf ,base) + base)) + :kind (svref c::minimal-debug-function-kinds + (ldb c::minimal-debug-function-kind-byte options)) + :variables + (when vars-p + (let ((len (c::read-var-integer map i))) + (prog1 (subseq map i (+ i len)) + (incf i len)))) + :arguments (when vars-p :minimal) + :returns + (ecase (ldb c::minimal-debug-function-returns-byte options) + (#.c::minimal-debug-function-returns-standard + :standard) + (#.c::minimal-debug-function-returns-fixed + :fixed) + (#.c::minimal-debug-function-returns-specified + (with-parsing-buffer (buf) + (dotimes (idx (c::read-var-integer map i)) + (vector-push-extend (c::read-var-integer map i) buf)) + (result buf)))) + :return-pc (c::read-var-integer map i) + :old-fp (c::read-var-integer map i) + :nfp (when (logtest flags c::minimal-debug-function-nfp-bit) + (c::read-var-integer map i)) + :start-pc + (progn + (setq code-start-pc (+ code-start-pc (c::read-var-integer map i))) + (+ code-start-pc (c::read-var-integer map i))) + :elsewhere-pc + (setq elsewhere-pc (+ elsewhere-pc (c::read-var-integer map i))))) + +) ;EVAL-WHEN (compile eval) + +;;; UNCOMPACT-FUNCTION-MAP -- Internal +;;; +;;; Return a normal function map derived from a minimal debug info function +;;; map. This involves looping parsing minimal-debug-functions and then +;;; building a vector out of them. +;;; +(defun uncompact-function-map (info) + (declare (type c::compiled-debug-info info)) + (let* ((map (c::compiled-debug-info-function-map info)) + (i 0) + (len (length map)) + (code-start-pc 0) + (elsewhere-pc 0)) + (declare (type (simple-array (unsigned-byte 8) (*)) map)) + (ext:collect ((res)) + (loop + (when (= i len) (return)) + (let* ((options (prog1 (aref map i) (incf i))) + (flags (prog1 (aref map i) (incf i))) + (vars-p (logtest flags c::minimal-debug-function-variables-bit)) + (dfun (make-uncompacted-debug-fun))) + (res code-start-pc) + (res dfun))) + + (coerce (cdr (res)) 'simple-vector)))) + + +;;; This variable maps minimal debug-info function maps to an unpacked version +;;; thereof. +;;; +(defvar *uncompacted-function-maps* (make-hash-table :test #'eq)) + +;;; GET-DEBUG-INFO-FUNCTION-MAP -- Internal +;;; +;;; Return a function-map for a given compiled-debug-info object. If the +;;; info is minimal, and has not been parsed, then parse it. +;;; +(defun get-debug-info-function-map (info) + (declare (type c::compiled-debug-info info)) + (let ((map (c::compiled-debug-info-function-map info))) + (if (simple-vector-p map) + map + (or (gethash map *uncompacted-function-maps*) + (setf (gethash map *uncompacted-function-maps*) + (uncompact-function-map info)))))) + + +;;;; Code-locations. + +;;; CODE-LOCATION-UNKNOWN-P -- Public. +;;; +;;; If we're sure of whether code-location is known, return t or nil. If we're +;;; :unsure, then try to fill in the code-location's slots. This determines +;;; whether there is any debug-block information, and if code-location is +;;; known. +;;; +;;; ??? IF this conses closures every time it's called, then break off the +;;; :unsure part to get the HANDLER-CASE into another function. +;;; +(defun code-location-unknown-p (basic-code-location) + "Returns whether basic-code-location is unknown. It returns nil when the + code-location is known." + (ecase (code-location-%unknown-p basic-code-location) + ((t) t) + ((nil) nil) + (:unsure + (setf (code-location-%unknown-p basic-code-location) + (handler-case (not (fill-in-code-location basic-code-location)) + (no-debug-blocks () t)))))) + +;;; CODE-LOCATION-DEBUG-BLOCK -- Public. +;;; +(defun code-location-debug-block (basic-code-location) + "Returns the debug-block containing code-location if it is available. Some + debug policies inhibit debug-block information, and if none is available, + then this signals a no-debug-blocks condition." + (let ((block (code-location-%debug-block basic-code-location))) + (if (eq block :unparsed) + (etypecase basic-code-location + (compiled-code-location + (compute-compiled-code-location-debug-block basic-code-location)) + (interpreted-code-location + (setf (code-location-%debug-block basic-code-location) + (make-interpreted-debug-block + (c::node-block + (interpreted-code-location-ir1-node basic-code-location)))))) + block))) + +;;; COMPUTE-COMPILED-CODE-LOCATION-DEBUG-BLOCK -- Internal. +;;; +;;; This stores and returns basic-code-location's debug-block. It determines +;;; the correct one using the code-location's pc. This uses +;;; DEBUG-FUNCTION-DEBUG-BLOCKS to return the cached block information or +;;; signal a 'no-debug-blocks condition. The blocks are sorted by their first +;;; code-location's pc, in ascending order. Therefore, as soon as we find a +;;; block that starts with a pc greater than basic-code-location's pc, we know +;;; the previous block contains the pc. If we get to the last block, then the +;;; code-location is either in the second to last block or the last block, and +;;; we have to be careful in determining this since the last block could be +;;; random code at the end of the function. We have to check for the last +;;; block being random code first to see how to compare the code-location's pc. +;;; +(defun compute-compiled-code-location-debug-block (basic-code-location) + (let* ((pc (compiled-code-location-pc basic-code-location)) + (debug-function (code-location-debug-function + basic-code-location)) + (blocks (debug-function-debug-blocks debug-function)) + (len (length blocks))) + (declare (simple-vector blocks)) + (setf (code-location-%debug-block basic-code-location) + (if (= len 1) + (svref blocks 0) + (do ((i 1 (1+ i)) + (end (1- len))) + ((= i end) + (let ((last (svref blocks end))) + (cond + ((debug-block-elsewhere-p last) + (if (< pc + (c::compiled-debug-function-elsewhere-pc + (compiled-debug-function-compiler-debug-fun + debug-function))) + (svref blocks (1- end)) + last)) + ((< pc + (compiled-code-location-pc + (svref (compiled-debug-block-code-locations last) + 0))) + (svref blocks (1- end))) + (t last)))) + (declare (type c::index i end)) + (when (< pc + (compiled-code-location-pc + (svref (compiled-debug-block-code-locations + (svref blocks i)) + 0))) + (return (svref blocks (1- i))))))))) + +;;; CODE-LOCATION-DEBUG-SOURCE -- Public. +;;; +(defun code-location-debug-source (code-location) + "Returns the code-location's debug-source." + (etypecase code-location + (compiled-code-location + (let* ((info (compiled-debug-function-debug-info + (code-location-debug-function code-location))) + (sources (c::compiled-debug-info-source info)) + (len (length sources))) + (declare (list sources)) + (when (zerop len) + (debug-signal 'no-debug-blocks :debug-function + (code-location-debug-function code-location))) + (if (= len 1) + (car sources) + (do ((prev sources src) + (src (cdr sources) (cdr src)) + (offset (code-location-top-level-form-offset code-location))) + ((null src) (car prev)) + (when (< offset (c::debug-source-source-root (car src))) + (return (car prev))))))) + (interpreted-code-location + (first + (let ((c::*lexical-environment* (c::make-null-environment))) + (c::debug-source-for-info + (c::component-source-info + (c::block-component + (c::node-block + (interpreted-code-location-ir1-node code-location)))))))))) + + +;;; CODE-LOCATION-TOP-LEVEL-FORM-OFFSET -- Public. +;;; +(defun code-location-top-level-form-offset (code-location) + "Returns the number of top-level forms before the one containing + code-location as seen by the compiler in some compilation unit. A + compilation unit is not necessarily a single file, see the section on + debug-sources." + (when (code-location-unknown-p code-location) + (error 'unknown-code-location :code-location code-location)) + (let ((tlf-offset (code-location-%tlf-offset code-location))) + (cond ((eq tlf-offset :unparsed) + (etypecase code-location + (compiled-code-location + (unless (fill-in-code-location code-location) + ;; This check should be unnecessary. We're missing debug info + ;; the compiler should have dumped. + (error "Unknown code location? It should be known.")) + (code-location-%tlf-offset code-location)) + (interpreted-code-location + (setf (code-location-%tlf-offset code-location) + (c::source-path-tlf-number + (c::node-source-path + (interpreted-code-location-ir1-node code-location))))))) + (t tlf-offset)))) + +;;; CODE-LOCATION-FORM-NUMBER -- Public. +;;; +(defun code-location-form-number (code-location) + "Returns the number of the form corresponding to code-location. The form + number is derived by a walking the subforms of a top-level form in + depth-first order." + (when (code-location-unknown-p code-location) + (error 'unknown-code-location :code-location code-location)) + (let ((form-num (code-location-%form-number code-location))) + (cond ((eq form-num :unparsed) + (etypecase code-location + (compiled-code-location + (unless (fill-in-code-location code-location) + ;; This check should be unnecessary. We're missing debug info + ;; the compiler should have dumped. + (error "Unknown code location? It should be known.")) + (code-location-%form-number code-location)) + (interpreted-code-location + (setf (code-location-%form-number code-location) + (c::source-path-form-number + (c::node-source-path + (interpreted-code-location-ir1-node code-location))))))) + (t form-num)))) + +;;; CODE-LOCATION-KIND -- Public +;;; +(defun code-location-kind (code-location) + "Return the kind of CODE-LOCATION, one of: + :interpreted, :unknown-return, :known-return, :internal-error, + :non-local-exit, :block-start, :call-site, :single-value-return, + :non-local-entry" + (when (code-location-unknown-p code-location) + (error 'unknown-code-location :code-location code-location)) + (etypecase code-location + (compiled-code-location + (let ((kind (compiled-code-location-kind code-location))) + (cond ((not (eq kind :unparsed)) kind) + ((not (fill-in-code-location code-location)) + ;; This check should be unnecessary. We're missing + ;; debug info the compiler should have dumped. + (error "Unknown code location? It should be known.")) + (t + (compiled-code-location-kind code-location))))) + (interpreted-code-location + :interpreted))) + + +;;; COMPILED-CODE-LOCATION-LIVE-SET -- Internal. +;;; +;;; This returns the code-location's live-set if it is available. If there +;;; is no debug-block information, this returns nil. +;;; +(defun compiled-code-location-live-set (code-location) + (if (code-location-unknown-p code-location) + nil + (let ((live-set (compiled-code-location-%live-set code-location))) + (cond ((eq live-set :unparsed) + (unless (fill-in-code-location code-location) + ;; This check should be unnecessary. We're missing debug info + ;; the compiler should have dumped. + (error "Unknown code location? It should be known.")) + (compiled-code-location-%live-set code-location)) + (t live-set))))) + +;;; CODE-LOCATION= -- Public. +;;; +(defun code-location= (obj1 obj2) + "Returns whether obj1 and obj2 are the same place in the code." + (etypecase obj1 + (compiled-code-location + (etypecase obj2 + (compiled-code-location + (and (eq (code-location-debug-function obj1) + (code-location-debug-function obj2)) + (sub-compiled-code-location= obj1 obj2))) + (interpreted-code-location + nil))) + (interpreted-code-location + (etypecase obj2 + (compiled-code-location + nil) + (interpreted-code-location + (eq (interpreted-code-location-ir1-node obj1) + (interpreted-code-location-ir1-node obj2))))))) +;;; +(defun sub-compiled-code-location= (obj1 obj2) + (= (compiled-code-location-pc obj1) + (compiled-code-location-pc obj2))) + +;;; FILL-IN-CODE-LOCATION -- Internal. +;;; +;;; This fills in location's :unparsed slots. It returns t or nil depending on +;;; whether the code-location was known in its debug-function's debug-block +;;; information. This may signal a no-debug-blocks condition due to +;;; DEBUG-FUNCTION-DEBUG-BLOCKS, and it assumes the %unknown-p slot is already +;;; set or going to be set. +;;; +(defun fill-in-code-location (code-location) + (declare (type compiled-code-location code-location)) + (let* ((debug-function (code-location-debug-function code-location)) + (blocks (debug-function-debug-blocks debug-function))) + (declare (simple-vector blocks)) + (dotimes (i (length blocks) nil) + (let* ((block (svref blocks i)) + (locations (compiled-debug-block-code-locations block))) + (declare (simple-vector locations)) + (dotimes (j (length locations)) + (let ((loc (svref locations j))) + (when (sub-compiled-code-location= code-location loc) + (setf (code-location-%debug-block code-location) block) + (setf (code-location-%tlf-offset code-location) + (code-location-%tlf-offset loc)) + (setf (code-location-%form-number code-location) + (code-location-%form-number loc)) + (setf (compiled-code-location-%live-set code-location) + (compiled-code-location-%live-set loc)) + (setf (compiled-code-location-kind code-location) + (compiled-code-location-kind loc)) + (return-from fill-in-code-location t)))))))) + + + +;;;; Debug-blocks. + +;;; DO-DEBUG-BLOCK-LOCATIONS -- Public. +;;; +(defmacro do-debug-block-locations ((code-var debug-block &optional return) + &body body) + "Executes forms in a context with code-var bound to each code-location in + debug-block. This returns the value of executing result (defaults to nil)." + (let ((code-locations (gensym)) + (i (gensym))) + `(let ((,code-locations (debug-block-code-locations ,debug-block))) + (declare (simple-vector ,code-locations)) + (dotimes (,i (length ,code-locations) ,return) + (let ((,code-var (svref ,code-locations ,i))) + ,@body))))) + +;;; DEBUG-BLOCK-FUNCTION-NAME -- Internal. +;;; +(defun debug-block-function-name (debug-block) + "Returns the name of the function represented by debug-function. This may + be a string or a cons; do not assume it is a symbol." + (etypecase debug-block + (compiled-debug-block + (let ((code-locs (compiled-debug-block-code-locations debug-block))) + (declare (simple-vector code-locs)) + (if (zerop (length code-locs)) + "??? Can't get name of debug-block's function." + (debug-function-name + (code-location-debug-function (svref code-locs 0)))))) + (interpreted-debug-block + (c::lambda-name (c::block-home-lambda + (interpreted-debug-block-ir1-block debug-block)))))) + + +;;; DEBUG-BLOCK-CODE-LOCATIONS -- Internal. +;;; +(defun debug-block-code-locations (debug-block) + (etypecase debug-block + (compiled-debug-block + (compiled-debug-block-code-locations debug-block)) + (interpreted-debug-block + (interpreted-debug-block-code-locations debug-block)))) + +;;; INTERPRETED-DEBUG-BLOCK-CODE-LOCATIONS -- Internal. +;;; +(defun interpreted-debug-block-code-locations (debug-block) + (let ((code-locs (interpreted-debug-block-locations debug-block))) + (if (eq code-locs :unparsed) + (with-parsing-buffer (buf) + (c::do-nodes (node cont (interpreted-debug-block-ir1-block + debug-block)) + (vector-push-extend (make-interpreted-code-location + node + (make-interpreted-debug-function + (c::block-home-lambda (c::node-block node)))) + buf)) + (setf (interpreted-debug-block-locations debug-block) + (result buf))) + code-locs))) + + + +;;;; Variables. + +;;; DEBUG-VARIABLE-SYMBOL -- Public. +;;; +(defun debug-variable-symbol (debug-var) + "Returns the symbol from interning DEBUG-VARIABLE-NAME in the package named + by DEBUG-VARIABLE-PACKAGE." + (let ((package (debug-variable-package debug-var))) + (if package + (intern (debug-variable-name debug-var) package) + (make-symbol (debug-variable-name debug-var))))) + +;;; DEBUG-VARIABLE-VALID-VALUE -- Public. +;;; +(defun debug-variable-valid-value (debug-var frame) + "Returns the value stored for debug-variable in frame. If the value is not + :valid, then this signals an invalid-value error." + (unless (eq (debug-variable-validity debug-var (frame-code-location frame)) + :valid) + (error 'invalid-value :debug-variable debug-var :frame frame)) + (debug-variable-value debug-var frame)) + +;;; DEBUG-VARIABLE-VALUE -- Public. +;;; +(defun debug-variable-value (debug-var frame) + "Returns the value stored for debug-variable in frame. The value may be + invalid. This is SETF'able." + (etypecase debug-var + (compiled-debug-variable + (check-type frame compiled-frame) + (let ((res (access-compiled-debug-var-slot debug-var frame))) + (if (indirect-value-cell-p res) + (c:value-cell-ref res) + res))) + (interpreted-debug-variable + (check-type frame interpreted-frame) + (eval::leaf-value-lambda-var + (interpreted-code-location-ir1-node (frame-code-location frame)) + (interpreted-debug-variable-ir1-var debug-var) + (frame-pointer frame) + (interpreted-frame-closure frame))))) + + +;;; ACCESS-COMPILED-DEBUG-VAR-SLOT -- Internal. +;;; +;;; This returns what is stored for the variable represented by debug-var +;;; relative to the frame. This may be an indirect value cell if the +;;; variable is both closed over and set. +;;; +(defun access-compiled-debug-var-slot (debug-var frame) + (let ((escaped (compiled-frame-escaped frame))) + (if escaped + (sub-access-debug-var-slot + (frame-pointer frame) + (compiled-debug-variable-sc-offset debug-var) + escaped) + (sub-access-debug-var-slot + (frame-pointer frame) + (or (compiled-debug-variable-save-sc-offset debug-var) + (compiled-debug-variable-sc-offset debug-var)))))) + +;;; SUB-ACCESS-DEBUG-VAR-SLOT -- Internal. +;;; +#-x86 +(defun sub-access-debug-var-slot (fp sc-offset &optional escaped) + (macrolet ((with-escaped-value ((var) &body forms) + `(if escaped + (let ((,var (vm:sigcontext-register + escaped + (c:sc-offset-offset sc-offset)))) + ,@forms) + :invalid-value-for-unescaped-register-storage)) + (escaped-float-value (format) + `(if escaped + (vm:sigcontext-float-register + escaped + (c:sc-offset-offset sc-offset) + ',format) + :invalid-value-for-unescaped-register-storage)) + (with-nfp ((var) &body body) + `(let ((,var (if escaped + (system:int-sap + (vm:sigcontext-register escaped + vm::nfp-offset)) + #-alpha + (system:sap-ref-sap fp (* vm::nfp-save-offset + vm:word-bytes)) + #+alpha + (alpha::make-number-stack-pointer + (system:sap-ref-32 fp (* vm::nfp-save-offset + vm:word-bytes)))))) + ,@body))) + (ecase (c:sc-offset-scn sc-offset) + ((#.vm:any-reg-sc-number + #.vm:descriptor-reg-sc-number + #+rt #.vm:word-pointer-reg-sc-number) + (system:without-gcing + (with-escaped-value (val) + (kernel:make-lisp-obj val)))) + (#.vm:base-char-reg-sc-number + (with-escaped-value (val) + (code-char val))) + (#.vm:sap-reg-sc-number + (with-escaped-value (val) + (system:int-sap val))) + (#.vm:signed-reg-sc-number + (with-escaped-value (val) + (if (logbitp (1- vm:word-bits) val) + (logior val (ash -1 vm:word-bits)) + val))) + (#.vm:unsigned-reg-sc-number + (with-escaped-value (val) + val)) +#+nil ; PVE + (#.vm:non-descriptor-reg-sc-number + (error "Local non-descriptor register access?")) +#+nil ; PVE + (#.vm:interior-reg-sc-number + (error "Local interior register access?")) + (#.vm:single-reg-sc-number + (escaped-float-value single-float)) + (#.vm:double-reg-sc-number + (escaped-float-value double-float)) + #+complex-float + (#.vm:complex-single-reg-sc-number + (if escaped + (complex + (vm:sigcontext-float-register + escaped (c:sc-offset-offset sc-offset) 'single-float) + (vm:sigcontext-float-register + escaped (1+ (c:sc-offset-offset sc-offset)) 'single-float)) + :invalid-value-for-unescaped-register-storage)) + #+complex-float + (#.vm:complex-double-reg-sc-number + (if escaped + (complex + (vm:sigcontext-float-register + escaped (c:sc-offset-offset sc-offset) 'double-float) + (vm:sigcontext-float-register + escaped (+ (c:sc-offset-offset sc-offset) #+sparc 2 #-sparc 1) + 'double-float)) + :invalid-value-for-unescaped-register-storage)) + (#.vm:single-stack-sc-number + (with-nfp (nfp) + (system:sap-ref-single nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)))) + (#.vm:double-stack-sc-number + (with-nfp (nfp) + (system:sap-ref-double nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)))) + #+complex-float + (#.vm:complex-single-stack-sc-number + (with-nfp (nfp) + (complex + (system:sap-ref-single nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (system:sap-ref-single nfp (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))))) + #+complex-float + (#.vm:complex-double-stack-sc-number + (with-nfp (nfp) + (complex + (system:sap-ref-double nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (system:sap-ref-double nfp (* (+ (c:sc-offset-offset sc-offset) 2) + vm:word-bytes))))) + (#.vm:control-stack-sc-number + (kernel:stack-ref fp (c:sc-offset-offset sc-offset))) + (#.vm:base-char-stack-sc-number + (with-nfp (nfp) + (code-char (system:sap-ref-32 nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes))))) + (#.vm:unsigned-stack-sc-number + (with-nfp (nfp) + (system:sap-ref-32 nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)))) + (#.vm:signed-stack-sc-number + (with-nfp (nfp) + (system:signed-sap-ref-32 nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)))) + (#.vm:sap-stack-sc-number + (with-nfp (nfp) + (system:sap-ref-sap nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes))))))) + +#+x86 +(defun sub-access-debug-var-slot (fp sc-offset &optional escaped) + (declare (type system:system-area-pointer fp)) + (macrolet ((with-escaped-value ((var) &body forms) + `(if escaped + (let ((,var (vm:sigcontext-register + escaped (c:sc-offset-offset sc-offset)))) + ,@forms) + :invalid-value-for-unescaped-register-storage)) + (escaped-float-value (format) + `(if escaped + (vm:sigcontext-float-register + escaped (c:sc-offset-offset sc-offset) ',format) + :invalid-value-for-unescaped-register-storage)) + #+complex-float + (escaped-complex-float-value (format) + `(if escaped + (complex + (vm:sigcontext-float-register + escaped (c:sc-offset-offset sc-offset) ',format) + (vm:sigcontext-float-register + escaped (1+ (c:sc-offset-offset sc-offset)) ',format)) + :invalid-value-for-unescaped-register-storage)) + ;; The debug variable locations are not always valid, and + ;; on the x86 locations can contain raw values. To + ;; prevent later problems from invalid objects, they are + ;; filtered here. + (make-valid-lisp-obj (val) + `(if (or + ;; Fixnum + (zerop (logand ,val 3)) + ;; Character + (and (zerop (logand ,val #xffff0000)) ; Top bits zero + (= (logand ,val #xff) vm:base-char-type)) ; Char tag + ;; Unbound marker. + (= ,val vm:unbound-marker-type) + ;; Pointer + (and (logand ,val 1) + ;; Check that the pointer is valid. XX Should do + ;; a better job. + (< (lisp::read-only-space-start) ,val #x11000000))) + (kernel:make-lisp-obj ,val) + :invalid-object))) + (ecase (c:sc-offset-scn sc-offset) + ((#.vm:any-reg-sc-number #.vm:descriptor-reg-sc-number) + (system:without-gcing + (with-escaped-value (val) + (make-valid-lisp-obj val)))) + (#.vm:base-char-reg-sc-number + (with-escaped-value (val) + (code-char val))) + (#.vm:sap-reg-sc-number + (with-escaped-value (val) + (system:int-sap val))) + (#.vm:signed-reg-sc-number + (with-escaped-value (val) + (if (logbitp (1- vm:word-bits) val) + (logior val (ash -1 vm:word-bits)) + val))) + (#.vm:unsigned-reg-sc-number + (with-escaped-value (val) + val)) +#+nil ; PVE + (#.vm:non-descriptor-reg-sc-number + (error "Local non-descriptor register access?")) +#+nil ; PVE + (#.vm:interior-reg-sc-number + (error "Local interior register access?")) + (#.vm:single-reg-sc-number + (escaped-float-value single-float)) + (#.vm:double-reg-sc-number + (escaped-float-value double-float)) + #+complex-float + (#.vm:complex-single-reg-sc-number + (escaped-complex-float-value single-float)) + #+complex-float + (#.vm:complex-double-reg-sc-number + (escaped-complex-float-value double-float)) + (#.vm:single-stack-sc-number + (system:sap-ref-single fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes)))) + (#.vm:double-stack-sc-number + (system:sap-ref-double fp (- (* (+ (c:sc-offset-offset sc-offset) 2) + vm:word-bytes)))) + #+complex-float + (#.vm:complex-single-stack-sc-number + (complex + (system:sap-ref-single fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))) + (system:sap-ref-single fp (- (* (+ (c:sc-offset-offset sc-offset) 2) + vm:word-bytes))))) + #+complex-float + (#.vm:complex-double-stack-sc-number + (complex + (system:sap-ref-double fp (- (* (+ (c:sc-offset-offset sc-offset) 2) + vm:word-bytes))) + (system:sap-ref-double fp (- (* (+ (c:sc-offset-offset sc-offset) 4) + vm:word-bytes))))) + (#.vm:control-stack-sc-number + (kernel:stack-ref fp (c:sc-offset-offset sc-offset))) + (#.vm:base-char-stack-sc-number + (code-char + (system:sap-ref-32 fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))))) + (#.vm:unsigned-stack-sc-number + (system:sap-ref-32 fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes)))) + (#.vm:signed-stack-sc-number + (system:signed-sap-ref-32 fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes)))) + (#.vm:sap-stack-sc-number + (system:sap-ref-sap fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))))))) + + +;;; %SET-DEBUG-VARIABLE-VALUE -- Internal. +;;; +;;; This stores value as the value of debug-var in frame. In the +;;; compiled-debug-variable case, access the current value to determine if it +;;; is an indirect value cell. This occurs when the variable is both closed +;;; over and set. For interpreted-debug-variables just call +;;; EVAL::SET-LEAF-VALUE-LAMBDA-VAR with the right interpreter objects. +;;; +(defun %set-debug-variable-value (debug-var frame value) + (etypecase debug-var + (compiled-debug-variable + (check-type frame compiled-frame) + (let ((current-value (access-compiled-debug-var-slot debug-var frame))) + (if (indirect-value-cell-p current-value) + (c:value-cell-set current-value value) + (set-compiled-debug-variable-slot debug-var frame value)))) + (interpreted-debug-variable + (check-type frame interpreted-frame) + (eval::set-leaf-value-lambda-var + (interpreted-code-location-ir1-node (frame-code-location frame)) + (interpreted-debug-variable-ir1-var debug-var) + (frame-pointer frame) + (interpreted-frame-closure frame) + value))) + value) +;;; +(defsetf debug-variable-value %set-debug-variable-value) + +;;; SET-COMPILED-DEBUG-VARIABLE-SLOT -- Internal. +;;; +;;; This stores value for the variable represented by debug-var relative to the +;;; frame. This assumes the location directly contains the variable's value; +;;; that is, there is no indirect value cell currently there in case the +;;; variable is both closed over and set. +;;; +(defun set-compiled-debug-variable-slot (debug-var frame value) + (let ((escaped (compiled-frame-escaped frame))) + (if escaped + (sub-set-debug-var-slot (frame-pointer frame) + (compiled-debug-variable-sc-offset debug-var) + value escaped) + (sub-set-debug-var-slot + (frame-pointer frame) + (or (compiled-debug-variable-save-sc-offset debug-var) + (compiled-debug-variable-sc-offset debug-var)) + value)))) + +;;; SUB-SET-DEBUG-VAR-SLOT -- Internal. +;;; +#-x86 +(defun sub-set-debug-var-slot (fp sc-offset value &optional escaped) + (macrolet ((set-escaped-value (val) + `(if escaped + (setf (vm:sigcontext-register + escaped + (c:sc-offset-offset sc-offset)) + ,val) + value)) + (set-escaped-float-value (format val) + `(if escaped + (setf (vm:sigcontext-float-register + escaped + (c:sc-offset-offset sc-offset) + ',format) + ,val) + value)) + (with-nfp ((var) &body body) + `(let ((,var (if escaped + (system:int-sap + (vm:sigcontext-register escaped + vm::nfp-offset)) + #-alpha + (system:sap-ref-sap fp + (* vm::nfp-save-offset + vm:word-bytes)) + #+alpha + (alpha::make-number-stack-pointer + (system:sap-ref-32 fp + (* vm::nfp-save-offset + vm:word-bytes)))))) + ,@body))) + (ecase (c:sc-offset-scn sc-offset) + ((#.vm:any-reg-sc-number + #.vm:descriptor-reg-sc-number + #+rt #.vm:word-pointer-reg-sc-number) + (system:without-gcing + (set-escaped-value + (kernel:get-lisp-obj-address value)))) + (#.vm:base-char-reg-sc-number + (set-escaped-value (char-code value))) + (#.vm:sap-reg-sc-number + (set-escaped-value (system:sap-int value))) + (#.vm:signed-reg-sc-number + (set-escaped-value (logand value (1- (ash 1 vm:word-bits))))) + (#.vm:unsigned-reg-sc-number + (set-escaped-value value)) +#+nil ; PVE + (#.vm:non-descriptor-reg-sc-number + (error "Local non-descriptor register access?")) +#+nil ; PVE + (#.vm:interior-reg-sc-number + (error "Local interior register access?")) + (#.vm:single-reg-sc-number + (set-escaped-float-value single-float value)) + (#.vm:double-reg-sc-number + (set-escaped-float-value double-float value)) + #+complex-float + (#.vm:single-reg-sc-number + (when escaped + (setf (vm:sigcontext-float-register + escaped (c:sc-offset-offset sc-offset) 'single-float) + (realpart value)) + (setf (vm:sigcontext-float-register + escaped (1+ (c:sc-offset-offset sc-offset)) + 'single-float) + (imagpart value))) + value) + #+complex-float + (#.vm:double-reg-sc-number + (when escaped + (setf (vm:sigcontext-float-register + escaped (c:sc-offset-offset sc-offset) 'double-float) + (realpart value)) + (setf (vm:sigcontext-float-register + escaped + (+ (c:sc-offset-offset sc-offset) #+sparc 2 #-sparc 1) + 'double-float) + (imagpart value))) + value) + (#.vm:single-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-single nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (the single-float value)))) + (#.vm:double-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-double nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (the double-float value)))) + #+complex-float + (#.vm:complex-single-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-single + nfp (* (c:sc-offset-offset sc-offset) vm:word-bytes)) + (the single-float (realpart value))) + (setf (system:sap-ref-single + nfp (* (1+ (c:sc-offset-offset sc-offset)) vm:word-bytes)) + (the single-float (realpart value))))) + #+complex-float + (#.vm:complex-double-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-double + nfp (* (c:sc-offset-offset sc-offset) vm:word-bytes)) + (the double-float (realpart value))) + (setf (system:sap-ref-double + nfp (* (+ (c:sc-offset-offset sc-offset) 2) vm:word-bytes)) + (the double-float (realpart value))))) + (#.vm:control-stack-sc-number + (setf (kernel:stack-ref fp (c:sc-offset-offset sc-offset)) value)) + (#.vm:base-char-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-32 nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (char-code (the character value))))) + (#.vm:unsigned-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-32 nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (the (unsigned-byte 32) value)))) + (#.vm:signed-stack-sc-number + (with-nfp (nfp) + (setf (system:signed-sap-ref-32 nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (the (signed-byte 32) value)))) + (#.vm:sap-stack-sc-number + (with-nfp (nfp) + (setf (system:sap-ref-sap nfp (* (c:sc-offset-offset sc-offset) + vm:word-bytes)) + (the system:system-area-pointer value))))))) + +#+x86 +(defun sub-set-debug-var-slot (fp sc-offset value &optional escaped) + (macrolet ((set-escaped-value (val) + `(if escaped + (setf (vm:sigcontext-register + escaped + (c:sc-offset-offset sc-offset)) + ,val) + value))) + (ecase (c:sc-offset-scn sc-offset) + ((#.vm:any-reg-sc-number #.vm:descriptor-reg-sc-number) + (system:without-gcing + (set-escaped-value + (kernel:get-lisp-obj-address value)))) + (#.vm:base-char-reg-sc-number + (set-escaped-value (char-code value))) + (#.vm:sap-reg-sc-number + (set-escaped-value (system:sap-int value))) + (#.vm:signed-reg-sc-number + (set-escaped-value (logand value (1- (ash 1 vm:word-bits))))) + (#.vm:unsigned-reg-sc-number + (set-escaped-value value)) +#+nil ; PVE + (#.vm:non-descriptor-reg-sc-number + (error "Local non-descriptor register access?")) + #+nil ; PVE + (#.vm:interior-reg-sc-number + (error "Local interior register access?")) + (#.vm:single-reg-sc-number + #+nil ;; don't have escaped floats. + (set-escaped-float-value single-float value)) + (#.vm:double-reg-sc-number + #+nil ;; don't have escaped floats -- still in npx? + (set-escaped-float-value double-float value)) + (#.vm:single-stack-sc-number + (setf (system:sap-ref-single + fp (- (* (1+ (c:sc-offset-offset sc-offset)) vm:word-bytes))) + (the single-float value))) + (#.vm:double-stack-sc-number + (setf (system:sap-ref-double + fp (- (* (+ (c:sc-offset-offset sc-offset) 2) vm:word-bytes))) + (the double-float value))) + #+complex-float + (#.vm:complex-single-stack-sc-number + (setf (system:sap-ref-single + fp (- (* (1+ (c:sc-offset-offset sc-offset)) vm:word-bytes))) + (realpart (the (complex single-float) value))) + (setf (system:sap-ref-single + fp (- (* (+ (c:sc-offset-offset sc-offset) 2) vm:word-bytes))) + (imagpart (the (complex single-float) value)))) + #+complex-float + (#.vm:complex-double-stack-sc-number + (setf (system:sap-ref-double + fp (- (* (+ (c:sc-offset-offset sc-offset) 2) vm:word-bytes))) + (realpart (the (complex double-float) value))) + (setf (system:sap-ref-double + fp (- (* (+ (c:sc-offset-offset sc-offset) 4) vm:word-bytes))) + (imagpart (the (complex double-float) value)))) + (#.vm:control-stack-sc-number + (setf (kernel:stack-ref fp (c:sc-offset-offset sc-offset)) value)) + (#.vm:base-char-stack-sc-number + (setf (system:sap-ref-32 fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))) + (char-code (the character value)))) + (#.vm:unsigned-stack-sc-number + (setf (system:sap-ref-32 fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))) + (the (unsigned-byte 32) value))) + (#.vm:signed-stack-sc-number + (setf (system:signed-sap-ref-32 + fp (- (* (1+ (c:sc-offset-offset sc-offset)) vm:word-bytes))) + (the (signed-byte 32) value))) + (#.vm:sap-stack-sc-number + (setf (system:sap-ref-sap fp (- (* (1+ (c:sc-offset-offset sc-offset)) + vm:word-bytes))) + (the system:system-area-pointer value)))))) + + +(defsetf debug-variable-value %set-debug-variable-value) + + +;;; INDIRECT-VALUE-CELL-P -- Internal. +;;; +;;; The method for setting and accessing compiled-debug-variable values use +;;; this to determine if the value stored is the actual value or an indirection +;;; cell. +;;; +(defun indirect-value-cell-p (x) + (and (= (kernel:get-lowtag x) vm:other-pointer-type) + (= (kernel:get-type x) vm:value-cell-header-type))) + + +;;; DEBUG-VARIABLE-VALIDITY -- Public. +;;; +;;; If the variable is always alive, then it is valid. If the code-location is +;;; unknown, then the variable's validity is :unknown. Once we've called +;;; CODE-LOCATION-UNKNOWN-P, we know the live-set information has been cached +;;; in the code-location. +;;; +(defun debug-variable-validity (debug-var basic-code-loc) + "Returns three values reflecting the validity of debug-variable's value + at basic-code-location: + :valid The value is known to be available. + :invalid The value is known to be unavailable. + :unknown The value's availability is unknown." + (etypecase debug-var + (compiled-debug-variable + (compiled-debug-variable-validity debug-var basic-code-loc)) + (interpreted-debug-variable + (check-type basic-code-loc interpreted-code-location) + (let ((validp (rassoc (interpreted-debug-variable-ir1-var debug-var) + (c::lexenv-variables + (c::node-lexenv + (interpreted-code-location-ir1-node + basic-code-loc)))))) + (if validp :valid :invalid))))) + +;;; COMPILED-DEBUG-VARIABLE-VALIDITY -- Internal. +;;; +;;; This is the method for DEBUG-VARIABLE-VALIDITY for compiled-debug-variables. +;;; For safety, make sure basic-code-loc is what we think. +;;; +(defun compiled-debug-variable-validity (debug-var basic-code-loc) + (check-type basic-code-loc compiled-code-location) + (cond ((debug-variable-alive-p debug-var) + (let ((debug-fun (code-location-debug-function basic-code-loc))) + (if (>= (compiled-code-location-pc basic-code-loc) + (c::compiled-debug-function-start-pc + (compiled-debug-function-compiler-debug-fun debug-fun))) + :valid + :invalid))) + ((code-location-unknown-p basic-code-loc) :unknown) + (t + (let ((pos (position debug-var + (debug-function-debug-variables + (code-location-debug-function basic-code-loc))))) + (unless pos + (error 'unknown-debug-variable + :debug-variable debug-var + :debug-function + (code-location-debug-function basic-code-loc))) + ;; There must be live-set info since basic-code-loc is known. + (if (zerop (sbit (compiled-code-location-live-set basic-code-loc) + pos)) + :invalid + :valid))))) + + + +;;;; Sources. + +;;; Written by Rob Maclachlan. +;;; Documented by Bill Chiles. +;;; +;;; This code produces and uses what we call source-paths. A source-path is a +;;; list whose first element is a form number as returned by +;;; CODE-LOCATION-FORM-NUMBER and whose last element is a top-level-form number +;;; as returned by CODE-LOCATION-TOP-LEVEL-FORM-NUMBER. The elements from the +;;; last to the first, exclusively, are the numbered subforms into which to +;;; descend. For example: +;;; (defun foo (x) +;;; (let ((a (aref x 3))) +;;; (cons a 3))) +;;; The call to AREF in this example is form number 5. Assuming this DEFUN is +;;; the 11'th top-level-form, the source-path for the AREF call is as follows: +;;; (5 1 0 1 3 11) +;;; Given the DEFUN, 3 gets you the LET, 1 gets you the bindings, 0 gets the +;;; first binding, and 1 gets the AREF form. +;;; + + +;;; Temporary buffer used to build form-number => source-path translation in +;;; FORM-NUMBER-TRANSLATIONS. +;;; +(defvar *form-number-temp* (make-array 10 :fill-pointer 0 :adjustable t)) + +;;; Table used to detect CAR circularities in FORM-NUMBER-TRANSLATIONS. +;;; +(defvar *form-number-circularity-table* (make-hash-table :test #'eq)) + +;;; FORM-NUMBER-TRANSLATIONS -- Public. +;;; +;;; The vector elements are in the same format as the compiler's +;;; NODE-SOUCE-PATH; that is, the first element is the form number and the last +;;; is the top-level-form number. +;;; +(defun form-number-translations (form tlf-number) + "This returns a table mapping form numbers to source-paths. A source-path + indicates a descent into the top-level-form form, going directly to the + subform corressponding to the form number." + (clrhash *form-number-circularity-table*) + (setf (fill-pointer *form-number-temp*) 0) + (sub-translate-form-numbers form (list tlf-number)) + (coerce *form-number-temp* 'simple-vector)) +;;; +(defun sub-translate-form-numbers (form path) + (unless (gethash form *form-number-circularity-table*) + (setf (gethash form *form-number-circularity-table*) t) + (vector-push-extend (cons (fill-pointer *form-number-temp*) path) + *form-number-temp*) + (let ((pos 0) + (subform form) + (trail form)) + (declare (fixnum pos)) + (macrolet ((frob () + '(progn + (when (atom subform) (return)) + (let ((fm (car subform))) + (when (consp fm) + (sub-translate-form-numbers fm (cons pos path))) + (incf pos)) + (setq subform (cdr subform)) + (when (eq subform trail) (return))))) + (loop + (frob) + (frob) + (setq trail (cdr trail))))))) + + +;;; SOURCE-PATH-CONTEXT -- Public. +;;; +(defun source-path-context (form path context) + "Form is a top-level form, and path is a source-path into it. This returns + the form indicated by the source-path. Context is the number of enclosing + forms to return instead of directly returning the source-path form. When + context is non-zero, the form returned contains a marker, #:****HERE****, + immediately before the form indicated by path." + (declare (type unsigned-byte context)) + ;; + ;; Get to the form indicated by path or the enclosing form indicated by + ;; context and path. + (let ((path (reverse (butlast (cdr path))))) + (dotimes (i (- (length path) context)) + (let ((index (first path))) + (unless (and (listp form) (< index (length form))) + (error "Source path no longer exists.")) + (setq form (elt form index)) + (setq path (rest path)))) + ;; + ;; Recursively rebuild the source form resulting from the above descent, + ;; copying the beginning of each subform up to the next subform we descend + ;; into according to path. At the bottom of the recursion, we return the + ;; form indicated by path preceded by our marker, and this gets spliced + ;; into the resulting list structure on the way back up. + (labels ((frob (form path level) + (if (or (zerop level) (null path)) + (if (zerop context) + form + `(#:***here*** ,form)) + (let ((n (first path))) + (unless (and (listp form) (< n (length form))) + (error "Source path no longer exists.")) + (let ((res (frob (elt form n) (rest path) (1- level)))) + (nconc (subseq form 0 n) + (cons res (nthcdr (1+ n) form)))))))) + (frob form path context)))) + + +;;;; PREPROCESS-FOR-EVAL and EVAL-IN-FRAME. + +;;; PREPROCESS-FOR-EVAL -- Public. +;;; +;;; Create a SYMBOL-MACROLET for each variable valid at the location which +;;; accesses that variable from the frame argument. +;;; +(defun preprocess-for-eval (form loc) + "Return a function of one argument that evaluates form in the lexical + context of the basic-code-location loc. PREPROCESS-FOR-EVAL signals a + no-debug-variables condition when the loc's debug-function has no + debug-variable information available. The returned function takes the frame + to get values from as its argument, and it returns the values of form. + The returned function signals the following conditions: invalid-value, + ambiguous-variable-name, and frame-function-mismatch" + (declare (type code-location loc)) + (let ((n-frame (gensym)) + (fun (code-location-debug-function loc))) + (unless (debug-variable-info-available fun) + (debug-signal 'no-debug-variables :debug-function fun)) + (ext:collect ((binds) + (specs)) + (do-debug-function-variables (var fun) + (let ((validity (debug-variable-validity var loc))) + (unless (eq validity :invalid) + (let* ((sym (debug-variable-symbol var)) + (found (assoc sym (binds)))) + (if found + (setf (second found) :ambiguous) + (binds (list sym validity var))))))) + (dolist (bind (binds)) + (let ((name (first bind)) + (var (third bind))) + (ecase (second bind) + (:valid + (specs `(,name (debug-variable-value ',var ,n-frame)))) + (:unknown + (specs `(,name (debug-signal 'invalid-value :debug-variable ',var + :frame ,n-frame)))) + (:ambiguous + (specs `(,name (debug-signal 'ambiguous-variable-name :name ',name + :frame ,n-frame))))))) + (let ((res (coerce `(lambda (,n-frame) + (declare (ignorable ,n-frame)) + (symbol-macrolet ,(specs) ,form)) + 'function))) + #'(lambda (frame) + ;; This prevents these functions from use in any location other + ;; than a function return location, so maybe this should only + ;; check whether frame's debug-function is the same as loc's. + (unless (code-location= (frame-code-location frame) loc) + (debug-signal 'frame-function-mismatch + :code-location loc :form form :frame frame)) + (funcall res frame)))))) + + +;;; EVAL-IN-FRAME -- Public. +;;; +(defun eval-in-frame (frame form) + (declare (type frame frame)) + "Evaluate Form in the lexical context of Frame's current code location, + returning the results of the evaluation." + (funcall (preprocess-for-eval form (frame-code-location frame)) frame)) + + + +;;;; Breakpoints. + +;;; +;;; User visible interface. +;;; + +(defun make-breakpoint (hook-function what + &key (kind :code-location) info function-end-cookie) + "This creates and returns a breakpoint. When program execution encounters + the breakpoint, the system calls hook-function. Hook-function takes the + current frame for the function in which the program is running and the + breakpoint object. + What and kind determine where in a function the system invokes + hook-function. What is either a code-location or a debug-function. Kind is + one of :code-location, :function-start, or :function-end. Since the starts + and ends of functions may not have code-locations representing them, + designate these places by supplying what as a debug-function and kind + indicating the :function-start or :function-end. When what is a + debug-function and kind is :function-end, then hook-function must take two + additional arguments, a list of values returned by the function and a + function-end-cookie. + Info is information supplied by and used by the user. + Function-end-cookie is a function. To implement :function-end breakpoints, + the system uses starter breakpoints to establish the :function-end breakpoint + for each invocation of the function. Upon each entry, the system creates a + unique cookie to identify the invocation, and when the user supplies a + function for this argument, the system invokes it on the frame and the + cookie. The system later invokes the :function-end breakpoint hook on the + same cookie. The user may save the cookie for comparison in the hook + function. + This signals an error if what is an unknown code-location." + (etypecase what + (code-location + (when (code-location-unknown-p what) + (error "Cannot make a breakpoint at an unknown code location -- ~S." + what)) + (assert (eq kind :code-location)) + (let ((bpt (%make-breakpoint hook-function what kind info))) + (etypecase what + (interpreted-code-location + (error "Breakpoints in interpreted code are currently unsupported.")) + (compiled-code-location + ;; This slot is filled in due to calling CODE-LOCATION-UNKNOWN-P. + (when (eq (compiled-code-location-kind what) :unknown-return) + (let ((other-bpt (%make-breakpoint hook-function what + :unknown-return-partner + info))) + (setf (breakpoint-unknown-return-partner bpt) other-bpt) + (setf (breakpoint-unknown-return-partner other-bpt) bpt))))) + bpt)) + (compiled-debug-function + (ecase kind + (:function-start + (%make-breakpoint hook-function what kind info)) + (:function-end + (unless (eq (c::compiled-debug-function-returns + (compiled-debug-function-compiler-debug-fun what)) + :standard) + (error ":FUNCTION-END breakpoints are currently unsupported ~ + for the known return convention.")) + + (let* ((bpt (%make-breakpoint hook-function what kind info)) + (starter (compiled-debug-function-end-starter what))) + (unless starter + (setf starter (%make-breakpoint #'list what :function-start nil)) + (setf (breakpoint-hook-function starter) + (function-end-starter-hook starter what)) + (setf (compiled-debug-function-end-starter what) starter)) + (setf (breakpoint-start-helper bpt) starter) + (push bpt (breakpoint-%info starter)) + (setf (breakpoint-cookie-fun bpt) function-end-cookie) + bpt)))) + (interpreted-debug-function + (error ":function-end breakpoints are currently unsupported ~ + for interpreted-debug-functions.")))) + +;;; These are unique objects created upon entry into a function by a +;;; :function-end breakpoint's starter hook. These are only created when users +;;; supply :function-end-cookie to MAKE-BREAKPOINT. Also, the :function-end +;;; breakpoint's hook is called on the same cookie when it is created. +;;; +(defstruct (function-end-cookie + (:print-function (lambda (obj str n) + (declare (ignore obj n)) + (write-string "#" str))) + (:constructor make-function-end-cookie (bogus-lra debug-fun))) + ;; This is a pointer to the bogus-lra created for :function-end bpts. + bogus-lra + ;; This is the debug-function associated with the cookie. + debug-fun) + +;;; This maps bogus-lra-components to cookies, so +;;; HANDLE-FUNCTION-END-BREAKPOINT can find the appropriate cookie for the +;;; breakpoint hook. +;;; +(defvar *function-end-cookies* (make-hash-table :test #'eq)) + +;;; FUNCTION-END-STARTER-HOOK -- Internal. +;;; +;;; This returns a hook function for the start helper breakpoint associated +;;; with a :function-end breakpoint. The returned function makes a fake LRA +;;; that all returns go through, and this piece of fake code actually breaks. +;;; Upon return from the break, the code provides the returnee with any values. +;;; Since the returned function effectively activates fun-end-bpt on each entry +;;; to debug-fun's function, we must establish breakpoint-data about +;;; fun-end-bpt. +;;; +(defun function-end-starter-hook (starter-bpt debug-fun) + (declare (type breakpoint starter-bpt) + (type compiled-debug-function debug-fun)) + #'(lambda (frame breakpoint) + (declare (ignore breakpoint) + (type frame frame)) + (let ((lra-sc-offset + (c::compiled-debug-function-return-pc + (compiled-debug-function-compiler-debug-fun debug-fun)))) + (multiple-value-bind (lra component offset) + (make-bogus-lra + (get-context-value frame + #-gengc vm::lra-save-offset + #+gengc vm::ra-save-offset + lra-sc-offset)) + (setf (get-context-value frame + #-gengc vm::lra-save-offset + #+gengc vm::ra-save-offset + lra-sc-offset) + lra) + (let ((end-bpts (breakpoint-%info starter-bpt))) + (let ((data (breakpoint-data component offset))) + (setf (breakpoint-data-breakpoints data) end-bpts) + (dolist (bpt end-bpts) + (setf (breakpoint-internal-data bpt) data))) + (let ((cookie (make-function-end-cookie lra debug-fun))) + (setf (gethash component *function-end-cookies*) cookie) + (dolist (bpt end-bpts) + (let ((fun (breakpoint-cookie-fun bpt))) + (when fun (funcall fun frame cookie)))))))))) + +;;; FUNCTION-END-COOKIE-VALID-P -- Public. +;;; +(defun function-end-cookie-valid-p (frame cookie) + "This takes a function-end-cookie and a frame, and it returns whether the + cookie is still valid. A cookie becomes invalid when the frame that + established the cookie has exited. Sometimes cookie holders are unaware + of cookie invalidation because their :function-end breakpoint hooks didn't + run due to THROW'ing. This takes a frame as an efficiency hack since the + user probably has a frame object in hand when using this routine, and it + saves repeated parsing of the stack and consing when asking whether a + series of cookies is valid." + (let ((lra (function-end-cookie-bogus-lra cookie)) + (lra-sc-offset (c::compiled-debug-function-return-pc + (compiled-debug-function-compiler-debug-fun + (function-end-cookie-debug-fun cookie))))) + (do ((frame frame (frame-down frame))) + ((not frame) nil) + (when (and (compiled-frame-p frame) + (eq lra + (get-context-value frame + #-gengc vm::lra-save-offset + #+gengc vm::ra-save-offset + lra-sc-offset))) + (return t))))) + +;;; +;;; ACTIVATE-BREAKPOINT. +;;; + +;;; ACTIVATE-BREAKPOINT -- Public. +;;; +(defun activate-breakpoint (breakpoint) + "This causes the system to invoke the breakpoint's hook-function until the + next call to DEACTIVATE-BREAKPOINT or DELETE-BREAKPOINT. The system invokes + breakpoint hook functions in the opposite order that you activate them." + (when (eq (breakpoint-status breakpoint) :deleted) + (error "Cannot activate a deleted breakpoint -- ~S." breakpoint)) + (unless (eq (breakpoint-status breakpoint) :active) + (ecase (breakpoint-kind breakpoint) + (:code-location + (let ((loc (breakpoint-what breakpoint))) + (etypecase loc + (interpreted-code-location + (error "Breakpoints in interpreted code are currently unsupported.")) + (compiled-code-location + (activate-compiled-code-location-breakpoint breakpoint) + (let ((other (breakpoint-unknown-return-partner breakpoint))) + (when other + (activate-compiled-code-location-breakpoint other))))))) + (:function-start + (etypecase (breakpoint-what breakpoint) + (compiled-debug-function + (activate-compiled-function-start-breakpoint breakpoint)) + (interpreted-debug-function + (error "I don't know how you made this, but they're unsupported -- ~S" + (breakpoint-what breakpoint))))) + (:function-end + (etypecase (breakpoint-what breakpoint) + (compiled-debug-function + (let ((starter (breakpoint-start-helper breakpoint))) + (unless (eq (breakpoint-status starter) :active) + ;; May already be active by some other :function-end breakpoint. + (activate-compiled-function-start-breakpoint starter))) + (setf (breakpoint-status breakpoint) :active)) + (interpreted-debug-function + (error "I don't know how you made this, but they're unsupported -- ~S" + (breakpoint-what breakpoint))))))) + breakpoint) + +;;; ACTIVATE-COMPILED-CODE-LOCATION-BREAKPOINT -- Internal. +;;; +(defun activate-compiled-code-location-breakpoint (breakpoint) + (declare (type breakpoint breakpoint)) + (let ((loc (breakpoint-what breakpoint))) + (declare (type compiled-code-location loc)) + (sub-activate-breakpoint + breakpoint + (breakpoint-data (compiled-debug-function-component + (code-location-debug-function loc)) + (+ (compiled-code-location-pc loc) + (if (or (eq (breakpoint-kind breakpoint) + :unknown-return-partner) + (eq (compiled-code-location-kind loc) + :single-value-return)) + vm:single-value-return-byte-offset + 0)))))) + +;;; ACTIVATE-COMPILED-FUNCTION-START-BREAKPOINT -- Internal. +;;; +(defun activate-compiled-function-start-breakpoint (breakpoint) + (declare (type breakpoint breakpoint)) + (let ((debug-fun (breakpoint-what breakpoint))) + (sub-activate-breakpoint + breakpoint + (breakpoint-data (compiled-debug-function-component debug-fun) + (c::compiled-debug-function-start-pc + (compiled-debug-function-compiler-debug-fun + debug-fun)))))) + +;;; SUB-ACTIVATE-BREAKPOINT -- Internal. +;;; +(defun sub-activate-breakpoint (breakpoint data) + (declare (type breakpoint breakpoint) + (type breakpoint-data data)) + (setf (breakpoint-status breakpoint) :active) + (system:without-interrupts + (unless (breakpoint-data-breakpoints data) + (setf (breakpoint-data-instruction data) + (system:without-gcing + (breakpoint-install (kernel:get-lisp-obj-address + (breakpoint-data-component data)) + (breakpoint-data-offset data))))) + (setf (breakpoint-data-breakpoints data) + (append (breakpoint-data-breakpoints data) (list breakpoint))) + (setf (breakpoint-internal-data breakpoint) data))) + +;;; +;;; DEACTIVATE-BREAKPOINT. +;;; + +;;; DEACTIVATE-BREAKPOINT -- Public. +;;; +(defun deactivate-breakpoint (breakpoint) + "This stops the system from invoking the breakpoint's hook-function." + (when (eq (breakpoint-status breakpoint) :active) + (system:without-interrupts + (let ((loc (breakpoint-what breakpoint))) + (etypecase loc + ((or interpreted-code-location interpreted-debug-function) + (error + "Breakpoints in interpreted code are currently unsupported.")) + ((or compiled-code-location compiled-debug-function) + (deactivate-compiled-breakpoint breakpoint) + (let ((other (breakpoint-unknown-return-partner breakpoint))) + (when other + (deactivate-compiled-breakpoint other)))))))) + breakpoint) + +(defun deactivate-compiled-breakpoint (breakpoint) + (if (eq (breakpoint-kind breakpoint) :function-end) + (let ((starter (breakpoint-start-helper breakpoint))) + (unless (find-if #'(lambda (bpt) + (and (not (eq bpt breakpoint)) + (eq (breakpoint-status bpt) :active))) + (breakpoint-%info starter)) + (deactivate-compiled-breakpoint starter))) + (let* ((data (breakpoint-internal-data breakpoint)) + (bpts (delete breakpoint (breakpoint-data-breakpoints data)))) + (setf (breakpoint-internal-data breakpoint) nil) + (setf (breakpoint-data-breakpoints data) bpts) + (unless bpts + (system:without-gcing + (breakpoint-remove (kernel:get-lisp-obj-address + (breakpoint-data-component data)) + (breakpoint-data-offset data) + (breakpoint-data-instruction data))) + (delete-breakpoint-data data)))) + (setf (breakpoint-status breakpoint) :inactive) + breakpoint) + +;;; +;;; BREAKPOINT-INFO. +;;; + +;;; BREAKPOINT-INFO -- Public. +;;; +(defun breakpoint-info (breakpoint) + "This returns the user maintained info associated with breakpoint. This + is SETF'able." + (breakpoint-%info breakpoint)) +;;; +(defun %set-breakpoint-info (breakpoint value) + (setf (breakpoint-%info breakpoint) value) + (let ((other (breakpoint-unknown-return-partner breakpoint))) + (when other + (setf (breakpoint-%info other) value)))) +;;; +(defsetf breakpoint-info %set-breakpoint-info) + +;;; +;;; BREAKPOINT-ACTIVE-P and DELETE-BREAKPOINT. +;;; + +;;; BREAKPOINT-ACTIVE-P -- Public. +;;; +(defun breakpoint-active-p (breakpoint) + "This returns whether breakpoint is currently active." + (ecase (breakpoint-status breakpoint) + (:active t) + ((:inactive :deleted) nil))) + +;;; DELETE-BREAKPOINT -- Public. +;;; +(defun delete-breakpoint (breakpoint) + "This frees system storage and removes computational overhead associated with + breakpoint. After calling this, breakpoint is completely impotent and can + never become active again." + (let ((status (breakpoint-status breakpoint))) + (unless (eq status :deleted) + (when (eq status :active) + (deactivate-breakpoint breakpoint)) + (setf (breakpoint-status breakpoint) :deleted) + (let ((other (breakpoint-unknown-return-partner breakpoint))) + (when other + (setf (breakpoint-status other) :deleted))) + (when (eq (breakpoint-kind breakpoint) :function-end) + (let* ((starter (breakpoint-start-helper breakpoint)) + (breakpoints (delete breakpoint + (the list (breakpoint-info starter))))) + (setf (breakpoint-info starter) breakpoints) + (unless breakpoints + (delete-breakpoint starter) + (setf (compiled-debug-function-end-starter + (breakpoint-what breakpoint)) + nil)))))) + breakpoint) + +;;; +;;; C call out stubs. +;;; + +;;; BREAKPOINT-INSTALL -- Internal. +;;; +;;; This actually installs the break instruction in the component. It returns +;;; the overwritten bits. You must call this in a context in which GC is +;;; disabled, so Lisp doesn't move objects around that C is pointing to. +;;; +(alien:def-alien-routine "breakpoint_install" c-call:unsigned-long + (code-obj c-call:unsigned-long) + (pc-offset c-call:int)) + +;;; BREAKPOINT-REMOVE -- Internal. +;;; +;;; This removes the break instruction and replaces the original instruction. +;;; You must call this in a context in which GC is disabled, so Lisp doesn't +;;; move objects around that C is pointing to. +;;; +(alien:def-alien-routine "breakpoint_remove" c-call:void + (code-obj c-call:unsigned-long) + (pc-offset c-call:int) + (old-inst c-call:unsigned-long)) + +(alien:def-alien-routine "breakpoint_do_displaced_inst" c-call:void + (scp (* unix:sigcontext)) + (orig-inst c-call:unsigned-long)) + +;;; +;;; Breakpoint handlers (layer between C and exported interface). +;;; + +;;; This maps components to a mapping of offsets to breakpoint-datas. +;;; +(defvar *component-breakpoint-offsets* (make-hash-table :test #'eq)) + +;;; BREAKPOINT-DATA -- Internal. +;;; +;;; This returns the breakpoint-data associated with component cross offset. +;;; If none exists, this makes one, installs it, and returns it. +;;; +(defun breakpoint-data (component offset &optional (create t)) + (flet ((install-breakpoint-data () + (when create + (let ((data (make-breakpoint-data component offset))) + (push (cons offset data) + (gethash component *component-breakpoint-offsets*)) + data)))) + (let ((offsets (gethash component *component-breakpoint-offsets*))) + (if offsets + (let ((data (assoc offset offsets))) + (if data + (cdr data) + (install-breakpoint-data))) + (install-breakpoint-data))))) + +;;; DELETE-BREAKPOINT-DATA -- Internal. +;;; +;;; We use this when there are no longer any active breakpoints corresponding +;;; to data. +;;; +(defun delete-breakpoint-data (data) + (let* ((component (breakpoint-data-component data)) + (offsets (delete (breakpoint-data-offset data) + (gethash component *component-breakpoint-offsets*) + :key #'car))) + (if offsets + (setf (gethash component *component-breakpoint-offsets*) offsets) + (remhash component *component-breakpoint-offsets*))) + (ext:undefined-value)) + +;;; HANDLE-BREAKPOINT -- Internal Interface. +;;; +;;; The C handler for interrupts calls this when it has a debugging-tool break +;;; instruction. This does NOT handle all breaks; for example, it does not +;;; handle breaks for internal errors. +;;; +(defun handle-breakpoint (offset component signal-context) + (let ((data (breakpoint-data component offset nil))) + (unless data + (error "Unknown breakpoint in ~S at offset ~S." + (debug-function-name (debug-function-from-pc component offset)) + offset)) + (let ((breakpoints (breakpoint-data-breakpoints data))) + (if (or (null breakpoints) + (eq (breakpoint-kind (car breakpoints)) :function-end)) + (handle-function-end-breakpoint-aux breakpoints data signal-context) + (handle-breakpoint-aux breakpoints data + offset component signal-context))))) + +;;; This holds breakpoint-datas while invoking the breakpoint hooks associated +;;; with that particular component and location. While they are executing, if +;;; we hit the location again, we ignore the breakpoint to avoid infinite +;;; recursion. Function-end breakpoints must work differently since the +;;; breakpoint-data is unique for each invocation. +;;; +(defvar *executing-breakpoint-hooks* nil) + +;;; HANDLE-BREAKPOINT-AUX -- Internal. +;;; +;;; This handles code-location and debug-function :function-start breakpoints. +;;; +(defun handle-breakpoint-aux (breakpoints data offset component signal-context) + (unless breakpoints + (error "Breakpoint that nobody wants?")) + (unless (member data *executing-breakpoint-hooks*) + (let ((*executing-breakpoint-hooks* (cons data + *executing-breakpoint-hooks*))) + (invoke-breakpoint-hooks breakpoints component offset))) + ;; At this point breakpoints may not hold the same list as + ;; BREAKPOINT-DATA-BREAKPOINTS since invoking hooks may have allowed a + ;; breakpoint deactivation. In fact, if all breakpoints were deactivated + ;; then data is invalid since it was deleted and so the correct one must be + ;; looked up if it is to be used. If there are no more breakpoints active + ;; at this location, then the normal instruction has been put back, and we + ;; do not need to do-displaced-inst. + (let ((data (breakpoint-data component offset nil))) + (when (and data (breakpoint-data-breakpoints data)) + ;; There breakpoint is still active, so we need to execute the displaced + ;; instruction and leave the breakpoint instruction behind. The best + ;; way to do this is different on each machine, so we just leave it up + ;; to the C code. + (breakpoint-do-displaced-inst signal-context + (breakpoint-data-instruction data)) + ; Under HPUX we can't sigreturn so bp-do-disp-i has to return. + #-(or hpux irix x86) + (error "BREAKPOINT-DO-DISPLACED-INST returned?")))) + +(defun invoke-breakpoint-hooks (breakpoints component offset) + (let* ((debug-fun (debug-function-from-pc component offset)) + (frame (do ((f (top-frame) (frame-down f))) + ((eq debug-fun (frame-debug-function f)) f)))) + (dolist (bpt breakpoints) + (funcall (breakpoint-hook-function bpt) + frame + ;; If this is an :unknown-return-partner, then pass the + ;; hook function the original breakpoint, so that users + ;; arn't forced to confront the fact that some breakpoints + ;; really are two. + (if (eq (breakpoint-kind bpt) :unknown-return-partner) + (breakpoint-unknown-return-partner bpt) + bpt))))) + +;;; HANDLE-FUNCTION-END-BREAKPOINT -- Internal Interface +;;; +(defun handle-function-end-breakpoint (offset component sigcontext) + (let ((data (breakpoint-data component offset nil))) + (unless data + (error "Unknown breakpoint in ~S at offset ~S." + (debug-function-name (debug-function-from-pc component offset)) + offset)) + (let ((breakpoints (breakpoint-data-breakpoints data))) + (when breakpoints + (assert (eq (breakpoint-kind (car breakpoints)) :function-end)) + (handle-function-end-breakpoint-aux breakpoints data sigcontext))))) + +;;; HANDLE-FUNCTION-END-BREAKPOINT-AUX -- Internal. +;;; +;;; Either HANDLE-BREAKPOINT calls this for :function-end breakpoints [old C +;;; code] or HANDLE-FUNCTION-END-BREAKPOINT calls this directly [new C code]. +;;; +(defun handle-function-end-breakpoint-aux (breakpoints data signal-context) + (delete-breakpoint-data data) + (let* ((scp + (locally + (declare (optimize (ext:inhibit-warnings 3))) + (alien:sap-alien signal-context (* unix:sigcontext)))) + (frame (do ((cfp (vm:sigcontext-register scp vm::cfp-offset)) + (f (top-frame) (frame-down f))) + ((= cfp (system:sap-int (frame-pointer f))) f) + (declare (type (unsigned-byte #.vm:word-bits) cfp)))) + (component (breakpoint-data-component data)) + (cookie (gethash component *function-end-cookies*))) + (remhash component *function-end-cookies*) + (dolist (bpt breakpoints) + (funcall (breakpoint-hook-function bpt) + frame bpt + (get-function-end-breakpoint-values scp) + cookie)))) + +(defun get-function-end-breakpoint-values (scp) + (let ((ocfp (system:int-sap (vm:sigcontext-register scp + #-x86 vm::ocfp-offset + #+x86 vm::ebx-offset))) + (nargs (kernel:make-lisp-obj + (vm:sigcontext-register scp vm::nargs-offset))) + (reg-arg-offsets '#.vm::register-arg-offsets) + (results nil)) + (system:without-gcing + (dotimes (arg-num nargs) + (push (if reg-arg-offsets + (kernel:make-lisp-obj + (vm:sigcontext-register scp (pop reg-arg-offsets))) + (kernel:stack-ref ocfp arg-num)) + results))) + (nreverse results))) + +;;; +;;; MAKE-BOGUS-LRA (used for :function-end breakpoints) +;;; + +(defconstant bogus-lra-constants #-x86 2 #+x86 3) +(defconstant known-return-p-slot (+ vm:code-constants-offset #-x86 1 #+x86 2)) + +;;; MAKE-BOGUS-LRA -- Interface. +;;; +(defun make-bogus-lra (real-lra &optional known-return-p) + "Make a bogus LRA object that signals a breakpoint trap when returned to. If + the breakpoint trap handler returns, REAL-LRA is returned to. Three values + are returned: the bogus LRA object, the code component it is part of, and + the PC offset for the trap instruction." + (system:without-gcing + (let* ((src-start (system:foreign-symbol-address + "function_end_breakpoint_guts")) + (src-end (system:foreign-symbol-address + "function_end_breakpoint_end")) + (trap-loc (system:foreign-symbol-address + "function_end_breakpoint_trap")) + (length (system:sap- src-end src-start)) + (code-object + (system:%primitive + #-(and x86 gencgc) c:allocate-code-object + #+(and x86 gencgc) c::allocate-dynamic-code-object + (1+ bogus-lra-constants) + length)) + (dst-start (kernel:code-instructions code-object))) + (declare (type system:system-area-pointer + src-start src-end dst-start trap-loc) + (type kernel:index length)) + (setf (kernel:%code-debug-info code-object) :bogus-lra) + (setf (kernel:code-header-ref code-object vm:code-trace-table-offset-slot) + length) + #-x86 + (setf (kernel:code-header-ref code-object real-lra-slot) real-lra) + #+x86 + (multiple-value-bind (offset code) + (compute-lra-data-from-pc real-lra) + (setf (kernel:code-header-ref code-object real-lra-slot) code) + (setf (kernel:code-header-ref code-object (1+ real-lra-slot)) offset)) + (setf (kernel:code-header-ref code-object known-return-p-slot) + known-return-p) + (kernel:system-area-copy src-start 0 dst-start 0 (* length vm:byte-bits)) + (vm:sanctify-for-execution code-object) + #+x86 + (values dst-start code-object (system:sap- trap-loc src-start)) + #-x86 + (let ((new-lra (kernel:make-lisp-obj (+ (system:sap-int dst-start) + vm:other-pointer-type)))) + (kernel:set-header-data + new-lra + (logandc2 (+ vm:code-constants-offset bogus-lra-constants 1) + 1)) + (vm:sanctify-for-execution code-object) + (values new-lra code-object (system:sap- trap-loc src-start)))))) + + + +;;;; Editor support. + +;;; This holds breakpoints in the slave set on behalf of the editor. +;;; +;(defvar *editor-breakpoints* (make-hash-table :test #'equal)) + +;;; +;;; Setting breakpoints. +;;; + +;;; SET-BREAKPOINT-FOR-EDITOR -- Internal Interface. +;;; +(defun set-breakpoint-for-editor (package name-str path) + "The editor calls this remotely in the slave to set breakpoints. Package is + the string name of a package or nil, and name-str is a string representing a + function name (for example, \"foo\" or \"(setf foo)\"). After finding + package, this READs name-str with *package* bound appropriately. Path is + either a modified source-path or a symbol (:function-start or + :function-end). If it is a modified source-path, it has no top-level-form + offset or form-number component, and it is in descent order from the root of + the top-level form." + (let* ((name (let ((*package* (if package + (lisp::package-or-lose package) + *package*))) + (read-from-string name-str))) + (debug-fun (function-debug-function (fdefinition name)))) + (etypecase path + (symbol + (let* ((bpt (di:make-breakpoint + #'(lambda (frame bpt) + (declare (ignore frame bpt)) + (break "Editor installed breakpoint.")) + debug-fun :kind path)) + (remote-bpt (wire:make-remote-object bpt))) + (activate-breakpoint bpt) + ;;(push remote-bpt (gethash name *editor-breakpoints*)) + remote-bpt)) + (cons + (etypecase debug-fun + (compiled-debug-function + (compiled-debug-function-set-breakpoint-for-editor + debug-fun #|name|# path)) + (interpreted-debug-function + (error + "We don't currently support breakpoints in interpreted code."))))))) + +(defun compiled-debug-function-set-breakpoint-for-editor (debug-fun #|name|# path) + (let* ((source-paths (generate-component-source-paths + (compiled-debug-function-component debug-fun))) + (matches nil) + (matching-length 0)) + (declare (simple-vector source-paths) + (list matches) + (fixnum matching-length)) + ;; Build a list of paths that match path up to matching-length + ;; elements. + (macrolet ((maybe-store-match (path matched-len) + `(cond ((> ,matched-len matching-length) + (setf matches (list ,path)) + (setf matching-length ,matched-len)) + ((= ,matched-len matching-length) + (cons ,path matches))))) + (dotimes (i (length source-paths)) + (declare (fixnum i)) + (let ((sp (svref source-paths i))) + ;; Remember, first element of sp is a code-location. + (do ((path-ptr path (cdr path-ptr)) + (sp-ptr (cdr sp) (cdr sp-ptr)) + (count 0 (1+ count))) + ((or (null path-ptr) (null sp-ptr)) + (when (null sp-ptr) + (maybe-store-match sp count))) + (declare (list sp-ptr path-ptr) + (fixnum count)) + (unless (= (the fixnum (car path-ptr)) (the fixnum (car sp-ptr))) + (maybe-store-match sp count)))))) + ;; If there's just one, set it; otherwise, return the conflict set. + (cond ((and (= (length matches) 1) (equal path (cdar matches))) + (let* ((bpt (make-breakpoint + #'(lambda (frame bpt) + (declare (ignore frame bpt)) + (break "Editor installed breakpoint.")) + (wire:remote-object-value (caar matches)))) + (remote-bpt (wire:make-remote-object bpt))) + (activate-breakpoint bpt) + ;;(push remote-bpt (gethash name *editor-breakpoints*)) + remote-bpt)) + (t matches)))) + +;;; This maps components to vectors of modified source-paths. We assume users +;;; will set multiple breakpoints in a given function which entails computing +;;; this data repeatedly. Possibly the GC hook should free this cache. The +;;; source-paths are modified in the following ways: +;;; 1] The form number element (first) is clobbered with the code-location +;;; corresponding to the source-path. +;;; 2] The top-level-form offset element (last) is thrown away. +;;; 3] Everything after the first element is reversed, so the modified +;;; source-path actually portrays a descent into the form. +;;; +(defvar *component-source-locations* (make-hash-table :test #'eq)) + +;;; GENERATE-COMPONENT-SOURCE-PATHS -- Internal. +;;; +;;; This returns a vector of modified source-paths, one for every code-location +;;; in component. The source-paths are modified as described for +;;; *component-source-locations*. +;;; +(defun generate-component-source-paths (component) + (or (gethash component *component-source-locations*) + (setf (gethash component *component-source-locations*) + (sub-generate-component-source-paths component)))) + +;;; This maps source-infos to hashtables that map top-level-form offsets to +;;; modified form-number translations (as returned by +;;; FORM-NUMBER-TRANSLATIONS). These are modified as described for +;;; *component-source-locations*. +;;; +(defvar *source-info-offset-translations* (make-hash-table :test #'eq)) + +;;; This is a hacking space for SUB-GENERATE-COMPONENT-SOURCE-PATHS. We use +;;; this because we throw away many source-paths we accumulate in this buffer +;;; since they are not associated with code-locations. +;;; +(defvar *source-paths-buffer* (make-array 50 :fill-pointer t :adjustable t)) + +;;; SUB-GENERATE-COMPONENT-SOURCE-PATHS -- Internal. +;;; +;;; We iterate over the code-locations in component, fetching their +;;; source-infos and using the *source-info-offset-translations* cache. This +;;; computation often repeatedly sees the same source-info/tlf-offset pair, so +;;; we see many source-paths from one form-number-translation table. Because +;;; of this, when we add a form-number-translations table to this cache, we add +;;; all the source-paths in it to the result immediately. Then later if we see +;;; the same (not EQ though) source-info/tlf-offset form-number-translations, +;;; we can simply check if one of the source-paths is already in the result, +;;; and if it is, then all of them already are. We keep the cache around +;;; between invocations since we expect multiple breakpoints to be set in the +;;; same function, and this is why we must check if a form-number-translations +;;; has been added to the result; just its presence in the cache does not mean +;;; it is in the result vector. +;;; +(defun sub-generate-component-source-paths (component) + (let ((info (kernel:%code-debug-info component))) + (unless info (debug-signal 'no-debug-info)) + (let* ((function-map (get-debug-info-function-map info)) + (result *source-paths-buffer*)) + (declare (simple-vector function-map) + (vector result)) + (setf (fill-pointer result) 0) + (flet ((copy-stuff (form-num-trans result) + (declare (simple-vector form-num-trans) + (vector result)) + (dotimes (i (length form-num-trans)) + (declare (fixnum i)) + (vector-push-extend (svref form-num-trans i) result))) + (convert-paths (form-num-trans) + (declare (simple-vector form-num-trans)) + (dotimes (i (length form-num-trans) form-num-trans) + (declare (fixnum i)) + (let* ((source-path (svref form-num-trans i))) + (declare (list source-path)) + ;; Make the first cons point to the reversal of everything + ;; else, but throw away what was the last element before the + ;; reversal. + (setf (cdr source-path) + ;; Must copy the rest of the list, so REVERSE, but + ;; the first cons cell of each list is unique. + (cdr (reverse (cdr source-path)))))))) + ;; Get all possible source-paths, modifying any new additions to the + ;; cache. + (do ((i 0 (+ i 2)) + (len (length function-map))) + ((>= i len)) + (declare (type c::index i)) + (let ((d-fun (make-compiled-debug-function (svref function-map i) + component))) + (do-debug-function-blocks (d-block d-fun) + (do-debug-block-locations (loc d-block) + (let* ((d-source (code-location-debug-source loc)) + (translations (gethash d-source + *source-info-offset-translations*)) + (tlf-offset (code-location-top-level-form-offset loc)) + (loc-num (code-location-form-number loc))) + (cond + (translations + (let ((form-num-trans (gethash tlf-offset translations))) + (declare (type (or simple-vector null) form-num-trans)) + (cond + ((not form-num-trans) + (let ((form-num-trans (get-form-number-translations + d-source tlf-offset))) + (declare (simple-vector form-num-trans)) + (setf (gethash tlf-offset translations) form-num-trans) + (copy-stuff (convert-paths form-num-trans) result) + (setf (car (svref form-num-trans loc-num)) + (wire:make-remote-object loc)))) + ;; If one of these source-paths is in our result, then + ;; they all are. + ((find (svref form-num-trans 0) result :test #'eq) + (setf (car (svref form-num-trans loc-num)) + (wire:make-remote-object loc))) + ;; Otherwise, store these source-paths in the result. + (t + (copy-stuff form-num-trans result) + (setf (car (svref form-num-trans loc-num)) + (wire:make-remote-object loc)))))) + (t + (let ((translations (make-hash-table :test #'eq)) + (form-num-trans (get-form-number-translations + d-source tlf-offset))) + (declare (simple-vector form-num-trans)) + (setf (gethash d-source *source-info-offset-translations*) + translations) + (setf (gethash tlf-offset translations) form-num-trans) + (copy-stuff (convert-paths form-num-trans) result) + (setf (car (svref form-num-trans loc-num)) + (wire:make-remote-object loc))))))))))) + ;; Copy source-paths with code-locations from the result buffer to a + ;; real result vector. + (let* ((count (count-if #'(lambda (x) (wire:remote-object-p (car x))) + result)) + (the-real-thing (make-array count)) + (i -1)) + (declare (simple-vector the-real-thing) + (fixnum i count)) + (dotimes (j count) + (loop (when (wire:remote-object-p (car (aref result (incf i)))) + (return))) + (setf (svref the-real-thing j) (aref result i))) + the-real-thing)))) + +;;; GET-FORM-NUMBER-TRANSLATIONS -- Internal. +;;; +;;; This returns a vector of form-number translations to source-paths for +;;; d-source and the top-level-form indicated by the top-level-form offset. +;;; +(defun get-form-number-translations (d-source tlf-offset) + (let ((name (debug-source-name d-source))) + (ecase (debug-source-from d-source) + (:file + (cond + ((not (probe-file name)) + (format t "~%Cannot set breakpoints for editor when source file no ~ + longer exists:~% ~A." + (namestring name))) + (t + (let* ((local-tlf-offset (- tlf-offset + (debug-source-root-number d-source))) + (char-offset + (aref (or (debug-source-start-positions d-source) + (error "Cannot set breakpoints for editor when ~ + there is no start positions map.")) + local-tlf-offset))) + (with-open-file (f name) + (cond + ((= (debug-source-created d-source) (file-write-date name)) + (file-position f char-offset)) + (t + (format t + "~%While setting a breakpoint for the editor, noticed ~ + source file has been modified since compilation:~% ~A~@ + Using form offset instead of character position.~%" + (namestring name)) + (dotimes (i local-tlf-offset) (read f)))) + (form-number-translations (read f) tlf-offset)))))) + ((:lisp :stream) + (form-number-translations (svref name tlf-offset) tlf-offset))))) + +;;; SET-LOCATION-BREAKPOINT-FOR-EDITOR -- Internal Interface. +;;; +(defun set-location-breakpoint-for-editor (remote-obj-loc) + "The editor calls this in the slave with a remote-object representing a + code-location to set a breakpoint." + (let ((loc (wire:remote-object-value remote-obj-loc))) + (etypecase loc + (interpreted-code-location + (error "Breakpoints in interpreted code are currently unsupported.")) + (compiled-code-location + (let* ((bpt (make-breakpoint #'(lambda (frame bpt) + (declare (ignore frame bpt)) + (break "Editor installed breakpoint.")) + loc)) + (remote-bpt (wire:make-remote-object bpt))) + (activate-breakpoint bpt) + ;;(push remote-bpt (gethash name *editor-breakpoints*)) + remote-bpt))))) + +;;; +;;; Deleting breakpoints. +;;; + +;;; DELETE-BREAKPOINT-FOR-EDITOR -- Internal Interface. +;;; +(defun delete-breakpoint-for-editor (remote-obj-bpt) + "The editor calls this remotely in the slave to delete a breakpoint." + (delete-breakpoint (wire:remote-object-value remote-obj-bpt)) + (wire:forget-remote-translation remote-obj-bpt)) + + + +;;;; Miscellaneous + +;;; This appears here because it cannot go with the debug-function interface +;;; since DO-DEBUG-BLOCK-LOCATIONS isn't defined until after the debug-function +;;; routines. +;;; + +;;; DEBUG-FUNCTION-START-LOCATION -- Public. +;;; +(defun debug-function-start-location (debug-fun) + "This returns a code-location before the body of a function and after all + the arguments are in place. If this cannot determine that location due to + a lack of debug information, it returns nil." + (etypecase debug-fun + (compiled-debug-function + (code-location-from-pc debug-fun + (c::compiled-debug-function-start-pc + (compiled-debug-function-compiler-debug-fun + debug-fun)) + nil)) + (interpreted-debug-function + ;; Return the first location if there are any, otherwise nil. + (handler-case (do-debug-function-blocks (block debug-fun nil) + (do-debug-block-locations (loc block nil) + (return-from debug-function-start-location loc))) + (no-debug-blocks (condx) + (declare (ignore condx)) + nil))))) + + + +(defun print-code-locations (function) + (let ((debug-fun (function-debug-function function))) + (do-debug-function-blocks (block debug-fun) + (do-debug-block-locations (loc block) + (fill-in-code-location loc) + (format t "~S code location at ~D" + (compiled-code-location-kind loc) + (compiled-code-location-pc loc)) + (debug::print-code-location-source-form loc 0) + (terpri))))) --- cmucl-20a-20090928.orig/own-work/mailing-lists +++ cmucl-20a-20090928/own-work/mailing-lists @@ -0,0 +1,107 @@ +From cracauer@knight.cons.org Sat Oct 26 01:04:48 1996 +From: cracauer@cons.org (Martin Cracauer) +Message-Id: <9610252219.AA23293@wavehh.hanse.de> +Subject: Move of seamew-l (CMUCL/x86) mailing list +To: cmucl-imp@cons.org +Date: Sat, 26 Oct 1996 00:19:37 +0200 (MET DST) + +As discussed with Simon Brooke, I will take over the seamew-l mailing +list and added -announce and -help lists. The new lists all have +proper -request addresses and automatic archiving. + + +Please use cmucl-imp@cons.org instead of seamew-l@dircon.co.uk from +now on. + + +The new lists will not be set up as closed lists, so people from all +addresses can post to them. When unwanted mail arrives, I will filter +further mail from these sites. Additionally, I discourage people from +putting links to these lists on public WWW pages (see below). + +Please let me know if you have further suggestions. + +To help people in locating CMUCL resources, I set up a web page at +http://www.cons.org/cmucl/ + +I added all former members of seamew-l to cmucl-imp, which is the +direct replacement and to cmucl-announce. I'd like to encourage people +to enter the -help list also + +This is the announcement for the new mailing lists, also availiable as +http://www.cons.org/cmucl/cmucl-ml-announce.txt +-- +Mailing lists related to CMU Common Lisp +======================================== + +cmucl-announce @ cons.org + +is a low-volume mailing list, reserved for announcements like new +releases, new ports, important patches or other resources closely +related to the CMU implementation of Common Lisp. No discussion should +happen on this list. This mailing list will be moderated when +necessary. + +Please send mail to cmucl-announce-request@cons.org to be added or +removed from the list and to cmucl-announce-human-request@cons.org in +case the former doesn't work. + +cmucl-imp @ cons.org + +is a mailing list for technical discussion of implementation-specific +issues, like ports to new platforms, bug fixes, new features, design +of APIs or ports of major third-party packages to CMU CL. + +Please send mail to cmucl-imp-request@cons.org to be added or removed +from the list and to cmucl-imp-human-request@cons.org in case the +former didn't work. + +cmucl-help @ cons.org + +is a mailing list to ask for help in setting up and using CMU Common +Lisp. Posters should read the manual and the archive of these mailing +lists prior to using this list. Otherwise it is open to every question +related to CMU Common Lisp. + +Help requests related to rebuilding CMU CL and applying patches may be +sent to cmucl-imp @ cons.org also. + +I encourage experienced users of CMUCL to join this list and help new +users. + +Please send mail to cmucl-help-request@cons.org to be added or removed +from the list and to cmucl-help-human-request@cons.org in case the +former doesn't work. + +Archives of these mailing lists +------------------------------- + +Archives of mailing lists running on cons.org are available as +http://www.cons.org/maillists/ + +I will include an archive of seamew-l@dircon.co.uk, the mailing list +used for the x86 port. + +WWW links of these lists +------------------------ + +Please do not put pointers of the "real" mailing list addresses on +public WWW pages. Do not reference them with mailto:...@cons.org +links. That would result in unrelated mail sent to the lists by +robots. Even better, list only the -request addresses. The archives of +these mailing lists and this document are closed to robots, so they +will not end up in WWW search engines. + +You may do with the -request addresses whatever you want. These mails +will be sent only to the maintainer (I am used to them...). + +The newest version of this document is available as +http://www.cons.org/cmucl/cmucl-ml-announce.txt + +Happy Lisping +-- +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Martin Cracauer + +$Id: cmucl-ml-announce.txt,v 1.3 1996/10/25 22:13:45 cracauer Exp $ + --- cmucl-20a-20090928.orig/own-work/README.hemlock +++ cmucl-20a-20090928/own-work/README.hemlock @@ -0,0 +1,17 @@ +Hemlock doesn't work with terminals because it dies +in parsing /etc/termcap. + +Hemlock is an emacs-clone (not gnu-emacs, emacs on the +old,old,old systems like ITS/TOPS-20. see the jargon-file +for more information) working in X. + +To get in type (ed), to get out type C-x C-z (this means: +press control+x followed by control+z). + +Use this to edit lisp, or use the ilisp mode in emacs. +(note: ilisp is a separate package for GNU emacs! It's +much better compared to the build-in ilisp) + +Download it from http://ilisp.cons.org + +Peter --- cmucl-20a-20090928.orig/own-work/RELEASE-NOTES +++ cmucl-20a-20090928/own-work/RELEASE-NOTES @@ -0,0 +1,124 @@ +From the fifth release onwards, I've been making debian packages, +see the changelog for details.. + +This is the fifth release of CMUCL for Linux. + +New: +- Lisp .x86f files can be executed from the shell (with a + kernel version 2.1.X) +- Generation GC. +- new hash-tables +- better random generator +- libc6 support +- more packages +- signed-array support +- multi-processing + +Old-New: +- Fixed calling of inline functions. +- Removed propagation of trig functions. +- Some other fixes. + +Old-New: +- fp faults now _really_,_really_ works. (there is a bug in the +Linux kernel that resets the control world of the FPU +in a signal handler) +- html intro's +- lisp-tk interface +- a lot of bugfixes + +Old-new: (release 3) +- improved type progation, now also for floating point numbers (if enabled). +- numerous small fixes. + +Old-New: (release 2) +- ELF support. The executable is fully ELF, and you can use +dlopen and friends. +- fp faults now work: + +Script started on Sun Sep 15 21:42:46 1996 +# lisp -core /usr/lib/cmucl/lisp.core +Validating memory ... done. +Mapping 6762496 bytes at 0x1000000. +Mapping 11182080 bytes at 0x5000000. +CMU Common Lisp 17f x86-linux 1.02, running on slartibartfast.org +Send bug reports and questions to your local CMU CL maintainer, +or to pw@snoopy.mv.com, +or to natst3@uia.ac.be +or to cmucl-bugs@cs.cmu.edu. +Loaded subsystems: + Python 1.0, target Intel x86 + CLOS based on PCL version: September 16 92 PCL (f) + CLX X Library MIT R5.02 + Hemlock 3.5 +* (get-floating-point-modes ) + +(:TRAPS (:OVERFLOW :INVALID :DIVIDE-BY-ZERO) :ROUNDING-MODE :NEAREST + :CURRENT-EXCEPTIONS NIL :ACCRUED-EXCEPTIONS NIL :FAST-MODE NIL) +* (set-floating-point-modes :traps '(:inexact)) + +* (get-floating-point-modes ) + +(:TRAPS (:INEXACT) :ROUNDING-MODE :NEAREST :CURRENT-EXCEPTIONS NIL + :ACCRUED-EXCEPTIONS NIL :FAST-MODE NIL) +* (/ 4.0 0.0) + +#.EXT:SINGLE-FLOAT-POSITIVE-INFINITY +* (tan (/ Pi 2)) + +Arithmetic error FLOATING-POINT-INEXACT signalled. + +Restarts: + 0: [ABORT] Return to Top-Level. + +Debug (type H for help) + +(X86:SIGFPE-HANDLER # + # + #.(SYSTEM:INT-SAP #x500FFD18)) +0] (get-floating-point-modes ) + +(:TRAPS NIL :ROUNDING-MODE :NEAREST :CURRENT-EXCEPTIONS NIL :ACCRUED-EXCEPTIONS + NIL :FAST-MODE NIL) +0] 0 + +* (set-floating-point-modes :traps '(:divide-by-zero )) + +* (get-floating-point-modes ) + +(:TRAPS (:DIVIDE-BY-ZERO) :ROUNDING-MODE :NEAREST :CURRENT-EXCEPTIONS NIL + :ACCRUED-EXCEPTIONS NIL :FAST-MODE NIL) +* (/ 4.0 0.0) + + +Arithmetic error DIVISION-BY-ZERO signalled. + +Restarts: + 0: [ABORT] Return to Top-Level. + +Debug (type H for help) + +(X86:SIGFPE-HANDLER # + # + #.(SYSTEM:INT-SAP #x500FFD00)) +0] 0 + +* (quit) + +/mnt/sda/fake-root/usr/doc/cmucl $exit +exit + +Script done on Sun Sep 15 21:44:21 1996 + +Nice, ain't it. Especially the inexact! (search for it in C...) + +- packages: clx, clm (no server yet, so untested), hemlock +- more kernels: with and without pcl (clos) +- a lot of fixes +- fsstnd + +This release is based on CMUCL-FreeBSD-1.03.7.tar.gz from Paul +F. Werkowski . + +Peter + --- cmucl-20a-20090928.orig/own-work/lisp-config.lisp +++ cmucl-20a-20090928/own-work/lisp-config.lisp @@ -0,0 +1,2 @@ +(setf *short-site-name* "Unknown" + *long-site-name* "Site name not initialized") --- cmucl-20a-20090928.orig/own-work/README.contacting +++ cmucl-20a-20090928/own-work/README.contacting @@ -0,0 +1,7 @@ +My email is +pvaneynd@debian.org + +The latter two should remain in force longer... + +Peter + --- cmucl-20a-20090928.orig/own-work/hemlock11.cursor +++ cmucl-20a-20090928/own-work/hemlock11.cursor @@ -0,0 +1,8 @@ +#define left_ptr_width 16 +#define left_ptr_height 16 +#define left_ptr_x_hot 3 +#define left_ptr_y_hot 1 +static char left_ptr_bits[] = { + 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x00, 0x78, 0x00, 0xf8, 0x00, + 0xf8, 0x01, 0xf8, 0x03, 0xf8, 0x07, 0xf8, 0x00, 0xd8, 0x00, 0x88, 0x01, + 0x80, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00}; --- cmucl-20a-20090928.orig/own-work/install-clc.lisp +++ cmucl-20a-20090928/own-work/install-clc.lisp @@ -0,0 +1,34 @@ +;;; -*- Mode: LISP; Package: CL-USER -*- +;;; +;;; Copyright Peter Van Eynde, 2001 +;;; +;;; License: LGPL v2 +;;; +(in-package "COMMON-LISP-USER") + +;;; set up a reader macro to allow she-bang lines +(set-dispatch-macro-character #\# #\! + (lambda (stream bang arg) + (declare (ignore bang arg)) + (read-line stream) + (values))) + +(unless (ignore-errors + (load "/usr/share/common-lisp/source/common-lisp-controller/common-lisp-controller.lisp")) + (unix:unix-exit 1)) + +(unless (ignore-errors + (common-lisp-controller:init-common-lisp-controller-v4 "cmucl") + t) + (format t "~%Error during init of common-lisp-controller~%") + (unix:unix-exit 1)) + +(unless (ignore-errors + ;; it loaded, configure it for common-lisp-controller use: + (format t "~%Saving to new-lisp.core...") + (ext:gc :full t) + (setf ext:*batch-mode* nil) + (ext:save-lisp "new-lisp.core" + :purify t)) + (unix:unix-exit 1)) + --- cmucl-20a-20090928.orig/own-work/kmp.about.hyperspec +++ cmucl-20a-20090928/own-work/kmp.about.hyperspec @@ -0,0 +1,49 @@ +From hnets.uia.ac.be!feed2.belnet.be!news.belnet.be!news.rediris.es!news.uoregon.edu!hammer.uoregon.edu!news-xfer.netaxs.com!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!ais.net!uunet!in1.uu.net!198.3.232.58!epcot.harlequin.com!kmp Fri Apr 4 13:35:24 1997 +Xref: hnets.uia.ac.be comp.lang.lisp:7345 +Path: hnets.uia.ac.be!feed2.belnet.be!news.belnet.be!news.rediris.es!news.uoregon.edu!hammer.uoregon.edu!news-xfer.netaxs.com!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!ais.net!uunet!in1.uu.net!198.3.232.58!epcot.harlequin.com!kmp +From: kmp@harlequin.com (Kent Pitman) +Newsgroups: comp.lang.lisp +Subject: Re: $350.00 ANSI standard? +Date: 03 Apr 97 21:54:53 GMT +Organization: Harlequin Inc., Cambridge, MA, USA +Lines: 32 +Message-ID: +References: <33403FE5.16BB@CS.Berkeley.EDU> <5hsrc7$klu@pasilla.bbnplanet.com> + + +NNTP-Posting-Host: romulus.harlequin.com +In-reply-to: kmp@harlequin.com's message of 03 Apr 97 20:32:22 GMT + +Oh, I realized after the fact that some reading this might not know +what the Common Lisp HyperSpec (TM) is. As you could probably tell +from my last post, it is not hardcopy. It is available on the web and +you can download a copy for your own use or browse it at Harlequin. +(There may be other mirrors, too--we don't keep track of that.) + +See http://www.harlequin.com/books/HyperSpec for the download info. +It takes 16MB on disk, but it's worth it if you have to deal with the +spec much at all. If I do say so myself, it's a mega-cool document with +105 kilohyperlinks (<-- how often do you get to use that word? :-) + +See http://www.harlequin.com/books/HyperSpec/FrontMatter/ to browse +Harlequin's webbed copy. (But keep in mind that it will run much faster +if you download your own copy to your local web.) + +See http://www.harlequin.com/books/HyperSpec/FrontMatter/About-HyperSpec.html#Legal +for information about the legal restrictions on those who do downloading. +I think most people will find them entirely reasonable. They're mostly about +maintaining the integrity of the document; there's no dollars involved. + +The Common Lisp HyperSpec is NOT the ANSI CL spec, but it is derived from it, +and is very similar (with only minor textual tweaks here and there to make it +work webbed). If you need a truly official source, the ANSI spec is all you +can do. But for most normal purposes, the CLHS is fine and at the price +(FREE), it's hard to beat. It also comes cross-indexed against many design +documents that the X3J13 subcommittee used, so you can learn about how some +of the odd features of the language got to be that way. + +I hope this doesn't seem like too much of a self-serving plug, but gee-- +Harlequin and I tried to make this as much of a public service as we could, +and I don't exactly get royalties from it, so I'm entitled to make a fuss +over it once in a while, I think. + --- cmucl-20a-20090928.orig/own-work/hemlock11.mask +++ cmucl-20a-20090928/own-work/hemlock11.mask @@ -0,0 +1,6 @@ +#define left_ptrmsk_width 16 +#define left_ptrmsk_height 16 +static char left_ptrmsk_bits[] = { + 0x0c, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x7c, 0x00, 0xfc, 0x00, 0xfc, 0x01, + 0xfc, 0x03, 0xfc, 0x07, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x01, 0xdc, 0x03, + 0xcc, 0x03, 0x80, 0x07, 0x80, 0x07, 0x00, 0x03}; --- cmucl-20a-20090928.orig/own-work/copyright-hemlock +++ cmucl-20a-20090928/own-work/copyright-hemlock @@ -0,0 +1,8 @@ +This package was written by Peter Van Eynde pvaneynd@debian.org on Sat, 4 Apr 1998 22:22:24 +0200. + +Copyright: + +;;; This code was written as part of the CMU Common Lisp project at +;;; Carnegie Mellon University, and has been placed in the public domain. + + --- cmucl-20a-20090928.orig/own-work/cmucl-graystream.asd +++ cmucl-20a-20090928/own-work/cmucl-graystream.asd @@ -0,0 +1,26 @@ +;;; -*- Mode: lisp -*- +;; +;; Graystream system definition +(in-package :asdf) + +#+cmu +(defclass cl-modifying-file (cl-source-file) ()) + +#+cmu +(defmethod perform ((op load-op) (c cl-modifying-file)) + (ext:without-package-locks + (call-next-method))) + +#+cmu +(defmethod source-file-type ((c cl-modifying-file) (s module)) + "lisp") + +#+cmu +(defsystem cmucl-graystream + :components + ((:file "gray-streams-class") + (:cl-modifying-file "gray-streams" + :depends-on ("gray-streams-class")))) + + + --- cmucl-20a-20090928.orig/own-work/copyright-clx +++ cmucl-20a-20090928/own-work/copyright-clx @@ -0,0 +1,65 @@ +This package was written by Peter Van Eynde pvaneynd@debian.org on Sat, 4 Apr 1998 22:22:24 +0200. + +Copyright: + +;;; +;;; TEXAS INSTRUMENTS INCORPORATED +;;; P.O. BOX 2909 +;;; AUSTIN, TEXAS 78769 +;;; +;;; Portions Copyright (C) 1987 Texas Instruments Incorporated. +;;; Portions Copyright (C) 1988, 1989 Franz Inc, Berkeley, Ca. +;;; +;;; Permission is granted to any individual or institution to use, copy, +modify, +;;; and distribute this software, provided that this complete copyright and +;;; permission notice is maintained, intact, in all copies and supporting +;;; documentation. +;;; +;;; Texas Instruments Incorporated provides this software "as is" without +;;; express or implied warranty. +;;; +;;; Franz Incorporated provides this software "as is" without express or +;;; implied warranty. + +and + +;;; Copyright 1987, 1988 Massachusetts Institute of Technology, and +;;; Texas Instruments Incorporated + +;;; Permission to use, copy, modify, and distribute this document for any purpose +;;; and without fee is hereby granted, provided that the above copyright notice +;;; appear in all copies and that both that copyright notice and this permission +;;; notice are retained, and that the name of M.I.T. not be used in advertising or +;;; publicity pertaining to this document without specific, written prior +;;; permission. M.I.T. makes no representations about the suitability of this +;;; document or the protocol defined in this document for any purpose. It is +;;; provided "as is" without express or implied warranty. + +;;; Texas Instruments Incorporated provides this document "as is" without +;;; express or implied warranty. + +and + +;;; Copyright (c) 1987, 1988, 1989 Franz Inc, Berkeley, Ca. +;;; +;;; Permission is granted to any individual or institution to use, copy, +;;; modify, and distribute this software, provided that this complete +;;; copyright and permission notice is maintained, intact, in all copies and +;;; supporting documentation. +;;; +;;; Franz Incorporated provides this software "as is" without +;;; express or implied warranty. + +and + +;;; Copyright (C) 1990 Symbolics, Inc. +;;; +;;; Permission is granted to any individual or institution to use, copy, modify, +;;; and distribute this software, provided that this complete copyright and +;;; permission notice is maintained, intact, in all copies and supporting +;;; documentation. +;;; +;;; Symbolics, Inc. provides this software "as is" without +;;; express or implied warranty. + --- cmucl-20a-20090928.orig/own-work/cmucl-clx.asd +++ cmucl-20a-20090928/own-work/cmucl-clx.asd @@ -0,0 +1,52 @@ +;;; -*- Mode: lisp -*- + +(in-package :asdf) + +#+cmu +(defclass cl-modifying-file (cl-source-file) ()) + +#+cmu +(defmethod perform ((op load-op) (c cl-modifying-file)) + (ext:without-package-locks + (call-next-method))) + +#+cmu +(defmethod perform ((op compile-op) (c cl-modifying-file)) + (ext:without-package-locks + (call-next-method))) + +#+cmu +(defmethod source-file-type ((c cl-modifying-file) (s module)) + "lisp") + + +#+cmu +(defsystem :cmucl-clx + :depends-on (:cmucl-graystream) + :components + ((:file "package") + (:file "depdefs" :depends-on ("package")) + (:file "clx" :depends-on ("depdefs")) + (:file "dependent" :depends-on ("clx")) + (:file "macros" :depends-on ("dependent")) + (:file "bufmac" :depends-on ("macros")) + (:file "buffer" :depends-on ("bufmac")) + (:file "display" :depends-on ("buffer")) + (:file "gcontext" :depends-on ("display")) + (:file "input" :depends-on ("gcontext")) + (:file "requests" :depends-on ("input")) + (:file "fonts" :depends-on ("requests")) + (:file "graphics" :depends-on ("fonts")) + (:file "text" :depends-on ("graphics")) + (:file "attributes" :depends-on ("text")) + (:file "translate" :depends-on ("attributes")) + (:file "keysyms" :depends-on ("translate")) + (:file "manager" :depends-on ("keysyms")) + (:file "image" :depends-on ("manager")) + (:file "resource" :depends-on ("image")) + (:cl-modifying-file "clx-ext" :depends-on ("resource")) + (:file "charmacs" :depends-on ("clx-ext")) + (:cl-modifying-file "key-event" :depends-on ("charmacs")) + (:file "keysym-defs" :depends-on ("key-event")))) + + --- cmucl-20a-20090928.orig/own-work/cmucl-run +++ cmucl-20a-20090928/own-work/cmucl-run @@ -0,0 +1,16 @@ +#!/bin/sh + +# Wrapper script to run CMUCL or Lisp files quietly with CMU +# Common Lisp. It is used by binfmt-support to execute CMUCL fasls +# natively. +# +# -- René van Bevern , Sun Aug 28 20:59:41 2005 + +if [ "$1" ]; then + program="$1"; shift + cmucl -quiet -noinit -batch -load "$program" -eval "(quit)" "$@" +else + echo "Usage: $0 cmucl-program [arguments ...]" +fi + + --- cmucl-20a-20090928.orig/own-work/README.Debian +++ cmucl-20a-20090928/own-work/README.Debian @@ -0,0 +1,10 @@ +To select the default lisp image for users, use update-alternatives --config +cmucl-core" as root. + +To have source level debugging on the lisp internal functions, please install +the cmucl-source package. + +The cmucl-source package depends on termcap because we need the /etc/termcap +file as the hemlock editor reads it in to generate the right escape sequences +for different terminals. + --- cmucl-20a-20090928.orig/own-work/README.fsstnd +++ cmucl-20a-20090928/own-work/README.fsstnd @@ -0,0 +1,12 @@ +The binary is in /usr/bin/lisp. +The images and auxiliary files are in /usr/lib/cmucl. +The documentation in /usr/doc/cmucl. +The generated images by config are placed in the home directory. +The site-init.lisp file is in /etc/common-lisp/cmucl (non-shareable because it contains the site-name!) +The info-files in /usr/info/ +The source in /usr/src/cmucl + +If there are problems, or errors in this arrangement, +email me. + +Peter --- cmucl-20a-20090928.orig/own-work/hemlock-init.lisp +++ cmucl-20a-20090928/own-work/hemlock-init.lisp @@ -0,0 +1,2 @@ +(in-package :hemlock) +(setv default-font '-*-Fixed-Medium-R-*-*-*-140-*-*-*-*-*-*) --- cmucl-20a-20090928.orig/own-work/README.packages +++ cmucl-20a-20090928/own-work/README.packages @@ -0,0 +1,6 @@ +You can configure IN, but not OUT packages with +/usr/lib/cmucl/config + +So, remember to backup your original lisp image. + +Peter --- cmucl-20a-20090928.orig/own-work/GLIBC2 +++ cmucl-20a-20090928/own-work/GLIBC2 @@ -0,0 +1,4 @@ +Glibc2 support is now the standard for CMUCL. + +Note that in going to glibc-2.1 binary compatiblity was broken. The +current version compiles on 2.0 (runs also on 2.1) and 2.1. --- cmucl-20a-20090928.orig/own-work/binfmt +++ cmucl-20a-20090928/own-work/binfmt @@ -0,0 +1,9 @@ +# This executes executable files that start with "FASL FILE" using the +# specified cmucl wrapper script +# +# -- René van Bevern , Sun Aug 28 15:15:49 2005 + +package cmucl +interpreter /usr/bin/cmucl-run +magic FASL FILE + --- cmucl-20a-20090928.orig/own-work/cmucl-run.1 +++ cmucl-20a-20090928/own-work/cmucl-run.1 @@ -0,0 +1,27 @@ +.\" -*- Mode: Nroff -*- +.TH "cmucl-run" "1" "September 9, 2005" +.AT 3 +.SH NAME +cmucl-run \- wrapper script to execute cmucl fasls natively +.SH SYNOPSIS +.B cmucl-run +.I fasl-file +.I arguments to fasl-file + +.SH DESCRIPTION +Executes the given +.I fasl-file +wit cmucl, enabling batch mode and disabling the loading +of init files or the printing of banners. The other parameters +are provided as arguments to the program. + +.SH BUGS + +Bug reports should be sent to the Debian BTS, preferably with +reportbug. + +.SH AUTHOR +Peter Van Eynde (pvaneynd@debian.org) and Ren\['e] van Bevern +(rvb@progn.org) 2005 + +.PP --- cmucl-20a-20090928.orig/own-work/clx/README +++ cmucl-20a-20090928/own-work/clx/README @@ -0,0 +1,45 @@ +This directory contains the CLX Programmer's Reference Manual, in +Postscript format (roughly 230 pages). + + +For convenience, the sections can be printed separately as follows: + + contents.ps ; Cover, table of contents + s01.ps ; Introduction to CLX + s02.ps ; Displays + s03.ps ; Screens + s04.ps ; Windows and pixmaps + s05.ps ; Graphics contexts + s06.ps ; Graphic operations + s07.ps ; Images + s08.ps ; Fonts and characters + s09.ps ; Colors + s10.ps ; Cursors + s11.ps ; Atoms, properties, and selections + s12.ps ; Events and input + s13.ps ; Resources + s14.ps ; Control functions + s15.ps ; Extensions + s16.ps ; Errors + appa.ps ; Protocol vs CLX function cross-ref + glossary.ps ; Glossary + general.ps ; Index - general + condition.ps ; conditions + functions.ps ; functions + types.ps ; types + + +-------------------------------------------------------------------- + + I originally got these files with CMU-CL. They had no document +structuring (page number) comments in them, and `gv' wouldn't let me +page around in them. Additionally, they had been printed back to +front, making it very difficult to read them on-screen, the way I +prefer. + + I've added the page numbers. These are all numbered; the .el file is +the XEmacs lisp program I used to number them, in case anyone wants it +for an example. :-) The `Makefile' is set up to create a DEC SRC +Lectern file from the postscript. + +Karl M. Hegbloom 1997 --- cmucl-20a-20090928.orig/own-work/clx/s13.ps +++ cmucl-20a-20090928/own-work/clx/s13.ps @@ -0,0 +1,2967 @@ +%!PS-Adobe-2.0 +%%Title: s13.ps +%%Pages: 8 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 10 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps10b /ILtimsb 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /courps8 /ILcourps 8 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Courier /ILcourps ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 10 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(13\036161) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 9 declareFont +9 sf +20410.0 39376.0 m +84847.0 39466.0 m +(RESOURCES) 115890 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +144715 39315 av +146918 37028 as +146918 32833 as +145082 30927 as +146918 29020 as +146918 25588 as +144715 23300 as +139574 23300 as +137371 25588 as +137371 27876 as +140675 27876 as +140675 26351 as +143613 26351 as +143613 29401 as +141043 29401 as +141043 32452 as +143613 32452 as +143613 36265 as +140675 36265 as +140675 34740 as +137371 34740 as +137371 37028 as +139574 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +136636 23300 av +136636 23300 as +newpath +136636 43891 av +136636 43891 as +newpath +148019 43891 av +148019 43891 as +newpath +148019 23300 av +148019 23300 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +135442 39315 av +135442 23300 as +132505 23300 as +129567 26351 as +129567 27876 as +132138 27876 as +132138 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +129200 23300 av +129200 23300 as +newpath +129200 43891 av +129200 43891 as +newpath +136911 43891 av +136911 43891 as +newpath +136911 23300 av +136911 23300 as +149351.0 39376.0 m +9 sf +/timsps10 4 declareFont +4 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 7 declareFont +7 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(13.1) 57771 0.00 -1 s +4 sf +() 57771 0.00 -1 s +59966.0 h +(Users need a way to specify preferences for various user interface values \(for ex\036) 149352 -157.85 32 s +52832.0 50032.0 m +(ample,) 60434 0.00 -1 s +( colors, fonts, title strings, and so forth\). Applications need a consistent method) 149352 -49.33 32 s +52832.0 53193.0 m +(for) 56121 0.00 -1 s +( determining the default interface values that are specific to them.) 129455 -72.00 32 s +( It is also useful if) 149352 -80.60 32 s +52832.0 56354.0 m +(application) 65371 0.00 -1 s +( interface) 75957 11.00 32 s +( values can be modified by users without changes to the program) 149352 10.45 32 s +52832.0 59515.0 m +(code.) 58866 0.00 -1 s +( For example, this capability can make it easy to change the color scheme of a user) 149352 -188.25 32 s +52832.0 62676.0 m +(interface.) 63407 0.00 -1 s +( In CLX, such) 78767 -210.00 32 s +( interface values are referred to as ) 116442 -180.43 32 s +/timsps10i 5 declareFont +5 sf +(resources) 127415 0.00 -1 s +4 sf +(. CLX defines func\036) 149352 -210.67 32 s +52832.0 65837.0 m +(tions) 58320 0.00 -1 s +( for storing and retrieving interface resources) 108331 -153.33 32 s +( from a resource database. A user can) 149352 -184.57 32 s +52832.0 68998.0 m +(store various) 67330 0.00 32 s +( user interface values as resources in a resource database; a CLX applica\036) 149352 -60.42 32 s +52832.0 72159.0 m +(tion) 57222 0.00 -1 s +( can then read these resource values and modify) 111014 -35.00 32 s +( its user interface accordingly.) 144994 -26.75 32 s +52832.0 81483.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 80658 av +149352 80658 as +149352 80776 as +52832 80776 as +closepath +fp +/drawmode PL_SET def +52832.0 84644.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62343 -130.00 32 s +4 sf +(The general term ) 81934 -130.00 32 s +5 sf +(resource) 91809 0.00 -1 s +4 sf +( refers to) 101577 -130.00 32 s +( any application user interface value stored) 149352 -108.83 32 s +52832.0 87805.0 m +(in) 55027 0.00 -1 s +( a resource database. The term ) 88765 -214.83 32 s +5 sf +(server resource) 106185 -214.00 32 s +4 sf +( is used more specifically to refer to the) 149352 -187.75 32 s +52832.0 90966.0 m +(types) 58789 0.00 -1 s +( of objects allocated by an X server and referenced by clients \(for example, win\036) 149352 -7.14 32 s +52832.0 94127.0 m +(dows,) 59495 0.00 -1 s +( fonts,) 66522 -28.00 32 s +( graphics contexts, and so forth\).) 103293 -28.60 32 s +52832.0 97288.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 96463 av +149352 96463 as +149352 96581 as +52832 96581 as +closepath +fp +/drawmode PL_SET def +20320.0 105845.0 m +541.0 sw +0.0 0.0 m +newpath +20455 104221 av +148878 104219 as +[] 0 setdash +dp +149352.0 105845.0 m +7 sf +20320.0 109231.0 m +(Resource) 33670 0.00 -1 s +( ) 34544 27.00 32 s +52832.0 h +2 sf +(13.2) 57771 0.00 -1 s +4 sf +() 57771 0.00 -1 s +59966.0 h +(Conceptually,) 75720 0.00 -1 s +( a resource database is a set of resource name\036value) 149352 1712.44 32 s +2 sf +7 sf +20320.0 112618.0 m +(Bindings) 33120 0.00 -1 s +52832.0 h +4 sf +(pairs) 58317 0.00 -1 s +( \(or ) 62831 -93.50 32 s +5 sf +(resource bindings) 82946 -187.00 32 s +4 sf +(\). The name in) 98843 -187.00 32 s +( a resource binding is a list that is the concate\036) 149352 -168.80 32 s +52832.0 115779.0 m +(nation) 59886 0.00 -1 s +( of a ) 65529 -26.00 32 s +5 sf +(path list) 74676 -26.00 32 s +4 sf +( and an ) 83456 -25.67 32 s +5 sf +(attribute name) 99968 -26.00 32 s +4 sf +(.) 100674 0.00 -1 s +52832.0 122055.0 m +(A) 54869 0.00 -1 s +( path list is a list of symbols \(or strings\) that corresponds to a path through a tree\036struc\036) 149352 -218.88 32 s +52832.0 125216.0 m +(tured) 58630 0.00 -1 s +( hierarchy. For example, the path: ) 97288 -35.67 32 s +/courps8 6 declareFont +6 sf +52832.0 131493.0 m +('\(top) 59617 0.00 -1 s +( middle) 69090 -26.00 32 s +( bottom\)) 79919 -27.00 32 s +4 sf +( ) 80625 0.00 32 s +52832.0 137770.0 m +(corresponds) 66467 0.00 -1 s +( to a three\036level hierarchy in which ) 105014 -236.00 32 s +6 sf +(middle) 113156 0.00 -1 s +4 sf +( is the child of ) 128829 -236.00 32 s +6 sf +(top) 132900 0.00 -1 s +4 sf +(, and ) 138858 -117.50 32 s +6 sf +(bottom) 147000 0.00 -1 s +4 sf +( is) 149352 -236.00 32 s +52832.0 140930.0 m +(the) 56280 0.00 -1 s +( child of ) 66328 -21.00 32 s +6 sf +(middle) 74470 0.00 -1 s +4 sf +(. ) 75861 -21.00 32 s +52832.0 147207.0 m +(Typically,) 64353 0.00 -1 s +( the path of a resource name corresponds to a path in a hierarchy of windows,) 149352 -163.93 32 s +52832.0 150368.0 m +(and) 56907 0.00 -1 s +( each symbol/string names a window in the hierarchy. However, the first element of) 149352 -177.15 32 s +52832.0 153529.0 m +(the) 56280 0.00 -1 s +( path can also represent the overall name of the entire program, and subsequent path) 149352 -130.86 32 s +52832.0 156690.0 m +(elements can) 67486 0.00 32 s +( refer to an application\036specific hierarchy of resource names not strictly re\036) 149352 -243.64 32 s +52832.0 159851.0 m +(lated) 58317 0.00 -1 s +( to windows. In addition, a resource name can contain a partially\036specified path list.) 149352 -267.69 32 s +52832.0 163012.0 m +(The) 57220 0.00 -1 s +( asterisk symbol \(*\) is a wildcard) 92978 -284.00 32 s +( that can correspond to any sequence of levels in the) 149352 -256.10 32 s +52832.0 166172.0 m +(hierarchy) 63486 0.00 -1 s +( \(including the null sequence\). For example, the path: ) 124200 -37.89 32 s +6 sf +52832.0 172449.0 m +('\(top) 59617 0.00 -1 s +( * bottom\)) 73155 -16.00 32 s +4 sf +( ) 73852 -9.00 32 s +52832.0 178726.0 m +(corresponds) 66467 0.00 -1 s +( to a hierarchy of two or more levels in which ) 116174 -233.18 32 s +6 sf +(top) 120245 0.00 -1 s +4 sf +( is at the top level and ) 143924 -256.57 32 s +6 sf +(bot\036) 149352 0.00 -1 s +52832.0 181887.0 m +(tom) 56903 0.00 -1 s +4 sf +( is at the bottom level. An element of a path list can be the name of an individual win\036) 149352 -241.16 32 s +52832.0 185047.0 m +(dow) 57691 0.00 -1 s +( or the name of a class of windows.) 97401 -22.75 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Resources) 29616 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(13\036162) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The final element of a resource) 88004 -2.00 32 s +( name list is an attribute name. This symbol \(or string\)) 149352 -2.30 32 s +52832.0 25739.0 m +(identifies) 63333 0.00 -1 s +( a specific attribute of the object\(s\)) 102550 -20.00 32 s +( named by the preceding path list. The at\036) 149352 -18.00 32 s +52832.0 28900.0 m +(tribute) 60198 0.00 -1 s +( name can also be the symbol * or the string \177*", in which case the resource) 142733 -185.63 32 s +( name) 149352 -199.00 32 s +52832.0 32060.0 m +(refers) 59253 0.00 -1 s +( to all attributes of the path object\(s\). However, this form of resource name is) 149352 211.00 32 s +52832.0 35221.0 m +(rarely) 59411 0.00 -1 s +( useful.) 67688 -31.00 32 s +52832.0 41024.0 m +(Some) 59260 0.00 -1 s +( examples) 70530 -94.00 32 s +( of resource bindings are shown below. In these examples, assume that) 149352 -94.55 32 s +52832.0 44185.0 m +/courps8 6 declareFont +6 sf +(mail) 58260 0.00 -1 s +4 sf +( is the resource name of a mail reading application. ) 114348 -229.70 32 s +6 sf +(mail) 119776 0.00 -1 s +4 sf +( uses a window of the class) 149352 -191.33 32 s +52832.0 47346.0 m +6 sf +(button) 60974 0.00 -1 s +4 sf +( whose) 68863 -27.00 32 s +( name is ) 78892 -27.67 32 s +6 sf +(reply) 85677 0.00 -1 s +4 sf +(.) 86383 0.00 -1 s +2 sf +52832.0 53148.0 m +(Resource) 63959 0.00 -1 s +( Name) 71617 -99.00 32 s +105664.0 h +(Resource) 116791 0.00 -1 s +( Value ) 125149 -54.00 32 s +6 sf +52832.0 59357.0 m +(\(mail) 59617 0.00 -1 s +( screen\0361 reply background\)) 96181 -25.00 32 s +105664.0 h +('green) 113806 0.00 -1 s +( ) 115147 -16.00 32 s +52832.0 62518.0 m +(\(mail) 59617 0.00 -1 s +( * background\)) 78571 -22.00 32 s +105664.0 h +('red) 111092 0.00 -1 s +( ) 112437 -12.00 32 s +52832.0 65679.0 m +(\(*) 55546 0.00 -1 s +( button) 65021 -24.00 32 s +( background\)) 81280 -25.00 32 s +105664.0 h +('blue) 112449 0.00 -1 s +( ) 113792 -14.00 32 s +105664.0 68840.0 m +4 sf +52832.0 72001.0 m +(These) 59571 0.00 -1 s +( resource bindings specify the) 93126 -36.00 32 s +( following:) 105551 -37.00 32 s +/symbb8 8 declareFont +8 sf +52832.0 78548.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(The) 62300 0.00 -1 s +( ) 62714 -292.00 32 s +6 sf +(background) 76284 0.00 -1 s +4 sf +( attribute resource of ) 99251 -291.75 32 s +6 sf +(mail) 104679 0.00 -1 s +/timsps10i 5 declareFont +5 sf +( ) 105093 -292.00 32 s +4 sf +(application) 117632 0.00 -1 s +5 sf +(') 118571 0.00 -1 s +4 sf +(s ) 120375 0.00 32 s +6 sf +(reply) 127160 0.00 -1 s +4 sf +( button has the value) 149352 -291.50 32 s +57912.0 81709.0 m +(of) 60262 0.00 -1 s +( ) 60942 -26.00 32 s +6 sf +(green) 67727 0.00 -1 s +4 sf +( on) 71229 -26.00 32 s +( ) 71908 -27.00 32 s +6 sf +(screen\0361) 82764 0.00 -1 s +4 sf +(.) 83470 0.00 -1 s +8 sf +52832.0 88257.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(The) 62300 0.00 -1 s +( ) 63020 14.00 32 s +6 sf +(background) 76590 0.00 -1 s +4 sf +( attribute for the rest of the ) 107630 12.29 32 s +6 sf +(mail) 113058 0.00 -1 s +4 sf +( application is always ) 138197 14.50 32 s +6 sf +(red) 142268 0.00 -1 s +4 sf +( on all) 149352 14.50 32 s +57912.0 91417.0 m +(screens.) 66923 0.00 -1 s +8 sf +52832.0 97965.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(In general,) 69978 0.00 32 s +( the ) 74794 -22.00 32 s +6 sf +(background) 88364 0.00 -1 s +4 sf +( attribute for all ) 106615 -21.50 32 s +6 sf +(button) 114757 0.00 -1 s +4 sf +( windows is ) 128881 -21.67 32 s +6 sf +(blue) 134309 0.00 -1 s +4 sf +(.) 135015 0.00 -1 s +20320.0 104964.0 m +0.0 0.0 m +newpath +20455 103340 av +148878 103338 as +[] 0 setdash +dp +149352.0 104964.0 m +/timsps12b 7 declareFont +7 sf +20320.0 108351.0 m +(Basic) 28033 0.00 -1 s +( Resource) 42266 36.00 32 s +52832.0 h +2 sf +(13.3) 57771 0.00 -1 s +4 sf +() 57771 0.00 -1 s +59966.0 h +(A) 62003 0.00 -1 s +( ) 63983 1274.00 32 s +2 sf +(resource\036database) 85926 0.00 -1 s +4 sf +( structure is a CLX object that represents a set) 149352 1274.11 32 s +7 sf +20320.0 111737.0 m +(Database) 33674 0.00 -1 s +2 sf +52832.0 h +4 sf +(of) 55182 0.00 -1 s +( resource bindings. The following paragraphs describe the CLX functions) 149352 1233.11 32 s +7 sf +20320.0 115124.0 m +(Functions) 34619 0.00 -1 s +52832.0 h +4 sf +(used) 58005 0.00 -1 s +( to:) 61681 -9.00 32 s +7 sf +( ) 62518 -10.00 32 s +8 sf +52832.0 121198.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Create) 65276 0.00 -1 s +( a resource database) 87782 -46.00 32 s +8 sf +52832.0 127271.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Add) 62771 0.00 -1 s +( a resource binding) 84193 -43.00 32 s +8 sf +52832.0 133344.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Remove) 67317 0.00 -1 s +( a resource) 79433 -53.00 32 s +( binding) 88708 -54.00 32 s +8 sf +52832.0 139418.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Merge) 65277 0.00 -1 s +( two resource databases) 91869 -43.00 32 s +8 sf +52832.0 145491.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Map) 63085 0.00 -1 s +( a function over the contents of a resource database) 120543 -32.89 32 s +2 sf +34544.0 151768.0 m +(make\036resource\036database) 64009 0.00 -1 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 154929.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 158090.0 m +( ) 53474 -64.00 32 s +5 sf +(resource\036database) 74478 0.00 -1 s +4 sf +( \037 Type) 84383 -64.00 32 s +( ) 85024 -65.00 32 s +2 sf +(resource\036database) 106967 0.00 -1 s +4 sf +(.) 107673 0.00 -1 s +52832.0 162808.0 m +(Returns) 61610 0.00 -1 s +( an empty resource) 82865 -46.00 32 s +( database.) 93946 -47.00 32 s +2 sf +34544.0 169085.0 m +(add\036resource) 50375 0.00 -1 s +4 sf +( ) 51012 -69.00 32 s +5 sf +(database name\036list value) 79090 -68.50 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 173804.0 m +(Adds) 58789 0.00 -1 s +( the resource binding specified by ) 96467 -199.00 32 s +5 sf +(name\036list) 106968 0.00 -1 s +4 sf +( and) 111550 -199.00 32 s +( ) 112056 -200.00 32 s +5 sf +(value) 118168 0.00 -1 s +4 sf +( to the given ) 132307 -149.50 32 s +5 sf +(database) 142497 0.00 -1 s +4 sf +(. Only) 149352 -200.00 32 s +52832.0 176965.0 m +(one) 56907 0.00 -1 s +( value can be associated with the ) 94492 -16.00 32 s +5 sf +(name\036list) 104993 0.00 -1 s +4 sf +( in the ) 112722 -10.67 32 s +5 sf +(database) 122912 0.00 -1 s +4 sf +(. This function) 139419 -16.00 32 s +( replaces) 149352 -17.00 32 s +52832.0 180126.0 m +(any) 56907 0.00 -1 s +( value previously) 76260 -42.00 32 s +( associated with the ) 99018 -32.00 32 s +5 sf +(name\036list) 109519 0.00 -1 s +4 sf +(.) 110225 0.00 -1 s +5 sf +52832.0 186402.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 The ) 72216 -44.67 32 s +2 sf +(resource\036database) 94159 0.00 -1 s +4 sf +( for the new resource binding.) 127790 -44.60 32 s +5 sf +52832.0 191189.0 m +(name\036list) 63333 0.00 -1 s +4 sf +( \037 A list containing strings or symbols specifying the name for the resource) 149352 -21.00 32 s +57912.0 194350.0 m +(binding.) 67241 0.00 -1 s +5 sf +52832.0 199136.0 m +(value) 58944 0.00 -1 s +4 sf +( \037 The value associated with the ) 95842 -204.00 32 s +5 sf +(name\036list) 106343 0.00 -1 s +4 sf +( in the resource binding.) 132880 -204.00 32 s +( This can be an) 149352 -153.50 32 s +57912.0 202297.0 m +(object) 64808 0.00 -1 s +( of any type.) 78796 -40.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +139756.0 8195.0 m +(Resources) 149052 0.00 -1 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(13\036163) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(delete\036resource) 52877 0.00 -1 s +/timsps10 4 declareFont +4 sf +( ) 53505 -78.00 32 s +/timsps10i 5 declareFont +5 sf +(database) 63695 0.00 -1 s +( name\036list) 74823 -79.00 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Removes) 63335 0.00 -1 s +( the resource binding specified by ) 101991 -36.00 32 s +5 sf +(name\036list) 112492 0.00 -1 s +4 sf +( from the given) 129704 -36.00 32 s +( ) 130373 -37.00 32 s +5 sf +(database) 140563 0.00 -1 s +4 sf +(.) 141269 0.00 -1 s +5 sf +52832.0 33573.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 The ) 72182 -56.00 32 s +2 sf +(resource\036database) 94125 0.00 -1 s +4 sf +( containing the resource binding.) 130974 -55.50 32 s +5 sf +52832.0 38360.0 m +(name\036list) 63333 0.00 -1 s +4 sf +( \037 A list containing strings or symbols specifying the name for the deleted re\036) 149352 -193.00 32 s +57912.0 41521.0 m +(source) 65277 0.00 -1 s +( binding.) 75229 -83.00 32 s +2 sf +34544.0 46307.0 m +(map\036resource) 51156 0.00 -1 s +4 sf +( ) 51813 -49.00 32 s +5 sf +(database function) 71909 -49.00 32 s +4 sf +( &rest) 78835 -49.00 32 s +( ) 79491 -50.00 32 s +5 sf +(args) 84509 0.00 -1 s +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 51026.0 m +(Calls) 58633 0.00 -1 s +( the) 62641 -146.00 32 s +( function for each resource binding in the ) 108803 -146.50 32 s +5 sf +(database) 118993 0.00 -1 s +4 sf +(. For each resource binding) 149352 -110.00 32 s +52832.0 54187.0 m +(consisting) 64277 0.00 -1 s +( of a ) 86591 5531.00 32 s +5 sf +(name\036list) 97092 0.00 -1 s +4 sf +( and a ) 121129 5530.33 32 s +5 sf +(value) 127241 0.00 -1 s +4 sf +(, the form) 149352 5530.50 32 s +52832.0 57348.0 m +(\() 53771 0.00 -1 s +2 sf +(apply) 60515 0.00 -1 s +4 sf +( ) 61186 -35.00 32 s +5 sf +(function name\036list value args) 94079 -35.00 32 s +4 sf +(\) is executed. ) 109683 -23.33 32 s +5 sf +52832.0 63624.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 A ) 69807 -64.00 32 s +2 sf +(resource\036database) 91750 0.00 -1 s +4 sf +(.) 92456 0.00 -1 s +5 sf +52832.0 68411.0 m +(function) 62081 0.00 -1 s +4 sf +( \037 A ) 68966 -30.67 32 s +2 sf +(function) 78999 0.00 -1 s +4 sf +( object or function symbol.) 109367 -30.50 32 s +5 sf +52832.0 73197.0 m +(args) 57850 0.00 -1 s +4 sf +( \037 A list of arguments to the ) 91419 -17.00 32 s +5 sf +(function) 100668 0.00 -1 s +4 sf +(.) 101374 0.00 -1 s +2 sf +34544.0 77984.0 m +(merge\036resources) 54444 0.00 -1 s +4 sf +( ) 55048 -102.00 32 s +5 sf +(from\036database) 71507 0.00 -1 s +( to\036database) 85434 -103.00 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 81145.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 84305.0 m +( ) 53463 -75.00 32 s +5 sf +(to\036database) 66787 0.00 -1 s +4 sf +( \037Type ) 76671 -74.50 32 s +2 sf +(resource\036database) 98614 0.00 -1 s +4 sf +(.) 99320 0.00 -1 s +52832.0 89024.0 m +(Merges) 61295 0.00 -1 s +( the contents of the ) 82366 -222.00 32 s +5 sf +(from\036database) 98825 0.00 -1 s +4 sf +( with the ) 108741 -222.00 32 s +5 sf +(to\036database) 122065 0.00 -1 s +4 sf +(. ) 123255 -222.00 32 s +2 sf +(map\036resource) 139867 0.00 -1 s +4 sf +( invokes) 149352 0.00 32 s +52832.0 92185.0 m +2 sf +(add\036resource) 68663 0.00 -1 s +4 sf +( in order to add each resource binding in the ) 116815 -231.90 32 s +5 sf +(from\036database) 133274 0.00 -1 s +4 sf +( to the ) 140262 -257.67 32 s +5 sf +(to\036data\036) 149352 0.00 -1 s +52832.0 95346.0 m +(base) 58005 0.00 -1 s +4 sf +(.) 58711 0.00 -1 s +( The updated ) 74016 -45.00 32 s +5 sf +(to\036database) 87340 0.00 -1 s +4 sf +( is returned.) 100652 -44.50 32 s +5 sf +52832.0 101623.0 m +(from\036database) 69291 0.00 -1 s +4 sf +( \037 The ) 78493 -42.00 32 s +2 sf +(resource\036database) 100436 0.00 -1 s +4 sf +( from which resource bindings are read.) 145085 -42.00 32 s +5 sf +52832.0 106409.0 m +(to\036database) 66156 0.00 -1 s +4 sf +( \037 The ) 75343 -47.00 32 s +2 sf +(resource\036database) 97286 0.00 -1 s +4 sf +( to which resource bindings are added.) 140502 -46.50 32 s +20320.0 111918.0 m +0.0 0.0 m +newpath +20455 110294 av +148878 110292 as +[] 0 setdash +dp +149352.0 111918.0 m +/timsps12b 7 declareFont +7 sf +20320.0 115305.0 m +(Accessing) 34425 0.00 -1 s +52832.0 h +2 sf +(13.4) 57771 0.00 -1 s +4 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( power and flexibility of resource management is the result of the) 149352 1023.09 32 s +2 sf +7 sf +20320.0 118691.0 m +(Resource) 33670 0.00 -1 s +( ) 34544 27.00 32 s +2 sf +52832.0 h +4 sf +(way resource) 67796 0.00 32 s +( values in a resource database are accessed. A resource binding) 138628 -39.90 32 s +7 sf +20320.0 122078.0 m +(Values) 30102 0.00 -1 s +52832.0 h +4 sf +(binding) 61455 0.00 -1 s +( stored in the database generally) 96531 -241.60 32 s +( contains only a partial resource name consisting) 149352 -302.57 32 s +52832.0 125239.0 m +(of) 55182 0.00 -1 s +( a mixture of name and class identifiers and wildcard elements \(that is, *\). To look up a) 149352 -255.59 32 s +52832.0 128400.0 m +(resource) 62389 0.00 -1 s +( value, an application program starts with two resource name lists of the same) 149352 -62.54 32 s +52832.0 131561.0 m +(length) 59886 0.00 -1 s +( containing no wildcard elements \037 a ) 103919 54.00 32 s +5 sf +(complete resource name) 131558 27.00 32 s +4 sf +( and a ) 139166 54.00 32 s +5 sf +(complete) 149352 0.00 -1 s +52832.0 134722.0 m +(resource) 62707 0.00 -1 s +( class) 68975 -82.00 32 s +4 sf +(. The lookup algorithm returns the value for the resource binding whose) 149352 -74.18 32 s +52832.0 137882.0 m +(resource) 62389 0.00 -1 s +( name is the closest match to the complete name and class given. The definition) 149352 -209.71 32 s +52832.0 141043.0 m +(of) 55182 0.00 -1 s +( ) 56058 170.00 32 s +5 sf +(closest match) 71511 170.00 32 s +4 sf +( takes into account the top\036down, parent\036child hierarchy of) 138920 148.75 32 s +( resource) 149352 169.00 32 s +52832.0 144204.0 m +(names) 60042 0.00 -1 s +( and also the distinction between individual names) 116784 -34.29 32 s +( and class names.) 136257 -40.67 32 s +52832.0 151136.0 m +0.0 0.0 m +newpath +149013 149577 av +52967 149579 as +[] 0 setdash +dp +149352.0 151136.0 m +20320.0 153958.0 m +28990.0 h +2 sf +(Complete) 40586 0.00 -1 s +( Names) 49378 -63.00 32 s +52832.0 h +(13.4.1) 59888 0.00 -1 s +4 sf +() 59888 0.00 -1 s +62083.0 h +(A) 64120 0.00 -1 s +( resource) 74346 -37.00 32 s +( binding contains a resource name list that can contain) 135218 -37.56 32 s +20320.0 157119.0 m +35379.0 h +2 sf +(and) 39928 0.00 -1 s +( Classes) 49378 -35.00 32 s +52832.0 h +4 sf +(names, class) 66940 0.00 32 s +( names, or a mixture) 89508 -138.00 32 s +( of both. A class name is a symbol or string that repre\036) 149352 -127.00 32 s +52832.0 160280.0 m +(sents) 58476 0.00 -1 s +( a group of related objects. The set of names used as class names are not specified) 149352 -95.19 32 s +52832.0 163441.0 m +(by) 55654 0.00 -1 s +( CLX. Instead, class names are defined by agreement between those who use class) 149352 51.77 32 s +52832.0 166601.0 m +(names) 60042 0.00 -1 s +( when creating resource bindings \(that is, users\) and those who use class names) 149352 -14.77 32 s +52832.0 169762.0 m +(when) 58944 0.00 -1 s +( accessing resource values \(that is, application programmers\).) 128224 -32.86 32 s +2 sf +( ) 128897 -33.00 32 s +4 sf +52832.0 176039.0 m +(In) 55182 0.00 -1 s +( order to access a value in a resource database, an application uses a key consisting of) 149352 -153.75 32 s +52832.0 179200.0 m +(two) 57064 0.00 -1 s +( items: a ) 67717 128.00 32 s +5 sf +(complete resource name) 95558 128.00 32 s +4 sf +( and a ) 103388 128.00 32 s +5 sf +(complete resource class) 130633 64.00 32 s +4 sf +(. A complete) 145388 128.00 32 s +( re\036) 149352 127.00 32 s +52832.0 182361.0 m +(source) 60197 0.00 -1 s +( name is a resource name list containing no wildcard elements. A complete) 145453 57.75 32 s +( re\036) 149352 62.00 32 s +52832.0 185522.0 m +(source) 60197 0.00 -1 s +( class is a list of exactly the same) 100102 305.00 32 s +( form. The distinction between a complete) 149352 253.67 32 s +52832.0 188682.0 m +(resource) 62389 0.00 -1 s +( name and a complete resource class lies in how they are used to access resource) 149352 -257.60 32 s +52832.0 191843.0 m +(bindings.) 63259 0.00 -1 s +( The elements of a complete resource name are interpreted as names of individ\036) 149352 -279.46 32 s +52832.0 195004.0 m +(ual) 56280 0.00 -1 s +( objects; the elements of a complete resource class are interpreted as names of object) 149352 -180.93 32 s +52832.0 198165.0 m +(classes.) 61375 0.00 -1 s +( The complete resource name and class lists used in a resource database access) 149352 -62.54 32 s +52832.0 201326.0 m +(must have) 64354 0.00 32 s +( the same length.) 83335 -48.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Resources) 29616 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(13\036164) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(Like any resource name list, a complete resource name consists of a path list and an at\036) 149352 -104.88 32 s +52832.0 25739.0 m +(tribute) 60198 0.00 -1 s +( name. The first path list element is typically a symbol \(or string\) identifying the) 149352 -109.14 32 s +52832.0 28900.0 m +(application) 65371 0.00 -1 s +( as a whole. The second element can be a screen root identifier. Subsequent) 149352 -92.85 32 s +52832.0 32060.0 m +(elements) 62863 0.00 -1 s +( can be identifiers for each ancestor window of an application window. Thus, a) 149352 -201.15 32 s +52832.0 35221.0 m +(path) 57691 0.00 -1 s +( list typically identifies a specific window by tracing a path to it through the applica\036) 149352 -248.00 32 s +52832.0 38382.0 m +(tion window) 67019 0.00 32 s +( hierarchy. The final element of a complete resource name \(its attribute) 149352 190.09 32 s +52832.0 41543.0 m +(name\)) 59883 0.00 -1 s +( is typically the name of a specific attribute of the) 115399 -44.00 32 s +( window given by the path list) 149352 -37.17 32 s +52832.0 44704.0 m +(\(for) 57060 0.00 -1 s +( example, ) 68194 -272.00 32 s +/courps8 6 declareFont +6 sf +('background) 83121 0.00 -1 s +4 sf +(\). An) 88648 -272.00 32 s +( attribute name can refer to a feature associated with the) 149352 -245.30 32 s +52832.0 47865.0 m +(window) 61923 0.00 -1 s +( by the application) 82223 -209.00 32 s +( but not by the X server \(for example, a font identifier\). Simi\036) 149352 -192.08 32 s +52832.0 51026.0 m +(larly,) 58709 0.00 -1 s +( a complete resource class typically) 98578 -35.20 32 s +( represents a path to a window in the applica\036) 149352 -44.56 32 s +52832.0 54187.0 m +(tion) 57222 0.00 -1 s +( window) 66931 -88.00 32 s +( hierarchy and a specific window attribute. However, a complete resource) 149352 -79.70 32 s +52832.0 57348.0 m +(class) 58318 0.00 -1 s +( contains the class name for each) 95324 -23.33 32 s +( window and for the window attribute. ) 139169 -28.57 32 s +52832.0 63624.0 m +(For) 56751 0.00 -1 s +( instance, in the previous example, the ) 100644 -11.00 32 s +6 sf +(mail) 106072 0.00 -1 s +4 sf +( application can attempt to look up the) 149352 -9.14 32 s +52832.0 66785.0 m +(value) 58944 0.00 -1 s +( of the ) 66290 -190.00 32 s +6 sf +(background) 79860 0.00 -1 s +4 sf +( resource for the ) 98218 -190.00 32 s +6 sf +(reply) 105003 0.00 -1 s +( button) 114136 -366.00 32 s +4 sf +( window) 123743 -190.00 32 s +( by using the following) 149352 -143.00 32 s +52832.0 69946.0 m +(complete) 63176 0.00 -1 s +( resource name:) 80919 -61.00 32 s +6 sf +52832.0 76223.0 m +(\(mail) 59617 0.00 -1 s +( screen\0361 reply background\)) 96181 -25.00 32 s +4 sf +52832.0 82431.0 m +(and) 56907 0.00 -1 s +( the following complete resource class:) 100855 -34.60 32 s +6 sf +52832.0 88708.0 m +(\(application) 69116 0.00 -1 s +( root button) 85354 -23.00 32 s +( fill\)) 93472 -24.00 32 s +4 sf +52832.0 94917.0 m +(This) 57849 0.00 -1 s +( complete resource name contains a path list identifying the reply button window) 146109 -260.33 32 s +( \037) 149352 -285.00 32 s +52832.0 98078.0 m +6 sf +(\(mail) 59617 0.00 -1 s +( screen\0361 reply\)) 80328 -500.50 32 s +4 sf +( \037 and an) 91227 -260.00 32 s +( attribute name for the window background. The cor\036) 149352 -228.00 32 s +52832.0 101239.0 m +(responding) 65372 0.00 -1 s +( resource class contains) 91989 17.00 32 s +( the class names for the same path list and window) 149352 14.80 32 s +52832.0 104400.0 m +(attribute.) 62941 0.00 -1 s +52832.0 111331.0 m +0.0 0.0 m +newpath +149013 109772 av +52967 109774 as +[] 0 setdash +dp +149352.0 111331.0 m +20320.0 114153.0 m +37818.0 h +2 sf +(Matching) 49418 0.00 -1 s +52832.0 h +(13.4.2) 59888 0.00 -1 s +4 sf +() 59888 0.00 -1 s +62083.0 h +(The) 66471 0.00 -1 s +( resource lookup algorithm searches a specified resource data) 149352 1701.25 32 s +2 sf +20320.0 117314.0 m +( ) 21020 -6.00 32 s +29487.0 h +(Resource) 40614 0.00 -1 s +( Names) 49378 -91.00 32 s +52832.0 h +4 sf +(base) 57847 0.00 -1 s +( and returns the) 75223 -33.33 32 s +( value for the resource binding whose resource name is the closest) 149352 -50.55 32 s +52832.0 120475.0 m +(match) 59728 0.00 -1 s +( to a given complete resource) 92361 -103.20 32 s +( name and class. The intent of the lookup algorithm) 149352 -129.56 32 s +52832.0 123636.0 m +(is to) 57615 0.00 32 s +( formalize an intuitive notion of the closest) 105961 -24.00 32 s +( match.) 114244 -25.00 32 s +52832.0 129913.0 m +(Precedence) 65680 0.00 -1 s +( is given to a match which begins ) 103704 -48.00 32 s +/timsps10i 5 declareFont +5 sf +(higher) 111072 0.00 -1 s +4 sf +( in the parent\036child) 132322 -48.00 32 s +( contact hierar\036) 149352 -24.50 32 s +52832.0 133073.0 m +(chy.) 57613 0.00 -1 s +( This allows a resource binding with a partial name to define a resource value shared) 149352 -252.67 32 s +52832.0 136234.0 m +(by) 55654 0.00 -1 s +( all members of a window subtree. For example, suppose the resource database con\036) 149352 -92.85 32 s +52832.0 139395.0 m +(tained) 59728 0.00 -1 s +( the following resource) 85709 -38.00 32 s +( bindings:) 96881 -39.00 32 s +2 sf +52832.0 145672.0 m +(Resource) 63959 0.00 -1 s +( Name) 71617 -99.00 32 s +105664.0 h +(Resource) 116791 0.00 -1 s +( Value) 124449 -102.00 32 s +6 sf +52832.0 151881.0 m +(\(mail) 59617 0.00 -1 s +( * background\)) 78571 -22.00 32 s +105664.0 h +('red) 111092 0.00 -1 s +52832.0 155042.0 m +(\(*) 55546 0.00 -1 s +( reply) 63665 -23.00 32 s +( background\)) 79925 -24.00 32 s +105664.0 h +('blue) 112449 0.00 -1 s +4 sf +52832.0 161250.0 m +(Suppose) 62396 0.00 -1 s +( an) 65967 201.00 32 s +( application program searched by using the following complete resource) 149352 200.44 32 s +52832.0 164411.0 m +(name:) 59728 0.00 -1 s +6 sf +52832.0 170214.0 m +(\(mail) 59617 0.00 -1 s +( screen\0361 reply background\)) 96181 -25.00 32 s +4 sf +52832.0 176423.0 m +(then) 57691 0.00 -1 s +( the closest matching value returned would be ) 109916 -35.63 32 s +6 sf +('red) 115344 0.00 -1 s +4 sf +(.) 116050 0.00 -1 s +52832.0 182225.0 m +(Precedence is given to the more specific match. A name match is more specific than a) 149352 -33.33 32 s +52832.0 185386.0 m +(class) 58318 0.00 -1 s +( match. Either a name or class match is more specific than a wildcard match. For) 149352 -7.33 32 s +52832.0 188547.0 m +(example,) 63098 0.00 -1 s +( suppose the resource database contained the following resource bindings:) 146304 -46.11 32 s +2 sf +52832.0 194350.0 m +(Resource) 63959 0.00 -1 s +( Name) 71617 -99.00 32 s +105664.0 h +(Resource) 116791 0.00 -1 s +( Value) 124449 -102.00 32 s +6 sf +52832.0 200558.0 m +(\(mail) 59617 0.00 -1 s +( * background\)) 78571 -22.00 32 s +105664.0 h +('red) 111092 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +139756.0 8195.0 m +(Resources) 149052 0.00 -1 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(13\036165) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/courps8 6 declareFont +6 sf +52832.0 22578.0 m +(\(mail * fill\)) 70443 -15.00 32 s +105664.0 h +('blue) 112449 0.00 -1 s +/timsps10 4 declareFont +4 sf +52832.0 28787.0 m +(Suppose) 62396 0.00 -1 s +( an) 65967 201.00 32 s +( application program searched by using the following complete resource) 149352 200.44 32 s +52832.0 31948.0 m +(name and) 63725 0.00 32 s +( complete resource class:) 91846 -56.00 32 s +6 sf +52832.0 37750.0 m +(\(mail) 59617 0.00 -1 s +( screen\0361 reply background\)) 96181 -25.00 32 s +52832.0 40911.0 m +(\(application) 69116 0.00 -1 s +( root button) 85354 -23.00 32 s +( fill\)) 93472 -24.00 32 s +4 sf +52832.0 47120.0 m +(then) 57691 0.00 -1 s +( the closest matching value) 87186 -268.00 32 s +( returned would be ) 108055 -268.50 32 s +6 sf +('red) 113483 0.00 -1 s +4 sf +(. However, suppose the resource) 149352 -201.50 32 s +52832.0 50281.0 m +(database) 62548 0.00 -1 s +( contained the following resource bindings:) 111286 -49.00 32 s +2 sf +52832.0 56083.0 m +(Resource) 63959 0.00 -1 s +( Name) 71617 -99.00 32 s +105664.0 h +(Resource) 116791 0.00 -1 s +( Value) 124449 -102.00 32 s +6 sf +52832.0 62292.0 m +(\(mail) 59617 0.00 -1 s +( * background\)) 78571 -22.00 32 s +105664.0 h +('red) 111092 0.00 -1 s +52832.0 65453.0 m +(\(mail) 59617 0.00 -1 s +( * button) 71790 -20.00 32 s +( background\)) 88053 -21.00 32 s +105664.0 h +('blue) 112449 0.00 -1 s +4 sf +52832.0 71662.0 m +(then) 57691 0.00 -1 s +( the closest matching value returned would be ) 109913 -36.00 32 s +6 sf +('blue) 116698 0.00 -1 s +4 sf +(.) 117404 0.00 -1 s +52832.0 78593.0 m +0.0 0.0 m +newpath +149013 77034 av +52967 77036 as +[] 0 setdash +dp +149352.0 78593.0 m +20320.0 81415.0 m +38314.0 h +2 sf +(Resource) 49441 0.00 -1 s +52832.0 h +(13.4.3) 59888 0.00 -1 s +4 sf +() 59888 0.00 -1 s +62083.0 h +(The) 66471 0.00 -1 s +( following paragraphs) 91156 -39.00 32 s +( describe the CLX functions used to return) 138921 -39.57 32 s +20320.0 84576.0 m +28832.0 h +2 sf +(Access) 36824 0.00 -1 s +( Functions) 49378 -68.00 32 s +52832.0 h +4 sf +(a) 54085 0.00 -1 s +( value from a) 68920 -44.00 32 s +( resource database.) 90266 -22.50 32 s +2 sf +34544.0 90853.0 m +(get\036resource) 49429 0.00 -1 s +4 sf +( ) 50080 -55.00 32 s +/timsps10i 5 declareFont +5 sf +(database attribute\036name attribute\036class path\036name path\036class) 119617 -54.75 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 94014.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 97175.0 m +( ) 54202 -21.00 32 s +5 sf +(value) 60314 0.00 -1 s +( ) 60998 -22.00 32 s +4 sf +(\037 Type ) 70988 -21.50 32 s +2 sf +(t) 71927 0.00 -1 s +4 sf +(.) 72633 0.00 -1 s +52832.0 101894.0 m +(Returns) 61610 0.00 -1 s +( the value of the resource binding in the ) 107766 69.00 32 s +5 sf +(database) 117956 0.00 -1 s +4 sf +( whose resource name most) 149352 51.25 32 s +52832.0 105054.0 m +(closely) 60826 0.00 -1 s +( matches the complete resource name/class given by the ) 123692 -111.78 32 s +5 sf +(path\036name) 135760 0.00 -1 s +4 sf +(, ) 137046 -126.00 32 s +5 sf +(path\036class) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +52832.0 108215.0 m +5 sf +(attribute\036name) 69603 0.00 -1 s +4 sf +(,) 70309 0.00 -1 s +( and ) 75740 -28.00 32 s +5 sf +(attribute\036class) 92043 0.00 -1 s +4 sf +(. The lookup algorithm implements the precedence) 149352 -23.00 32 s +52832.0 111376.0 m +(rules) 58317 0.00 -1 s +( described previously to determine) 97102 -60.75 32 s +( the closest match. When comparing name ele\036) 149352 -81.57 32 s +52832.0 114537.0 m +(ments,) 60279 0.00 -1 s +( case is significant only if both elements) 105642 -2.57 32 s +( are strings; otherwise, element match\036) 149352 -3.60 32 s +52832.0 117698.0 m +(ing is) 59026 0.00 32 s +( case\036insensitive.) 78255 -50.00 32 s +5 sf +52832.0 123500.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 A ) 69807 -64.00 32 s +2 sf +(resource\036database) 91750 0.00 -1 s +4 sf +(.) 92456 0.00 -1 s +5 sf +52832.0 128287.0 m +(attribute\036name) 69603 0.00 -1 s +4 sf +( \037 A string or symbol giving an attribute name from a complete resource) 149352 -261.85 32 s +57912.0 131448.0 m +(name.) 64730 0.00 -1 s +5 sf +52832.0 136234.0 m +(attribute\036class) 69135 0.00 -1 s +4 sf +( \037 A string or symbol giving an attribute class name from a complete re\036) 149352 -193.00 32 s +57912.0 139395.0 m +(source) 65277 0.00 -1 s +( class.) 72136 -39.00 32 s +5 sf +52832.0 144182.0 m +(path\036name) 64900 0.00 -1 s +( ) 66015 409.00 32 s +4 sf +(\037 The path list from a complete resource name.) 123910 409.00 32 s +( ) 125024 408.00 32 s +5 sf +(path\036name) 137092 0.00 -1 s +4 sf +( and) 142282 409.00 32 s +5 sf +( path\036) 149352 408.00 32 s +57912.0 147343.0 m +(class) 63556 0.00 -1 s +4 sf +( must) 69750 0.00 32 s +( have) 75747 -37.00 32 s +( the same length.) 94759 -37.67 32 s +5 sf +52832.0 152129.0 m +(path\036class) 64432 0.00 -1 s +4 sf +( \037 The path list from a complete resource class. ) 124841 500.00 32 s +5 sf +(path\036name ) 138115 500.00 32 s +4 sf +(and) 142190 0.00 -1 s +5 sf +( path\036) 149352 500.00 32 s +57912.0 155290.0 m +(clas) 62458 0.00 -1 s +4 sf +(s must) 69750 0.00 32 s +( have) 75747 -37.00 32 s +( the same length.) 94759 -37.67 32 s +2 sf +34544.0 160076.0 m +(get\036search\036table) 53818 0.00 -1 s +4 sf +( ) 54456 -68.00 32 s +5 sf +(database path\036name) 77352 -68.00 32 s +( path\036class) 89589 -69.00 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 163237.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 166398.0 m +( ) 54209 -17.50 32 s +5 sf +(search\036table) 68315 0.00 -1 s +4 sf +( \037 Type ) 79001 -17.67 32 s +2 sf +(list) 82606 0.00 -1 s +4 sf +(.) 83312 0.00 -1 s +52832.0 171117.0 m +(Returns) 61610 0.00 -1 s +( a table containing the subset of the ) 102444 29.25 32 s +5 sf +(database) 112634 0.00 -1 s +4 sf +( that matches the ) 132474 22.25 32 s +5 sf +(path\036name) 144542 0.00 -1 s +4 sf +( and) 149352 29.00 32 s +52832.0 174278.0 m +5 sf +(path\036class) 64432 0.00 -1 s +4 sf +(.) 65138 0.00 -1 s +( Resources using the same ) 95138 -98.00 32 s +5 sf +(path\036name) 107206 0.00 -1 s +4 sf +( and ) 112498 -97.50 32 s +5 sf +(path\036class) 124098 0.00 -1 s +4 sf +( can be accessed much) 149352 -73.25 32 s +52832.0 177439.0 m +(more) 58630 0.00 -1 s +( efficiently by using this table as an argument to ) 113312 -33.90 32 s +2 sf +(get\036search\036resource) 136973 0.00 -1 s +4 sf +(.) 137679 0.00 -1 s +5 sf +52832.0 183715.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 A ) 69807 -64.00 32 s +2 sf +(resource\036database) 91750 0.00 -1 s +4 sf +(.) 92456 0.00 -1 s +5 sf +52832.0 188502.0 m +(path\036name) 64900 0.00 -1 s +( ) 66015 409.00 32 s +4 sf +(\037 The path list from a complete resource name.) 123910 409.00 32 s +5 sf +( path\036name) 137092 408.00 32 s +4 sf +( and) 142282 409.00 32 s +5 sf +( path\036) 149352 408.00 32 s +57912.0 191663.0 m +(class ) 64262 0.00 32 s +4 sf +(must) 69750 0.00 -1 s +( have) 75747 -37.00 32 s +( the same length.) 94759 -37.67 32 s +5 sf +52832.0 196449.0 m +(path\036class) 64432 0.00 -1 s +4 sf +( \037 The path list from a complete resource class. ) 124841 500.00 32 s +5 sf +(path\036name) 136909 0.00 -1 s +4 sf +( and) 142190 500.00 32 s +5 sf +( path\036) 149352 500.00 32 s +57912.0 199610.0 m +(class) 63556 0.00 -1 s +4 sf +( must) 69750 0.00 32 s +( have) 75747 -37.00 32 s +( the same length.) 94759 -37.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Resources) 29616 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(13\036166) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(get\036search\036resource) 58205 0.00 -1 s +/timsps10 4 declareFont +4 sf +( ) 58846 -65.00 32 s +/timsps10i 5 declareFont +5 sf +(table attribute\036name attribute\036class) 98846 -64.50 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 28900.0 m +( ) 53517 -21.00 32 s +5 sf +( value) 60314 -21.00 32 s +4 sf +( \037 Type ) 70988 -21.67 32 s +2 sf +(t) 71927 0.00 -1 s +4 sf +(.) 72633 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the value of the resource binding in the search ) 114248 -81.00 32 s +5 sf +(table) 119891 0.00 -1 s +4 sf +( that most closely matches) 149352 -81.00 32 s +52832.0 36779.0 m +(the) 56280 0.00 -1 s +( ) 56869 -117.00 32 s +5 sf +(attribute\036name) 73640 0.00 -1 s +4 sf +( and ) 78893 -117.00 32 s +5 sf +(attribute\036class) 95196 0.00 -1 s +4 sf +(. The) 100879 -117.00 32 s +( ) 101467 -118.00 32 s +5 sf +(table) 107110 0.00 -1 s +4 sf +( is computed by ) 125415 -88.00 32 s +2 sf +(get\036search\036table) 144689 0.00 -1 s +4 sf +( and) 149352 -118.00 32 s +52832.0 39940.0 m +(represents) 64271 0.00 -1 s +( a set of resource bindings. The closest match is determined by the same algo\036) 149352 -209.50 32 s +52832.0 43101.0 m +(rithm) 58945 0.00 -1 s +( used) 64763 -61.00 32 s +( in ) 68308 -31.00 32 s +2 sf +(get\036resource) 83193 0.00 -1 s +4 sf +(.) 83899 0.00 -1 s +52832.0 49378.0 m +(The) 57220 0.00 -1 s +( following two forms are functionally) 99452 -33.00 32 s +( equivalent:) 112663 -34.00 32 s +52832.0 57077.0 m +54864.0 h +/courps8 6 declareFont +6 sf +(\(get\036resource) 72505 0.00 -1 s +52832.0 60192.0 m +54864.0 h +( ) 56197 -24.00 32 s +( database attribute\036name attribute\036class path\036name path\036class\)) 140208 -24.60 32 s +4 sf +52832.0 66153.0 m +54864.0 h +6 sf +(\(get\036search\036resource) 82004 0.00 -1 s +52832.0 69269.0 m +54864.0 h +( \(get\036search\036table) 79262 -28.00 32 s +( database path\036name path\036class\)) 121243 -28.67 32 s +52832.0 72384.0 m +54864.0 h +( attribute\036name) 75182 -37.00 32 s +( attribute\036class\)) 98213 -38.00 32 s +4 sf +52832.0 78548.0 m +(However,) 63879 0.00 -1 s +( the hard part of the search) 92439 -255.00 32 s +( is done by ) 104431 -255.50 32 s +2 sf +(get\036search\036table) 123705 0.00 -1 s +4 sf +(. Looking up values for) 149352 -191.75 32 s +52832.0 81709.0 m +(several) 60823 0.00 -1 s +( resource attributes that share the same path list can) 120038 127.11 32 s +( be done much more effi\036) 149352 142.40 32 s +52832.0 84870.0 m +(ciently) 60512 0.00 -1 s +( with calls to ) 75540 -44.75 32 s +2 sf +(get\036search\036resource) 99201 0.00 -1 s +4 sf +(.) 99907 0.00 -1 s +5 sf +52832.0 91146.0 m +(table) 58475 0.00 -1 s +4 sf +( \037 A search table returned by ) 92954 -33.86 32 s +2 sf +(get\036search\036table) 112228 0.00 -1 s +4 sf +(.) 112934 0.00 -1 s +5 sf +52832.0 95933.0 m +(attribute\036name) 69603 0.00 -1 s +4 sf +( \037 A string or symbol giving an attribute name from a complete resource) 149352 -261.85 32 s +57912.0 99094.0 m +(name.) 64730 0.00 -1 s +5 sf +52832.0 103880.0 m +(attribute\036class) 69135 0.00 -1 s +4 sf +( \037 A string or symbol giving an attribute class name from a complete re\036) 149352 -193.00 32 s +57912.0 107041.0 m +(source) 65277 0.00 -1 s +( class.) 72136 -39.00 32 s +20320.0 112550.0 m +0.0 0.0 m +newpath +20455 110926 av +148878 110924 as +[] 0 setdash +dp +149352.0 112550.0 m +/timsps12b 7 declareFont +7 sf +20320.0 115937.0 m +(Resource) 33670 0.00 -1 s +( ) 34544 27.00 32 s +52832.0 h +2 sf +(13.5) 57771 0.00 -1 s +4 sf +() 57771 0.00 -1 s +59966.0 h +(X) 62003 0.00 -1 s +( users and application programs can save resource bindings in a file,) 149352 944.45 32 s +7 sf +20320.0 119324.0 m +(Database) 33674 0.00 -1 s +( Files) 41317 25.00 32 s +52832.0 h +4 sf +(using) 58947 0.00 -1 s +( a standard file format shared by all X clients. The following paragraphs describe) 149352 -86.62 32 s +52832.0 122484.0 m +(the) 56280 0.00 -1 s +( CLX functions used to convert between the standard external format of resource) 149352 141.58 32 s +52832.0 125645.0 m +(files and) 62471 0.00 32 s +( the) 66587 -38.00 32 s +( internal resource\036database format used by application programs.) 139508 -38.57 32 s +2 sf +34544.0 131922.0 m +(read\036resources) 52410 0.00 -1 s +4 sf +( ) 53071 -45.00 32 s +5 sf +(database pathname) 75051 -45.00 32 s +4 sf +( &key ) 82643 -45.00 32 s +2 sf +(:key :test :test\036not) 104332 -44.50 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 135083.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 138244.0 m +( ) 54148 -48.00 32 s +5 sf +(database) 64338 0.00 -1 s +4 sf +( \037 Type) 74275 -48.00 32 s +( ) 74932 -49.00 32 s +2 sf +(resource\036database) 96875 0.00 -1 s +4 sf +(.) 97581 0.00 -1 s +52832.0 142962.0 m +(Reads) 59729 0.00 -1 s +( resource bindings from a resource file in standard X11 format and merges) 143078 -67.83 32 s +( them) 149352 -75.00 32 s +52832.0 146123.0 m +(with) 57848 0.00 -1 s +( the given resource ) 79527 -105.00 32 s +5 sf +(database) 89717 0.00 -1 s +4 sf +(. The ) 96013 -105.00 32 s +2 sf +(:key) 101185 0.00 -1 s +4 sf +( function is called to convert a file resource) 149352 -91.50 32 s +52832.0 149284.0 m +(value) 58944 0.00 -1 s +( into the value stored in the ) 89179 -170.86 32 s +5 sf +(database) 99369 0.00 -1 s +4 sf +(. By default, ) 113686 -113.67 32 s +2 sf +(:key) 118858 0.00 -1 s +4 sf +( is ) 121811 -170.50 32 s +2 sf +(#'identity) 133409 0.00 -1 s +4 sf +(. The ) 139574 -170.50 32 s +2 sf +(:test) 144742 0.00 -1 s +4 sf +( and) 149352 -171.00 32 s +52832.0 152445.0 m +2 sf +(:test\036not) 62858 0.00 -1 s +4 sf +( functions are predicates that select resource bindings to merge,) 134525 4.44 32 s +( based on the) 149352 4.33 32 s +52832.0 155606.0 m +(result) 59101 0.00 -1 s +( of the ) 66469 -182.67 32 s +2 sf +(:key) 71641 0.00 -1 s +4 sf +( function. For each file resource binding consisting of a ) 132426 -246.20 32 s +5 sf +(resource\036name) 149352 0.00 -1 s +4 sf +52832.0 158767.0 m +(and) 56907 0.00 -1 s +( a ) 59568 -2.00 32 s +5 sf +(resource\036value) 76494 0.00 -1 s +4 sf +(, the ) 82056 -2.00 32 s +2 sf +(:test) 87224 0.00 -1 s +4 sf +( \(or ) 91921 -2.00 32 s +2 sf +(:test\036not) 101947 0.00 -1 s +4 sf +(\) function is called with the arguments ) 146062 -1.29 32 s +5 sf +(re\036) 149352 0.00 -1 s +52832.0 161928.0 m +(source\036name) 67407 0.00 -1 s +4 sf +( and \() 73723 -55.00 32 s +2 sf +(funcall) 82032 0.00 -1 s +4 sf +( ) 82683 -55.00 32 s +5 sf +(key resource\036value) 104019 -55.00 32 s +4 sf +(\).) 105664 0.00 -1 s +5 sf +52832.0 168204.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 The ) 72191 -53.00 32 s +2 sf +(resource\036database) 94134 0.00 -1 s +4 sf +( to merge.) 105393 -52.50 32 s +5 sf +52832.0 172991.0 m +(pathname) 63961 0.00 -1 s +4 sf +( \037 A pathname for the resource) 100153 -28.00 32 s +( file to read.) 113702 -28.67 32 s +2 sf +52832.0 177777.0 m +(:key) 58004 0.00 -1 s +4 sf +( \037 A function used to convert a value from the resource file into a resource binding) 149352 -217.38 32 s +57912.0 180938.0 m +(value.) 64730 0.00 -1 s +2 sf +52832.0 185725.0 m +(:test) 58000 0.00 -1 s +4 sf +(,) 58706 0.00 -1 s +( ) 59390 -22.00 32 s +2 sf +(:test\036not) 69416 0.00 -1 s +4 sf +( \037 Functions used to select which resource bindings from the resource) 149352 -21.82 32 s +57912.0 188886.0 m +(file are) 65823 0.00 32 s +( merged with the ) 85421 -38.00 32 s +5 sf +(database) 95611 0.00 -1 s +4 sf +(.) 96317 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +139756.0 8195.0 m +(Resources) 149052 0.00 -1 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(13\036167) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(write\036resources) 53190 0.00 -1 s +/timsps10 4 declareFont +4 sf +( ) 53860 -36.00 32 s +/timsps10i 5 declareFont +5 sf +(database pathname) 75849 -36.00 32 s +4 sf +( &key ) 83459 -36.00 32 s +2 sf +(:write :test :test\036not) 107199 -35.50 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Writes) 60354 0.00 -1 s +( resource bindings found in) 91006 -57.00 32 s +( the ) 95751 -57.50 32 s +5 sf +(database) 105941 0.00 -1 s +4 sf +( to the file given by the ) 132481 -49.29 32 s +5 sf +(pathname) 143610 0.00 -1 s +4 sf +(. The) 149352 -58.00 32 s +52832.0 30457.0 m +(output) 60044 0.00 -1 s +( file is written in the standard X11 format. The ) 111682 -173.30 32 s +2 sf +(:write) 118887 0.00 -1 s +4 sf +( function is used for writing) 149352 -192.60 32 s +52832.0 33618.0 m +(resource) 62389 0.00 -1 s +( values; the default is ) 86543 -107.00 32 s +2 sf +(#'princ) 95321 0.00 -1 s +4 sf +(. The ) 101720 -53.50 32 s +2 sf +(:write) 108925 0.00 -1 s +4 sf +( function is passed two arguments:) 147501 -107.00 32 s +( a) 149352 -108.00 32 s +52832.0 36779.0 m +5 sf +(resource\036value) 69758 0.00 -1 s +4 sf +( and a ) 76748 -152.00 32 s +5 sf +(stream) 84429 0.00 -1 s +4 sf +(. The ) 90631 -152.00 32 s +2 sf +(:test) 95799 0.00 -1 s +4 sf +( and ) 100982 -152.00 32 s +2 sf +(:test\036not) 111008 0.00 -1 s +4 sf +( functions are predicates which se\036) 149352 -151.60 32 s +52832.0 39940.0 m +(lect) 56906 0.00 -1 s +( resource bindings to write. For) 93375 208.80 32 s +( each resource binding consisting of a ) 138538 260.43 32 s +5 sf +(resource\036) 149352 0.00 -1 s +52832.0 43101.0 m +(name) 58944 0.00 -1 s +4 sf +( and) 63725 0.00 32 s +( a ) 65874 -258.00 32 s +5 sf +(resource\036value) 82800 0.00 -1 s +4 sf +(,) 83506 0.00 -1 s +( the ) 87849 -258.50 32 s +2 sf +(:test) 93017 0.00 -1 s +4 sf +( \(or ) 97201 -258.50 32 s +2 sf +(:test\036not) 107227 0.00 -1 s +4 sf +(\) function is called with the arguments) 149352 -215.50 32 s +52832.0 46262.0 m +5 sf +(resource\036name) 69758 0.00 -1 s +4 sf +( and) 74453 -86.00 32 s +( ) 75072 -87.00 32 s +5 sf +(resource\036value) 91998 0.00 -1 s +4 sf +(.) 92704 0.00 -1 s +5 sf +52832.0 52538.0 m +(database) 63022 0.00 -1 s +4 sf +( \037 The ) 72212 -46.00 32 s +2 sf +(resource\036database) 94155 0.00 -1 s +4 sf +( to write.) 104174 -45.50 32 s +5 sf +52832.0 57325.0 m +(pathname) 63961 0.00 -1 s +4 sf +( \037 A pathname of the file to write.) 103497 -24.75 32 s +2 sf +52832.0 62111.0 m +(:write) 60037 0.00 -1 s +4 sf +( \037 A function for) 80333 -20.00 32 s +( writing resource values.) 108012 -20.67 32 s +2 sf +52832.0 66898.0 m +(:test) 58000 0.00 -1 s +4 sf +(,) 58706 0.00 -1 s +( ) 59390 -22.00 32 s +2 sf +(:test\036not) 69416 0.00 -1 s +4 sf +( \037 Functions used to select which resource bindings from the resource) 149352 -21.82 32 s +57912.0 70059.0 m +(file are) 65823 0.00 32 s +( merged with the ) 85421 -38.00 32 s +5 sf +(database) 95611 0.00 -1 s +4 sf +(.) 96317 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Resources) 29616 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(13\036168) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s04.ps +++ cmucl-20a-20090928/own-work/clx/s04.ps @@ -0,0 +1,6843 @@ +%!PS-Adobe-2.0 +%%Title: s04.ps +%%Pages: 18 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 12 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /courps8 /ILcourps 8 map + /timsps8 /ILtims 8 map + /symbb8 /ILsymbb 8 map + /timsps6 /ILtims 6 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Courier /ILcourps ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 12 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03635) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 10 declareFont +10 sf +20410.0 39376.0 m +53012.0 39466.0 m +(WINDOWS AND) 91485 -43.00 32 s +( PIXMAPS) 115846 -44.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +145823 39315 av +141716 39315 as +141716 36265 as +141716 36265 as +141716 33596 as +141716 33596 as +141716 27495 as +141716 27495 as +141260 23300 as +141260 23300 as +145823 23300 as +145823 33596 as +148105 33596 as +148105 36265 as +145823 36265 as +145823 39315 as +fp +newpath +145823 39315 av +141716 39315 as +141716 36265 as +[] 0 setdash +dp +newpath +0.0 sw +141716 36265 av +141716 33596 as +newpath +270.0 sw +141716 33596 av +141716 27495 as +[] 0 setdash +dp +newpath +0.0 sw +141716 27495 av +141260 23300 as +newpath +270.0 sw +141260 23300 av +145823 23300 as +145823 33596 as +148105 33596 as +148105 36265 as +145823 36265 as +145823 39315 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +0.0 sw +/drawmode PL_SET def +141716 36265 av +141716 33596 as +141716 33596 as +136697 33596 as +141716 27495 as +141716 27495 as +141260 23300 as +141260 23300 as +133047 32833 as +133047 36265 as +141716 36265 as +fp +newpath +141716 36265 av +141716 33596 as +newpath +270.0 sw +141716 33596 av +136697 33596 as +141716 27495 as +[] 0 setdash +dp +newpath +0.0 sw +141716 27495 av +141260 23300 as +newpath +270.0 sw +141260 23300 av +133047 32833 as +133047 36265 as +141716 36265 as +[] 0 setdash +dp +0.0 sw +newpath +132590 23300 av +132590 23300 as +newpath +132590 43891 av +132590 43891 as +newpath +148561 43891 av +148561 43891 as +newpath +148561 23300 av +148561 23300 as +149351.0 39376.0 m +10 sf +/timsps10 5 declareFont +5 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 6 declareFont +6 sf +20320.0 46871.0 m +(Drawables) 35743 0.00 -1 s +52832.0 h +2 sf +(4.1) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(Both) 64043 0.00 -1 s +( windows and pixmaps can be used as sources and destinations in graphics op\036) 149352 -256.69 32 s +52832.0 50032.0 m +(erations.) 62471 0.00 -1 s +( These are collectively known as ) 99512 -96.00 32 s +/timsps10i 4 declareFont +4 sf +(drawables) 111271 0.00 -1 s +5 sf +(. The following) 128557 -96.00 32 s +( functions apply to) 149352 -96.67 32 s +52832.0 53193.0 m +(both) 57849 0.00 -1 s +( windows and pixmaps.) 84351 -49.67 32 s +2 sf +34544.0 59470.0 m +(drawable\036display) 55396 0.00 -1 s +5 sf +( ) 55966 -136.00 32 s +4 sf +(drawable) 66627 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 64189.0 m +(Returns) 61610 0.00 -1 s +( the display for the specified ) 94184 -30.83 32 s +4 sf +(drawable) 104845 0.00 -1 s +5 sf +(.) 105551 0.00 -1 s +4 sf +52832.0 70465.0 m +(drawable) 63493 0.00 -1 s +( ) 64153 -46.00 32 s +5 sf +(\037 A ) 70333 -45.50 32 s +2 sf +(drawable) 81620 0.00 -1 s +5 sf +( object.) 89882 -46.00 32 s +2 sf +34544.0 75252.0 m +(drawable\036equal) 53356 0.00 -1 s +5 sf +( ) 53957 -105.00 32 s +4 sf +(drawable\0361) 66968 0.00 -1 s +2 sf +( ) 67569 -105.00 32 s +4 sf +(drawable\0362) 80580 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 79970.0 m +(Returns) 61610 0.00 -1 s +( true if the two arguments refer to the same server resource, and ) 130769 -273.85 32 s +2 sf +(nil) 133906 0.00 -1 s +5 sf +( if they do not.) 149352 -273.50 32 s +4 sf +52832.0 86247.0 m +(drawable\0361) 65843 0.00 -1 s +5 sf +(,) 66549 0.00 -1 s +2 sf +( ) 67198 -57.00 32 s +4 sf +(drawable\0362 ) 80858 -57.00 32 s +5 sf +(\037 ) 84329 -57.00 32 s +2 sf +(drawable) 95616 0.00 -1 s +5 sf +( objects.) 104964 -58.00 32 s +2 sf +34544.0 91034.0 m +(drawable\036id) 49123 0.00 -1 s +5 sf +( ) 49712 -117.00 32 s +4 sf +(drawable) 60373 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 94194.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 97355.0 m +( id ) 57055 -30.00 32 s +5 sf +(\037 Type ) 67029 -29.50 32 s +2 sf +(resource\036id) 80664 0.00 -1 s +5 sf +(.) 81370 0.00 -1 s +52832.0 102074.0 m +(Returns) 61610 0.00 -1 s +( the unique resource ID assigned to) 101224 -33.00 32 s +( the specified ) 116875 -33.67 32 s +4 sf +(drawable) 127536 0.00 -1 s +5 sf +(.) 128242 0.00 -1 s +4 sf +52832.0 108351.0 m +(drawable) 63493 0.00 -1 s +( ) 64153 -46.00 32 s +5 sf +(\037 A ) 70333 -45.50 32 s +2 sf +(drawable) 81620 0.00 -1 s +5 sf +( object.) 89882 -46.00 32 s +2 sf +34544.0 113137.0 m +(drawable\036p) 48339 0.00 -1 s +5 sf +( ) 48922 -123.00 32 s +4 sf +(drawable) 59583 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 116298.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 119459.0 m +( boole) 60444 -35.00 32 s +( ) 61114 -36.00 32 s +5 sf +(\037 Type ) 71076 -35.50 32 s +2 sf +(boolean) 80484 0.00 -1 s +5 sf +(.) 81190 0.00 -1 s +52832.0 124178.0 m +(Returns) 61610 0.00 -1 s +( true if the argument is a ) 89727 -25.00 32 s +2 sf +(drawable) 101014 0.00 -1 s +5 sf +( and ) 106450 -25.50 32 s +2 sf +(nil) 109587 0.00 -1 s +5 sf +( otherwise.) 121943 -26.00 32 s +2 sf +34544.0 130454.0 m +(drawable\036plist) 51944 0.00 -1 s +5 sf +( ) 52557 -93.00 32 s +4 sf +(drawable) 63218 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 133615.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 136776.0 m +( plist ) 59793 -6.00 32 s +5 sf +(\037 A property list.) 80467 -6.00 32 s +52832.0 141495.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73749 -3.00 32 s +2 sf +(setf) 77978 0.00 -1 s +5 sf +(\) sets the property list for the specified ) 122157 -2.63 32 s +4 sf +(drawable) 132818 0.00 -1 s +5 sf +(. This function) 149352 -2.50 32 s +52832.0 144656.0 m +(provides) 62550 0.00 -1 s +( a hook where extensions can add data.) 106296 -42.71 32 s +20320.0 151655.0 m +0.0 0.0 m +newpath +20455 150031 av +148878 150029 as +[] 0 setdash +dp +149352.0 151655.0 m +6 sf +20320.0 155042.0 m +(Creating) 33108 0.00 -1 s +( ) 33980 25.00 32 s +52832.0 h +2 sf +(4.2) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(A) 60592 0.00 -1 s +( window is a ) 81926 1571.00 32 s +2 sf +(drawable) 93213 0.00 -1 s +5 sf +( that can also receive input events.) 141433 1571.00 32 s +( CLX) 149352 1570.00 32 s +6 sf +20320.0 158428.0 m +(Windows) 33869 0.00 -1 s +52832.0 h +5 sf +(represents) 64271 0.00 -1 s +( a window with a ) 83455 -191.80 32 s +2 sf +(window ) 93376 -192.00 32 s +5 sf +(object. The ) 106395 -191.50 32 s +2 sf +(create\036window) 124103 0.00 -1 s +5 sf +( function creates a new) 149352 -191.50 32 s +52832.0 161589.0 m +2 sf +(window) 62239 0.00 -1 s +5 sf +( object.) 70465 -82.00 32 s +2 sf +34544.0 167866.0 m +(create\036window) 52252 0.00 -1 s +5 sf +( &key) 59198 -30.00 32 s +( ) 59873 -31.00 32 s +2 sf +(:parent :x :y :width :height) 92509 -30.50 32 s +5 sf +( \() 94124 -30.00 32 s +2 sf +(:depth) 101962 0.00 -1 s +5 sf +( 0\)) 104987 -31.00 32 s +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 171027.0 m +(\() 53771 0.00 -1 s +2 sf +(:border\036width) 70855 0.00 -1 s +5 sf +( 0\) \() 75492 -32.00 32 s +2 sf +(:class) 82075 0.00 -1 s +5 sf +( ) 82749 -32.00 32 s +2 sf +(:copy) 89332 0.00 -1 s +5 sf +(\) \() 91884 -32.00 32 s +2 sf +(:visual) 99880 0.00 -1 s +( :copy) 107136 -33.00 32 s +5 sf +(\) ) 108749 -32.00 32 s +2 sf +(:background ) 124945 -33.00 32 s +52832.0 174188.0 m +(:border) 62079 0.00 -1 s +( :gravity :bit\036gravity :backing\036store :backing\036planes ) 125244 -48.00 32 s +/courps8 8 declareFont +8 sf +( ) 126508 -93.00 32 s +2 sf +(:backing\036pixel) 143753 0.00 -1 s +52832.0 177348.0 m +(:save\036under) 67096 0.00 -1 s +( :event\036mask :do\036not\036propagate\036mask :override\036redirect :colormap) 148291 -75.80 32 s +52832.0 180509.0 m +(:cursor) 61608 0.00 -1 s +34544.0 183670.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 186831.0 m +( window) 62961 -32.00 32 s +5 sf +( \037 Type ) 73605 -31.67 32 s +2 sf +(window) 83012 0.00 -1 s +5 sf +(.) 83718 0.00 -1 s +52832.0 191550.0 m +(Creates) 61294 0.00 -1 s +( and returns a window. A ) 90367 -26.67 32 s +2 sf +(:parent) 99300 0.00 -1 s +5 sf +( window must be specified; the first window) 149352 -26.57 32 s +52832.0 194711.0 m +(created) 60978 0.00 -1 s +( by a client will have a root window as its ) 107770 -85.55 32 s +2 sf +(:parent) 116703 0.00 -1 s +5 sf +(. The new window is initially) 149352 -85.60 32 s +52832.0 197872.0 m +(unmapped) 64588 0.00 -1 s +( and is placed) 80307 93.00 32 s +( on top of its siblings in the stacking order. A ) 133059 92.45 32 s +2 sf +(:create\036notify) 149352 0.00 -1 s +5 sf +52832.0 201033.0 m +(event) 58944 0.00 -1 s +( is generated by the server.) 89024 -33.80 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03636) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( ) 57718 -208.00 32 s +2 sf +(:class) 64301 0.00 -1 s +5 sf +( of a window can be ) 86564 -208.00 32 s +2 sf +(:input\036output ) 103366 -208.00 32 s +5 sf +(or) 105716 0.00 -1 s +( ) 106213 -209.00 32 s +2 sf +(:input\036only) 119696 0.00 -1 s +5 sf +(. Windows of class ) 141044 -208.50 32 s +2 sf +(:input\036) 149352 0.00 -1 s +52832.0 25739.0 m +(only) 58007 0.00 -1 s +5 sf +( cannot be used as the destination drawable for graphics output and can never re\036) 149352 9.00 32 s +52832.0 28900.0 m +(ceive) 58786 0.00 -1 s +( ) 59225 -267.00 32 s +2 sf +(:exposure) 70981 0.00 -1 s +5 sf +( events, but otherwise operate the same as ) 116887 -267.00 32 s +2 sf +(:input\036output) 133191 0.00 -1 s +5 sf +( windows. The) 149352 -267.00 32 s +52832.0 32060.0 m +2 sf +(:class) 59415 0.00 -1 s +5 sf +( can also be ) 72232 -283.50 32 s +2 sf +(:copy) 78815 0.00 -1 s +5 sf +(, in which case the new window has the same class as its ) 139713 -283.54 32 s +2 sf +(:parent) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 35221.0 m +41498.0 v +(For) 56751 0.00 -1 s +( an ) 60348 -239.50 32 s +2 sf +(:input\036output) 76652 0.00 -1 s +5 sf +( window, the ) 91296 -239.67 32 s +2 sf +(:visual) 99292 0.00 -1 s +5 sf +( and ) 104300 -239.50 32 s +2 sf +(:depth) 112138 0.00 -1 s +5 sf +( must be a combination supported) 149352 -191.60 32 s +52832.0 44659.0 m +(by) 55654 0.00 -1 s +( the) 59581 -227.00 32 s +( ) 60059 -228.00 32 s +2 sf +(:parent) 68992 0.00 -1 s +5 sf +('s screen, but the ) 87910 -227.50 32 s +2 sf +(:depth) 95748 0.00 -1 s +5 sf +( need not be the same as the ) 126220 -227.50 32 s +2 sf +(:parent) 135153 0.00 -1 s +5 sf +('s. The ) 143241 -227.50 32 s +2 sf +(:par\036) 149352 0.00 -1 s +52832.0 47820.0 m +(ent) 56593 0.00 -1 s +5 sf +( of an ) 63227 -166.00 32 s +2 sf +(:input\036output) 79531 0.00 -1 s +5 sf +( window must also be ) 104021 -165.80 32 s +2 sf +(:input\036output) 120325 0.00 -1 s +5 sf +(. A ) 124149 -165.50 32 s +2 sf +(:depth) 131987 0.00 -1 s +5 sf +( of 0 means that) 149352 -165.50 32 s +52832.0 50981.0 m +(the) 56280 0.00 -1 s +( depth of the) 70385 -27.00 32 s +( ) 71063 -28.00 32 s +2 sf +(:parent) 79996 0.00 -1 s +5 sf +( is used.) 89114 -27.50 32 s +52832.0 57257.0 m +(For) 56751 0.00 -1 s +( an ) 60361 -233.00 32 s +2 sf +(:input\036only) 73844 0.00 -1 s +5 sf +( window, the ) 88508 -233.00 32 s +2 sf +(:depth) 96346 0.00 -1 s +5 sf +( must be zero, and the ) 120422 -232.83 32 s +2 sf +(:visual) 128418 0.00 -1 s +5 sf +( must be supported) 149352 -155.00 32 s +52832.0 60418.0 m +(by) 55654 0.00 -1 s +( the ) 59982 -266.00 32 s +2 sf +(:parent) 68915 0.00 -1 s +5 sf +('s screen. The ) 84575 -265.33 32 s +2 sf +(:parent) 93508 0.00 -1 s +5 sf +( of an ) 99843 -265.67 32 s +2 sf +(:input\036only) 113326 0.00 -1 s +5 sf +( window can be of any class. The) 149352 -227.57 32 s +52832.0 63579.0 m +(only) 57849 0.00 -1 s +( attributes that can be given for an ) 100146 389.00 32 s +2 sf +(:input\036only) 113629 0.00 -1 s +5 sf +( window) 123426 0.00 32 s +( are ) 129060 388.50 32 s +2 sf +(:cursor) 137836 0.00 -1 s +5 sf +(, ) 139636 388.00 32 s +2 sf +(:do\036not\036) 149352 0.00 -1 s +52832.0 66740.0 m +(propagate\036mask) 72426 0.00 -1 s +5 sf +(,) 73132 0.00 -1 s +( ) 73725 -113.00 32 s +2 sf +(:event\036mask) 88456 0.00 -1 s +5 sf +(, ) 89755 -113.00 32 s +2 sf +(:gravity) 99314 0.00 -1 s +5 sf +(, and ) 105394 -56.50 32 s +2 sf +(:override\036redirect) 127016 0.00 -1 s +5 sf +(.) 127722 0.00 -1 s +2 sf +52832.0 73017.0 m +(:parent) 61765 0.00 -1 s +5 sf +( \037 The parent window. This argument is required.) 118872 -32.75 32 s +2 sf +52832.0 77803.0 m +(:x) 55182 0.00 -1 s +5 sf +(,) 55888 0.00 -1 s +( ) 56436 -158.00 32 s +2 sf +(:y) 58786 0.00 -1 s +5 sf +( \037 ) 62704 -158.00 32 s +2 sf +(int16) 68818 0.00 -1 s +5 sf +( coordinates) 82374 -158.00 32 s +( for the outside upper\036left corner of the new window with re\036) 149352 -158.55 32 s +57912.0 80964.0 m +(spect) 63711 0.00 -1 s +( to the origin \(inside upper\036left corner\) of the ) 115541 38.44 32 s +2 sf +(:parent) 124474 0.00 -1 s +5 sf +(. These arguments are) 149352 38.33 32 s +57912.0 84125.0 m +(required.) 68019 0.00 -1 s +2 sf +52832.0 88911.0 m +(:width) 60669 0.00 -1 s +5 sf +(,) 61375 0.00 -1 s +( ) 61933 -148.00 32 s +2 sf +(:height) 70397 0.00 -1 s +5 sf +( \037 ) 74335 -148.00 32 s +2 sf +(card16) 82643 0.00 -1 s +5 sf +( values for the size of the new window. These arguments are) 149352 -147.91 32 s +57912.0 92072.0 m +(required.) 68019 0.00 -1 s +( ) 68682 -43.00 32 s +2 sf +52832.0 96859.0 m +(:depth) 60670 0.00 -1 s +5 sf +( \037 A ) 67545 -34.00 32 s +2 sf +(card16) 75853 0.00 -1 s +5 sf +( specifying the depth of the new window.) 122326 -34.00 32 s +2 sf +52832.0 101645.0 m +(:class) 59415 0.00 -1 s +5 sf +( \037 One of ) 72013 -24.75 32 s +2 sf +(:input\036outpu) 87378 0.00 -1 s +5 sf +(t, ) 89549 -25.00 32 s +2 sf +(:input\036only) 103032 0.00 -1 s +5 sf +(, or) 106770 -24.00 32 s +2 sf +( :copy) 114034 -25.00 32 s +5 sf +(.) 114740 0.00 -1 s +2 sf +52832.0 106432.0 m +(:visual) 60828 0.00 -1 s +5 sf +( \037 A ) 67724 -27.00 32 s +2 sf +(card29) 76032 0.00 -1 s +5 sf +( ID specifying the visual) 103668 -27.00 32 s +( type of the new window.) 132215 -27.60 32 s +2 sf +52832.0 111218.0 m +(:background) 68355 0.00 -1 s +5 sf +(,) 69061 0.00 -1 s +( ) 69820 53.00 32 s +2 sf +(:backing\036pixel) 87065 0.00 -1 s +5 sf +(, ) 88530 53.00 32 s +2 sf +(:backing\036planes) 107658 0.00 -1 s +5 sf +(, ) 109123 53.00 32 s +2 sf +(:backing\036store) 126521 0.00 -1 s +5 sf +(, ) 127986 53.00 32 s +2 sf +(:bit\036gravity) 141776 0.00 -1 s +5 sf +(, ) 143241 53.00 32 s +2 sf +(:bor\036) 149352 0.00 -1 s +57912.0 114379.0 m +(der) 61987 0.00 -1 s +5 sf +(,) 62693 0.00 -1 s +( ) 64289 890.00 32 s +2 sf +(:border\036width) 81373 0.00 -1 s +5 sf +(, ) 83675 890.00 32 s +2 sf +(:colormap) 96056 0.00 -1 s +5 sf +(, ) 98358 890.00 32 s +2 sf +(:cursor) 107134 0.00 -1 s +5 sf +(, ) 109437 891.00 32 s +2 sf +(:do\036not\036propagate\036mask) 138747 0.00 -1 s +5 sf +(, ) 141049 890.00 32 s +2 sf +(:event\036) 149352 0.00 -1 s +57912.0 117540.0 m +(mask) 64340 0.00 -1 s +5 sf +(,) 65046 0.00 -1 s +( ) 65550 -202.00 32 s +2 sf +(:gravity) 75109 0.00 -1 s +5 sf +(, ) 76319 -202.00 32 s +2 sf +(:override\036redirect) 97941 0.00 -1 s +5 sf +(, ) 99151 -202.00 32 s +2 sf +(:save\036under) 113415 0.00 -1 s +5 sf +( \037 Initial attribute values for the) 149352 -201.67 32 s +57912.0 120701.0 m +(new) 62613 0.00 -1 s +( window.) 73104 -12.00 32 s +( If ) 76369 -12.50 32 s +2 sf +(nil) 79506 0.00 -1 s +5 sf +(, the default value is defined by the X protocol. See paragraph) 149352 -12.55 32 s +57912.0 123862.0 m +(4.3,) 62146 0.00 -1 s +( Window) 72530 -40.00 32 s +( Attributes.) 85186 -41.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03637) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 6 declareFont +6 sf +20320.0 26687.0 m +(Window) 32552 0.00 -1 s +( ) 33393 -6.00 32 s +52832.0 h +2 sf +(4.3) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( following paragraphs describe the CLX functions used) 132789 1055.00 32 s +( to return or) 149352 1054.33 32 s +6 sf +20320.0 30074.0 m +(Attributes) 35176 0.00 -1 s +52832.0 h +5 sf +(change) 60824 0.00 -1 s +( window attributes. Using the ) 93833 -201.60 32 s +2 sf +(with\036state) 105741 0.00 -1 s +5 sf +( macro improves the performance of at\036) 149352 -201.50 32 s +52832.0 33234.0 m +(tribute) 60198 0.00 -1 s +( access by batching related accesses) 100407 -61.00 32 s +( in the minimum number of server requests.) 149352 -61.57 32 s +2 sf +34544.0 39511.0 m +(drawable\036border\036width) 62915 0.00 -1 s +/courps8 8 declareFont +8 sf +( ) 64094 -178.00 32 s +/timsps10i 4 declareFont +4 sf +(drawable) 74755 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 42672.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 45833.0 m +( border\036width) 69065 -36.00 32 s +( ) 69734 -37.00 32 s +5 sf +(\037 Type ) 79694 -36.50 32 s +2 sf +(card16) 88002 0.00 -1 s +5 sf +(.) 88708 0.00 -1 s +52832.0 50552.0 m +(Returns) 61610 0.00 -1 s +( the ) 66364 -53.00 32 s +4 sf +(border\036width) 81257 0.00 -1 s +5 sf +( of the ) 89014 -53.00 32 s +4 sf +(drawable) 99675 0.00 -1 s +5 sf +( in pixels.) 110623 -53.00 32 s +( It always returns zero if the ) 142611 -53.57 32 s +4 sf +(draw\036) 149352 0.00 -1 s +52832.0 53713.0 m +(able) 57691 0.00 -1 s +5 sf +( is a pixmap or an ) 78121 -70.00 32 s +2 sf +(:input\036only) 91604 0.00 -1 s +5 sf +( window.) 102037 -70.00 32 s +( Used with ) 114758 -70.67 32 s +2 sf +(setf) 118987 0.00 -1 s +5 sf +(, this function also changes) 149352 -70.50 32 s +52832.0 56873.0 m +(the) 56280 0.00 -1 s +( border width of the ) 78294 -221.00 32 s +2 sf +(:input\036only) 91777 0.00 -1 s +5 sf +( window. The default border width of a new window) 149352 -220.56 32 s +52832.0 60034.0 m +(is) 54714 0.00 -1 s +( zero.) 60960 -22.00 32 s +52832.0 66311.0 m +(Changing) 63806 0.00 -1 s +( just the border width leaves the outer left corner of a window in a fixed posi\036) 149352 -119.56 32 s +52832.0 69472.0 m +(tion) 57222 0.00 -1 s +( but moves the absolute position of the window's origin. It is an error to make the) 149352 2.25 32 s +52832.0 72633.0 m +(border) 60196 0.00 -1 s +( width of an) 73641 -38.00 32 s +( ) 74308 -39.00 32 s +2 sf +(:input\036only) 87791 0.00 -1 s +5 sf +( window nonzero.) 108012 -38.50 32 s +52832.0 78909.0 m +(When) 59571 0.00 -1 s +( changing the border\036width of a window, if the override\036redirect) 132020 5.00 32 s +( attribute of the) 149352 4.33 32 s +52832.0 82070.0 m +(window) 61923 0.00 -1 s +( is ) 64729 -244.00 32 s +2 sf +(:off) 68957 0.00 -1 s +5 sf +( and some other client has selected ) 107141 -244.00 32 s +2 sf +(:substructure\036redirect) 133938 0.00 -1 s +5 sf +( on the parent,) 149352 -243.67 32 s +52832.0 85231.0 m +(a) 54085 0.00 -1 s +( ) 54540 -251.00 32 s +2 sf +(:configure\036request) 76794 0.00 -1 s +5 sf +( event is generated,) 97827 -251.00 32 s +( and no further processing is performed. Other\036) 149352 -251.57 32 s +52832.0 88392.0 m +(wise,) 58710 0.00 -1 s +( the) 62827 -37.00 32 s +( border\036width is changed.) 91553 -37.67 32 s +4 sf +52832.0 94669.0 m +(drawable) 63493 0.00 -1 s +8 sf +( ) 64780 -70.00 32 s +5 sf +(\037) 67602 0.00 -1 s +( A ) 70979 -36.00 32 s +2 sf +(drawable) 82266 0.00 -1 s +5 sf +( object.) 90537 -37.00 32 s +2 sf +34544.0 99455.0 m +(drawable\036depth) 53669 0.00 -1 s +( ) 54228 -147.00 32 s +4 sf +(drawable) 64889 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 102616.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 105777.0 m +( depth) 60446 -34.00 32 s +( ) 61117 -35.00 32 s +5 sf +(\037 Type ) 71081 -34.50 32 s +2 sf +(card8) 77978 0.00 -1 s +5 sf +(.) 78684 0.00 -1 s +52832.0 110496.0 m +(Returns) 61610 0.00 -1 s +( the depth of the specified ) 91392 -26.00 32 s +4 sf +(drawable) 102053 0.00 -1 s +5 sf +( \(bits per pixel\).) 120001 -25.67 32 s +4 sf +52832.0 116772.0 m +(drawable) 63493 0.00 -1 s +( ) 64153 -46.00 32 s +5 sf +(\037 A ) 70333 -45.50 32 s +2 sf +(drawable) 81620 0.00 -1 s +5 sf +( object.) 89882 -46.00 32 s +2 sf +34544.0 121559.0 m +(drawable\036height) 54295 0.00 -1 s +( ) 54860 -141.00 32 s +4 sf +(drawable) 65521 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 124720.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 127881.0 m +( inside\036height ) 69576 -36.00 32 s +5 sf +(\037 Type) 78867 -36.00 32 s +( ) 79536 -37.00 32 s +2 sf +(card16) 87844 0.00 -1 s +5 sf +(.) 88550 0.00 -1 s +2 sf +34544.0 132599.0 m +(drawable\036width) 53668 0.00 -1 s +( ) 54250 -124.00 32 s +4 sf +(drawable) 64911 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 135760.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 138921.0 m +( inside\036width) 68130 -33.00 32 s +( ) 68802 -34.00 32 s +5 sf +(\037 Type ) 78768 -33.50 32 s +2 sf +(card16) 87076 0.00 -1 s +5 sf +(.) 87782 0.00 -1 s +52832.0 143640.0 m +(These) 59571 0.00 -1 s +( functions return the height or width of the ) 105937 -256.00 32 s +4 sf +(drawable) 116598 0.00 -1 s +5 sf +(. These coordinates define the) 149352 -255.50 32 s +52832.0 146801.0 m +(inside) 59573 0.00 -1 s +( size of the ) 72771 47.00 32 s +4 sf +(drawable) 83432 0.00 -1 s +5 sf +(, in pixels. Used with ) 108363 47.60 32 s +2 sf +(setf) 112592 0.00 -1 s +5 sf +(, these functions also change the) 149352 47.40 32 s +52832.0 149962.0 m +(inside) 59573 0.00 -1 s +( height or width of a window. However, the height or width of a pixmap cannot) 146191 -208.00 32 s +( be) 149352 -209.00 32 s +52832.0 153122.0 m +(changed.) 62941 0.00 -1 s +( ) 63556 -91.00 32 s +52832.0 159399.0 m +(Changing) 63806 0.00 -1 s +( the width and height resizes a window without) 115582 -190.00 32 s +( changing its position or stack\036) 149352 -190.60 32 s +52832.0 162560.0 m +(ing) 56438 0.00 -1 s +( priority.) 66298 -15.00 32 s +( ) 66988 -16.00 32 s +52832.0 168837.0 m +(Changing) 63806 0.00 -1 s +( the size of a mapped window may cause the window to lose its contents and) 149352 -70.73 32 s +52832.0 171998.0 m +(generate) 62389 0.00 -1 s +( an ) 66485 10.00 32 s +2 sf +(:exposure) 78241 0.00 -1 s +5 sf +( event. If a mapped window is made smaller, ) 129670 10.56 32 s +2 sf +(:exposure) 141426 0.00 -1 s +5 sf +( events) 149352 10.00 32 s +52832.0 175158.0 m +(are) 56277 0.00 -1 s +( generated on windows that it formerly obscured.) 111534 -32.57 32 s +52832.0 181435.0 m +(When) 59571 0.00 -1 s +( changing the size of a window, if the override\036redirect attribute of the window is) 149352 -141.79 32 s +52832.0 184596.0 m +2 sf +(:off) 57060 0.00 -1 s +5 sf +( and some other client has) 85431 -204.00 32 s +( selected ) 95523 -204.50 32 s +2 sf +(:substructure\036redirect) 122320 0.00 -1 s +5 sf +( on the parent, a ) 140107 -204.60 32 s +2 sf +(:config\036) 149352 0.00 -1 s +52832.0 187757.0 m +(ure\036request) 66780 0.00 -1 s +5 sf +( event is generated, and no further processing is performed. Otherwise, if) 149352 12.00 32 s +52832.0 190918.0 m +(another) 61294 0.00 -1 s +( client has selected ) 83174 -16.00 32 s +2 sf +(:resize\036redirect) 101503 0.00 -1 s +5 sf +( on the window, a ) 122273 -16.00 32 s +2 sf +(:resize\036request) 139979 0.00 -1 s +5 sf +( event) 146781 -16.00 32 s +( is) 149352 -17.00 32 s +52832.0 194079.0 m +(generated,) 64506 0.00 -1 s +( and the current inside width and height are maintained. Note) 133591 4.00 32 s +( that the over\036) 149352 3.33 32 s +52832.0 197239.0 m +(ride\036redirect) 66774 0.00 -1 s +( attribute of the window has no effect on ) 114174 103.00 32 s +2 sf +(:resize\036redirect) 132503 0.00 -1 s +5 sf +( and that ) 143238 103.33 32 s +2 sf +(:sub\036) 149352 0.00 -1 s +52832.0 200400.0 m +(structure\036redirect) 74454 0.00 -1 s +5 sf +( on) 77848 -134.00 32 s +( the parent has precedence over ) 113242 -134.50 32 s +2 sf +(:resize\036redirect) 131571 0.00 -1 s +5 sf +( on the window.) 149352 -134.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03638) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(When) 59571 0.00 -1 s +( the inside size of) 79314 -2.00 32 s +( the window is changed, the children of the window can move) 149352 -2.55 32 s +52832.0 25739.0 m +(according) 63958 0.00 -1 s +( to their window gravity. Depending on the window's bit gravity, the) 139454 -212.00 32 s +( contents) 149352 -213.00 32 s +52832.0 28900.0 m +(of) 55182 0.00 -1 s +( the window can also be moved.) 91285 -31.00 32 s +( ) 91959 -32.00 32 s +/timsps10i 4 declareFont +4 sf +52832.0 35176.0 m +(drawable) 63493 0.00 -1 s +( ) 64153 -46.00 32 s +5 sf +(\037 A ) 70333 -45.50 32 s +2 sf +(drawable) 81620 0.00 -1 s +5 sf +( object.) 89882 -46.00 32 s +2 sf +34544.0 39963.0 m +(drawable\036x) 48181 0.00 -1 s +( ) 48764 -123.00 32 s +4 sf +(drawable) 59425 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 43124.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 46284.0 m +( outside\036left ) 67584 -20.67 32 s +5 sf +(\037 Type ) 77576 -20.50 32 s +2 sf +(int16) 83690 0.00 -1 s +5 sf +(.) 84396 0.00 -1 s +2 sf +34544.0 51003.0 m +(drawable\036y) 48181 0.00 -1 s +( ) 48764 -123.00 32 s +4 sf +(drawable) 59425 0.00 -1 s +5 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 54164.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 57325.0 m +( outside\036top) 66891 -25.00 32 s +( ) 67571 -26.00 32 s +5 sf +(\037 Type ) 77553 -25.50 32 s +2 sf +(int16) 83667 0.00 -1 s +5 sf +(.) 84373 0.00 -1 s +52832.0 62044.0 m +(These) 59571 0.00 -1 s +( functions return the x or y coordinate of the specified ) 119528 -142.00 32 s +4 sf +(drawable) 130189 0.00 -1 s +5 sf +(. They always) 145658 -142.00 32 s +( re\036) 149352 -143.00 32 s +52832.0 65205.0 m +(turn) 57377 0.00 -1 s +( zero if the ) 70136 -23.00 32 s +4 sf +(drawable) 80797 0.00 -1 s +5 sf +( is a) 85298 -23.00 32 s +( pixmap. These coordinates define the location of the top) 149352 -23.56 32 s +52832.0 68366.0 m +(left) 56592 0.00 -1 s +( pixel of the window's border or of the window, if it has no border. Used with ) 144417 -47.94 32 s +2 sf +(setf) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 71526.0 m +(these) 58631 0.00 -1 s +( functions also change the x or y coordinate of a window. However, the x or y coor\036) 149352 -227.71 32 s +52832.0 74687.0 m +(dinate) 59728 0.00 -1 s +( of a pixmap cannot be changed.) 96046 -47.00 32 s +52832.0 80964.0 m +(Changing) 63806 0.00 -1 s +( the x and y coordinates moves a window without changing its size or) 139469 -227.00 32 s +( stacking) 149352 -228.00 32 s +52832.0 84125.0 m +(priority.) 62001 0.00 -1 s +( Moving a mapped window generates ) 105773 111.00 32 s +2 sf +(:exposure) 117529 0.00 -1 s +5 sf +( events on any formerly) 144775 111.00 32 s +( ob\036) 149352 110.00 32 s +52832.0 87286.0 m +(scured) 60197 0.00 -1 s +( windows.) 71730 -68.00 32 s +52832.0 93562.0 m +(When) 59571 0.00 -1 s +( changing the position of a window, if the override\036redirect attribute of the) 143490 -14.00 32 s +( win\036) 149352 -15.00 32 s +52832.0 96723.0 m +(dow) 57691 0.00 -1 s +( is ) 60885 -50.00 32 s +2 sf +(:off) 65113 0.00 -1 s +5 sf +( and some other client) 89836 -50.00 32 s +( has selected) 103998 -50.50 32 s +2 sf +( :substructure\036redirect) 131450 -51.00 32 s +5 sf +( on the parent, a) 149352 -50.50 32 s +52832.0 99884.0 m +2 sf +(:configure\036request) 75086 0.00 -1 s +5 sf +( event is generated, and no further processing is performed. Other\036) 149352 -80.60 32 s +52832.0 103045.0 m +(wise,) 58710 0.00 -1 s +( the window is moved.) 84215 -31.75 32 s +4 sf +52832.0 109322.0 m +(drawable) 63493 0.00 -1 s +( ) 64153 -46.00 32 s +5 sf +(\037 A ) 70333 -45.50 32 s +2 sf +(drawable) 81620 0.00 -1 s +5 sf +( object.) 89882 -46.00 32 s +2 sf +34544.0 114108.0 m +(window\036all\036event\036masks) 63698 0.00 -1 s +( ) 64303 -101.00 32 s +4 sf +(window) 73084 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 117269.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 120430.0 m +( all\036event\036masks ) 72571 -29.00 32 s +5 sf +(\037 Type) 81869 -29.00 32 s +( ) 82545 -30.00 32 s +2 sf +(mask32) 91795 0.00 -1 s +5 sf +(.) 92501 0.00 -1 s +52832.0 125149.0 m +(Returns) 61610 0.00 -1 s +( the inclusive\036or of the event masks selected on the specified ) 129427 -125.91 32 s +4 sf +(window) 138208 0.00 -1 s +5 sf +( by all cli\036) 149352 -125.67 32 s +52832.0 128310.0 m +(ents.) 58084 0.00 -1 s +4 sf +52832.0 134586.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A) 67811 -36.00 32 s +2 sf +( window) 77887 -37.00 32 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 139373.0 m +(setf) 38773 0.00 -1 s +( ) 39393 -86.00 32 s +5 sf +(\() 40332 0.00 -1 s +2 sf +(window\036background) 65262 0.00 -1 s +5 sf +(\)) 66201 0.00 -1 s +2 sf +( ) 66821 -86.00 32 s +4 sf +(window) 75602 0.00 -1 s +( background) 89702 -87.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 142534.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 145694.0 m +( background ) 68329 -34.00 32 s +5 sf +(\037 Either a ) 81315 -34.00 32 s +2 sf +(pixel) 87116 0.00 -1 s +5 sf +(, a ) 90419 -34.00 32 s +2 sf +(pixmap) 99513 0.00 -1 s +5 sf +(,) 100219 0.00 -1 s +( ) 100890 -35.00 32 s +2 sf +(:none) 107631 0.00 -1 s +5 sf +(, or ) 112030 -34.50 32 s +2 sf +(:parent\036relative) 130990 0.00 -1 s +5 sf +(.) 131696 0.00 -1 s +52832.0 150413.0 m +(Changes) 62551 0.00 -1 s +( the ) 66874 -268.50 32 s +4 sf +(background) 80355 0.00 -1 s +5 sf +( attribute of the ) 97306 -268.50 32 s +4 sf +(window) 106087 0.00 -1 s +5 sf +( to the specified value. This operation is) 149352 -268.57 32 s +52832.0 153574.0 m +(not) 56438 0.00 -1 s +( allowed on an ) 73849 42.00 32 s +2 sf +(:input\036only) 87332 0.00 -1 s +5 sf +( window. Changing the background does not cause the) 149352 42.00 32 s +52832.0 156735.0 m +(window) 61923 0.00 -1 s +( contents to be changed. Note that the background of a window cannot be re\036) 149352 48.07 32 s +52832.0 159896.0 m +(turned) 60041 0.00 -1 s +( from the X server. The default background of a new window is ) 132219 -30.00 32 s +2 sf +(:none) 138960 0.00 -1 s +5 sf +(.) 139666 0.00 -1 s +52832.0 166172.0 m +(In) 55182 0.00 -1 s +( general, the server automatically fills in exposed areas of the window when they are) 149352 -97.00 32 s +52832.0 169333.0 m +(first) 57376 0.00 -1 s +( made visible. A background pixmap is tiled to) 109100 -148.00 32 s +( fill each area. However, if the back\036) 149352 -148.57 32 s +52832.0 172494.0 m +(ground) 60826 0.00 -1 s +( is ) 63544 -288.00 32 s +2 sf +(:none) 70285 0.00 -1 s +5 sf +(, the server will not modify exposed areas. If the background is ) 139480 -265.85 32 s +2 sf +(:parent\036) 149352 0.00 -1 s +52832.0 175655.0 m +(relative) 61920 0.00 -1 s +5 sf +(,) 62626 0.00 -1 s +( the window and its parent must have the same depth. In this case, the window) 149352 -117.53 32 s +52832.0 178816.0 m +(shares) 59884 0.00 -1 s +( the same background as its parent. The parent's background is not copied and is) 149352 -108.93 32 s +52832.0 181977.0 m +(reexamined) 65995 0.00 -1 s +( whenever the window's background is required. If the) 126440 -173.00 32 s +( background is ) 143241 -173.67 32 s +2 sf +(:par\036) 149352 0.00 -1 s +52832.0 185138.0 m +(ent\036relative) 66620 0.00 -1 s +5 sf +(,) 67326 0.00 -1 s +( the background pixmap tile origin is the same as the parent's; otherwise,) 149352 -41.83 32 s +52832.0 188299.0 m +(the) 56280 0.00 -1 s +( tile origin is the window origin.) 92614 -19.00 32 s +4 sf +52832.0 194575.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +4 sf +52832.0 199362.0 m +(background) 66313 0.00 -1 s +( ) 66979 -40.00 32 s +5 sf +(\037 Either) 77362 -40.00 32 s +( a ) 79946 -40.50 32 s +2 sf +(pixel) 85747 0.00 -1 s +5 sf +(, a ) 89037 -40.50 32 s +2 sf +(pixmap) 98131 0.00 -1 s +5 sf +(, ) 99502 -41.00 32 s +2 sf +(:none) 106243 0.00 -1 s +5 sf +(, or ) 110630 -40.50 32 s +2 sf +(:parent\036relative) 129590 0.00 -1 s +5 sf +(.) 130296 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03639) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(window\036backing\036pixel) 61196 0.00 -1 s +/courps8 8 declareFont +8 sf +( ) 62407 -146.00 32 s +/timsps10i 4 declareFont +4 sf +(window) 71188 0.00 -1 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 28900.0 m +( backing\036pixel) 69534 -34.00 32 s +( ) 70205 -35.00 32 s +5 sf +(\037 Type ) 80169 -34.50 32 s +2 sf +(pixel) 85970 0.00 -1 s +5 sf +(.) 86676 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73083 -225.00 32 s +2 sf +(setf) 77312 0.00 -1 s +5 sf +(\) changes the value of the backing\036pixel attribute for the specified) 149352 -224.90 32 s +52832.0 36779.0 m +4 sf +(window) 61613 0.00 -1 s +5 sf +(.) 62319 0.00 -1 s +( Changing the backing\036pixel attribute of a mapped window may have no imme\036) 149352 -231.92 32 s +52832.0 39940.0 m +(diate) 58317 0.00 -1 s +( effect. The default backing\036pixel of a new window is zero.) 124765 -31.70 32 s +4 sf +52832.0 46217.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 51003.0 m +(window\036backing\036planes) 63079 0.00 -1 s +8 sf +( ) 64281 -155.00 32 s +4 sf +(window) 73062 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 54164.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 57325.0 m +( backing\036planes ) 72083 -36.00 32 s +5 sf +(\037 Type) 81374 -36.00 32 s +( ) 82043 -37.00 32 s +2 sf +(pixel) 87844 0.00 -1 s +5 sf +(.) 88550 0.00 -1 s +52832.0 62044.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73518 -80.00 32 s +2 sf +(setf) 77747 0.00 -1 s +5 sf +(\) changes the value of the) 106264 -80.00 32 s +( backing\036planes attribute for the speci\036) 149352 -80.60 32 s +52832.0 65205.0 m +(fied) 57219 0.00 -1 s +( ) 57811 -114.00 32 s +4 sf +(window) 66592 0.00 -1 s +5 sf +(. Changing the backing\036planes attribute of a) 115361 -114.00 32 s +( mapped window may have no) 149352 -114.60 32 s +52832.0 68366.0 m +(immediate) 64744 0.00 -1 s +( effect. The default backing\036planes of a new window is all one's.) 137521 -30.73 32 s +4 sf +52832.0 74642.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 79429.0 m +(window\036backing\036store) 61349 0.00 -1 s +( ) 61910 -145.00 32 s +4 sf +(window) 70691 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 82590.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 85750.0 m +( backing\036store\036type ) 76017 -30.00 32 s +5 sf +(\037 One of ) 87918 -30.00 32 s +2 sf +(:always) 97009 0.00 -1 s +5 sf +(, ) 98391 -30.00 32 s +2 sf +(:not\036useful) 111400 0.00 -1 s +5 sf +(, or ) 115808 -30.00 32 s +2 sf +(:when\036mapped) 133835 0.00 -1 s +5 sf +(.) 134541 0.00 -1 s +52832.0 90469.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73119 -213.00 32 s +2 sf +(setf) 77348 0.00 -1 s +5 sf +(\) changes the value of the backing\036store attribute for the specified) 149352 -212.70 32 s +52832.0 93630.0 m +4 sf +(window) 61613 0.00 -1 s +5 sf +(.) 62319 0.00 -1 s +( Changing the backing\036store attribute of) 110382 600.00 32 s +( an obscured window to ) 141046 599.40 32 s +2 sf +(:when\036) 149352 0.00 -1 s +52832.0 96791.0 m +(mapped) 62553 0.00 -1 s +5 sf +( or ) 66045 -135.00 32 s +2 sf +(:always) 75136 0.00 -1 s +5 sf +( may have no immediate effect. The default backing\036store of a new) 149352 -134.82 32 s +52832.0 99952.0 m +(window) 61923 0.00 -1 s +( is) 64489 -22.00 32 s +( ) 65172 -23.00 32 s +2 sf +(:not\036useful) 78181 0.00 -1 s +5 sf +(.) 78887 0.00 -1 s +4 sf +52832.0 106228.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 111015.0 m +(window\036bit\036gravity) 57741 0.00 -1 s +( ) 58343 -104.00 32 s +4 sf +(window) 67124 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 114176.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 117337.0 m +4 sf +( bit\036gravity ) 66791 -23.67 32 s +5 sf +(\037 Type ) 76777 -23.50 32 s +2 sf +(bit\036gravity) 89628 0.00 -1 s +5 sf +(.) 90334 0.00 -1 s +52832.0 122055.0 m +(Returns) 61610 0.00 -1 s +( and) 66350 -41.00 32 s +( \(with ) 73634 -41.50 32 s +2 sf +(setf) 77863 0.00 -1 s +5 sf +(\) changes the bit\036gravity attribute of the ) 123103 -41.57 32 s +4 sf +(window) 131884 0.00 -1 s +5 sf +(. If a window is) 149352 -41.50 32 s +52832.0 125216.0 m +(reconfigured) 67247 0.00 -1 s +( without changing its inside width) 105988 82.00 32 s +( or height, the contents of the window) 149352 81.43 32 s +52832.0 128377.0 m +(move) 59102 0.00 -1 s +( with the window and are not lost. Otherwise, the contents of the resized window) 149352 -80.93 32 s +52832.0 131538.0 m +(are) 56277 0.00 -1 s +( either moved or lost, depending on its bit\036gravity attribute. The default bit\036gravity of) 149352 -237.62 32 s +52832.0 134699.0 m +(a) 54085 0.00 -1 s +( new window is) 71796 -27.00 32 s +( ) 72474 -28.00 32 s +2 sf +(:forget) 80619 0.00 -1 s +5 sf +(.) 81325 0.00 -1 s +52832.0 140976.0 m +(For) 56751 0.00 -1 s +( example, suppose a window's size is changed by ) 112388 -105.78 32 s +4 sf +(W) 114738 0.00 -1 s +5 sf +( pixels in width and ) 137178 -105.60 32 s +4 sf +(H) 139215 0.00 -1 s +5 sf +( pixels in) 149352 -105.50 32 s +52832.0 144137.0 m +(height.) 60592 0.00 -1 s +( The following table shows, for each bit\036gravity value, the change in position) 149352 147.08 32 s +52832.0 147297.0 m +(\(relative) 62232 0.00 -1 s +( to the window origin\) that results for each pixel of the window contents.) 144227 -22.85 32 s +2 sf +52832.0 153574.0 m +(Bit\036Gravity) 66780 0.00 -1 s +83312.0 h +(X) 85349 0.00 -1 s +( Change) 95233 -72.00 32 s +98552.0 h +113792.0 h +(Y Change) 125713 -72.00 32 s +5 sf +52832.0 156712.0 m +83312.0 h +98552.0 h +113792.0 h +129032.0 h +144272.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 155887 av +149352 155887 as +149352 156005 as +52832 156005 as +closepath +fp +/drawmode PL_SET def +2 sf +52832.0 159851.0 m +(:center) 61291 0.00 -1 s +5 sf +83312.0 h +4 sf +(W/) 86446 0.00 -1 s +5 sf +(2) 87857 0.00 -1 s +98552.0 h +113792.0 h +4 sf +(H/) 116613 0.00 -1 s +5 sf +(2) 118024 0.00 -1 s +( ) 118714 -16.00 32 s +2 sf +52832.0 162989.0 m +(:east) 58472 0.00 -1 s +5 sf +83312.0 h +4 sf +(W) 85662 0.00 -1 s +5 sf +98552.0 h +113792.0 h +4 sf +(H/) 116613 0.00 -1 s +5 sf +(2) 118024 0.00 -1 s +2 sf +52832.0 166127.0 m +(:north) 60512 0.00 -1 s +5 sf +83312.0 h +4 sf +(W/) 86446 0.00 -1 s +5 sf +(2) 87857 0.00 -1 s +98552.0 h +113792.0 h +(0) 115203 0.00 -1 s +( ) 115892 -17.00 32 s +2 sf +52832.0 169266.0 m +(:north\036east) 66152 0.00 -1 s +5 sf +83312.0 h +4 sf +(W) 85662 0.00 -1 s +5 sf +98552.0 h +113792.0 h +(0 ) 115892 -17.00 32 s +2 sf +52832.0 172404.0 m +(:north\036west) 66778 0.00 -1 s +5 sf +83312.0 h +(0) 84723 0.00 -1 s +98552.0 h +113792.0 h +(0 ) 115892 -17.00 32 s +2 sf +52832.0 175542.0 m +(:south) 60357 0.00 -1 s +5 sf +83312.0 h +4 sf +(W/) 86446 0.00 -1 s +5 sf +(2) 87857 0.00 -1 s +98552.0 h +113792.0 h +4 sf +(H) 115829 0.00 -1 s +5 sf +( ) 116524 -11.00 32 s +2 sf +52832.0 178681.0 m +(:south\036east) 65997 0.00 -1 s +5 sf +83312.0 h +(W) 85976 0.00 -1 s +98552.0 h +113792.0 h +(H) 115829 0.00 -1 s +2 sf +52832.0 181819.0 m +(:south\036west) 66623 0.00 -1 s +5 sf +83312.0 h +(0) 84723 0.00 -1 s +98552.0 h +113792.0 h +(H ) 116524 -11.00 32 s +2 sf +52832.0 184957.0 m +(:west) 59098 0.00 -1 s +5 sf +83312.0 h +(0) 84723 0.00 -1 s +98552.0 h +113792.0 h +(H/2) 118024 0.00 -1 s +52832.0 188095.0 m +( ) 53532 -6.00 32 s +52832.0 191234.0 m +(A) 54869 0.00 -1 s +( ) 55590 15.00 32 s +2 sf +(:static) 62953 0.00 -1 s +5 sf +( bit\036gravity indicates the contents or window should not move relative to the) 149352 15.42 32 s +52832.0 194395.0 m +(origin) 59572 0.00 -1 s +( of the root window.) 82448 -22.00 32 s +( ) 83131 -23.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03640) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(A) 54869 0.00 -1 s +( server can choose to ignore the specified bit\036gravity attribute and use ) 131984 -182.75 32 s +2 sf +(:forget) 140129 0.00 -1 s +5 sf +( instead.) 149352 -183.00 32 s +52832.0 25739.0 m +(A) 54869 0.00 -1 s +( ) 55480 -95.00 32 s +2 sf +(:forget) 63625 0.00 -1 s +5 sf +( bit\036gravity attribute indicates that the window contents are always discarded) 149352 -94.80 32 s +52832.0 28900.0 m +(after) 58000 0.00 -1 s +( a size change, even if backing\036store or save\036under attributes are ) 128320 -260.82 32 s +2 sf +(:on) 132239 0.00 -1 s +5 sf +(. The window's) 149352 -260.50 32 s +52832.0 32060.0 m +(background) 66154 0.00 -1 s +( is displayed \(unless it is ) 92938 -265.67 32 s +2 sf +(:none) 99679 0.00 -1 s +5 sf +(\), and zero or more ) 120606 -265.40 32 s +2 sf +(:exposure) 132362 0.00 -1 s +5 sf +( events are gen\036) 149352 -265.67 32 s +52832.0 35221.0 m +(erated.) 60431 0.00 -1 s +/timsps10i 4 declareFont +4 sf +52832.0 41498.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 46284.0 m +(setf) 38773 0.00 -1 s +( ) 39429 -50.00 32 s +5 sf +(\() 40368 0.00 -1 s +2 sf +(window\036border) 59022 0.00 -1 s +5 sf +(\) ) 60617 -50.00 32 s +4 sf +(window) 69398 0.00 -1 s +( border) 77735 -51.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 49445.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 52606.0 m +( border ) 62560 -24.00 32 s +5 sf +(\037 Either a ) 75577 -23.67 32 s +2 sf +(pixel) 81378 0.00 -1 s +5 sf +(, a ) 84702 -23.50 32 s +2 sf +(pixmap) 93796 0.00 -1 s +5 sf +(, or ) 98217 -23.50 32 s +2 sf +(:copy) 104800 0.00 -1 s +5 sf +(.) 105506 0.00 -1 s +52832.0 57325.0 m +(Changes) 62551 0.00 -1 s +( the ) 67125 -143.00 32 s +4 sf +(border ) 75370 -143.00 32 s +5 sf +(attribute of the ) 92260 -143.00 32 s +4 sf +(window) 101041 0.00 -1 s +5 sf +( to the specified value. This) 131520 -143.00 32 s +( operation is not) 149352 -143.67 32 s +52832.0 60486.0 m +(allowed) 61765 0.00 -1 s +( on an ) 69027 -114.00 32 s +2 sf +(:input\036only) 82510 0.00 -1 s +5 sf +( window. Changing the border) 116461 -114.00 32 s +( attribute also causes the win\036) 149352 -114.60 32 s +52832.0 63647.0 m +(dow) 57691 0.00 -1 s +( border to be repainted. Note) 88634 -300.00 32 s +( that the border of a window cannot be returned from the) 149352 -300.55 32 s +52832.0 66808.0 m +(X) 54869 0.00 -1 s +( server. The default border of) 87805 -26.00 32 s +( a new window is ) 108129 -26.60 32 s +2 sf +(:copy) 114712 0.00 -1 s +5 sf +(.) 115418 0.00 -1 s +52832.0 73084.0 m +(A) 54869 0.00 -1 s +( border pixmap is tiled to fill the border. The border pixmap tile origin is the same as) 149352 -76.00 32 s +52832.0 76245.0 m +(the) 56280 0.00 -1 s +( background tile origin. A border pixmap and the window must have the same root) 149352 -19.50 32 s +52832.0 79406.0 m +(and) 56907 0.00 -1 s +( depth. If the border is ) 83543 142.00 32 s +2 sf +(:copy) 90126 0.00 -1 s +5 sf +(, the parent's border is copied and used; subsequent) 149352 124.25 32 s +52832.0 82567.0 m +(changes) 61922 0.00 -1 s +( to the parent's border do not affect the window border.) 124223 -31.20 32 s +4 sf +52832.0 88844.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +4 sf +52832.0 93630.0 m +(border) 60514 0.00 -1 s +( ) 61192 -28.00 32 s +5 sf +(\037 Either a ) 74196 -28.00 32 s +2 sf +(pixel) 79997 0.00 -1 s +5 sf +(, a ) 83312 -28.00 32 s +2 sf +(pixmap) 92406 0.00 -1 s +5 sf +(, or) 96140 -28.00 32 s +( ) 96817 -29.00 32 s +2 sf +(:copy) 103400 0.00 -1 s +5 sf +(.) 104106 0.00 -1 s +2 sf +34544.0 98417.0 m +(window\036class) 50534 0.00 -1 s +( ) 51163 -77.00 32 s +4 sf +(window) 59944 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 101577.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 104738.0 m +( class ) 60546 -16.00 32 s +5 sf +(\037 Either ) 71643 -16.00 32 s +2 sf +(:input\036output) 87947 0.00 -1 s +5 sf +( or ) 91678 -15.50 32 s +2 sf +(:input\036only) 105161 0.00 -1 s +5 sf +(.) 105867 0.00 -1 s +52832.0 109457.0 m +(Returns) 61610 0.00 -1 s +( the ) 66422 -24.00 32 s +4 sf +(class) 72066 0.00 -1 s +5 sf +( of the) 79228 -24.00 32 s +( specified ) 90777 -24.50 32 s +4 sf +(window) 99558 0.00 -1 s +5 sf +(. ) 100945 -25.00 32 s +4 sf +52832.0 115734.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 120520.0 m +(window\036colormap) 56332 0.00 -1 s +5 sf +( ) 56898 -140.00 32 s +4 sf +(window) 65679 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 123681.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 126842.0 m +( colormap ) 65685 -27.00 32 s +5 sf +(\037 Type) 74985 -27.00 32 s +2 sf +( colormap) 87106 -27.00 32 s +5 sf +( or ) 90814 -27.00 32 s +2 sf +(null) 95520 0.00 -1 s +5 sf +(.) 96226 0.00 -1 s +( ) 96904 -28.00 32 s +52832.0 131561.0 m +(Returns) 61610 0.00 -1 s +( and) 66121 -270.00 32 s +( \(with ) 72947 -270.50 32 s +2 sf +(setf) 77176 0.00 -1 s +5 sf +(\) changes the value of the colormap attribute for the specified ) 144336 -270.55 32 s +4 sf +(win\036) 149352 0.00 -1 s +52832.0 134722.0 m +(dow) 57536 0.00 -1 s +5 sf +(.) 58242 0.00 -1 s +( A value of ) 70617 -237.00 32 s +2 sf +(:copy) 77200 0.00 -1 s +5 sf +( is never returned,) 96863 -237.00 32 s +( since the parent's colormap attribute is actually) 149352 -237.57 32 s +52832.0 137882.0 m +(copied,) 61061 0.00 -1 s +( but the attribute can be set to ) 94509 -71.00 32 s +2 sf +(:copy) 101092 0.00 -1 s +5 sf +( in a) 105810 -71.00 32 s +( ) 106444 -72.00 32 s +2 sf +(setf) 110673 0.00 -1 s +5 sf +( form. Changing the colormap of a) 149352 -71.50 32 s +52832.0 141043.0 m +(window) 61923 0.00 -1 s +( \(defining a new map, not) 89651 -254.00 32 s +( changing the contents of the existing map\) generates a) 149352 -254.56 32 s +52832.0 144204.0 m +2 sf +(:colormap\036notify) 73205 0.00 -1 s +5 sf +( event. Changing the colormap of a visible window may have no im\036) 149352 -114.00 32 s +52832.0 147365.0 m +(mediate) 61765 0.00 -1 s +( effect on the screen \(see ) 88696 -291.00 32 s +2 sf +(install\036colormap) 108446 0.00 -1 s +5 sf +(\). The default colormap of a new win\036) 149352 -290.86 32 s +52832.0 150526.0 m +(dow) 57691 0.00 -1 s +( is) 60246 -33.00 32 s +( ) 60918 -34.00 32 s +2 sf +(:copy) 67501 0.00 -1 s +5 sf +(.) 68207 0.00 -1 s +4 sf +52832.0 156803.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 161589.0 m +(window\036colormap\036installed\036p) 69970 0.00 -1 s +( ) 70535 -141.00 32 s +4 sf +(window) 79316 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 164750.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 167911.0 m +( ) 53506 -32.00 32 s +( colormap\036installed\036p ) 78678 -32.50 32 s +5 sf +(\037 Type ) 88646 -32.50 32 s +2 sf +(boolean) 98054 0.00 -1 s +5 sf +(. ) 99433 -33.00 32 s +52832.0 172630.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67249 -239.00 32 s +2 sf +(nil) 70386 0.00 -1 s +5 sf +( if the colormap associated with this ) 110174 -239.00 32 s +4 sf +(window) 118955 0.00 -1 s +5 sf +( is installed. Otherwise, this) 149352 -239.00 32 s +52832.0 175791.0 m +(function) 62236 0.00 -1 s +( returns ) 71431 -26.00 32 s +2 sf +(nil) 74568 0.00 -1 s +5 sf +(.) 75274 0.00 -1 s +4 sf +52832.0 182067.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03641) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(setf) 38773 0.00 -1 s +( ) 39442 -37.00 32 s +/timsps10 5 declareFont +5 sf +(\() 40381 0.00 -1 s +2 sf +(window\036cursor) 58564 0.00 -1 s +5 sf +(\) ) 60172 -37.00 32 s +/timsps10i 4 declareFont +4 sf +(window) 68953 0.00 -1 s +( cursor) 76990 -38.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( cursor ) 62247 -24.00 32 s +5 sf +(\037 Type ) 72233 -23.50 32 s +2 sf +(cursor ) 80752 -24.00 32 s +5 sf +(or) 83102 0.00 -1 s +2 sf +( :none) 90526 -23.00 32 s +5 sf +(. ) 91914 -24.00 32 s +52832.0 33618.0 m +(Changes) 62551 0.00 -1 s +( the ) 67211 -100.00 32 s +4 sf +(cursor) 74580 0.00 -1 s +5 sf +( attribute of the ) 92206 -99.75 32 s +4 sf +(window) 100987 0.00 -1 s +5 sf +( to the specified value. Changing the cursor) 149352 -99.57 32 s +52832.0 36779.0 m +(of) 55182 0.00 -1 s +( a root window to ) 75891 19.00 32 s +2 sf +(:none) 82632 0.00 -1 s +5 sf +( restores the default cursor. Note that the) 128687 19.00 32 s +( cursor of window) 149352 18.33 32 s +52832.0 39940.0 m +(cannot) 60355 0.00 -1 s +( be returned from the X server. The default cursor of a new window is) 139059 -26.00 32 s +( ) 139738 -27.00 32 s +2 sf +(:none) 146479 0.00 -1 s +5 sf +(.) 147185 0.00 -1 s +4 sf +52832.0 46217.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +4 sf +52832.0 51003.0 m +(cursor) 60201 0.00 -1 s +( ) 60879 -28.00 32 s +5 sf +(\037 Either ) 71952 -28.00 32 s +2 sf +(cursor) 79789 0.00 -1 s +5 sf +( or ) 83496 -27.50 32 s +2 sf +(:none) 90237 0.00 -1 s +5 sf +(.) 90943 0.00 -1 s +2 sf +34544.0 55790.0 m +(window\036display) 53516 0.00 -1 s +5 sf +( ) 54121 -101.00 32 s +4 sf +(window) 62902 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 58951.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 62111.0 m +( display ) 63036 -22.00 32 s +5 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +5 sf +(. ) 83041 -22.00 32 s +52832.0 66830.0 m +(Returns) 61610 0.00 -1 s +( the ) 66408 -31.00 32 s +2 sf +(display) 75034 0.00 -1 s +5 sf +( object associated with the specified ) 116228 -31.00 32 s +4 sf +(window) 125009 0.00 -1 s +5 sf +(. ) 126390 -31.00 32 s +4 sf +52832.0 73107.0 m +(window) 61613 0.00 -1 s +( \037 ) 65459 -37.50 32 s +5 sf +(A ) 68164 -38.00 32 s +2 sf +(window) 77571 0.00 -1 s +5 sf +(.) 78277 0.00 -1 s +2 sf +34544.0 77893.0 m +(window\036do\036not\036propagate\036mask) 73261 0.00 -1 s +( ) 73786 -181.00 32 s +4 sf +(window) 82567 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 81054.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 84215.0 m +( do\036not\036propagate\036mask ) 81469 -42.00 32 s +5 sf +(\037 Type ) 91418 -42.00 32 s +2 sf +(mask32) 100668 0.00 -1 s +5 sf +(.) 101374 0.00 -1 s +52832.0 88934.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73986 76.00 32 s +2 sf +(setf) 78215 0.00 -1 s +5 sf +(\) changes) 89026 76.00 32 s +( the do\036not\036propagate\036mask attribute for the window.) 149352 62.83 32 s +52832.0 92095.0 m +(The) 57220 0.00 -1 s +( default do\036not\036propagate\036mask of a new window is) 115350 -36.00 32 s +( zero.) 121581 -37.00 32 s +52832.0 98371.0 m +(If) 54710 0.00 -1 s +( a window receives an event from one of the user input devices, and if no client has) 149352 35.12 32 s +52832.0 101532.0 m +(selected) 61921 0.00 -1 s +( to receive the event, the event can instead be propagated up the window hierar\036) 149352 -186.50 32 s +52832.0 104693.0 m +(chy) 56907 0.00 -1 s +( to the first ancestor for) 82830 -97.00 32 s +( which some client has selected it. However, any event type) 149352 -87.80 32 s +52832.0 107854.0 m +(selected) 61921 0.00 -1 s +( by the do\036not\036propagate\036mask is not be propagated. The types of events that) 149352 69.08 32 s +52832.0 111015.0 m +(can) 56749 0.00 -1 s +( be selected by the do\036not\036propagate\036mask are those of type ) 126159 138.80 32 s +2 sf +(device\036event\036mask\036) 149352 0.00 -1 s +52832.0 114176.0 m +(class) 58476 0.00 -1 s +5 sf +(.) 59182 0.00 -1 s +( See paragraph 12.2, Selecting) 93317 -48.00 32 s +( Events.) 102345 -65.00 32 s +4 sf +52832.0 120452.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 125239.0 m +(window\036equal) 51476 0.00 -1 s +( ) 52098 -84.00 32 s +4 sf +(window\0361) 63229 0.00 -1 s +5 sf +( ) 63850 -85.00 32 s +4 sf +(window\0362) 74981 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 128400.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 131561.0 m +( ) 53499 -39.00 32 s +( ) 54165 -40.00 32 s +2 sf +(boolean) 63573 0.00 -1 s +5 sf +(.) 64279 0.00 -1 s +52832.0 136279.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67465 -23.00 32 s +2 sf +(nil) 70602 0.00 -1 s +5 sf +( if the two) 82054 -23.00 32 s +( arguments are the same window, and ) 125150 -23.57 32 s +2 sf +(nil) 128287 0.00 -1 s +5 sf +( if they are not.) 145356 -23.50 32 s +4 sf +52832.0 142556.0 m +(window\0361) 63963 0.00 -1 s +5 sf +(,) 64669 0.00 -1 s +( ) 65338 -37.00 32 s +4 sf +(window\0362 ) 77138 -37.00 32 s +5 sf +(\037 The windows to compare for) 113081 -37.00 32 s +( equality.) 123546 -38.00 32 s +2 sf +34544.0 147343.0 m +(window\036event\036mask) 58682 0.00 -1 s +5 sf +( ) 59268 -120.00 32 s +4 sf +(window) 68049 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 150503.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 153664.0 m +( ) 53510 -28.00 32 s +( event\036mask ) 67557 -28.50 32 s +5 sf +(\037 Type ) 77533 -28.50 32 s +2 sf +(mask32) 86783 0.00 -1 s +5 sf +(.) 87489 0.00 -1 s +4 sf +( ) 88166 -29.00 32 s +5 sf +52832.0 158383.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73824 22.00 32 s +2 sf +(setf) 78053 0.00 -1 s +5 sf +(\) changes the value of the) 107080 22.00 32 s +( event\036mask attribute for the ) 139865 21.40 32 s +4 sf +(window) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 161544.0 m +(The) 57220 0.00 -1 s +( default) 65731 -30.00 32 s +( event\036mask of a new window is zero.) 108306 -30.57 32 s +4 sf +52832.0 167821.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 172607.0 m +(window\036gravity) 53510 0.00 -1 s +( ) 54098 -118.00 32 s +4 sf +(window) 62879 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 175768.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 178929.0 m +( ) 53509 -29.00 32 s +4 sf +( gravity ) 62858 -28.50 32 s +5 sf +(\037 Type ) 72834 -28.50 32 s +2 sf +(win\036gravity) 86783 0.00 -1 s +5 sf +(.) 87489 0.00 -1 s +52832.0 183648.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73365 -131.00 32 s +2 sf +(setf) 77594 0.00 -1 s +5 sf +(\) changes the gravity attribute of the ) 118290 -131.00 32 s +4 sf +(window) 127071 0.00 -1 s +5 sf +(. If a parent window) 149352 -130.50 32 s +52832.0 186809.0 m +(is) 54714 0.00 -1 s +( reconfigured without changing its inside width or height, then all child windows move) 149352 -280.62 32 s +52832.0 189969.0 m +(with) 57848 0.00 -1 s +( the parent and are not changed. Otherwise, each child of the resized parent is) 149352 289.21 32 s +52832.0 193130.0 m +(moved,) 61219 0.00 -1 s +( depending on the child's gravity attribute. The default gravity of a new window) 149352 -189.54 32 s +52832.0 196291.0 m +(is) 54714 0.00 -1 s +( ) 55407 -13.00 32 s +2 sf +(:north\036west) 69353 0.00 -1 s +5 sf +(.) 70059 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03642) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(For) 56751 0.00 -1 s +( example, suppose the size) 86510 -65.00 32 s +( of the window's parent is changed by ) 129718 -65.50 32 s +/timsps10i 4 declareFont +4 sf +(W) 132068 0.00 -1 s +5 sf +( pixels in width) 149352 -65.67 32 s +52832.0 25739.0 m +(and) 56907 0.00 -1 s +( ) 57560 -53.00 32 s +4 sf +(H) 59597 0.00 -1 s +5 sf +( pixels in height. The following table) 101056 -53.00 32 s +( shows, for each possible gravity value, the) 149352 -53.57 32 s +52832.0 28900.0 m +(resulting) 62707 0.00 -1 s +( change in the window's) 89802 -123.00 32 s +( position relative to its parent's origin. When the win\036) 149352 -123.56 32 s +52832.0 32060.0 m +(dow) 57691 0.00 -1 s +( is moved, two events are generated\037a ) 104808 282.29 32 s +2 sf +(:configure\036notify) 125181 0.00 -1 s +5 sf +( event followed by a) 149352 282.50 32 s +52832.0 35221.0 m +2 sf +(:gravity\036notify) 70383 0.00 -1 s +5 sf +( event.) 77826 -81.00 32 s +2 sf +52832.0 41498.0 m +(Gravity) 62236 0.00 -1 s +83312.0 h +(X) 85349 0.00 -1 s +( Change) 95233 -72.00 32 s +98552.0 h +113792.0 h +(Y Change) 125713 -72.00 32 s +5 sf +52832.0 44636.0 m +83312.0 h +98552.0 h +113792.0 h +129032.0 h +144272.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 43811 av +149352 43811 as +149352 43929 as +52832 43929 as +closepath +fp +/drawmode PL_SET def +2 sf +52832.0 47775.0 m +(:center) 61291 0.00 -1 s +5 sf +83312.0 h +4 sf +(W/) 86446 0.00 -1 s +5 sf +(2) 87857 0.00 -1 s +98552.0 h +113792.0 h +4 sf +(H/) 116613 0.00 -1 s +5 sf +(2) 118024 0.00 -1 s +( ) 118714 -16.00 32 s +2 sf +52832.0 50913.0 m +(:east) 58472 0.00 -1 s +5 sf +83312.0 h +4 sf +(W) 85662 0.00 -1 s +5 sf +98552.0 h +113792.0 h +4 sf +(H/) 116613 0.00 -1 s +5 sf +(2) 118024 0.00 -1 s +2 sf +52832.0 54051.0 m +(:north) 60512 0.00 -1 s +5 sf +83312.0 h +4 sf +(W/) 86446 0.00 -1 s +5 sf +(2) 87857 0.00 -1 s +98552.0 h +113792.0 h +(0) 115203 0.00 -1 s +( ) 115892 -17.00 32 s +2 sf +52832.0 57190.0 m +(:north\036east) 66152 0.00 -1 s +5 sf +83312.0 h +4 sf +(W) 85662 0.00 -1 s +5 sf +98552.0 h +113792.0 h +(0 ) 115892 -17.00 32 s +2 sf +52832.0 60328.0 m +(:north\036west) 66778 0.00 -1 s +5 sf +83312.0 h +(0) 84723 0.00 -1 s +98552.0 h +113792.0 h +(0 ) 115892 -17.00 32 s +2 sf +52832.0 63466.0 m +(:south) 60357 0.00 -1 s +5 sf +83312.0 h +4 sf +(W/) 86446 0.00 -1 s +5 sf +(2) 87857 0.00 -1 s +98552.0 h +113792.0 h +4 sf +(H) 115829 0.00 -1 s +5 sf +( ) 116524 -11.00 32 s +2 sf +52832.0 66604.0 m +(:south\036east) 65997 0.00 -1 s +5 sf +83312.0 h +(W) 85976 0.00 -1 s +98552.0 h +113792.0 h +(H) 115829 0.00 -1 s +2 sf +52832.0 69743.0 m +(:south\036west) 66623 0.00 -1 s +5 sf +83312.0 h +(0) 84723 0.00 -1 s +98552.0 h +113792.0 h +(H ) 116524 -11.00 32 s +2 sf +52832.0 72881.0 m +(:west) 59098 0.00 -1 s +5 sf +83312.0 h +(0) 84723 0.00 -1 s +98552.0 h +113792.0 h +(H/2) 118024 0.00 -1 s +52832.0 76019.0 m +( ) 53532 -6.00 32 s +52832.0 79158.0 m +(A) 54869 0.00 -1 s +( ) 55539 -36.00 32 s +2 sf +(:static) 62902 0.00 -1 s +5 sf +( gravity indicates that the) 91286 -36.00 32 s +( position of the window should not move relative to) 149352 -36.56 32 s +52832.0 82319.0 m +(the) 56280 0.00 -1 s +( origin of the root window.) 86580 -22.00 32 s +( ) 87263 -23.00 32 s +52832.0 88595.0 m +(An) 56280 0.00 -1 s +( ) 57055 69.00 32 s +2 sf +(:unmap) 66462 0.00 -1 s +5 sf +( gravity is like ) 83669 69.00 32 s +2 sf +(:north\036west) 97615 0.00 -1 s +5 sf +(, except the window is also unmapped and an) 149352 69.50 32 s +52832.0 91756.0 m +2 sf +(:unmap\036notify) 70231 0.00 -1 s +5 sf +( event is generated. This ) 99646 240.00 32 s +2 sf +(:unmap\036notify) 117045 0.00 -1 s +5 sf +( event is generated after) 144959 240.00 32 s +( the) 149352 239.00 32 s +52832.0 94917.0 m +2 sf +(:configure\036notify) 73205 0.00 -1 s +5 sf +( event is generated for the parent.) 110676 -36.83 32 s +4 sf +52832.0 101194.0 m +(window ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 105980.0 m +(window\036id) 47243 0.00 -1 s +( ) 47867 -82.00 32 s +4 sf +(window) 56648 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 109141.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 112302.0 m +( ) 54180 -32.00 32 s +5 sf +(The ) 59242 -32.00 32 s +2 sf +(resource\036id) 72877 0.00 -1 s +5 sf +( of the window.) 90492 -32.67 32 s +52832.0 117021.0 m +(Returns) 61610 0.00 -1 s +( the unique ID assigned to ) 91661 -34.00 32 s +4 sf +(window) 100442 0.00 -1 s +5 sf +(.) 101148 0.00 -1 s +4 sf +52832.0 123297.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 128084.0 m +(window\036map\036state) 56799 0.00 -1 s +( ) 57417 -88.00 32 s +4 sf +(window) 66198 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 131245.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 134406.0 m +( map\036state ) 65979 -33.00 32 s +5 sf +(\037 One of ) 77872 -32.67 32 s +2 sf +(:unmapped) 91670 0.00 -1 s +5 sf +(,) 92376 0.00 -1 s +2 sf +( :unviewable) 107628 -33.00 32 s +5 sf +(,) 108334 0.00 -1 s +2 sf +( ) 109008 -32.00 32 s +5 sf +(or) 111358 0.00 -1 s +2 sf +( :viewable) 123472 -33.00 32 s +5 sf +(.) 124178 0.00 -1 s +52832.0 139124.0 m +(Returns) 61610 0.00 -1 s +( the map state of ) 81161 38.40 32 s +4 sf +(window) 89942 0.00 -1 s +5 sf +(. A window is ) 106636 38.50 32 s +2 sf +(:unviewable) 121215 0.00 -1 s +5 sf +( if it is mapped but some) 149352 38.50 32 s +52832.0 142285.0 m +(ancestor) 62234 0.00 -1 s +( is) 64763 -59.00 32 s +( unmapped.) 77871 -60.00 32 s +4 sf +52832.0 148562.0 m +(window) 61613 0.00 -1 s +( ) 62290 -29.00 32 s +5 sf +(\037 A ) 68503 -29.00 32 s +2 sf +(window) 77910 0.00 -1 s +5 sf +(.) 78616 0.00 -1 s +/timsps8 9 declareFont +9 sf +( ) 79158 -24.00 32 s +2 sf +34544.0 153348.0 m +(window\036override\036redirect) 65573 0.00 -1 s +( ) 66087 -192.00 32 s +4 sf +(window) 74868 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 156509.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 159670.0 m +( override\036redirect ) 74343 -13.67 32 s +5 sf +(\037 Either ) 85445 -13.50 32 s +2 sf +(:on) 89364 0.00 -1 s +5 sf +( or ) 93099 -13.50 32 s +2 sf +(:off) 97327 0.00 -1 s +5 sf +(.) 98033 0.00 -1 s +52832.0 164389.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73380 -126.00 32 s +2 sf +(setf) 77609 0.00 -1 s +5 sf +(\) changes the value of the override\036redirect attribute for ) 139865 -125.89 32 s +4 sf +(window) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 167550.0 m +(The) 57220 0.00 -1 s +( default override\036redirect of a new window is ) 108745 -23.88 32 s +2 sf +(:off) 112973 0.00 -1 s +5 sf +(.) 113679 0.00 -1 s +52832.0 173826.0 m +(The) 57220 0.00 -1 s +( override\036redirect attribute determines whether or not) 117540 50.00 32 s +( attempts to change window) 149352 37.00 32 s +52832.0 176987.0 m +(geometry) 63489 0.00 -1 s +( or parent hierarchy can be ) 92975 -231.00 32 s +4 sf +(redirected) 104573 0.00 -1 s +5 sf +( by a window manager or some other cli\036) 149352 -201.88 32 s +52832.0 180148.0 m +(ent.) 56986 0.00 -1 s +( The functions) 72730 -279.00 32 s +( that might be affected by the override\036redirect attribute are ) 137914 -251.60 32 s +2 sf +(circulate\036) 149352 0.00 -1 s +52832.0 183309.0 m +(window\036down) 69764 0.00 -1 s +5 sf +(,) 70470 0.00 -1 s +( ) 71977 801.00 32 s +2 sf +(circulate\036window\036up) 96899 0.00 -1 s +5 sf +(, ) 98311 0.00 32 s +2 sf +(drawable\036border\036width) 126682 0.00 -1 s +5 sf +(, ) 128895 801.00 32 s +2 sf +(drawable\036height) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 186470.0 m +2 sf +(drawable\036width) 71956 0.00 -1 s +5 sf +(,) 72662 0.00 -1 s +( ) 73265 -103.00 32 s +2 sf +(drawable\036x) 86902 0.00 -1 s +5 sf +(, ) 88314 0.00 32 s +2 sf +(drawable\036y) 101951 0.00 -1 s +5 sf +(, ) 103260 -103.00 32 s +2 sf +(map\036window) 118936 0.00 -1 s +5 sf +(, and) 124320 -103.00 32 s +( ) 124922 -104.00 32 s +2 sf +(window\036priority) 144672 0.00 -1 s +5 sf +(.) 145378 0.00 -1 s +4 sf +52832.0 192746.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03643) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(window\036p) 46459 0.00 -1 s +( ) 47087 -78.00 32 s +/timsps10i 4 declareFont +4 sf +(object) 53983 0.00 -1 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( window\036p ) 65970 -37.00 32 s +5 sf +(\037 Type ) 75930 -36.50 32 s +2 sf +(boolean) 85338 0.00 -1 s +5 sf +(.) 86044 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67468 -20.00 32 s +2 sf +(nil ) 71291 -20.00 32 s +5 sf +(if the ) 77834 -20.00 32 s +4 sf +(object) 84730 0.00 -1 s +5 sf +( argument is a window; otherwise, it returns ) 134965 -19.88 32 s +2 sf +(nil) 138102 0.00 -1 s +5 sf +(.) 138808 0.00 -1 s +2 sf +34544.0 39895.0 m +(window\036plist) 50064 0.00 -1 s +( ) 50711 -59.00 32 s +4 sf +(window) 59492 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 43056.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 46217.0 m +( plist ) 59793 -6.00 32 s +5 sf +(\037 A property list.) 80467 -6.00 32 s +52832.0 50935.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 72996 -254.00 32 s +2 sf +(setf) 77225 0.00 -1 s +5 sf +(\) sets the) 86749 -254.00 32 s +( property list for the specified ) 119390 -254.50 32 s +4 sf +(window) 128171 0.00 -1 s +5 sf +(. This function pro\036) 149352 -254.67 32 s +52832.0 54096.0 m +(vides) 58789 0.00 -1 s +( a hook) 67014 -42.00 32 s +( where extensions can hang data.) 103948 -42.60 32 s +4 sf +52832.0 60373.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 65159.0 m +(setf) 38773 0.00 -1 s +( ) 39445 -34.00 32 s +5 sf +(\() 40384 0.00 -1 s +2 sf +(window\036priority) 60134 0.00 -1 s +5 sf +( ) 60806 -34.00 32 s +4 sf +(window) 69587 0.00 -1 s +5 sf +(\) \(&optional ) 84253 -34.00 32 s +4 sf +(sibling) 91936 0.00 -1 s +5 sf +(\)) 92875 0.00 -1 s +( ) 93546 -35.00 32 s +4 sf +(mode) 99658 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 68320.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 71481.0 m +( mode ) 61002 -20.00 32 s +5 sf +(\037 One of ) 72933 -20.00 32 s +2 sf +(:above) 80927 0.00 -1 s +5 sf +(, ) 82319 -20.00 32 s +2 sf +(:below) 90312 0.00 -1 s +5 sf +(, ) 91704 -20.00 32 s +2 sf +(:bottom\036if) 103924 0.00 -1 s +5 sf +(,) 104630 0.00 -1 s +2 sf +( :opposite) 116289 -20.00 32 s +5 sf +(,) 116995 0.00 -1 s +2 sf +( ) 117681 -20.00 32 s +5 sf +(or) 120031 0.00 -1 s +( ) 120716 -21.00 32 s +2 sf +(:top\036if) 128236 0.00 -1 s +5 sf +(.) 128942 0.00 -1 s +52832.0 76200.0 m +(Changes) 62551 0.00 -1 s +( the stacking priority element of the ) 102133 -201.00 32 s +4 sf +(window) 110914 0.00 -1 s +5 sf +( to the specified value. It is an error) 149352 -200.88 32 s +52832.0 79361.0 m +(if) 54555 0.00 -1 s +( the ) 59027 -194.00 32 s +4 sf +(sibling) 66710 0.00 -1 s +5 sf +( argument is specified and is not actually a sibling of the window. Note that) 149352 -193.64 32 s +52832.0 82522.0 m +(the) 56280 0.00 -1 s +( priority of an existing window cannot be returned from the X server.) 134112 -25.00 32 s +52832.0 88798.0 m +(When) 59571 0.00 -1 s +( changing the priority of a) 87515 -289.00 32 s +( window, if the override\036redirect attribute of the window) 149352 -253.38 32 s +52832.0 91959.0 m +(is) 54714 0.00 -1 s +( ) 55248 -172.00 32 s +2 sf +(:off) 59476 0.00 -1 s +5 sf +( and some other client has selected :substructure\036redirect on the parent, a :config\036) 149352 -157.42 32 s +52832.0 95120.0 m +(ure\036request) 65523 0.00 -1 s +( event is generated, and no further processing is performed. Otherwise, the) 149352 -30.55 32 s +52832.0 98281.0 m +(priority is) 63883 0.00 32 s +( changed.) 74620 -78.00 32 s +4 sf +52832.0 104558.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +4 sf +52832.0 109344.0 m +(sibling) 60515 0.00 -1 s +( ) 60927 -294.00 32 s +5 sf +(\037 An optional argument specifying that ) 105562 -294.00 32 s +4 sf +(window) 114343 0.00 -1 s +5 sf +( is to be restacked relative to this) 149352 -294.57 32 s +57912.0 112505.0 m +(sibling) 65595 0.00 -1 s +( ) 66245 -56.00 32 s +2 sf +(window) 75652 0.00 -1 s +5 sf +(.) 76358 0.00 -1 s +4 sf +52832.0 117292.0 m +(mode) 58944 0.00 -1 s +( ) 59627 -23.00 32 s +5 sf +(\037 One of ) 71549 -23.00 32 s +2 sf +(:above) 79543 0.00 -1 s +5 sf +(, ) 80932 -23.00 32 s +2 sf +(:below) 88925 0.00 -1 s +5 sf +(, ) 90314 -23.00 32 s +2 sf +(:bottom\036if) 102534 0.00 -1 s +5 sf +(,) 103240 0.00 -1 s +2 sf +( :opposite) 114895 -24.00 32 s +5 sf +(,) 115601 0.00 -1 s +2 sf +( ) 116284 -23.00 32 s +5 sf +(or ) 119316 -24.00 32 s +2 sf +(:top\036if) 126836 0.00 -1 s +5 sf +(.) 127542 0.00 -1 s +2 sf +34544.0 122078.0 m +(window\036save\036under) 58215 0.00 -1 s +/courps8 8 declareFont +8 sf +( ) 59426 -146.00 32 s +4 sf +(window) 68207 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 125239.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 128400.0 m +( save\036under) 66752 -15.00 32 s +( ) 67442 -16.00 32 s +5 sf +(\037 Either ) 78540 -15.50 32 s +2 sf +(:on ) 83150 -15.00 32 s +5 sf +(or ) 86190 -16.00 32 s +2 sf +(:off) 90418 0.00 -1 s +5 sf +(.) 91124 0.00 -1 s +52832.0 133119.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73806 16.00 32 s +2 sf +(setf) 78035 0.00 -1 s +5 sf +(\) changes the value of the save\036under attribute for the specified) 149352 16.50 32 s +52832.0 136279.0 m +4 sf +(window) 61613 0.00 -1 s +5 sf +(.) 62319 0.00 -1 s +( Changing the save\036under) 90779 -153.00 32 s +( attribute of a mapped window may have no immedi\036) 149352 -153.56 32 s +52832.0 139440.0 m +(ate) 56122 0.00 -1 s +( effect.) 63918 -37.00 32 s +4 sf +52832.0 145717.0 m +(window ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 150503.0 m +(window\036visual) 51947 0.00 -1 s +( ) 52563 -90.00 32 s +4 sf +(window) 61344 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 153664.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 156825.0 m +( visual\036type ) 67226 -35.00 32 s +5 sf +(\037 Type) 76518 -35.00 32 s +( ) 77188 -36.00 32 s +2 sf +(card29) 85496 0.00 -1 s +5 sf +(.) 86202 0.00 -1 s +52832.0 161544.0 m +(Returns) 61610 0.00 -1 s +( the ) 66402 -34.00 32 s +4 sf +(visual\036type) 78783 0.00 -1 s +5 sf +( associated with the specified ) 112388 -34.60 32 s +4 sf +(window) 121169 0.00 -1 s +5 sf +(.) 121875 0.00 -1 s +4 sf +52832.0 167821.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 172607.0 m +(with\036state) 46452 0.00 -1 s +( ) 47108 -50.00 32 s +4 sf +(drawable ) 58426 -49.00 32 s +5 sf +(&body) 66265 0.00 -1 s +4 sf +( body) 72407 -50.00 32 s +2 sf +142014.0 h +5 sf +(Macro) 149379 0.00 -1 s +2 sf +5 sf +52832.0 178816.0 m +(Batches) 61766 0.00 -1 s +( successive read and write accesses to window attributes and drawable geome\036) 149352 -94.91 32 s +52832.0 181977.0 m +(try,) 56672 0.00 -1 s +( in order to minimize the number of requests sent to the server. Batching occurs auto\036) 149352 -247.80 32 s +52832.0 185138.0 m +(matically) 63333 0.00 -1 s +( within the dynamic extent of the ) 102970 232.00 32 s +4 sf +(body) 108456 0.00 -1 s +5 sf +(. The ) 115194 116.00 32 s +4 sf +(body) 120680 0.00 -1 s +5 sf +( is not executed within a) 149352 232.20 32 s +52832.0 188299.0 m +2 sf +(with\036display) 67726 0.00 -1 s +5 sf +( form.) 74597 -25.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03644) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(All) 56437 0.00 -1 s +( window attributes can be returned or changed in a single request. Similarly, all) 149352 256.62 32 s +52832.0 25739.0 m +(drawable) 63173 0.00 -1 s +( geometry values can be returned or changed in a single request. ) 137444 96.08 32 s +2 sf +(with\036state) 149352 0.00 -1 s +5 sf +52832.0 28900.0 m +(combines) 63648 0.00 -1 s +( accesses to these values into the minimum number of server requests) 141495 -55.00 32 s +( neces\036) 149352 -56.00 32 s +52832.0 32060.0 m +(sary) 57533 0.00 -1 s +( to guarantee that each read access returns the current server state of the) 137372 -84.92 32 s +( ) 137985 -93.00 32 s +/timsps10i 4 declareFont +4 sf +(drawable) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 35221.0 m +(The) 57220 0.00 -1 s +( number of server requests sent depends on the sequence of calls to reader and) 149352 277.93 32 s +52832.0 38382.0 m +2 sf +(setf) 57061 0.00 -1 s +5 sf +( functions) 68269 0.00 32 s +( within the dynamic extent of the) 103974 -267.00 32 s +( ) 104412 -268.00 32 s +4 sf +(body) 109898 0.00 -1 s +5 sf +(. There are two groups of reader and) 149352 -229.29 32 s +52832.0 41543.0 m +2 sf +(setf) 57061 0.00 -1 s +5 sf +( functions\037the Window) 84975 6.00 32 s +( Attributes group and the Drawable Geometry group\037as) 149352 5.43 32 s +52832.0 44704.0 m +(shown) 60200 0.00 -1 s +( in Table 4\0361.) 75297 -36.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03645) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +20320.0 22578.0 m +52832.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 5 declareFont +5 17 fillpatset +newpath +53008 21753 av +149352 21753 as +149352 21988 as +53008 21988 as +closepath +fp +/drawmode PL_SET def +20320.0 25400.0 m +(Table) 27219 0.00 -1 s +( 4\0361) 31631 -55.00 32 s +52832.0 h +(Groups) 61927 0.00 -1 s +( of Reader and Setf Functions) 97536 -42.40 32 s +20320.0 28222.0 m +52832.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +53008 27397 av +149352 27397 as +149352 27632 as +53008 27632 as +closepath +fp +/drawmode PL_SET def +52832.0 31044.0 m +(Group) 60829 0.00 -1 s +69088.0 h +(Reader) 77864 0.00 -1 s +( Functions) 90379 -107.00 32 s +105664.0 h +(Setf) 110364 0.00 -1 s +( Functions) 122936 -50.00 32 s +52832.0 34205.0 m +69088.0 h +105664.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 33380 av +149352 33380 as +149352 33615 as +52832 33615 as +closepath +fp +/drawmode PL_SET def +5 sf +52832.0 37366.0 m +(Window) 62550 0.00 -1 s +( ) 63218 -38.00 32 s +2 sf +69088.0 h +(window\036all\036event\036masks) 98242 0.00 -1 s +105664.0 h +(window\036background) 130594 0.00 -1 s +5 sf +52832.0 40527.0 m +(Attributes) 64117 0.00 -1 s +2 sf +69088.0 h +(window\036backing\036pixel) 95740 0.00 -1 s +105664.0 h +(window\036backing\036pixel) 132316 0.00 -1 s +52832.0 43688.0 m +69088.0 h +(window\036backing\036planes) 97623 0.00 -1 s +105664.0 h +(window\036backing\036planes) 134199 0.00 -1 s +52832.0 46849.0 m +69088.0 h +(window\036backing\036store) 95893 0.00 -1 s +105664.0 h +(window\036backing\036store) 132469 0.00 -1 s +52832.0 50010.0 m +69088.0 h +(window\036bit\036gravity) 92285 0.00 -1 s +105664.0 h +(window\036bit\036gravity) 128861 0.00 -1 s +52832.0 53171.0 m +69088.0 h +(window\036class) 85078 0.00 -1 s +105664.0 h +(window\036border) 124318 0.00 -1 s +52832.0 56332.0 m +69088.0 h +(window\036colormap) 90876 0.00 -1 s +105664.0 h +(window\036colormap) 127452 0.00 -1 s +52832.0 59492.0 m +69088.0 h +(window\036colormap\036) 91815 0.00 -1 s +105664.0 h +(window\036cursor) 123847 0.00 -1 s +52832.0 62653.0 m +69088.0 h +( installed\036p) 82477 -16.00 32 s +105664.0 h +(window\036do\036not\036propagate\036mask) 144381 0.00 -1 s +149352.0 h +52832.0 65814.0 m +69088.0 h +(window\036do\036not\036) 88211 0.00 -1 s +105664.0 h +(window\036event\036mask) 129802 0.00 -1 s +52832.0 68975.0 m +69088.0 h +( propagate\036mask) 89295 -93.00 32 s +105664.0 h +(window\036gravity) 124630 0.00 -1 s +52832.0 72136.0 m +69088.0 h +(window\036event\036mask) 93226 0.00 -1 s +105664.0 h +(window\036override\036redirect) 136693 0.00 -1 s +52832.0 75297.0 m +69088.0 h +(window\036gravity) 88054 0.00 -1 s +105664.0 h +(window\036save\036under) 129335 0.00 -1 s +52832.0 78458.0 m +69088.0 h +(window\036map\036state) 91343 0.00 -1 s +105664.0 h +52832.0 81619.0 m +69088.0 h +(window\036override\036redirect) 100117 0.00 -1 s +105664.0 h +52832.0 84780.0 m +69088.0 h +(window\036save\036under) 92759 0.00 -1 s +52832.0 87940.0 m +69088.0 h +(window\036visual) 86491 0.00 -1 s +( ) 87171 -26.00 32 s +( ) 87850 -27.00 32 s +52832.0 91101.0 m +69088.0 h +5 sf +52832.0 94262.0 m +(Drawable) 63799 0.00 -1 s +2 sf +69088.0 h +(drawable\036border\036width) 97459 0.00 -1 s +105664.0 h +(drawable\036border\036width) 134035 0.00 -1 s +5 sf +52832.0 97423.0 m +(Geometry) 64115 0.00 -1 s +2 sf +69088.0 h +(drawable\036depth) 88213 0.00 -1 s +105664.0 h +(drawable\036height) 125415 0.00 -1 s +52832.0 100584.0 m +69088.0 h +(drawable\036height) 88839 0.00 -1 s +105664.0 h +(drawable\036width) 124788 0.00 -1 s +52832.0 103745.0 m +69088.0 h +(drawable\036root) 86328 0.00 -1 s +105664.0 h +(drawable\036x) 119301 0.00 -1 s +52832.0 106906.0 m +69088.0 h +(drawable\036width) 88212 0.00 -1 s +105664.0 h +(drawable\036y) 119301 0.00 -1 s +52832.0 110067.0 m +69088.0 h +(drawable\036x) 82725 0.00 -1 s +105664.0 h +(window\036priority) 125414 0.00 -1 s +52832.0 113228.0 m +69088.0 h +(drawable\036y) 82725 0.00 -1 s +5 sf +52832.0 116388.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 115563 av +149352 115563 as +149352 115681 as +52832 115681 as +closepath +fp +/drawmode PL_SET def +52832.0 122597.0 m +(The) 57220 0.00 -1 s +( results from a sequence of calls to ) 94696 -292.00 32 s +2 sf +(setf) 98925 0.00 -1 s +5 sf +( functions in a given group are) 131657 -292.00 32 s +( cached and sent) 149352 -292.67 32 s +52832.0 125758.0 m +(in) 55027 0.00 -1 s +( a single server request, either upon exit from the ) 109134 -192.70 32 s +/timsps10i 4 declareFont +4 sf +(body) 114620 0.00 -1 s +5 sf +( or when a reader function from) 149352 -192.50 32 s +52832.0 128919.0 m +(the) 56280 0.00 -1 s +( corresponding group is called.) 90988 -42.00 32 s +2 sf +52832.0 135196.0 m +(with\036state) 64740 0.00 -1 s +5 sf +( sends a single request to) 91974 -181.00 32 s +( update all its cached values for the ) 130961 -181.50 32 s +4 sf +(drawable) 141622 0.00 -1 s +5 sf +( before) 149352 -182.00 32 s +52832.0 138357.0 m +(the) 56280 0.00 -1 s +( first call to a reader function within the ) 100389 -158.00 32 s +4 sf +(body) 105875 0.00 -1 s +5 sf +( and also before the first call) 137214 -131.67 32 s +( to a reader) 149352 -158.67 32 s +52832.0 141518.0 m +(function) 62236 0.00 -1 s +( following a sequence of calls to ) 98686 -111.00 32 s +2 sf +(setf) 102915 0.00 -1 s +5 sf +( functions from the corresponding group. ) 149352 -110.83 32 s +4 sf +52832.0 147794.0 m +(drawable) 63493 0.00 -1 s +( ) 64165 -34.00 32 s +5 sf +(\037 A ) 70368 -34.00 32 s +2 sf +(display) 78994 0.00 -1 s +5 sf +(.) 79700 0.00 -1 s +4 sf +52832.0 152581.0 m +(body) 58318 0.00 -1 s +( ) 58994 -30.00 32 s +5 sf +(\037 The forms in which attributes accesses are batched.) 120272 -30.00 32 s +20320.0 158090.0 m +541.0 sw +0.0 0.0 m +newpath +20455 156466 av +148878 156464 as +[] 0 setdash +dp +149352.0 158090.0 m +/timsps12b 6 declareFont +6 sf +20320.0 161476.0 m +(Stacking) 32926 0.00 -1 s +( Order) 42830 31.00 32 s +52832.0 h +2 sf +(4.4) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(Sibling) 66709 0.00 -1 s +( windows can ) 83014 27.00 32 s +4 sf +(stack) 88813 0.00 -1 s +5 sf +( on top of each other. Windows above can ) 137334 27.00 32 s +4 sf +(obscure) 146269 0.00 -1 s +5 sf +( or) 149352 27.00 32 s +52832.0 164637.0 m +4 sf +(occlude) 61608 0.00 -1 s +5 sf +( lower windows. This relationship between sibling windows is known as the) 149352 153.00 32 s +52832.0 167798.0 m +(stacking) 62237 0.00 -1 s +( order. The ) 74826 -192.00 32 s +2 sf +(window\036priority) 94576 0.00 -1 s +5 sf +( function can be used to change the stacking) 142886 -192.00 32 s +( order) 149352 -193.00 32 s +52832.0 170959.0 m +(of) 55182 0.00 -1 s +( a single) 64114 -237.00 32 s +( window. CLX also provides functions to raise or lower children of a window.) 149352 -237.54 32 s +52832.0 174120.0 m +(Raising) 61455 0.00 -1 s +( a mapped window can generate ) 100309 311.00 32 s +2 sf +(:exposure) 112065 0.00 -1 s +5 sf +( events) 120292 311.00 32 s +( for the window and any) 149352 310.40 32 s +52832.0 177281.0 m +(mapped) 61766 0.00 -1 s +( subwindows that were formerly obscured. Lowering a mapped window can) 149352 177.40 32 s +52832.0 180442.0 m +(generate) 62389 0.00 -1 s +( ) 63055 -40.00 32 s +2 sf +(:exposure) 74811 0.00 -1 s +5 sf +( events on any windows it formerly obscured.) 126097 -40.57 32 s +2 sf +34544.0 186718.0 m +(circulate\036window\036down) 62914 0.00 -1 s +( ) 63468 -152.00 32 s +4 sf +(window) 72249 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 191437.0 m +(Lowers) 61294 0.00 -1 s +( the highest mapped child of the specified ) 109183 10.00 32 s +4 sf +(window) 117964 0.00 -1 s +5 sf +( that partially or completely) 149352 10.00 32 s +52832.0 194598.0 m +(occludes) 62706 0.00 -1 s +( another child to the bottom of the stack. Completely unobscured children are) 149352 -61.75 32 s +52832.0 197759.0 m +(unaffected.) 65445 0.00 -1 s +( Exposure processing is performed on formerly obscured windows.) 140908 -40.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03646) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(If) 54710 0.00 -1 s +( some other client has selected ) 89721 -16.67 32 s +2 sf +(:substructure\036redirect) 116518 0.00 -1 s +5 sf +( on the ) 124856 -16.67 32 s +/timsps10i 4 declareFont +4 sf +(window) 133637 0.00 -1 s +5 sf +(, a ) 136975 -16.50 32 s +2 sf +(:circulate\036) 149352 0.00 -1 s +52832.0 25739.0 m +(request) 61766 0.00 -1 s +5 sf +( event is generated, and no further processing is performed. Otherwise, the child) 149352 -244.00 32 s +52832.0 28900.0 m +(window) 61923 0.00 -1 s +( is lowered and a ) 81286 -93.00 32 s +2 sf +(:circulate\036notify) 100716 0.00 -1 s +5 sf +( event is generated if the ) 128529 -92.67 32 s +4 sf +(window) 137310 0.00 -1 s +5 sf +( is actually) 149352 -92.50 32 s +52832.0 32060.0 m +(restacked.) 64193 0.00 -1 s +4 sf +52832.0 38337.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 43124.0 m +(circulate\036window\036up) 59466 0.00 -1 s +( ) 60036 -136.00 32 s +4 sf +(window) 68817 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 47842.0 m +(Raises) 60200 0.00 -1 s +( the lowest mapped child of the) 95356 -45.00 32 s +( specified ) 106863 -45.50 32 s +4 sf +(window) 115644 0.00 -1 s +5 sf +( that is partially or completely) 149352 -45.60 32 s +52832.0 51003.0 m +(occluded) 63019 0.00 -1 s +( by another child to the top of the stack. Completely unobscured children are) 149352 -14.77 32 s +52832.0 54164.0 m +(unaffected.) 65445 0.00 -1 s +( Exposure processing is performed on formerly obscured windows.) 140908 -40.00 32 s +52832.0 60441.0 m +(If) 54710 0.00 -1 s +( another client has selected ) 86007 37.00 32 s +2 sf +(:substructure\036redirect) 112804 0.00 -1 s +5 sf +( on the ) 121303 37.00 32 s +4 sf +(window) 130084 0.00 -1 s +5 sf +(, a ) 133530 37.50 32 s +2 sf +(:circulate\036re\036) 149352 0.00 -1 s +52832.0 63602.0 m +(quest) 59260 0.00 -1 s +5 sf +( event is generated, and no further processing is performed.) 125948 -35.00 32 s +( Otherwise, the child) 149352 -35.67 32 s +52832.0 66762.0 m +(window) 61923 0.00 -1 s +( is raised and a ) 78046 -271.00 32 s +2 sf +(:circulate\036notify) 97476 0.00 -1 s +5 sf +( event is generated if the ) 124221 -270.67 32 s +4 sf +(window) 133002 0.00 -1 s +5 sf +( is actually res\036) 149352 -270.67 32 s +52832.0 69923.0 m +(tacked.) 60903 0.00 -1 s +4 sf +52832.0 76200.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +20320.0 81709.0 m +0.0 0.0 m +newpath +20455 80085 av +148878 80083 as +[] 0 setdash +dp +149352.0 81709.0 m +/timsps12b 6 declareFont +6 sf +20320.0 85096.0 m +(Window) 32552 0.00 -1 s +( ) 33393 -6.00 32 s +52832.0 h +2 sf +(4.5) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(All) 62160 0.00 -1 s +( the windows in X are) 91809 961.00 32 s +( arranged in a strict hierarchy. At the top of) 149352 960.44 32 s +2 sf +6 sf +20320.0 88482.0 m +(Hierarchy) 35176 0.00 -1 s +52832.0 h +5 sf +(the) 56280 0.00 -1 s +( hierarchy are the root windows, which cover the display screens. Each root window) 149352 -164.92 32 s +52832.0 91643.0 m +(is) 54714 0.00 -1 s +( partially or completely covered by its child windows. All windows, except for root) 149352 39.38 32 s +52832.0 94804.0 m +(windows,) 63727 0.00 -1 s +( have parents. Child windows can have their own children. In this way,) 140304 -300.00 32 s +( a tree of) 149352 -300.67 32 s +52832.0 97965.0 m +(arbitrary) 62545 0.00 -1 s +( depth on each screen can be created. CLX provides several functions for exam\036) 149352 -266.69 32 s +52832.0 101126.0 m +(ining) 58633 0.00 -1 s +( and modifying the window) 89648 -45.00 32 s +( hierarchy.) 101668 -46.00 32 s +2 sf +34544.0 107402.0 m +(drawable\036root) 51784 0.00 -1 s +( ) 52354 -136.00 32 s +4 sf +(drawable) 63015 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 110563.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 113724.0 m +( root\036window ) 69293 -27.00 32 s +5 sf +(\037 Type ) 79272 -27.00 32 s +2 sf +(window) 88679 0.00 -1 s +5 sf +(.) 89385 0.00 -1 s +4 sf +( ) 90063 -28.00 32 s +5 sf +52832.0 118443.0 m +(Returns) 61610 0.00 -1 s +( the root) 70953 -31.00 32 s +( window of the specified ) 99400 -31.60 32 s +4 sf +(drawable) 110061 0.00 -1 s +5 sf +(.) 110767 0.00 -1 s +4 sf +52832.0 124720.0 m +(drawable) 63493 0.00 -1 s +( ) 64151 -48.00 32 s +5 sf +(\037 A ) 70326 -48.00 32 s +2 sf +(drawable) 81613 0.00 -1 s +5 sf +(.) 82319 0.00 -1 s +2 sf +34544.0 129506.0 m +(query\036tree) 47236 0.00 -1 s +( ) 47908 -34.00 32 s +4 sf +(window ) 57361 -34.00 32 s +5 sf +(&key \() 65243 -33.00 32 s +2 sf +(:result\036type) 79189 0.00 -1 s +5 sf +( ) 79861 -34.00 32 s +2 sf +(`list) 84405 0.00 -1 s +5 sf +(\)) 85344 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 132667.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 135828.0 m +54864.0 h +(children) 64269 0.00 -1 s +( ) 64931 -44.00 32 s +5 sf +(\037 Type) 74214 -44.00 32 s +( ) 74875 -45.00 32 s +2 sf +(sequence) 85692 0.00 -1 s +5 sf +( of ) 89365 -44.50 32 s +2 sf +(window) 98772 0.00 -1 s +5 sf +(.) 99478 0.00 -1 s +4 sf +52832.0 138989.0 m +54864.0 h +(parent) 62232 0.00 -1 s +( \037 ) 66089 -32.00 32 s +5 sf +(Type ) 72562 -32.00 32 s +2 sf +(window) 81969 0.00 -1 s +5 sf +( or ) 85667 -32.00 32 s +2 sf +(null) 90373 0.00 -1 s +5 sf +(.) 91079 0.00 -1 s +4 sf +52832.0 142150.0 m +54864.0 h +(root) 59568 0.00 -1 s +( ) 60245 -29.00 32 s +5 sf +(\037 Type ) 70220 -29.00 32 s +2 sf +(window) 79627 0.00 -1 s +5 sf +(.) 80333 0.00 -1 s +4 sf +( ) 81009 -30.00 32 s +5 sf +52832.0 146868.0 m +(Returns) 61610 0.00 -1 s +( the ) 66380 -45.00 32 s +4 sf +(children) 75785 0.00 -1 s +5 sf +( windows, the) 91450 -45.00 32 s +( ) 92110 -46.00 32 s +4 sf +(parent) 99478 0.00 -1 s +5 sf +( window, and the ) 119440 -45.50 32 s +4 sf +(root) 124144 0.00 -1 s +5 sf +( window for the speci\036) 149352 -45.50 32 s +52832.0 150029.0 m +(fied) 57219 0.00 -1 s +( ) 57705 -220.00 32 s +4 sf +(window) 66486 0.00 -1 s +5 sf +(. The children are returned as a sequence of) 113857 -220.00 32 s +( windows in current stacking or\036) 149352 -220.60 32 s +52832.0 153190.0 m +(der,) 57141 0.00 -1 s +( from bottom\036most \(first\)) 85543 -15.00 32 s +( to top\036most \(last\). The ) 112114 -15.60 32 s +2 sf +(:result\036type) 126060 0.00 -1 s +5 sf +( specifies the type of) 149352 -15.50 32 s +52832.0 156351.0 m +(children) 62078 0.00 -1 s +( sequence returned.) 83786 -77.00 32 s +4 sf +52832.0 162628.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +52832.0 167414.0 m +(:result\036type) 66778 0.00 -1 s +( ) 67424 -60.00 32 s +5 sf +(\037 A valid type specifier for a sub\036type of ) 114928 -59.44 32 s +2 sf +(sequence) 125745 0.00 -1 s +5 sf +(. The default is a ) 145041 -59.60 32 s +2 sf +(list) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +2 sf +34544.0 173691.0 m +(reparent\036window) 55390 0.00 -1 s +( ) 56042 -54.00 32 s +4 sf +(window parent x) 74748 -54.00 32 s +5 sf +( ) 75399 -55.00 32 s +4 sf +(y) 76652 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 178410.0 m +(Changes) 62551 0.00 -1 s +( a ) 65064 -76.00 32 s +4 sf +(window) 73845 0.00 -1 s +5 sf +('s ) 76512 -76.00 32 s +4 sf +(parent) 83880 0.00 -1 s +5 sf +( within a single screen. There is no way to move a window) 149352 -76.00 32 s +52832.0 181570.0 m +(between) 62234 0.00 -1 s +( screens.) 71865 -86.00 32 s +52832.0 187847.0 m +(The) 57220 0.00 -1 s +( specified ) 68730 -44.00 32 s +4 sf +(window) 77511 0.00 -1 s +5 sf +( is reparented by inserting it as a child of the) 127230 -44.00 32 s +( specified ) 138739 -44.50 32 s +4 sf +(parent) 146107 0.00 -1 s +5 sf +(. If) 149352 -45.00 32 s +52832.0 191008.0 m +(the) 56280 0.00 -1 s +( ) 56768 -218.00 32 s +4 sf +(window) 65549 0.00 -1 s +5 sf +( is mapped, an ) 81687 -218.00 32 s +2 sf +(unmap\036window) 100501 0.00 -1 s +5 sf +( operation is automatically performed on the) 149352 -217.50 32 s +52832.0 194169.0 m +(specified) 63018 0.00 -1 s +( ) 63444 -280.00 32 s +4 sf +(window) 72225 0.00 -1 s +5 sf +(. The ) 78171 -280.00 32 s +4 sf +(window) 86952 0.00 -1 s +5 sf +( is) 89260 -280.00 32 s +( then removed from its current position in the hierarchy) 149352 -280.56 32 s +52832.0 197330.0 m +(and) 56907 0.00 -1 s +( inserted as the child of the specified ) 100027 139.13 32 s +4 sf +(parent) 107395 0.00 -1 s +5 sf +(. The ) 114180 139.50 32 s +4 sf +(window) 122961 0.00 -1 s +5 sf +( is placed on top in the) 149352 139.50 32 s +52832.0 200491.0 m +(stacking) 62237 0.00 -1 s +( order with respect) 83237 -26.00 32 s +( to sibling windows.) 106048 -26.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 13 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03647) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(After) 58784 0.00 -1 s +( reparenting the specified ) 89211 280.00 32 s +/timsps10i 4 declareFont +4 sf +(window,) 98698 0.00 -1 s +5 sf +( a ) 101923 280.00 32 s +2 sf +(:reparent\036notify) 121354 0.00 -1 s +5 sf +( event) 128452 280.00 32 s +( is generated. The) 149352 279.33 32 s +52832.0 25739.0 m +(override\036redirect) 71788 0.00 -1 s +( attribute of the ) 89933 30.00 32 s +4 sf +(window) 98714 0.00 -1 s +5 sf +( is passed on in this event. Window) 138902 30.00 32 s +( manager) 149352 29.00 32 s +52832.0 28900.0 m +(clients) 60199 0.00 -1 s +( normally should ignore this event if this attribute is ) 118526 -93.00 32 s +2 sf +(:on) 122445 0.00 -1 s +5 sf +(. See Section 12, Events) 149352 -93.00 32 s +52832.0 32060.0 m +(and) 56907 0.00 -1 s +( Input, for more information on ) 93360 54.00 32 s +2 sf +(:reparent\036notify) 112791 0.00 -1 s +5 sf +( event processing. Finally, if the) 149352 54.20 32 s +52832.0 35221.0 m +(specified) 63018 0.00 -1 s +( ) 63876 152.00 32 s +4 sf +(window) 72657 0.00 -1 s +5 sf +( was originally mapped, a ) 103202 152.40 32 s +2 sf +(map\036window) 118878 0.00 -1 s +5 sf +( operation is automatically) 149352 152.33 32 s +52832.0 38382.0 m +(performed) 64583 0.00 -1 s +( on) 68081 -30.00 32 s +( it.) 71030 -31.00 32 s +52832.0 44659.0 m +(The) 57220 0.00 -1 s +( X server performs normal exposure processing on formerly obscured windows.) 146969 -45.00 32 s +( It) 149352 -46.00 32 s +52832.0 47820.0 m +(might) 59417 0.00 -1 s +( not generate ) 73855 -281.00 32 s +2 sf +(:exposure) 85611 0.00 -1 s +5 sf +( events for regions from the initial ) 122908 -281.00 32 s +2 sf +(unmap\036window) 141722 0.00 -1 s +5 sf +( opera\036) 149352 -282.00 32 s +52832.0 50981.0 m +(tion) 57222 0.00 -1 s +( if they are immediately obscured by the final ) 109042 -32.89 32 s +2 sf +(map\036window) 124718 0.00 -1 s +5 sf +( operation.) 136754 -33.00 32 s +52832.0 57257.0 m +(It) 54555 0.00 -1 s +( is an) 60491 -11.00 32 s +( error if any of the following are true: ) 103406 -11.56 32 s +/symbb8 7 declareFont +7 sf +52832.0 63805.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( new ) 68355 -29.00 32 s +4 sf +(parent) 75723 0.00 -1 s +5 sf +( window is not on the same screen as the old parent window.) 143956 -28.92 32 s +7 sf +52832.0 70352.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( new ) 68019 -197.00 32 s +4 sf +(parent) 75387 0.00 -1 s +5 sf +( window is the) 91335 -197.00 32 s +( specified ) 102538 -197.50 32 s +4 sf +(window) 111319 0.00 -1 s +5 sf +( or an inferior of the specified ) 144336 -197.57 32 s +4 sf +(win\036) 149352 0.00 -1 s +57912.0 73513.0 m +(dow) 62616 0.00 -1 s +5 sf +(.) 63322 0.00 -1 s +7 sf +52832.0 80061.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( specified ) 74318 210.00 32 s +4 sf +(window) 83099 0.00 -1 s +5 sf +( has a ) 90862 210.00 32 s +2 sf +(:parent\036relative) 109822 0.00 -1 s +5 sf +( background attribute and the new) 149352 210.20 32 s +57912.0 83222.0 m +4 sf +(parent) 65280 0.00 -1 s +5 sf +( window is not the same depth as the specified ) 118123 -29.80 32 s +4 sf +(window) 126904 0.00 -1 s +5 sf +(.) 127610 0.00 -1 s +4 sf +52832.0 89498.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +4 sf +52832.0 94285.0 m +(parent) 60200 0.00 -1 s +( ) 60868 -38.00 32 s +5 sf +(\037 The new parent) 81834 -38.00 32 s +( ) 82501 -39.00 32 s +2 sf +(window) 91908 0.00 -1 s +5 sf +(.) 92614 0.00 -1 s +4 sf +52832.0 99071.0 m +(x) 54085 0.00 -1 s +5 sf +(,) 54791 0.00 -1 s +( ) 55338 -159.00 32 s +4 sf +(y ) 57138 -159.00 32 s +5 sf +(\037 The position \(type) 80881 -159.00 32 s +( ) 81427 -160.00 32 s +2 sf +(int16) 87541 0.00 -1 s +5 sf +(\) of the ) 95918 -159.33 32 s +4 sf +(window) 104699 0.00 -1 s +5 sf +( in its new ) 116447 -159.50 32 s +4 sf +(parent) 123815 0.00 -1 s +5 sf +(. These coordinates are) 149352 -159.67 32 s +57912.0 102232.0 m +(relative) 66373 0.00 -1 s +( to the ) 73693 -147.00 32 s +4 sf +(parent) 81061 0.00 -1 s +5 sf +('s origin, and specify the new position of the upper, left,) 142996 -147.00 32 s +( outer) 149352 -148.00 32 s +57912.0 105393.0 m +(corner) 65118 0.00 -1 s +( of the) 72254 -37.00 32 s +( ) 72922 -38.00 32 s +4 sf +(window) 81703 0.00 -1 s +5 sf +(.) 82409 0.00 -1 s +2 sf +34544.0 110180.0 m +(translate\036coordinates) 60091 0.00 -1 s +( ) 60741 -56.00 32 s +4 sf +(source) 68265 0.00 -1 s +( source\036x source\036y destination) 102187 -56.67 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 113340.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 116501.0 m +54864.0 h +(destination\036x) 69598 0.00 -1 s +( ) 70279 -25.00 32 s +5 sf +(\037 Type ) 80262 -25.00 32 s +2 sf +(int16) 86376 0.00 -1 s +5 sf +( or ) 90088 -25.00 32 s +2 sf +(null) 94794 0.00 -1 s +5 sf +(.) 95500 0.00 -1 s +4 sf +( ) 96181 -25.00 32 s +52832.0 119662.0 m +54864.0 h +(destination\036y) 69598 0.00 -1 s +5 sf +( \037 Type ) 80262 -25.00 32 s +2 sf +(int16) 86376 0.00 -1 s +5 sf +( or ) 90088 -25.00 32 s +2 sf +(null) 94794 0.00 -1 s +5 sf +(.) 95500 0.00 -1 s +4 sf +( ) 96181 -25.00 32 s +52832.0 122823.0 m +54864.0 h +(destination\036child) 73988 0.00 -1 s +( ) 74664 -30.00 32 s +5 sf +(\037 Type ) 84637 -30.00 32 s +2 sf +(window) 94044 0.00 -1 s +5 sf +( or ) 97747 -29.50 32 s +2 sf +(null) 102453 0.00 -1 s +5 sf +(.) 103159 0.00 -1 s +4 sf +( ) 103835 -30.00 32 s +5 sf +52832.0 127542.0 m +(Returns) 61610 0.00 -1 s +( the position defined by ) 90371 281.00 32 s +4 sf +(source\036x) 100087 0.00 -1 s +5 sf +( and ) 106136 281.00 32 s +4 sf +(source\036y) 115852 0.00 -1 s +5 sf +( \(relative) 126239 281.00 32 s +( to the origin of the) 149352 280.40 32 s +52832.0 130703.0 m +4 sf +(source) 60356 0.00 -1 s +5 sf +( window\), expressed as coordinates relative to the origin of the ) 131021 -87.73 32 s +4 sf +(destination) 143563 0.00 -1 s +5 sf +( win\036) 149352 -88.00 32 s +52832.0 133864.0 m +(dow.) 58397 0.00 -1 s +4 sf +52832.0 140140.0 m +(source) 60356 0.00 -1 s +( ) 61029 -33.00 32 s +5 sf +(\037 A ) 67234 -33.00 32 s +2 sf +(window) 76641 0.00 -1 s +5 sf +( defining the source coordinate system.) 120678 -33.00 32 s +4 sf +52832.0 144927.0 m +(source\036x) 62548 0.00 -1 s +5 sf +(,) 63254 0.00 -1 s +( ) 63892 -68.00 32 s +4 sf +(source\036y ) 74246 -68.00 32 s +5 sf +(\037 Coordinates \() 92920 -68.00 32 s +2 sf +(int16) 99034 0.00 -1 s +5 sf +(\) relative) 109072 -68.00 32 s +( to the origin of the ) 131078 -68.50 32 s +4 sf +(source) 138602 0.00 -1 s +5 sf +( ) 139239 -69.00 32 s +2 sf +(window) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +4 sf +52832.0 149713.0 m +(destination) 65374 0.00 -1 s +( ) 66046 -34.00 32 s +5 sf +(\037) 68868 0.00 -1 s +( A ) 72248 -34.50 32 s +2 sf +(window) 81655 0.00 -1 s +5 sf +( defining the destination coordinate system.) 130703 -34.60 32 s +20320.0 155222.0 m +0.0 0.0 m +newpath +20455 153598 av +148878 153596 as +[] 0 setdash +dp +149352.0 155222.0 m +/timsps12b 6 declareFont +6 sf +20320.0 158609.0 m +(Mapping) 33492 0.00 -1 s +( ) 34341 2.00 32 s +52832.0 h +2 sf +(4.6) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(A) 60592 0.00 -1 s +( window is considered mapped if a) 99719 -36.00 32 s +( ) 100388 -37.00 32 s +2 sf +(map\036window) 116064 0.00 -1 s +5 sf +( call has been made) 138018 -36.50 32 s +6 sf +20320.0 161996.0 m +(Windows) 33869 0.00 -1 s +52832.0 h +5 sf +(on) 55654 0.00 -1 s +( it. When windows are first created, they are not mapped because an application may) 149352 -147.64 32 s +52832.0 165156.0 m +(wish) 58162 0.00 -1 s +( to create a window long before it is mapped to the screen. A mapped window may) 149352 -154.00 32 s +52832.0 168317.0 m +(not) 56438 0.00 -1 s +( be visible on the) 75629 -23.00 32 s +( screen for one of the following reasons:) 120994 -23.57 32 s +7 sf +52832.0 174865.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(It) 59635 0.00 -1 s +( is obscured by another opaque sibling window.) 113318 -34.57 32 s +7 sf +52832.0 181412.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(One) 62613 0.00 -1 s +( of its ancestors is not mapped.) 97355 -23.00 32 s +7 sf +52832.0 187960.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(It) 59635 0.00 -1 s +( is entirely clipped by an ancestor.) 98123 -25.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 14 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03648) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(A) 54869 0.00 -1 s +( subwindow will appear on the screen as long as all of its) 116450 -237.00 32 s +( ancestors are mapped and not) 149352 -237.60 32 s +52832.0 25739.0 m +(obscured) 63019 0.00 -1 s +( by a sibling or clipped by an ancestor. Mapping a window that has an un\036) 149352 185.40 32 s +52832.0 28900.0 m +(mapped) 61766 0.00 -1 s +( ancestor does not display the window, but) 108737 -165.00 32 s +( marks it as eligible for display when) 149352 -165.57 32 s +52832.0 32060.0 m +(the) 56280 0.00 -1 s +( ancestor becomes mapped. Such a window is called unviewable. When all its ances\036) 149352 -213.62 32 s +52832.0 35221.0 m +(tors) 57064 0.00 -1 s +( are mapped, the window becomes viewable and remains visible on the screen if) 145228 -187.00 32 s +( not) 149352 -188.00 32 s +52832.0 38382.0 m +(obscured) 63019 0.00 -1 s +( by) 66516 -31.00 32 s +( any sibling or ancestor. ) 94104 -31.60 32 s +52832.0 44659.0 m +(Any) 57691 0.00 -1 s +( output to a window not visible on the) 98299 -274.00 32 s +( screen is discarded. ) 120633 -274.50 32 s +2 sf +(:exposure) 132389 0.00 -1 s +5 sf +( events are gen\036) 149352 -274.67 32 s +52832.0 47820.0 m +(erated) 59725 0.00 -1 s +( for the window when part or all of it becomes visible on the screen. A client only) 149352 -158.59 32 s +52832.0 50981.0 m +(receives) 62076 0.00 -1 s +( the ) 66568 -184.00 32 s +2 sf +(:exposure) 78324 0.00 -1 s +5 sf +( events if it has selected them. Mapping or unmapping a window) 149352 -183.73 32 s +52832.0 54142.0 m +(does) 58005 0.00 -1 s +( not) 62288 -29.00 32 s +( change its stacking order priority.) 100855 -29.60 32 s +2 sf +34544.0 60418.0 m +(map\036window) 50220 0.00 -1 s +( ) 50824 -102.00 32 s +/timsps10i 4 declareFont +4 sf +(window) 59605 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 65137.0 m +(Maps) 59103 0.00 -1 s +( the ) 63895 -34.00 32 s +4 sf +(window) 72676 0.00 -1 s +5 sf +(. This function has no effect when the ) 115748 -33.50 32 s +4 sf +(window) 124529 0.00 -1 s +5 sf +( is already mapped.) 146372 -33.67 32 s +52832.0 71414.0 m +(If) 54710 0.00 -1 s +( the override\036redirect attribute of the ) 97157 101.00 32 s +4 sf +(window) 105938 0.00 -1 s +5 sf +( is ) 109434 101.00 32 s +2 sf +(:off) 113662 0.00 -1 s +5 sf +( and another) 127813 101.00 32 s +( client has selected) 149352 100.33 32 s +52832.0 74574.0 m +2 sf +(:substructure\036redirect) 79629 0.00 -1 s +5 sf +( on the parent window, the) 109285 -88.00 32 s +( X server generates a ) 133210 -88.60 32 s +2 sf +(:map\036request) 149352 0.00 -1 s +5 sf +52832.0 77735.0 m +(event) 58944 0.00 -1 s +( and the ) 68142 -147.67 32 s +2 sf +(map\036window) 83818 0.00 -1 s +5 sf +( function does not map the ) 113659 -147.50 32 s +4 sf +(window) 122440 0.00 -1 s +5 sf +(. Otherwise, the ) 140571 -147.67 32 s +4 sf +(window) 149352 0.00 -1 s +5 sf +52832.0 80896.0 m +(is) 54714 0.00 -1 s +( mapped, and) 69779 -31.00 32 s +( the X server generates a ) 98112 -31.50 32 s +2 sf +(:map\036notify) 112373 0.00 -1 s +5 sf +( event.) 119865 -32.00 32 s +52832.0 87173.0 m +(If) 54710 0.00 -1 s +( the ) 59204 -183.00 32 s +4 sf +(window) 67985 0.00 -1 s +5 sf +( becomes visible and no earlier contents for it are remembered, ) 137754 -183.00 32 s +2 sf +(map\036win\036) 149352 0.00 -1 s +52832.0 90334.0 m +(dow) 57849 0.00 -1 s +5 sf +( tiles the window with its background. If no background was defined for the) 143484 -8.00 32 s +( win\036) 149352 -9.00 32 s +52832.0 93495.0 m +(dow,) 58397 0.00 -1 s +( the existing screen contents) 89313 -226.00 32 s +( are not altered, and the X server generates one or more) 149352 -226.55 32 s +52832.0 96655.0 m +2 sf +(:exposure) 64588 0.00 -1 s +5 sf +( events. If a backing\036store was maintained while the window was) 136366 -181.00 32 s +( unmapped,) 149352 -182.00 32 s +52832.0 99816.0 m +(no) 55654 0.00 -1 s +( ) 56484 124.00 32 s +2 sf +(:exposure) 68240 0.00 -1 s +5 sf +( events are generated. If a backing\036store will now be maintained, a full) 149352 124.50 32 s +52832.0 102977.0 m +(window) 61923 0.00 -1 s +( exposure is always generated. Otherwise, only visible regions) 130341 -245.00 32 s +( may be reported.) 149352 -245.67 32 s +52832.0 106138.0 m +(Similar) 61140 0.00 -1 s +( tiling) 67774 -30.00 32 s +( and exposure take place for any newly viewable inferiors.) 133480 -30.56 32 s +2 sf +52832.0 112415.0 m +(map\036window) 68508 0.00 -1 s +5 sf +( generates ) 80097 -239.00 32 s +2 sf +(:exposure) 91853 0.00 -1 s +5 sf +( events on each ) 108923 -239.00 32 s +2 sf +(:input\036output) 125227 0.00 -1 s +5 sf +( window that it causes) 149352 -239.00 32 s +52832.0 115576.0 m +(to) 55027 0.00 -1 s +( become visible.) 73382 -32.00 32 s +( ) 74055 -33.00 32 s +4 sf +52832.0 121852.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 15 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03649) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(map\036subwindows) 55554 0.00 -1 s +( ) 56153 -107.00 32 s +/timsps10i 4 declareFont +4 sf +(window) 64934 0.00 -1 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Maps) 59103 0.00 -1 s +( all child windows for a specified ) 96645 -111.57 32 s +4 sf +(window) 105426 0.00 -1 s +5 sf +( in top\036to\036bottom stacking order. The X) 149352 -111.50 32 s +52832.0 30457.0 m +(server) 59725 0.00 -1 s +( generates an ) 75525 121.00 32 s +2 sf +(:exposure) 87281 0.00 -1 s +5 sf +( event on each newly visible window. This function is) 149352 121.33 32 s +52832.0 33618.0 m +(much) 59102 0.00 -1 s +( more efficient than mapping each child individually.) 118827 -44.00 32 s +4 sf +52832.0 39895.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 44681.0 m +(unmap\036window) 53358 0.00 -1 s +( ) 53940 -124.00 32 s +4 sf +(window) 62721 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 49400.0 m +(Unmaps) 62237 0.00 -1 s +( the) 66441 50.00 32 s +( specified ) 78138 49.50 32 s +4 sf +(window) 86919 0.00 -1 s +5 sf +( and causes the X server to generate an ) 131953 49.44 32 s +2 sf +(:unmap\036notify) 149352 0.00 -1 s +5 sf +52832.0 52561.0 m +(event.) 59650 0.00 -1 s +( If the specified ) 76798 -297.00 32 s +4 sf +(window) 85579 0.00 -1 s +5 sf +( is already unmapped, ) 109863 -297.00 32 s +2 sf +(unmap\036window) 128677 0.00 -1 s +5 sf +( has no effect. Nor\036) 149352 -296.50 32 s +52832.0 55722.0 m +(mal) 57064 0.00 -1 s +( exposure processing on formerly obscured windows is performed. Any child) 143550 -74.00 32 s +( win\036) 149352 -75.00 32 s +52832.0 58883.0 m +(dow) 57691 0.00 -1 s +( is no longer viewable. Unmapping the ) 104178 281.14 32 s +4 sf +(window) 112959 0.00 -1 s +5 sf +( generates ) 125589 281.50 32 s +2 sf +(:exposure) 137345 0.00 -1 s +5 sf +( events on) 149352 281.50 32 s +52832.0 62044.0 m +(windows) 63021 0.00 -1 s +( that were formerly obscured by ) 99661 -31.67 32 s +4 sf +(window) 108442 0.00 -1 s +5 sf +( and its children.) 127158 -31.67 32 s +4 sf +52832.0 68320.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 73107.0 m +(unmap\036subwindows) 58692 0.00 -1 s +( ) 59268 -130.00 32 s +4 sf +(window) 68049 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 77826.0 m +(Unmaps) 62237 0.00 -1 s +( all child windows for the specified ) 100970 -255.00 32 s +4 sf +(window) 109751 0.00 -1 s +5 sf +( in bottom to top stacking order. The) 149352 -255.00 32 s +52832.0 80986.0 m +(X) 54869 0.00 -1 s +( server generates an ) 77245 -165.00 32 s +2 sf +(:unmap\036notify) 94644 0.00 -1 s +5 sf +( event on each child and ) 121712 -165.00 32 s +2 sf +(:exposure) 133468 0.00 -1 s +5 sf +( events on for\036) 149352 -164.67 32 s +52832.0 84147.0 m +(merly) 59414 0.00 -1 s +( obscured windows. Using this function is much more efficient than unmapping) 149352 -3.55 32 s +52832.0 87308.0 m +(child) 58475 0.00 -1 s +( windows individually.) 84305 -58.00 32 s +4 sf +52832.0 93585.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +20320.0 99094.0 m +0.0 0.0 m +newpath +20455 97470 av +148878 97468 as +[] 0 setdash +dp +149352.0 99094.0 m +/timsps12b 6 declareFont +6 sf +20320.0 102481.0 m +(Destroying) 36118 0.00 -1 s +( ) 36982 17.00 32 s +52832.0 h +2 sf +(4.7) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(CLX) 64198 0.00 -1 s +( provides functions to destroy) 97632 -28.00 32 s +( a window or destroy all children of) 137792 -28.57 32 s +6 sf +20320.0 105867.0 m +(Windows) 33869 0.00 -1 s +52832.0 h +5 sf +(a) 54085 0.00 -1 s +( window.) 64334 -254.00 32 s +2 sf +( ) 64785 -255.00 32 s +5 sf +(Note that by default, windows are destroyed when a connection is closed. For) 149352 -254.50 32 s +52832.0 109028.0 m +(further) 60508 0.00 -1 s +( information, see paragraph 2.4, Closing the Display, and paragraph 12.4, Client) 149352 -152.82 32 s +52832.0 112189.0 m +(Termination.) 67487 0.00 -1 s +( ) 68140 -53.00 32 s +2 sf +34544.0 118466.0 m +(destroy\036window) 53824 0.00 -1 s +( ) 54414 -116.00 32 s +4 sf +(window) 63195 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 123184.0 m +(Destroys) 62863 0.00 -1 s +( the) 66886 -131.00 32 s +( specified ) 78221 -131.50 32 s +4 sf +(window) 87002 0.00 -1 s +5 sf +( as well as all of its inferiors. The windows should never) 149352 -131.55 32 s +52832.0 126345.0 m +(again) 58944 0.00 -1 s +( be referenced. If) 78109 -35.00 32 s +( the specified ) 93754 -35.67 32 s +4 sf +(window) 102535 0.00 -1 s +5 sf +( is mapped, it is automatically unmapped.) 149352 -35.50 32 s +52832.0 129506.0 m +(The) 57220 0.00 -1 s +( window and all of its inferiors are then destroyed, and a ) 122006 37.00 32 s +2 sf +(:destroy\036notify) 139871 0.00 -1 s +5 sf +( event is) 149352 37.50 32 s +52832.0 132667.0 m +(generated) 63800 0.00 -1 s +( for each window. The ordering of) 102001 -98.00 32 s +( the ) 106664 -98.50 32 s +2 sf +(:destroy\036notify) 124529 0.00 -1 s +5 sf +( events is such that for) 149352 -98.60 32 s +52832.0 135828.0 m +(any) 56907 0.00 -1 s +( given window being destroyed, ) 92805 -188.00 32 s +2 sf +(:destroy\036notify) 110670 0.00 -1 s +5 sf +( is generated on the window's infe\036) 149352 -188.00 32 s +52832.0 138989.0 m +(riors) 58003 0.00 -1 s +( before being generated on the window. The ordering among siblings and across) 149352 69.17 32 s +52832.0 142150.0 m +(sub\036hierarchies) 70069 0.00 -1 s +( is not otherwise constrained. If the ) 110700 27.29 32 s +4 sf +(window) 119481 0.00 -1 s +5 sf +( is a root window, no win\036) 149352 27.50 32 s +52832.0 145311.0 m +(dows) 58789 0.00 -1 s +( are destroyed. Destroying a mapped window generates ) 120298 -216.63 32 s +2 sf +(:exposure) 132054 0.00 -1 s +5 sf +( events on other) 149352 -216.67 32 s +52832.0 148471.0 m +(windows) 63021 0.00 -1 s +( that the mapped window obscured.) 102910 -47.80 32 s +4 sf +52832.0 154748.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 159535.0 m +(destroy\036subwindows) 59158 0.00 -1 s +4 sf +( window ) 69223 -64.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 164253.0 m +(Destroys) 62863 0.00 -1 s +( all inferiors of) 79770 20.00 32 s +( the specified ) 95580 19.33 32 s +4 sf +(window) 104361 0.00 -1 s +5 sf +(, in bottom to top stacking order. The X) 149352 19.50 32 s +52832.0 167414.0 m +(server) 59725 0.00 -1 s +( generates a ) 73412 -113.00 32 s +2 sf +(:destroy\036notify) 91277 0.00 -1 s +5 sf +( event for each window. This is much more efficient) 149352 -112.67 32 s +52832.0 170575.0 m +(than) 57691 0.00 -1 s +( deleting many windows individually. The inferiors should never be) 136503 240.00 32 s +( referenced) 149352 239.00 32 s +52832.0 173736.0 m +(again.) 59650 0.00 -1 s +( ) 60305 -51.00 32 s +4 sf +52832.0 180013.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 16 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03650) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 6 declareFont +6 sf +20320.0 26687.0 m +(Pixmaps) 32736 0.00 -1 s +( ) 33596 13.00 32 s +52832.0 h +2 sf +(4.8) 56360 0.00 -1 s +5 sf +() 56360 0.00 -1 s +58555.0 h +(A) 60592 0.00 -1 s +( ) 62541 1243.00 32 s +/timsps10i 4 declareFont +4 sf +(pixmap) 70848 0.00 -1 s +5 sf +( is a three\036dimensional array of bits. A pixmap is normally) 149352 1243.50 32 s +6 sf +20320.0 30074.0 m +52832.0 h +5 sf +(thought) 61455 0.00 -1 s +( of as a two\036dimensional array of pixels, where each pixel can be a value from 0) 149352 -153.63 32 s +52832.0 33618.0 m +(to) 55027 0.00 -1 s +( ) 55534 -199.00 32 s +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +55534.0 33707.0 m +(2) 56945 0.00 -1 s +1 sf +56944.0 32644.0 m +(n) 58075 0.00 -1 s +5 sf +58702.0 33707.0 m +(-) 60113 0.00 -1 s +60732.0 h +(1) 62143 0.00 -1 s +62646.0 33618.0 m +(, where ) 71259 -199.00 32 s +4 sf +(n) 72670 0.00 -1 s +5 sf +( is the depth of the pixmap. A pixmap can) 118221 -199.00 32 s +( also be thought of as a stack) 149352 -199.57 32 s +52832.0 36779.0 m +(of) 55182 0.00 -1 s +( ) 55867 -21.00 32 s +4 sf +(n) 57278 0.00 -1 s +5 sf +( bitmaps. A ) 71012 -21.00 32 s +4 sf +(bitmap) 78850 0.00 -1 s +5 sf +( is a single bit pixmap of depth 1. CLX provides) 133118 -21.00 32 s +( functions to: ) 148652 -21.67 32 s +/symbb8 7 declareFont +7 sf +52832.0 43327.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Create) 65276 0.00 -1 s +( or free) 73376 -23.00 32 s +( a pixmap ) 85141 -23.67 32 s +7 sf +52832.0 49874.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Test) 62771 0.00 -1 s +( if an object is a pixmap) 89782 -18.00 32 s +( ) 90469 -19.00 32 s +7 sf +52832.0 56422.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Test) 62771 0.00 -1 s +( if two pixmap objects are equal ) 99523 -23.00 32 s +7 sf +52832.0 62969.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( the pixmap) 78863 -27.00 32 s +( resource ID from a ) 101525 -27.60 32 s +2 sf +(pixmap) 110619 0.00 -1 s +5 sf +( object ) 118872 -27.50 32 s +52832.0 69246.0 m +(Note) 58317 0.00 -1 s +( that pixmaps can only be used on the screen where they were created. Pixmaps are) 149352 -190.00 32 s +52832.0 72407.0 m +(off\036screen) 64267 0.00 -1 s +( server resources that are used for a number of operations. These include de\036) 149352 -85.62 32 s +52832.0 75568.0 m +(fining) 59572 0.00 -1 s +( patterns for cursors or as the source for certain raster operations. ) 133435 -15.58 32 s +2 sf +34544.0 81844.0 m +(create\036pixmap) 51939 0.00 -1 s +5 sf +( &key ) 59521 -50.00 32 s +2 sf +(:width) 67358 0.00 -1 s +5 sf +( ) 68013 -51.00 32 s +2 sf +(:height) 76477 0.00 -1 s +5 sf +( ) 77133 -50.00 32 s +2 sf +(:depth) 84971 0.00 -1 s +5 sf +( ) 85626 -51.00 32 s +2 sf +(:drawable) 97852 0.00 -1 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 85005.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 88166.0 m +( pixmap) 62487 -32.00 32 s +( ) 63160 -33.00 32 s +5 sf +(\037 Type ) 73128 -32.50 32 s +2 sf +(pixmap) 82222 0.00 -1 s +5 sf +(.) 82928 0.00 -1 s +52832.0 92885.0 m +(Creates) 61294 0.00 -1 s +( a pixmap of the specified ) 90482 -125.00 32 s +2 sf +(:width) 98319 0.00 -1 s +5 sf +(, ) 99606 -125.00 32 s +2 sf +(:height) 108070 0.00 -1 s +5 sf +(, and ) 114013 -125.00 32 s +2 sf +(:depth) 121851 0.00 -1 s +5 sf +(. It is valid to pass a win\036) 149352 -124.86 32 s +52832.0 96046.0 m +(dow) 57691 0.00 -1 s +( whose class is ) 74213 -220.00 32 s +2 sf +(:input\036only) 87696 0.00 -1 s +5 sf +( as the ) 94953 -220.00 32 s +2 sf +(:drawable) 107179 0.00 -1 s +5 sf +( argument. The ) 124388 -220.00 32 s +2 sf +(:width) 132225 0.00 -1 s +5 sf +( and ) 137272 -220.00 32 s +2 sf +(:height) 145736 0.00 -1 s +5 sf +( ar\036) 149352 -221.00 32 s +52832.0 99207.0 m +(guments) 62395 0.00 -1 s +( must be nonzero. The ) 87602 -131.60 32 s +2 sf +(:depth) 95440 0.00 -1 s +5 sf +( must be supported by the screen of the specified) 149352 -131.56 32 s +52832.0 102368.0 m +2 sf +(:drawable) 65058 0.00 -1 s +5 sf +(.) 65764 0.00 -1 s +2 sf +52832.0 108644.0 m +(:width) 60669 0.00 -1 s +5 sf +(,) 61375 0.00 -1 s +2 sf +( :height ) 71183 -34.00 32 s +5 sf +(\037 The nonzero width and height \(type ) 115540 -34.00 32 s +2 sf +(card16) 123848 0.00 -1 s +5 sf +(\). ) 126165 -34.00 32 s +2 sf +52832.0 114921.0 m +(:depth) 60670 0.00 -1 s +( ) 61345 -31.00 32 s +5 sf +(\037 The depth \(type) 82648 -31.00 32 s +( ) 83322 -32.00 32 s +2 sf +(card8) 90219 0.00 -1 s +5 sf +(\) of the pixmap. ) 108825 -31.50 32 s +2 sf +52832.0 121198.0 m +(:drawable) 65058 0.00 -1 s +( ) 65556 -208.00 32 s +5 sf +(\037 A ) 71411 -208.00 32 s +2 sf +(drawable) 82698 0.00 -1 s +5 sf +( which determines the screen where the pixmap will be used.) 149352 -207.60 32 s +2 sf +34544.0 127474.0 m +(free\036pixmap) 49275 0.00 -1 s +5 sf +( ) 49876 -105.00 32 s +4 sf +(pixmap) 58183 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 132193.0 m +(Allows) 60983 0.00 -1 s +( the X server to free the pixmap storage when) 110344 -236.00 32 s +( no other server resources reference) 149352 -236.60 32 s +52832.0 135354.0 m +(it.) 55106 0.00 -1 s +( The) 60163 -37.00 32 s +( pixmap should never be referenced again. ) 108486 -37.57 32 s +4 sf +52832.0 141630.0 m +(pixmap ) 61807 -38.00 32 s +5 sf +(\037 A ) 68003 -37.50 32 s +2 sf +(pixmap) 77097 0.00 -1 s +5 sf +(.) 77803 0.00 -1 s +2 sf +34544.0 146417.0 m +(pixmap\036display) 53203 0.00 -1 s +5 sf +( ) 53804 -105.00 32 s +4 sf +(pixmap) 62111 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 149578.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 152739.0 m +( display ) 63036 -22.00 32 s +5 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +5 sf +(. ) 83041 -22.00 32 s +52832.0 157457.0 m +(Returns) 61610 0.00 -1 s +( the ) 66408 -31.00 32 s +2 sf +(display) 75034 0.00 -1 s +5 sf +( object associated with the specified ) 116228 -31.00 32 s +4 sf +(pixmap) 124535 0.00 -1 s +5 sf +(. ) 125916 -31.00 32 s +4 sf +52832.0 163734.0 m +(pixmap) 61139 0.00 -1 s +( \037 ) 64983 -38.50 32 s +5 sf +(A ) 67687 -39.00 32 s +2 sf +(pixmap) 76781 0.00 -1 s +5 sf +(.) 77487 0.00 -1 s +2 sf +34544.0 168521.0 m +(pixmap\036equal) 51163 0.00 -1 s +( ) 51783 -86.00 32 s +4 sf +(pixmap\0361) 62440 0.00 -1 s +( pixmap\0362) 73716 -87.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 173239.0 m +(Returns) 61610 0.00 -1 s +( true if the two arguments refer to the same server resource, and ) 130769 -273.85 32 s +2 sf +(nil) 133906 0.00 -1 s +5 sf +( if they do not.) 149352 -273.50 32 s +4 sf +52832.0 179516.0 m +(pixmap\0361) 63489 0.00 -1 s +5 sf +(,) 64195 0.00 -1 s +4 sf +( pixmap\0362 ) 76210 -27.00 32 s +5 sf +(\037 A three\036dimensional array of bits to be tested.) 131245 -27.00 32 s +2 sf +34544.0 184302.0 m +(pixmap\036id) 46930 0.00 -1 s +( ) 47550 -86.00 32 s +4 sf +(pixmap) 55857 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 187463.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 190624.0 m +( id ) 57055 -30.00 32 s +5 sf +(\037 Type ) 67029 -29.50 32 s +2 sf +(resource\036id) 80664 0.00 -1 s +5 sf +(.) 81370 0.00 -1 s +52832.0 195343.0 m +(Returns) 61610 0.00 -1 s +( the unique resource ID that has been assigned to the specified ) 132234 -31.67 32 s +4 sf +(pixmap) 140541 0.00 -1 s +5 sf +(.) 141247 0.00 -1 s +4 sf +52832.0 201620.0 m +(pixmap) 61139 0.00 -1 s +( ) 61807 -38.00 32 s +5 sf +(\037 A ) 68003 -37.50 32 s +2 sf +(pixmap) 77097 0.00 -1 s +5 sf +(.) 77803 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 17 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +127971.0 8737.0 m +(Windows and Pixmaps) 148539 -21.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(4\03651) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(pixmap\036p) 46146 0.00 -1 s +( ) 46771 -81.00 32 s +/timsps10i 4 declareFont +4 sf +(object) 53667 0.00 -1 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( pixmap) 62479 -36.00 32 s +( ) 63148 -37.00 32 s +5 sf +(\037 Type ) 73108 -36.50 32 s +2 sf +(boolean) 82516 0.00 -1 s +5 sf +(.) 83222 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( true if the argument is a ) 89734 -24.00 32 s +2 sf +(pixmap) 98828 0.00 -1 s +5 sf +( object and ) 111845 -24.00 32 s +2 sf +(nil) 114982 0.00 -1 s +5 sf +( otherwise.) 127339 -25.00 32 s +2 sf +34544.0 39895.0 m +(pixmap\036plist) 49751 0.00 -1 s +( ) 50395 -62.00 32 s +4 sf +(pixmap) 58702 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 43056.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 46217.0 m +( plist ) 59793 -6.00 32 s +5 sf +(\037 A property list.) 80467 -6.00 32 s +52832.0 50935.0 m +(Returns) 61610 0.00 -1 s +( and) 66171 -220.00 32 s +( \(with ) 73097 -220.50 32 s +2 sf +(setf) 77326 0.00 -1 s +5 sf +(\) sets the property list for the specified ) 119762 -220.50 32 s +4 sf +(pixmap) 128069 0.00 -1 s +5 sf +(. This function pro\036) 149352 -220.67 32 s +52832.0 54096.0 m +(vides) 58789 0.00 -1 s +( a hook where extensions can add data.) 102548 -40.86 32 s +4 sf +52832.0 60373.0 m +(pixmap) 61139 0.00 -1 s +( ) 61807 -38.00 32 s +5 sf +(\037 A ) 68003 -37.50 32 s +2 sf +(pixmap) 77097 0.00 -1 s +5 sf +(.) 77803 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 18 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8399.0 m +(Windows and Pixmaps) 40888 -21.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(4\03652) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s11.ps +++ cmucl-20a-20090928/own-work/clx/s11.ps @@ -0,0 +1,3416 @@ +%!PS-Adobe-2.0 +%%Title: s11.ps +%%Pages: 8 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps18b /ILtimsb 18 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /timsps10b /ILtimsb 10 map + /timsps8i /ILtimsi 8 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(11\036111) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 8 declareFont +8 sf +20410.0 39376.0 m +61027.0 33506.0 m +(ATOMS, PROPERTIES,) 115846 -71.00 32 s +69900.0 39105.0 m +( AND SELECTIONS) 115846 -28.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +145738 39316 av +145738 23300 as +142800 23300 as +139863 26351 as +139863 27876 as +142433 27876 as +142433 39316 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +139495 23300 av +139495 23300 as +newpath +139495 43891 av +139495 43891 as +newpath +147206 43891 av +147206 43891 as +newpath +147206 23300 av +147206 23300 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +138152 39316 av +138152 23300 as +135214 23300 as +132277 26351 as +132277 27876 as +134847 27876 as +134847 39316 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +131909 23300 av +131909 23300 as +newpath +131909 43891 av +131909 43891 as +newpath +139620 43891 av +139620 43891 as +newpath +139620 23300 av +139620 23300 as +149351.0 39376.0 m +8 sf +/timsps10 5 declareFont +5 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 7 declareFont +7 sf +20320.0 46871.0 m +(Atoms) 29722 0.00 -1 s +52832.0 h +2 sf +(11.1) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(In) 62316 0.00 -1 s +( X, an ) 69076 -255.00 32 s +/timsps10i 4 declareFont +4 sf +(atom) 74719 0.00 -1 s +5 sf +( is a unique ID used as the) 102640 -255.00 32 s +( name for certain server resources \037 prop\036) 149352 -255.57 32 s +52832.0 50032.0 m +(erties) 58943 0.00 -1 s +( and) 63692 -32.00 32 s +( selections.) 76200 -33.00 32 s +52832.0 56309.0 m +(In) 55182 0.00 -1 s +( CLX, an atom is represented by a keyword symbol. For convenience, CLX functions) 149352 -183.77 32 s +52832.0 59470.0 m +(also) 57378 0.00 -1 s +( allow atoms to be specified by strings and non\036keyword symbols. ) 131360 -129.09 32 s +2 sf +(xatom) 138882 0.00 -1 s +5 sf +( is a CLX) 149352 -142.00 32 s +52832.0 62631.0 m +(data) 57533 0.00 -1 s +( type that permits either string or symbol values. A string is equivalent to the ) 141830 -201.27 32 s +2 sf +(xatom) 149352 0.00 -1 s +5 sf +52832.0 65792.0 m +(given) 59102 0.00 -1 s +( by \() 64135 -70.00 32 s +2 sf +(intern) 71502 0.00 -1 s +5 sf +( ) 72138 -70.00 32 s +4 sf +(string) 78724 0.00 -1 s +5 sf +( ) 79360 -70.00 32 s +2 sf +('keyword) 90802 0.00 -1 s +5 sf +(\). A symbol is equivalent to the ) 126598 -59.71 32 s +2 sf +(xatom) 134120 0.00 -1 s +5 sf +( given by \() 146060 -69.67 32 s +2 sf +(in\036) 149352 0.00 -1 s +52832.0 68953.0 m +(tern) 57846 0.00 -1 s +5 sf +( \() 59629 138.00 32 s +2 sf +(symbol\036name) 75774 0.00 -1 s +5 sf +( ) 76617 137.00 32 s +4 sf +(symbol) 84611 0.00 -1 s +5 sf +(\) ) 86394 138.00 32 s +2 sf +('keyword) 97836 0.00 -1 s +5 sf +(\). The symbol name string of an ) 135499 117.86 32 s +2 sf +(xatom) 143021 0.00 -1 s +5 sf +( must) 149352 137.00 32 s +52832.0 72113.0 m +(consist) 60671 0.00 -1 s +( only of ISO Latin characters. Note that the case of ) 118611 -18.91 32 s +2 sf +(xatom) 126133 0.00 -1 s +5 sf +( strings is important;) 149352 -20.67 32 s +52832.0 75274.0 m +(the) 56280 0.00 -1 s +( ) 56956 -30.00 32 s +2 sf +(xatom) 64478 0.00 -1 s +5 sf +( \177Atom" is not the same as) 94583 -25.00 32 s +( the ) 99382 -30.50 32 s +2 sf +(xatom) 106904 0.00 -1 s +5 sf +( \177ATOM".) 119098 -31.00 32 s +52832.0 81551.0 m +(Certain) 61138 0.00 -1 s +( atoms are already predefined by every X server. Predefined atoms are designed) 149352 -164.92 32 s +52832.0 84712.0 m +(to) 55027 0.00 -1 s +( represent common names that are likely to be useful for many client applications.) 149352 130.00 32 s +52832.0 87873.0 m +(Note) 58317 0.00 -1 s +( that these atoms are predefined only in the sense of having ) 123529 -195.50 32 s +2 sf +(xatom) 131051 0.00 -1 s +5 sf +( and ) 136147 -195.50 32 s +2 sf +(card29) 144455 0.00 -1 s +5 sf +( val\036) 149352 -196.00 32 s +52832.0 91034.0 m +(ues,) 57300 0.00 -1 s +( not in the sense of having required semantics. No interpretation is placed on the) 149352 98.07 32 s +52832.0 94194.0 m +(meaning) 62550 0.00 -1 s +( or use of an atom by the server. The ) 105766 113.00 32 s +2 sf +(xatom) 113288 0.00 -1 s +5 sf +( objects predefined by CLX are) 149352 113.00 32 s +52832.0 97355.0 m +(listed) 58946 0.00 -1 s +( below.) 67214 -40.00 32 s +2 sf +52832.0 103632.0 m +(:arc) 57688 0.00 -1 s +82296.0 h +(:italic_angle) 97029 0.00 -1 s +103632.0 h +119888.0 h +(:string) 127881 0.00 -1 s +52832.0 106793.0 m +(:atom) 59882 0.00 -1 s +82296.0 h +(:max_space) 96402 0.00 -1 s +103632.0 h +119888.0 h +(:subscript_x) 134781 0.00 -1 s +52832.0 109954.0 m +(:bitmap) 62393 0.00 -1 s +82296.0 h +(:min_space) 95933 0.00 -1 s +103632.0 h +119888.0 h +(:subscript_y) 134781 0.00 -1 s +52832.0 113115.0 m +(:cap_height) 66940 0.00 -1 s +82296.0 h +(:norm_space) 97813 0.00 -1 s +103632.0 h +119888.0 h +(:superscript_x) 137287 0.00 -1 s +52832.0 116276.0 m +(:cardinal) 63805 0.00 -1 s +82296.0 h +(:notice) 90444 0.00 -1 s +103632.0 h +119888.0 h +(:superscript_y) 137287 0.00 -1 s +52832.0 119436.0 m +(:colormap) 65213 0.00 -1 s +82296.0 h +(:pixmap) 92329 0.00 -1 s +103632.0 h +119888.0 h +(:underline_position) 143406 0.00 -1 s +52832.0 122597.0 m +(:copyright) 65371 0.00 -1 s +82296.0 h +(:point) 89507 0.00 -1 s +103632.0 h +119888.0 h +(:underline_thickness) 144973 0.00 -1 s +52832.0 125758.0 m +(:cursor) 61608 0.00 -1 s +82296.0 h +(:point_size) 95306 0.00 -1 s +103632.0 h +119888.0 h +(:visualid) 130237 0.00 -1 s +52832.0 128919.0 m +(:cut_buffer0) 67876 0.00 -1 s +82296.0 h +(:primary) 93266 0.00 -1 s +103632.0 h +119888.0 h +(:weight) 128820 0.00 -1 s +52832.0 132080.0 m +(:cut_buffer1) 67876 0.00 -1 s +82296.0 h +(:quad_width) 97662 0.00 -1 s +103632.0 h +119888.0 h +(:window) 130234 0.00 -1 s +52832.0 135241.0 m +(:cut_buffer2) 67876 0.00 -1 s +82296.0 h +(:rectangle) 94361 0.00 -1 s +103632.0 h +119888.0 h +(:wm_class) 132269 0.00 -1 s +52832.0 138402.0 m +(:cut_buffer3) 67876 0.00 -1 s +82296.0 h +(:resolution) 95306 0.00 -1 s +103632.0 h +119888.0 h +(:wm_client_machine) 144807 0.00 -1 s +52832.0 141563.0 m +(:cut_buffer4) 67876 0.00 -1 s +82296.0 h +(:resource_manager) 105647 0.00 -1 s +119888.0 h +(:wm_command) 138538 0.00 -1 s +52832.0 144724.0 m +(:cut_buffer5) 67876 0.00 -1 s +82296.0 h +(:rgb_best_map) 100479 0.00 -1 s +103632.0 h +119888.0 h +(:wm_hints) 132584 0.00 -1 s +52832.0 147884.0 m +(:cut_buffer6) 67876 0.00 -1 s +82296.0 h +(:rgb_blue_map) 100795 0.00 -1 s +103632.0 h +119888.0 h +(:wm_icon_name) 139636 0.00 -1 s +52832.0 151045.0 m +(:cut_buffer7) 67876 0.00 -1 s +82296.0 h +(:rgb_color_map) 101732 0.00 -1 s +103632.0 h +119888.0 h +(:wm_icon_size) 137441 0.00 -1 s +52832.0 154206.0 m +(:drawable) 65058 0.00 -1 s +82296.0 h +(:rgb_default_map) 104084 0.00 -1 s +119888.0 h +(:wm_name) 133208 0.00 -1 s +52832.0 157367.0 m +(:end_space) 66157 0.00 -1 s +82296.0 h +(:rgb_gray_map) 101106 0.00 -1 s +103632.0 h +119888.0 h +(:wm_normal_hints) 142773 0.00 -1 s +52832.0 160528.0 m +(:family_name) 69444 0.00 -1 s +82296.0 h +(:rgb_green_map) 102359 0.00 -1 s +103632.0 h +(:wm_size_hints) 122127 0.00 -1 s +52832.0 163689.0 m +(:font) 58629 0.00 -1 s +82296.0 h +(:rgb_red_map) 99695 0.00 -1 s +103632.0 h +119888.0 h +(:wm_transient_for) 142454 0.00 -1 s +52832.0 166850.0 m +(:font_name) 66623 0.00 -1 s +82296.0 h +(:secondary) 95463 0.00 -1 s +103632.0 h +119888.0 h +(:wm_zoom_hints) 140420 0.00 -1 s +52832.0 170011.0 m +(:full_name) 65841 0.00 -1 s +82296.0 h +(:strikeout_ascent) 102984 0.00 -1 s +103632.0 h +(:x_height) 114918 0.00 -1 s +52832.0 173172.0 m +(:integer) 62233 0.00 -1 s +82296.0 h +(:strikeout_descent) 104395 0.00 -1 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Atoms, Properties, and Selections) 50845 -25.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(11\036112) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(When) 59571 0.00 -1 s +( creating a new atom, the following conventions should be obeyed in order to) 149352 190.08 32 s +52832.0 25739.0 m +(minimize) 63491 0.00 -1 s +( the conflict between atom names:) 101939 -37.60 32 s +/symbb8 6 declareFont +6 sf +52832.0 32286.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Symbol) 66693 0.00 -1 s +( names beginning with an underscore should be used for atoms that are pri\036) 149352 -170.62 32 s +57912.0 35447.0 m +(vate) 62613 0.00 -1 s +( to a particular vendor or organization. An) 108971 -184.00 32 s +( additional prefix should identify the) 149352 -184.60 32 s +57912.0 38608.0 m +(organization.) 72723 0.00 -1 s +6 sf +52832.0 45156.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Symbol) 66693 0.00 -1 s +( names beginning with two underscores should be used for atoms that are) 149352 -8.75 32 s +57912.0 48316.0 m +(private) 65747 0.00 -1 s +( to a single application or end user.) 105054 -27.86 32 s +52832.0 54593.0 m +(CLX) 58475 0.00 -1 s +( provides functions to convert between an ) 104793 -223.86 32 s +2 sf +(xatom) 112315 0.00 -1 s +5 sf +( and its corresponding ID integer.) 149352 -178.80 32 s +52832.0 57754.0 m +(The) 57220 0.00 -1 s +( data type of an atom ID is) 87007 -32.86 32 s +2 sf +( card29) 95989 -32.00 32 s +5 sf +(. The ) 102430 -32.50 32 s +2 sf +(xatom) 109952 0.00 -1 s +5 sf +( representation is usually sufficient) 149352 -24.50 32 s +52832.0 60915.0 m +(for) 56121 0.00 -1 s +( most CLX programs. However, it is occasionally useful to be able to convert an atom) 149352 -258.40 32 s +52832.0 64076.0 m +(ID) 55808 0.00 -1 s +( returned in events or properties into its corresponding) 116898 -24.50 32 s +( ) 117575 -29.00 32 s +2 sf +(xatom) 125097 0.00 -1 s +5 sf +(.) 125803 0.00 -1 s +2 sf +34544.0 70352.0 m +(atom\036name) 48177 0.00 -1 s +( ) 48836 -47.00 32 s +/timsps10i 4 declareFont +4 sf +(display atom\036id) 66424 -47.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 73513.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 76674.0 m +( ) 53504 -34.00 32 s +( atom\036name) 66869 -35.00 32 s +5 sf +( \037 Type ) 77505 -34.33 32 s +2 sf +(keyword) 88008 0.00 -1 s +5 sf +(.) 88714 0.00 -1 s +4 sf +( ) 89385 -35.00 32 s +5 sf +52832.0 81393.0 m +(Returns) 61610 0.00 -1 s +( the atom) 72057 -28.00 32 s +( keyword for the ) 91377 -28.50 32 s +4 sf +(atom\036id) 100154 0.00 -1 s +5 sf +( on the given ) 115404 -28.50 32 s +4 sf +(display) 123556 0.00 -1 s +5 sf +( server.) 131832 -29.00 32 s +4 sf +52832.0 87670.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +5 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +5 sf +( object.) 84463 -30.00 32 s +4 sf +52832.0 92456.0 m +(atom\036id) 61609 0.00 -1 s +( \037 ) 65453 -38.50 32 s +5 sf +(A ) 68157 -39.00 32 s +2 sf +(card29) 76465 0.00 -1 s +5 sf +(.) 77171 0.00 -1 s +2 sf +34544.0 97242.0 m +(find\036atom) 46455 0.00 -1 s +( ) 47112 -49.00 32 s +4 sf +(display) 55264 0.00 -1 s +( atom\036name) 68614 -50.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 100403.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 103564.0 m +( atom\036id) 62968 -26.50 32 s +5 sf +( \037 Type ) 73627 -26.67 32 s +2 sf +(card29) 81935 0.00 -1 s +5 sf +( or ) 85644 -26.50 32 s +2 sf +(null) 90350 0.00 -1 s +5 sf +(.) 91056 0.00 -1 s +52832.0 108283.0 m +(Returns) 61610 0.00 -1 s +( the atom ID for the given ) 90478 -164.00 32 s +4 sf +(atom\036nam) 101919 0.00 -1 s +5 sf +(e, if it exists. If no atom of that name exists) 149352 -147.60 32 s +52832.0 111444.0 m +(for) 56121 0.00 -1 s +( the display server,) 77387 -17.00 32 s +( ) 78075 -18.00 32 s +2 sf +(nil) 81212 0.00 -1 s +5 sf +( is returned.) 94578 -17.50 32 s +4 sf +52832.0 117721.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +5 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +5 sf +( object.) 84463 -30.00 32 s +4 sf +52832.0 122507.0 m +(atom\036name) 65526 0.00 -1 s +( \037 ) 69367 -40.00 32 s +5 sf +(An ) 73481 -40.00 32 s +2 sf +(xatom) 81003 0.00 -1 s +5 sf +(.) 81709 0.00 -1 s +2 sf +34544.0 127294.0 m +(intern\036atom) 48961 0.00 -1 s +( ) 49606 -61.00 32 s +4 sf +(display atom\036name) 71097 -61.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 130454.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 133615.0 m +( atom\036id) 62968 -26.50 32 s +5 sf +( \037 Type ) 73627 -26.67 32 s +2 sf +(card29) 81935 0.00 -1 s +5 sf +( or) 84965 -26.00 32 s +2 sf +( null) 90350 -27.00 32 s +5 sf +(.) 91056 0.00 -1 s +52832.0 138334.0 m +(Creates) 61294 0.00 -1 s +( an atom with the given name and returns its atom ID. The atom can survive the) 149352 -124.69 32 s +52832.0 141495.0 m +(interning) 63020 0.00 -1 s +( client; it exists until the last server connection has been closed) 133081 -79.09 32 s +( and the server) 149352 -87.67 32 s +52832.0 144656.0 m +(resets) 59257 0.00 -1 s +( itself.) 66334 23.00 32 s +4 sf +52832.0 150932.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +5 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +5 sf +( object.) 84463 -30.00 32 s +4 sf +52832.0 155719.0 m +(atom\036name) 65526 0.00 -1 s +( \037 ) 69367 -40.00 32 s +5 sf +(An) 72815 0.00 -1 s +2 sf +( xatom) 81003 -40.00 32 s +5 sf +(.) 81709 0.00 -1 s +20320.0 161228.0 m +0.0 0.0 m +newpath +20455 159604 av +148878 159602 as +[] 0 setdash +dp +149352.0 161228.0 m +/timsps12b 7 declareFont +7 sf +20320.0 164615.0 m +(Properties) 35362 0.00 -1 s +52832.0 h +2 sf +(11.2) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(For) 63885 0.00 -1 s +( each window, an X server can record a set of ) 113712 -214.64 32 s +4 sf +(properties) 125313 0.00 -1 s +5 sf +(. Properties are a gen\036) 149352 -161.00 32 s +52832.0 167775.0 m +(eral) 57061 0.00 -1 s +( mechanism for) 74479 -68.00 32 s +( clients to associate arbitrary data with a window, and for clients to) 149352 -62.83 32 s +52832.0 170936.0 m +(communicate) 68035 0.00 -1 s +( window data to) 86134 -2.00 32 s +( each other via the server. No interpretation is placed on) 149352 -2.30 32 s +52832.0 174097.0 m +(property) 62391 0.00 -1 s +( data by the server itself.) 90018 -23.00 32 s +52832.0 180374.0 m +(A) 54869 0.00 -1 s +( property consists of a name, a type, a) 96017 -186.00 32 s +( data format, and data. The name of a property is) 149352 -167.90 32 s +52832.0 183535.0 m +(given) 59102 0.00 -1 s +( by an atom. The property type is another atom used to denote the intended) 142618 -75.21 32 s +( inter\036) 149352 -82.00 32 s +52832.0 186696.0 m +(pretation) 62862 0.00 -1 s +( of the property data. The property formats specifies whether the property) 144126 -163.64 32 s +( data) 149352 -181.00 32 s +52832.0 189857.0 m +(should) 60358 0.00 -1 s +( be treated) 72285 87.00 32 s +( as a set of 8\036, 16\036, or 32\036bit elements. The property format must be) 149352 80.29 32 s +52832.0 193017.0 m +(specified) 63018 0.00 -1 s +( so that the X server can communicate property data with the) 128777 -270.00 32 s +( correct byte order.) 149352 -297.67 32 s +52832.0 199294.0 m +(CLX) 58475 0.00 -1 s +( provides functions to:) 83696 -32.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118488.0 8466.0 m +(Atoms, Properties, and Selections) 149013 -25.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(11\036113) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/symbb8 6 declareFont +6 sf +52832.0 22849.0 m +(\267) 53872 0.00 -1 s +57912.0 h +/timsps10 5 declareFont +5 sf +(Create) 65276 0.00 -1 s +( or) 68292 -40.00 32 s +( change a property) 89092 -40.67 32 s +6 sf +52832.0 29396.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( property) 75809 -48.00 32 s +( data) 81167 -49.00 32 s +6 sf +52832.0 35944.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(List) 62302 0.00 -1 s +( window properties) 84034 -27.00 32 s +6 sf +52832.0 42491.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Delete) 65276 0.00 -1 s +( a) 67195 -40.00 32 s +( property) 77419 -41.00 32 s +2 sf +34544.0 48768.0 m +(change\036property) 54607 0.00 -1 s +( ) 55267 -46.00 32 s +/timsps10i 4 declareFont +4 sf +(window property data type) 85465 -46.00 32 s +( format ) 94309 -46.50 32 s +5 sf +(&key \() 102177 -47.00 32 s +2 sf +(:mode) 109699 0.00 -1 s +5 sf +( ) 110359 -46.00 32 s +2 sf +(:replace) 120074 0.00 -1 s +5 sf +(\) ) 121672 -47.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 51929.0 m +(\() 53771 0.00 -1 s +2 sf +(:start) 60350 0.00 -1 s +5 sf +( 0\) ) 64084 -14.00 32 s +2 sf +(:end) 69414 0.00 -1 s +4 sf +( ) 70105 -15.00 32 s +2 sf +(:transform) 83267 0.00 -1 s +5 sf +52832.0 56648.0 m +(Creates) 61294 0.00 -1 s +( a new window property or) 92158 76.00 32 s +( changes an existing property. A ) 129763 62.83 32 s +2 sf +(:property\036notify) 149352 0.00 -1 s +5 sf +52832.0 59809.0 m +(event) 58944 0.00 -1 s +( is generated for the) 81215 -35.00 32 s +( ) 81885 -36.00 32 s +4 sf +(window) 90666 0.00 -1 s +5 sf +(.) 91372 0.00 -1 s +52832.0 66085.0 m +(If) 54710 0.00 -1 s +( the ) 59686 58.00 32 s +2 sf +(:mode) 67208 0.00 -1 s +5 sf +( is ) 70618 58.00 32 s +2 sf +(:replace) 80333 0.00 -1 s +5 sf +(, the new ) 91480 58.00 32 s +4 sf +(data) 96497 0.00 -1 s +5 sf +(, ) 97967 58.00 32 s +4 sf +(type) 102668 0.00 -1 s +5 sf +(,) 103374 0.00 -1 s +( and ) 108976 57.50 32 s +4 sf +(format) 116501 0.00 -1 s +5 sf +( replace any previous values.) 149352 43.00 32 s +52832.0 69246.0 m +(The) 57220 0.00 -1 s +( subsequence of previous data elements that are replaced is defined by) 133899 -231.82 32 s +( the ) 138248 -255.50 32 s +2 sf +(:start) 144827 0.00 -1 s +5 sf +( and) 149352 -256.00 32 s +52832.0 72407.0 m +2 sf +(:end) 58162 0.00 -1 s +5 sf +( indexes.) 68117 -78.00 32 s +52832.0 78684.0 m +(If) 54710 0.00 -1 s +( the ) 62332 1381.00 32 s +2 sf +(:mode) 69854 0.00 -1 s +5 sf +( is ) 75910 1381.00 32 s +2 sf +(:prepend) 86884 0.00 -1 s +5 sf +( or ) 93408 1381.00 32 s +2 sf +(:append) 103287 0.00 -1 s +5 sf +(, no previous data is changed,) 143660 1381.00 32 s +( but) 149352 1380.00 32 s +52832.0 81844.0 m +(the) 56280 0.00 -1 s +( new ) 62231 -81.00 32 s +4 sf +(data) 67248 0.00 -1 s +5 sf +( is added at the beginning or the end, respectively. For) 127729 -81.00 32 s +( these modes, if the) 149352 -61.25 32 s +52832.0 85005.0 m +4 sf +(property) 62551 0.00 -1 s +5 sf +( already exists, the new ) 89498 -34.00 32 s +4 sf +(type) 94199 0.00 -1 s +5 sf +( and ) 99618 -34.00 32 s +4 sf +(format) 107143 0.00 -1 s +5 sf +( must match) 120905 -17.00 32 s +( the previous values.) 144001 -34.67 32 s +52832.0 91282.0 m +(The) 57220 0.00 -1 s +( ) 57773 -153.00 32 s +2 sf +(:transform) 70935 0.00 -1 s +5 sf +(, if given, is a function used to) 104118 -153.00 32 s +( compute the actual property data stored.) 149352 -128.00 32 s +52832.0 94443.0 m +(The) 57220 0.00 -1 s +( ) 58146 220.00 32 s +2 sf +(:transform) 71308 0.00 -1 s +5 sf +(, which must accept a single data) 109856 220.00 32 s +( element and return a single trans\036) 149352 182.83 32 s +52832.0 97604.0 m +(formed) 60980 0.00 -1 s +( data element,) 76656 -38.00 32 s +( is called for each data element. If the ) 119447 -34.22 32 s +4 sf +(data) 124464 0.00 -1 s +5 sf +( is a string, the default) 149352 -38.60 32 s +52832.0 100765.0 m +2 sf +(:transform) 65994 0.00 -1 s +5 sf +( function transforms each character into its ASCII code; otherwise, the de\036) 149352 -58.91 32 s +52832.0 103926.0 m +(fault) 58003 0.00 -1 s +( is to) 63422 -35.00 32 s +( store the ) 74402 -23.67 32 s +4 sf +(data) 79419 0.00 -1 s +5 sf +( unchanged.) 93020 -36.00 32 s +4 sf +52832.0 110202.0 m +(window) 61613 0.00 -1 s +( \037 ) 65459 -37.50 32 s +5 sf +(A ) 68164 -38.00 32 s +2 sf +(window) 77571 0.00 -1 s +5 sf +(.) 78277 0.00 -1 s +4 sf +52832.0 114989.0 m +(property) 62551 0.00 -1 s +5 sf +( ) 63222 -35.00 32 s +4 sf +(\037 ) 66403 -34.00 32 s +5 sf +(A property name ) 86125 -34.67 32 s +2 sf +(xatom) 93647 0.00 -1 s +5 sf +(.) 94353 0.00 -1 s +4 sf +52832.0 119775.0 m +(data \037 ) 61700 -35.00 32 s +5 sf +(A sequence of property data elements.) 104783 -34.80 32 s +4 sf +52832.0 124562.0 m +(type) 57533 0.00 -1 s +( \037 ) 61382 -36.00 32 s +5 sf +(The) 65770 0.00 -1 s +( property type ) 82196 -36.67 32 s +2 sf +(xatom) 89718 0.00 -1 s +5 sf +(.) 90424 0.00 -1 s +4 sf +52832.0 129348.0 m +(format) 60357 0.00 -1 s +( \037 ) 64234 -22.00 32 s +5 sf +(One) 68935 0.00 -1 s +( of 8, 16, or 32.) 86225 -22.60 32 s +2 sf +52832.0 134135.0 m +(:mode) 60354 0.00 -1 s +4 sf +( \037 ) 64189 -43.00 32 s +5 sf +(One of ) 72567 -42.50 32 s +2 sf +(:replace) 82282 0.00 -1 s +5 sf +(, ) 83651 -43.00 32 s +2 sf +(:append) 93530 0.00 -1 s +5 sf +(, or ) 97913 -42.50 32 s +2 sf +(:prepend) 108887 0.00 -1 s +5 sf +(.) 109593 0.00 -1 s +2 sf +52832.0 138921.0 m +(:start,) 60117 0.00 -1 s +( :end ) 66751 -54.00 32 s +5 sf +(\037) 69573 0.00 -1 s +4 sf +( ) 70225 -54.00 32 s +5 sf +(Specify the subsequence) 97860 -54.00 32 s +( of previous data replaced when ) 134207 -54.50 32 s +2 sf +(:mode) 141729 0.00 -1 s +5 sf +( is ) 144968 -27.50 32 s +2 sf +(:re\036) 149352 0.00 -1 s +57912.0 142082.0 m +(place) 64182 0.00 -1 s +5 sf +(.) 64888 0.00 -1 s +2 sf +52832.0 146868.0 m +(:transform) 65994 0.00 -1 s +4 sf +( \037 ) 69851 -32.00 32 s +5 sf +(A function that) 86872 -32.00 32 s +( transforms each data element into a data value to store.) 149352 -29.30 32 s +2 sf +34544.0 151655.0 m +(delete\036property) 53192 0.00 -1 s +( ) 53809 -89.00 32 s +4 sf +(window property) 72926 -89.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 156374.0 m +(Deletes) 61294 0.00 -1 s +( the ) 65720 -217.00 32 s +4 sf +(window property) 84709 -217.00 32 s +5 sf +(. If the ) 92208 -217.00 32 s +4 sf +(property) 101927 0.00 -1 s +5 sf +( already exists, a ) 120791 -162.75 32 s +2 sf +(:property\036notify) 140380 0.00 -1 s +5 sf +( event is) 149352 -217.00 32 s +52832.0 159535.0 m +(generated) 63800 0.00 -1 s +( for) 67759 -36.00 32 s +( the ) 72546 -36.50 32 s +4 sf +(window) 81327 0.00 -1 s +5 sf +(. ) 82702 -37.00 32 s +4 sf +52832.0 165811.0 m +(window) 61613 0.00 -1 s +( \037 ) 65459 -37.50 32 s +5 sf +(A ) 68164 -38.00 32 s +2 sf +(window) 77571 0.00 -1 s +5 sf +(.) 78277 0.00 -1 s +4 sf +52832.0 170598.0 m +(property) 62551 0.00 -1 s +( \037 ) 66403 -34.50 32 s +5 sf +(A property name ) 86125 -34.67 32 s +2 sf +(xatom) 93647 0.00 -1 s +5 sf +(.) 94353 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Atoms, Properties, and Selections) 50845 -25.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(11\036114) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(get\036property) 49744 0.00 -1 s +( ) 50419 -31.00 32 s +/timsps10i 4 declareFont +4 sf +(window property) 69594 -31.00 32 s +( ) 70268 -32.00 32 s +/timsps10 5 declareFont +5 sf +(&key ) 77213 -31.00 32 s +2 sf +(:type) 83324 0.00 -1 s +5 sf +( \() 84937 -32.00 32 s +2 sf +(:start) 91516 0.00 -1 s +5 sf +( 0\) ) 95215 -31.50 32 s +2 sf +(:end :delete\036p ) 112392 -31.50 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 25739.0 m +(\() 53771 0.00 -1 s +2 sf +(:result\036type) 67717 0.00 -1 s +( 'list) 72971 4.00 32 s +5 sf +(\) ) 74620 4.00 32 s +2 sf +(:transform) 87782 0.00 -1 s +34544.0 28900.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 32060.0 m +( data ) 59877 -30.00 32 s +5 sf +(\037 Type ) 69850 -30.00 32 s +2 sf +(sequence) 80667 0.00 -1 s +5 sf +(.) 81373 0.00 -1 s +4 sf +( ) 82048 -31.00 32 s +52832.0 35221.0 m +( type ) 59582 -23.00 32 s +5 sf +(\037 Type ) 69569 -23.00 32 s +2 sf +(xatom) 77091 0.00 -1 s +5 sf +(.) 77797 0.00 -1 s +4 sf +( ) 78480 -23.00 32 s +52832.0 38382.0 m +( format ) 62409 -22.00 32 s +5 sf +(\037) 65231 0.00 -1 s +( Type) 71715 -21.00 32 s +( \() 73338 -22.00 32 s +2 sf +(member 8 16 32) 92475 -21.33 32 s +5 sf +(\).) 94120 0.00 -1 s +4 sf +( ) 94804 -22.00 32 s +52832.0 41543.0 m +( bytes\036after ) 66937 -27.00 32 s +5 sf +(\037 Type ) 76916 -27.00 32 s +2 sf +(card32) 85224 0.00 -1 s +5 sf +(.) 85930 0.00 -1 s +( ) 86608 -28.00 32 s +52832.0 46262.0 m +(Returns) 61610 0.00 -1 s +( a subsequence) 78040 -249.00 32 s +( of the data for the window property. The ) 123128 -249.56 32 s +2 sf +(:start) 129707 0.00 -1 s +5 sf +( and ) 134945 -124.50 32 s +2 sf +(:end) 140275 0.00 -1 s +5 sf +( indexes) 149352 -250.00 32 s +52832.0 49423.0 m +(specify) 60981 0.00 -1 s +( the property ) 75737 -123.00 32 s +4 sf +(data) 80754 0.00 -1 s +5 sf +( elements returned. The ) 107612 -123.00 32 s +2 sf +(:transform) 120774 0.00 -1 s +5 sf +( function is) 133349 -61.50 32 s +( called for ele\036) 149352 -123.67 32 s +52832.0 52584.0 m +(ments) 59573 0.00 -1 s +( of the specified subsequence to compute) 105825 -24.00 32 s +( the ) 110660 -12.50 32 s +4 sf +(data) 115677 0.00 -1 s +5 sf +( sequence returned. The prop\036) 149352 -24.50 32 s +52832.0 55745.0 m +(erty) 57219 0.00 -1 s +( ) 57755 -170.00 32 s +4 sf +(type) 62456 0.00 -1 s +5 sf +( and ) 67603 -170.00 32 s +4 sf +(format) 75128 0.00 -1 s +5 sf +( are also returned. The final return value gives the actual number of) 149352 -155.58 32 s +52832.0 58905.0 m +(data) 57533 0.00 -1 s +( bytes \(not elements\) following the last) 101420 -26.67 32 s +( data element returned.) 127181 -32.67 32 s +52832.0 65182.0 m +(If) 54710 0.00 -1 s +( the ) 59262 -154.00 32 s +4 sf +(property) 68981 0.00 -1 s +5 sf +( does not exist, the returned ) 99957 -154.00 32 s +4 sf +(data) 104974 0.00 -1 s +5 sf +( and ) 110153 -154.00 32 s +4 sf +(type) 114854 0.00 -1 s +5 sf +( are ) 119403 -154.00 32 s +2 sf +(nil) 122540 0.00 -1 s +5 sf +( and the returned ) 141827 -115.25 32 s +4 sf +(format) 149352 0.00 -1 s +5 sf +52832.0 68343.0 m +(and) 56907 0.00 -1 s +( ) 57577 -36.00 32 s +4 sf +(bytes\036after) 69645 0.00 -1 s +5 sf +( are zero.) 79993 -35.50 32 s +52832.0 74620.0 m +(If) 54710 0.00 -1 s +( the given ) 66429 -39.00 32 s +2 sf +(:type) 72540 0.00 -1 s +4 sf +( ) 73207 -39.00 32 s +5 sf +(is non\036) 80928 -39.00 32 s +2 sf +(nil) 84065 0.00 -1 s +5 sf +( but does not) 98451 -39.00 32 s +( match the actual property type, then the ) 144335 -34.63 32 s +4 sf +(data) 149352 0.00 -1 s +5 sf +52832.0 77780.0 m +(returned) 62233 0.00 -1 s +( is ) 65883 178.00 32 s +2 sf +(nil) 69020 0.00 -1 s +5 sf +(, the ) 74942 178.00 32 s +4 sf +(type) 79643 0.00 -1 s +5 sf +( and ) 85486 178.00 32 s +4 sf +(format) 93011 0.00 -1 s +5 sf +( returned give the actual property values, and the) 149352 156.13 32 s +52832.0 80941.0 m +4 sf +(bytes\036after) 64900 0.00 -1 s +5 sf +( returned gives the total number of bytes \(not) 114911 -116.38 32 s +( elements\) in the property data.) 149352 -133.60 32 s +52832.0 87218.0 m +(If) 54710 0.00 -1 s +( the given ) 66492 -18.00 32 s +2 sf +(:type) 72603 0.00 -1 s +5 sf +( is ) 75861 -18.00 32 s +2 sf +(nil) 78998 0.00 -1 s +5 sf +( or if it matches the actual property type, then: ) 131719 -18.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 93766.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( ) 62972 -34.00 32 s +4 sf +(data) 67989 0.00 -1 s +5 sf +( returned is the transformed subsequence of the property data.) 137431 -33.67 32 s +6 sf +52832.0 100313.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( ) 62965 -41.00 32 s +4 sf +(type) 67666 0.00 -1 s +5 sf +( and ) 73112 -20.50 32 s +4 sf +(format) 80637 0.00 -1 s +5 sf +( returned give the actual property values.) 126548 -41.00 32 s +6 sf +52832.0 106861.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( ) 62983 -23.00 32 s +4 sf +(bytes\036after) 75051 0.00 -1 s +5 sf +( returned gives the actual number of data bytes \(not elements\) fol\036) 149352 -20.45 32 s +57912.0 110022.0 m +(lowing) 65750 0.00 -1 s +( the last data element returned.) 100252 -27.20 32 s +( ) 100923 -35.00 32 s +52832.0 116298.0 m +(In) 55182 0.00 -1 s +( this case, the ) 70218 -219.00 32 s +2 sf +(:delete\036p) 80716 0.00 -1 s +5 sf +( argument is also examined. If) 114010 -175.20 32 s +( ) 114496 -220.00 32 s +2 sf +(:delete\036p) 124994 0.00 -1 s +5 sf +( is true and ) 137284 -219.50 32 s +4 sf +(bytes\036after) 149352 0.00 -1 s +5 sf +52832.0 119459.0 m +(is) 54714 0.00 -1 s +( zero, the property is deleted and a ) 92162 -266.00 32 s +2 sf +(:property\036notify) 111751 0.00 -1 s +5 sf +( event is generated for the ) 139865 -303.50 32 s +4 sf +(window) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +4 sf +52832.0 125736.0 m +(window) 61613 0.00 -1 s +( \037 ) 65459 -37.50 32 s +5 sf +(A ) 68164 -38.00 32 s +2 sf +(window) 77571 0.00 -1 s +5 sf +(.) 78277 0.00 -1 s +4 sf +52832.0 130522.0 m +(property) 62551 0.00 -1 s +( \037 ) 66403 -34.50 32 s +5 sf +(A property name ) 86125 -34.67 32 s +2 sf +(xatom) 93647 0.00 -1 s +5 sf +(.) 94353 0.00 -1 s +2 sf +52832.0 135309.0 m +(:type) 58943 0.00 -1 s +4 sf +( \037 ) 62808 -28.00 32 s +5 sf +(The requested type ) 84902 -28.00 32 s +2 sf +(xatom) 92424 0.00 -1 s +5 sf +( or ) 96131 -27.50 32 s +2 sf +(nil) 99268 0.00 -1 s +5 sf +(.) 99974 0.00 -1 s +2 sf +52832.0 140095.0 m +(:start) 59411 0.00 -1 s +5 sf +(,) 60117 0.00 -1 s +( ) 60791 -32.00 32 s +2 sf +(:end) 66121 0.00 -1 s +4 sf +( \037 ) 69978 -32.00 32 s +5 sf +(Specify the subsequence of property ) 111588 -32.00 32 s +4 sf +(data) 116605 0.00 -1 s +5 sf +( returned. ) 128061 -31.50 32 s +2 sf +52832.0 144882.0 m +(:transform) 65994 0.00 -1 s +4 sf +( \037 ) 69657 -129.00 32 s +5 sf +(A function that transforms each data element into a data value to return.) 149352 -117.92 32 s +2 sf +52832.0 149668.0 m +(:delete\036p) 63330 0.00 -1 s +4 sf +( \037 ) 67197 -27.00 32 s +5 sf +(If) 69075 0.00 -1 s +( true, the existing ) 89266 -27.50 32 s +4 sf +(property) 98985 0.00 -1 s +5 sf +( can be deleted.) 116456 -27.67 32 s +2 sf +52832.0 154455.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 ) 70657 -21.00 32 s +5 sf +(The t) 76514 -21.00 32 s +4 sf +(ype) 80431 0.00 -1 s +5 sf +( of data sequence to return. Default is) 122601 -21.00 32 s +( ) 123285 -22.00 32 s +2 sf +('list) 127829 0.00 -1 s +5 sf +(.) 128535 0.00 -1 s +2 sf +34544.0 159241.0 m +(list\036properties) 51470 0.00 -1 s +( ) 52156 -20.00 32 s +4 sf +(window ) 61623 -20.00 32 s +5 sf +(&key \() 69519 -19.00 32 s +2 sf +(:result\036type 'list) 88695 -20.00 32 s +5 sf +(\)) 89634 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 162402.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 165563.0 m +( properties ) 66455 -32.00 32 s +5 sf +(\037) 69277 0.00 -1 s +( Type ) 76423 -32.50 32 s +2 sf +(sequence) 87240 0.00 -1 s +5 sf +( of ) 90937 -32.50 32 s +2 sf +(keyword) 101440 0.00 -1 s +5 sf +(.) 102146 0.00 -1 s +4 sf +( ) 102819 -33.00 32 s +5 sf +52832.0 170282.0 m +(Returns) 61610 0.00 -1 s +( a sequence containing the names of all ) 106304 -36.50 32 s +4 sf +(window) 115085 0.00 -1 s +5 sf +( ) 115754 -37.00 32 s +4 sf +(properties) 127355 0.00 -1 s +5 sf +(.) 128061 0.00 -1 s +4 sf +52832.0 176558.0 m +(window) 61613 0.00 -1 s +( \037 ) 65459 -37.50 32 s +5 sf +(A ) 68164 -38.00 32 s +2 sf +(window) 77571 0.00 -1 s +5 sf +(.) 78277 0.00 -1 s +2 sf +52832.0 181345.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 ) 70659 -20.00 32 s +5 sf +(The type of sequence to return. Default is ) 118070 -19.75 32 s +2 sf +('list) 122614 0.00 -1 s +5 sf +(.) 123320 0.00 -1 s +2 sf +34544.0 186131.0 m +(rotate\036properties) 55071 0.00 -1 s +( ) 55733 -44.00 32 s +4 sf +(window properties ) 77439 -44.00 32 s +5 sf +(&optional \() 90484 -44.00 32 s +4 sf +(delta) 96127 0.00 -1 s +5 sf +( 1\)) 99139 -44.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 190850.0 m +(Rotates) 61297 0.00 -1 s +( the values of the given ) 87677 -97.00 32 s +4 sf +(window properties) 108668 -97.00 32 s +5 sf +(. The value of property ) 134828 -97.00 32 s +4 sf +(i) 135612 0.00 -1 s +5 sf +( in the given) 149352 -97.00 32 s +52832.0 194011.0 m +(sequence) 63175 0.00 -1 s +( is changed to the value of the property at index \() 116769 -165.00 32 s +2 sf +(mod) 122099 0.00 -1 s +5 sf +( \(+ ) 125679 -181.50 32 s +4 sf +(i) 126463 0.00 -1 s +5 sf +( ) 126987 -182.00 32 s +4 sf +(delta) 132630 0.00 -1 s +5 sf +(\) \() 135033 -181.00 32 s +2 sf +(length) 142558 0.00 -1 s +5 sf +( ) 143082 -182.00 32 s +4 sf +(prop\036) 149352 0.00 -1 s +52832.0 197172.0 m +(erties) 59102 0.00 -1 s +5 sf +(\)\).) 61686 0.00 -1 s +( This function operates much like the ) 104222 -25.57 32 s +2 sf +(rotatef) 112367 0.00 -1 s +5 sf +( macro in Common Lisp.) 140547 -29.50 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118488.0 8466.0 m +(Atoms, Properties, and Selections) 149013 -25.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(11\036115) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(If) 54710 0.00 -1 s +( \() 56089 -266.00 32 s +2 sf +(mod) 61419 0.00 -1 s +5 sf +( ) 61859 -266.00 32 s +/timsps10i 4 declareFont +4 sf +(delta) 67502 0.00 -1 s +5 sf +( \() 68881 -266.00 32 s +2 sf +(length) 76406 0.00 -1 s +5 sf +( ) 76846 -266.00 32 s +4 sf +(properties) 88447 0.00 -1 s +5 sf +(\)\) is non\036zero, a ) 105954 -266.00 32 s +2 sf +(:property\036notify) 125543 0.00 -1 s +5 sf +( event is generated) 146091 -177.33 32 s +( on) 149352 -267.00 32 s +52832.0 25739.0 m +(the) 56280 0.00 -1 s +( window for each property, in the same order as they appear in the ) 133612 133.21 32 s +4 sf +(properties) 145213 0.00 -1 s +5 sf +( se\036) 149352 143.00 32 s +52832.0 28900.0 m +(quence.) 61530 0.00 -1 s +4 sf +52832.0 35176.0 m +(window) 61613 0.00 -1 s +( \037 ) 65459 -37.50 32 s +5 sf +(A ) 68164 -38.00 32 s +2 sf +(window) 77571 0.00 -1 s +5 sf +(.) 78277 0.00 -1 s +4 sf +52832.0 39963.0 m +(properties) 64433 0.00 -1 s +( \037 ) 68288 -33.00 32 s +5 sf +(A sequence of ) 85037 -33.00 32 s +2 sf +(xatom) 92559 0.00 -1 s +5 sf +( values.) 101148 -33.00 32 s +4 sf +52832.0 44749.0 m +(delta) 58475 0.00 -1 s +( \037 ) 62326 -35.00 32 s +5 sf +(The index interval between source and destination elements of ) 133252 -34.67 32 s +4 sf +(properties) 144853 0.00 -1 s +5 sf +(.) 145559 0.00 -1 s +20320.0 50258.0 m +0.0 0.0 m +newpath +20455 48634 av +148878 48632 as +[] 0 setdash +dp +149352.0 50258.0 m +/timsps12b 7 declareFont +7 sf +20320.0 53645.0 m +(Selections) 34614 0.00 -1 s +52832.0 h +2 sf +(11.3) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(A) 62003 0.00 -1 s +( selection is an atom used to identify data that can be shared among all client) 149352 49.60 32 s +52832.0 56806.0 m +(programs) 63489 0.00 -1 s +( connected to an X server. Unlike properties, the data represented by a selec\036) 149352 -56.00 32 s +52832.0 59967.0 m +(tion) 57222 0.00 -1 s +( is stored by some client program,) 95399 -25.00 32 s +( not by the server.) 115621 -19.25 32 s +52832.0 66243.0 m +(The) 57220 0.00 -1 s +( data named by a selection is associated with) 105798 -237.00 32 s +( a client window, which is referred to as) 149352 -207.88 32 s +52832.0 69404.0 m +(the) 56280 0.00 -1 s +( ) 56694 -292.00 32 s +4 sf +(selection owner) 74194 -292.00 32 s +5 sf +(. The server always knows which window is the owner of a) 138202 -265.45 32 s +( selection.) 149352 -293.00 32 s +52832.0 72565.0 m +(Selections) 64432 0.00 -1 s +( can be created freely by clients using ) 107767 9.63 32 s +2 sf +(intern\036atom) 122184 0.00 -1 s +5 sf +( to create an atom. CLX) 149352 10.40 32 s +52832.0 75726.0 m +(provides) 62550 0.00 -1 s +( functions to inquire or change the owner of a selection and to ) 131761 -107.85 32 s +4 sf +(convert) 140224 0.00 -1 s +5 sf +( a selec\036) 149352 -58.50 32 s +52832.0 78887.0 m +(tion.) 57928 0.00 -1 s +52832.0 85163.0 m +(Conversion) 65843 0.00 -1 s +( is the key to the use of selections for inter\036client communication. Suppose) 149352 -62.17 32 s +52832.0 88324.0 m +(Client) 59730 0.00 -1 s +( A wants to paste) 79116 -13.00 32 s +( the contents of the data named by selection ) 129090 -12.00 32 s +4 sf +(S) 130501 0.00 -1 s +5 sf +( into his window) 149352 -13.67 32 s +52832.0 91485.0 m +4 sf +(WA) 56906 0.00 -1 s +5 sf +(.) 57612 0.00 -1 s +( Client A calls ) 73675 -217.00 32 s +2 sf +(convert\036selection) 94047 0.00 -1 s +5 sf +( on selection atom ) 114716 -162.75 32 s +4 sf +(S) 116127 0.00 -1 s +5 sf +(, sending a conversion request) 149352 -217.00 32 s +52832.0 94646.0 m +(to) 55027 0.00 -1 s +( the server. The server, in turn, sends a ) 98453 -103.56 32 s +2 sf +(:selection\036request) 119609 0.00 -1 s +5 sf +( event to the current owner) 149352 -116.60 32 s +52832.0 97807.0 m +(of) 55182 0.00 -1 s +( ) 55630 -258.00 32 s +4 sf +(S) 57041 0.00 -1 s +5 sf +(, which is window ) 77408 -258.00 32 s +4 sf +(WB) 81482 0.00 -1 s +5 sf +( belonging to Client B. The ) 111526 -258.00 32 s +2 sf +(:selection\036request) 132682 0.00 -1 s +5 sf +( event contains) 149352 -129.50 32 s +52832.0 100968.0 m +(the) 56280 0.00 -1 s +( ) 56716 -270.00 32 s +4 sf +(requestor) 67533 0.00 -1 s +5 sf +( window \() 78434 -270.50 32 s +4 sf +(WA) 82508 0.00 -1 s +5 sf +(\), the selection atom \() 105956 -270.50 32 s +4 sf +(S) 107367 0.00 -1 s +5 sf +(\), an atom identifying a requested data) 149352 -225.50 32 s +52832.0 104129.0 m +(type,) 58397 0.00 -1 s +( and the name of a property of ) 92984 -26.00 32 s +4 sf +(WA) 97058 0.00 -1 s +5 sf +( into which the value of ) 124360 -21.67 32 s +4 sf +(S) 125771 0.00 -1 s +5 sf +( will be stored.) 142466 -26.00 32 s +52832.0 110405.0 m +(Since) 59102 0.00 -1 s +( ) 59562 -246.00 32 s +4 sf +(WB) 63636 0.00 -1 s +5 sf +( is the owner of ) 80667 -246.00 32 s +4 sf +(S) 82078 0.00 -1 s +5 sf +(, it must be associated with) 111418 -246.00 32 s +( the data defined by Client B as the) 149352 -215.75 32 s +52832.0 113566.0 m +(value) 58944 0.00 -1 s +( of ) 62388 -159.00 32 s +4 sf +(S) 63799 0.00 -1 s +5 sf +(. When ) 72338 -159.00 32 s +4 sf +(WB) 76412 0.00 -1 s +5 sf +( gets the ) 86045 -159.67 32 s +2 sf +(:selection\036request) 107201 0.00 -1 s +5 sf +( event, Client B is expected to convert) 149352 -136.71 32 s +52832.0 116727.0 m +(the) 56280 0.00 -1 s +( value of ) 66194 -222.00 32 s +4 sf +(S) 67605 0.00 -1 s +5 sf +( to the requested data type \(if possible\) and store the converted value in the) 149352 -206.64 32 s +52832.0 119888.0 m +(given) 59102 0.00 -1 s +( requestor property. Client B) 91110 -90.00 32 s +( is then expected to send a ) 120599 -120.57 32 s +2 sf +(:selection\036notify) 139874 0.00 -1 s +5 sf +( event to) 149352 -120.50 32 s +52832.0 123049.0 m +(the) 56280 0.00 -1 s +( requestor window ) 78454 155.33 32 s +4 sf +(WA) 82528 0.00 -1 s +5 sf +(, informing the requestor) 111283 233.00 32 s +( that the converted value for ) 145121 232.50 32 s +4 sf +(S) 146532 0.00 -1 s +5 sf +( is) 149352 232.00 32 s +52832.0 126210.0 m +(ready. Upon) 66781 0.00 32 s +( receiving the ) 82039 -269.00 32 s +2 sf +(:selection\036notify) 101314 0.00 -1 s +5 sf +( event, Client A can call ) 127683 -268.50 32 s +2 sf +(get\036property) 142883 0.00 -1 s +5 sf +( to re\036) 149352 -134.50 32 s +52832.0 129371.0 m +(trieve) 59256 0.00 -1 s +( the converted) 75186 -28.00 32 s +( value and to paste it into ) 104067 -28.57 32 s +4 sf +(WA) 108141 0.00 -1 s +5 sf +(.) 108847 0.00 -1 s +52832.0 138695.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 137870 av +149352 137870 as +149352 137988 as +52832 137988 as +closepath +fp +/drawmode PL_SET def +52832.0 141856.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62312 -161.00 32 s +5 sf +(Clients using selections must always be prepared to handle ) 128196 -142.89 32 s +2 sf +(:selection\036request) 149352 0.00 -1 s +5 sf +52832.0 145017.0 m +(events) 60042 0.00 -1 s +( and/or ) 68323 -170.00 32 s +2 sf +(:selection\036notify) 87598 0.00 -1 s +5 sf +( events. There is no way for a client to ask not to receive) 149352 -156.92 32 s +52832.0 148178.0 m +(these) 58631 0.00 -1 s +( types of events.) 76877 -31.67 32 s +52832.0 151339.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 150514 av +149352 150514 as +149352 150632 as +52832 150632 as +closepath +fp +/drawmode PL_SET def +52832.0 159173.0 m +(Type) 58631 0.00 -1 s +( atoms used in selection conversion can represent arbitrary client\036defined) 139180 -218.67 32 s +( interpre\036) 149352 -247.00 32 s +52832.0 162334.0 m +(tations) 60357 0.00 -1 s +( of) 63264 -149.00 32 s +( the selection data. For example, if the value of selection ) 126270 -135.91 32 s +4 sf +(S) 127681 0.00 -1 s +5 sf +( is a text string, Cli\036) 149352 -149.60 32 s +52832.0 165495.0 m +(ent) 56280 0.00 -1 s +( A might request its typeface by requesting conversion to the ) 123153 -226.27 32 s +2 sf +(:font) 128950 0.00 -1 s +5 sf +( type. A type ) 143241 -248.50 32 s +2 sf +(atom) 149352 0.00 -1 s +5 sf +52832.0 168656.0 m +(can) 56749 0.00 -1 s +( also represent a request to the selection owner to perform some action as a side\036ef\036) 149352 -90.40 32 s +52832.0 171817.0 m +(fect) 57061 0.00 -1 s +( of conversion \(for example, ) 89341 -95.20 32 s +2 sf +(:delete) 97331 0.00 -1 s +5 sf +(\). Some of the predefined atoms) 132943 -119.00 32 s +( of an X server) 149352 -89.75 32 s +52832.0 174978.0 m +(are) 56277 0.00 -1 s +( intended to be used as selection types \(for example, ) 115890 -3.00 32 s +2 sf +(:colormap) 128271 0.00 -1 s +5 sf +(, ) 129683 0.00 32 s +2 sf +(:bitmap) 139244 0.00 -1 s +5 sf +(, ) 140653 -3.00 32 s +2 sf +(:string) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 178139.0 m +(and) 56907 0.00 -1 s +( so forth\) However, X does not impose any requirements on the interpretation of type) 149352 -276.57 32 s +52832.0 181300.0 m +(atoms.) 60279 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Atoms, Properties, and Selections) 50845 -25.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(11\036116) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(When) 59571 0.00 -1 s +( multiple clients negotiate for ownership of a selection, certain race conditions) 149352 125.55 32 s +52832.0 25739.0 m +(might) 59417 0.00 -1 s +( be possible. For example, two clients might each) 114720 -63.00 32 s +( receive a user command to as\036) 149352 -53.00 32 s +52832.0 28900.0 m +(sert) 56906 0.00 -1 s +( ownership of the ) 77535 63.00 32 s +2 sf +(:primary) 88505 0.00 -1 s +5 sf +( selection, but the order in which the server) 137770 55.13 32 s +( processes) 149352 62.00 32 s +52832.0 32060.0 m +(these) 58631 0.00 -1 s +( client requests is unpredictable.) 94677 -60.00 32 s +( As a result, the ownership request initiated most) 149352 -53.00 32 s +52832.0 35221.0 m +(recently) 61920 0.00 -1 s +( by) 65401 -47.00 32 s +( the user might be incorrectly overridden by the other earlier ownership re\036) 149352 -43.58 32 s +52832.0 38382.0 m +(quest.) 59495 0.00 -1 s +( To prevent such anomalies, the server records a ) 113049 -179.56 32 s +/timsps10i 4 declareFont +4 sf +(last\036changed) 127626 0.00 -1 s +5 sf +( timestamp for each) 149352 -202.67 32 s +52832.0 41543.0 m +(change) 60824 0.00 -1 s +( of selection ownership.) 87624 -53.33 32 s +52832.0 47820.0 m +(Although) 63492 0.00 -1 s +( inter\036client communication via selections is rather complex, it offers impor\036) 149352 -42.30 32 s +52832.0 50981.0 m +(tant) 57064 0.00 -1 s +( benefits. Since selection communication is mediated by an X server, clients can) 149352 140.67 32 s +52832.0 54142.0 m +(share) 58786 0.00 -1 s +( data even though they are running on different hosts and using different network\036) 149352 -152.85 32 s +52832.0 57302.0 m +(ing) 56438 0.00 -1 s +( protocols. Data storage and conversion is distributed among clients so that the server) 149352 -268.23 32 s +52832.0 60463.0 m +(is) 54714 0.00 -1 s +( not required to) 71842 -64.00 32 s +( provide all possible data types or to store multiple forms of selection) 149352 -59.17 32 s +52832.0 63624.0 m +(data.) 58239 0.00 -1 s +52832.0 69901.0 m +(Certain) 61138 0.00 -1 s +( predefined atoms are used as standard selections, as described in the X11) 142554 -157.67 32 s +( Inter\036) 149352 -173.00 32 s +52832.0 73062.0 m +(client) 59101 0.00 -1 s +( Communications Conventions Manual. Some of) 113771 -103.00 32 s +( the standard selections covered) 149352 -77.75 32 s +52832.0 76223.0 m +(by) 55654 0.00 -1 s +( these conventions are:) 81303 -45.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 82770.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:primary) 68882 0.00 -1 s +4 sf +( \037 ) 72487 -158.00 32 s +5 sf +(The ) 77423 -158.00 32 s +4 sf +(primary selection) 97094 -158.00 32 s +5 sf +(. The main vehicle for inter\036client) 134388 -158.00 32 s +( cut and paste) 149352 -158.67 32 s +57912.0 85931.0 m +(operations.) 70373 0.00 -1 s +6 sf +52832.0 92479.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:secondary) 71079 0.00 -1 s +4 sf +( \037 ) 74596 -202.00 32 s +5 sf +(The ) 79488 -202.00 32 s +4 sf +(secondary selection) 101622 -202.00 32 s +5 sf +(. In some environments, clients can use) 144772 -202.00 32 s +( this) 149352 -203.00 32 s +57912.0 95639.0 m +(as) 60263 0.00 -1 s +( an auxiliary to ) 77845 -32.75 32 s +2 sf +(:primary) 88815 0.00 -1 s +5 sf +(.) 89521 0.00 -1 s +6 sf +52832.0 102187.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:clipboard) 70454 0.00 -1 s +4 sf +( \037 ) 74511 68.00 32 s +5 sf +(Analogous to akill ring. Represents the) 118900 68.00 32 s +( most recently deleted data) 149352 50.50 32 s +57912.0 105348.0 m +(item.) 63634 0.00 -1 s +2 sf +34544.0 111625.0 m +(convert\036selection) 54916 0.00 -1 s +( ) 55577 -45.00 32 s +4 sf +(selection type requestor) 82448 -45.00 32 s +( ) 83108 -46.00 32 s +5 sf +(&optional ) 95213 -45.00 32 s +4 sf +(property time) 110450 -46.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 116343.0 m +(Requests) 63022 0.00 -1 s +( that the value of the ) 86261 -97.83 32 s +4 sf +(selection) 96292 0.00 -1 s +5 sf +( be converted to the specified ) 129562 -97.50 32 s +4 sf +(type) 134263 0.00 -1 s +5 sf +( and stored in) 149352 -65.00 32 s +52832.0 119504.0 m +(the) 56280 0.00 -1 s +( given ) 63892 -35.00 32 s +4 sf +(property) 73611 0.00 -1 s +5 sf +( of the ) 81422 -35.00 32 s +4 sf +(requestor) 92239 0.00 -1 s +5 sf +( window.) 102706 -36.00 32 s +52832.0 125781.0 m +(If) 54710 0.00 -1 s +( the ) 59096 -237.00 32 s +4 sf +(selection) 69127 0.00 -1 s +5 sf +( has an owner, the X server sends a :) 108217 -237.00 32 s +2 sf +(selection\036request) 128434 0.00 -1 s +5 sf +( event to the) 141833 -158.00 32 s +( owner) 149352 -238.00 32 s +52832.0 128942.0 m +(window.) 62629 0.00 -1 s +( Otherwise, if no owner exists, the server generates on the requestor a ) 141833 -1.85 32 s +2 sf +(:selec\036) 149352 0.00 -1 s +52832.0 132103.0 m +(tion\036notify) 65527 0.00 -1 s +5 sf +( event containing a ) 87461 -42.00 32 s +2 sf +(nil) 90598 0.00 -1 s +5 sf +( ) 91304 0.00 32 s +4 sf +(property) 101023 0.00 -1 s +5 sf +( atom.) 108035 -43.00 32 s +52832.0 138379.0 m +(The) 57220 0.00 -1 s +( given ) 65634 366.00 32 s +4 sf +(property) 75353 0.00 -1 s +5 sf +( specifies the requestor) 102389 366.00 32 s +( property that will receive the converted) 149352 304.50 32 s +52832.0 141540.0 m +(value.) 59650 0.00 -1 s +( If the ) 66884 -70.00 32 s +4 sf +(property) 76603 0.00 -1 s +5 sf +( is omitted, the ) 93806 -69.75 32 s +4 sf +(selection) 103837 0.00 -1 s +5 sf +( owner will define a property to use. The) 149352 -60.88 32 s +52832.0 144701.0 m +4 sf +(time) 57690 0.00 -1 s +5 sf +( furnishes a timestamp representing the time of the conversion request; by default,) 149352 -87.58 32 s +52832.0 147862.0 m +(the) 56280 0.00 -1 s +( current server time is used.) 87376 -18.80 32 s +52832.0 155087.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 154262 av +149352 154262 as +149352 154380 as +52832 154380 as +closepath +fp +/drawmode PL_SET def +52832.0 158248.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62452 -21.00 32 s +5 sf +(Standard conventions for inter\036client communication require that both the re\036) 149352 -18.33 32 s +52832.0 161409.0 m +(questor) 61139 0.00 -1 s +( property) 71228 -176.00 32 s +( and the time must be specified. If possible, the time should be the time) 149352 -163.93 32 s +52832.0 164569.0 m +(of) 55182 0.00 -1 s +( a user event which initiated the conversion. Alternatively, a timestamp can be ob\036) 149352 100.00 32 s +52832.0 167730.0 m +(tained) 59728 0.00 -1 s +( by) 63402 146.00 32 s +( calling ) 72785 145.50 32 s +2 sf +(change\036property) 92848 0.00 -1 s +5 sf +( to append zero\036length data to some property; the) 149352 127.25 32 s +52832.0 170891.0 m +(timestamp) 64589 0.00 -1 s +( in the resulting ) 82814 -29.25 32 s +2 sf +(:property\036notify) 102403 0.00 -1 s +5 sf +( event can) 113766 -39.00 32 s +( then be used.) 129167 -39.67 32 s +52832.0 174052.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 173227 av +149352 173227 as +149352 173345 as +52832 173345 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 181277.0 m +(selection) 62863 0.00 -1 s +( \037 ) 66723 -30.50 32 s +5 sf +(The ) 71786 -31.00 32 s +2 sf +(xatom) 79308 0.00 -1 s +5 sf +( for the selection name.) 105596 -30.50 32 s +4 sf +52832.0 186063.0 m +(type \037 ) 61392 -31.00 32 s +5 sf +(The ) 66455 -31.00 32 s +2 sf +(xatom) 73977 0.00 -1 s +5 sf +( for the requested data) 98928 -31.00 32 s +( type.) 105167 -32.00 32 s +4 sf +52832.0 190850.0 m +(requestor) 63649 0.00 -1 s +( \037 ) 67492 -39.00 32 s +5 sf +(The ) 72547 -39.00 32 s +2 sf +(window) 81954 0.00 -1 s +5 sf +( to receive the converted ) 110206 -38.60 32 s +4 sf +(selection) 120237 0.00 -1 s +5 sf +( value.) 127722 -39.00 32 s +4 sf +52832.0 195636.0 m +(property) 62551 0.00 -1 s +( \037 ) 66400 -36.00 32 s +5 sf +(The ) 71458 -36.00 32 s +2 sf +(xatom) 78980 0.00 -1 s +5 sf +( for the requestor property to) 111320 -36.00 32 s +( receive the converted value.) 143572 -27.50 32 s +4 sf +52832.0 200423.0 m +(time) 57690 0.00 -1 s +( \037 ) 61585 -13.00 32 s +5 sf +(A) 63622 0.00 -1 s +( ) 64314 -14.00 32 s +2 sf +(timestamp) 77007 0.00 -1 s +5 sf +(.) 77713 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118488.0 8466.0 m +(Atoms, Properties, and Selections) 149013 -25.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(11\036117) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(selection\036owner) 53350 0.00 -1 s +( ) 54009 -47.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 62161 0.00 -1 s +( selection) 72850 -48.00 32 s +/timsps10 5 declareFont +5 sf +( &optional ) 85611 -47.50 32 s +4 sf +(time) 90469 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( owner ) 61931 -24.67 32 s +5 sf +(\037 Type ) 71915 -24.50 32 s +2 sf +(window) 81322 0.00 -1 s +5 sf +( or ) 85035 -24.50 32 s +2 sf +(null) 89741 0.00 -1 s +5 sf +(.) 90447 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73083 -225.00 32 s +2 sf +(setf) 77312 0.00 -1 s +5 sf +(\) changes the owner and the last\036changed ) 122992 -224.86 32 s +4 sf +(time) 127850 0.00 -1 s +5 sf +( for the ) 136256 -149.67 32 s +4 sf +(selection) 146287 0.00 -1 s +5 sf +(. If) 149352 -225.00 32 s +52832.0 36779.0 m +(the) 56280 0.00 -1 s +( owner is ) 66782 -183.00 32 s +2 sf +(nil) 69919 0.00 -1 s +5 sf +(, no owner for the ) 89850 -183.00 32 s +4 sf +(selection) 99881 0.00 -1 s +5 sf +( exists.) 107538 -183.00 32 s +( When the owner window for a ) 142772 -160.63 32 s +4 sf +(selec\036) 149352 0.00 -1 s +52832.0 39940.0 m +(tion) 57222 0.00 -1 s +5 sf +( is destroyed, the ) 77773 180.00 32 s +4 sf +(selection) 87804 0.00 -1 s +5 sf +( owner is) 98329 90.00 32 s +( set to ) 106315 179.33 32 s +2 sf +(nil) 109452 0.00 -1 s +5 sf +( without affecting the last\036changed) 149352 179.50 32 s +52832.0 43101.0 m +4 sf +(time) 57690 0.00 -1 s +5 sf +(.) 58396 0.00 -1 s +52832.0 49107.0 m +(The) 57220 0.00 -1 s +( ) 57673 -253.00 32 s +4 sf +(time) 62531 0.00 -1 s +5 sf +( argument is used) 81602 -253.00 32 s +( only when changing the ) 108786 -253.60 32 s +4 sf +(selection) 118817 0.00 -1 s +5 sf +( owner. If the ) 133710 -253.50 32 s +4 sf +(time) 138568 0.00 -1 s +5 sf +( is ) 141609 -126.50 32 s +2 sf +(nil) 144746 0.00 -1 s +5 sf +(, the) 149352 -254.00 32 s +52832.0 52268.0 m +(current) 60822 0.00 -1 s +( server time is used. If the ) 89325 -205.00 32 s +4 sf +(time) 94183 0.00 -1 s +5 sf +( is) 96566 -205.00 32 s +( earlier than the current last\036changed time of the) 149352 -179.88 32 s +52832.0 55428.0 m +4 sf +(selection) 62863 0.00 -1 s +5 sf +( or) 76416 10497.00 32 s +( if the ) 115194 10496.33 32 s +4 sf +(time) 120052 0.00 -1 s +5 sf +( is later) 149352 10496.50 32 s +52832.0 58589.0 m +(than) 57691 0.00 -1 s +( the current server time, the owner is not changed. Therefore, a client should always) 149352 -220.29 32 s +52832.0 61750.0 m +(confirm) 61764 0.00 -1 s +( successful change) 82186 -290.00 32 s +( of ownership by immediately calling ) 123683 -242.17 32 s +2 sf +(selection\036owner) 142489 0.00 -1 s +5 sf +(. If the) 149352 -290.50 32 s +52832.0 64911.0 m +(change) 60824 0.00 -1 s +( in ownership) 76386 100.00 32 s +( is successful, the last\036changed time of the ) 125439 87.00 32 s +4 sf +(selection) 135470 0.00 -1 s +5 sf +( is set to the) 149352 99.50 32 s +52832.0 68072.0 m +(specified) 63018 0.00 -1 s +( ) 63682 -42.00 32 s +4 sf +(time) 68540 0.00 -1 s +5 sf +(.) 69246 0.00 -1 s +52832.0 74078.0 m +(If) 54710 0.00 -1 s +( the change in ownership is successful and the new owner is different from the previ\036) 149352 -90.47 32 s +52832.0 77239.0 m +(ous) 56752 0.00 -1 s +( owner, and if the previous owner is not ) 100584 -198.00 32 s +2 sf +(nil) 103721 0.00 -1 s +5 sf +(, a ) 106894 -99.00 32 s +2 sf +(:selection\036clear) 125070 0.00 -1 s +5 sf +( event is generated) 145556 -198.00 32 s +( for) 149352 -199.00 32 s +52832.0 80399.0 m +(the) 56280 0.00 -1 s +( previous owner) 74369 -46.00 32 s +( window.) 84825 -47.00 32 s +52832.0 88708.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 87883 av +149352 87883 as +149352 88001 as +52832 88001 as +closepath +fp +/drawmode PL_SET def +52832.0 91869.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62812 339.00 32 s +5 sf +(Standard conventions for inter\036client communication require that a non\036nil) 149352 296.63 32 s +52832.0 95030.0 m +(time) 57848 0.00 -1 s +( must be specified. If possible, the time should be the time) 149352 2340.18 32 s +52832.0 98191.0 m +(of) 55182 0.00 -1 s +( a user event which) 81498 1132.50 32 s +( initiated the change of ownership. Alternatively, a) 149352 1509.43 32 s +52832.0 101352.0 m +(timestamp) 64589 0.00 -1 s +( can be obtained) 83492 162.00 32 s +( by calling change\036property to append zero\036length data to) 149352 141.25 32 s +52832.0 104513.0 m +(some) 58789 0.00 -1 s +( property; the timestamp in the resulting ) 103635 -166.00 32 s +2 sf +(:property\036notify) 123224 0.00 -1 s +5 sf +( event can then be used.) 149352 -166.60 32 s +52832.0 107673.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 106848 av +149352 106848 as +149352 106966 as +52832 106966 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 114898.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 119685.0 m +(selection) 62863 0.00 -1 s +5 sf +( \037 The ) 72101 -30.00 32 s +2 sf +(xatom) 79623 0.00 -1 s +5 sf +( for the selection) 98419 -30.00 32 s +( name.) 105912 -31.00 32 s +4 sf +52832.0 124471.0 m +(time) 57690 0.00 -1 s +5 sf +( \037 A) 63937 -12.00 32 s +( ) 64630 -13.00 32 s +2 sf +(timestamp) 77323 0.00 -1 s +5 sf +(.) 78029 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Atoms, Properties, and Selections) 50845 -25.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(11\036118) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/glossary.ps +++ cmucl-20a-20090928/own-work/clx/glossary.ps @@ -0,0 +1,3845 @@ +%!PS-Adobe-2.0 +%%Title: glossary.ps +%%Pages: 12 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 11 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps8i /ILtimsi 8 map + /timsps12b /ILtimsb 12 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps14b /ILtimsb 14 map + /timsps10i /ILtimsi 10 map + /symbb8 /ILsymbb 8 map + /symba8 /ILsymba 8 map + /timsps6 /ILtims 6 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +/Symbol /ILsymba -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 11 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +133180.0 208619.0 m +(Glossary\036201) 149013 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps8i 1 declareFont +1 sf +20320.0 208889.0 m +(CLX Programmer's Reference) 47865 -48.00 32 s +/timsps18b 8 declareFont +8 sf +121446.0 24271.0 m +(GLOSSARY) 149385 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 28380.0 m +0.0 0.0 m +newpath +20455 26756 av +149013 26754 as +[] 0 setdash +dp +149352.0 28380.0 m +/timsps14b 4 declareFont +4 sf +20320.0 33460.0 m +(a) 22296 0.00 -1 s +2 sf +20320.0 40098.0 m +(access) 27686 0.00 -1 s +( control) 36987 -25.00 32 s +( list) 41272 -26.00 32 s +3 sf +52832.0 h +(X) 54869 0.00 -1 s +( maintains a list of hosts from which client programs can be run. By) 129455 -159.00 32 s +( default, only pro\036) 149352 -159.67 32 s +52832.0 43259.0 m +(grams) 59728 0.00 -1 s +( on the local host can use) 86926 -196.00 32 s +( the display, plus any hosts specified in an initial list read) 149352 -196.55 32 s +52832.0 46420.0 m +(by) 55654 0.00 -1 s +( the server. This ) 73942 -150.00 32 s +/timsps10i 5 declareFont +5 sf +(access control list) 94022 -150.00 32 s +3 sf +( can be changed by clients on the local host. Some) 149352 -149.60 32 s +52832.0 49581.0 m +(server) 59725 0.00 -1 s +( implementations can also implement other authorization) 122558 -239.00 32 s +( mechanisms in addition) 149352 -239.67 32 s +52832.0 52742.0 m +(to) 55027 0.00 -1 s +( or in place of this mechanism. The action of this) 108273 -201.00 32 s +( mechanism can be conditional based) 149352 -201.60 32 s +52832.0 55903.0 m +(on) 55654 0.00 -1 s +( the authorization protocol name and data received by the server at connection setup. ) 149352 -186.93 32 s +2 sf +20320.0 62179.0 m +(action) 27687 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( function that is designed to handle an input event. CLUE input processing consists of) 149352 -176.86 32 s +52832.0 65340.0 m +(matching) 63334 0.00 -1 s +( an event with an event specification found in a contact's ) 127722 -52.82 32 s +2 sf +(event\036translations) 149352 0.00 -1 s +3 sf +52832.0 68501.0 m +(slot) 56909 0.00 -1 s +( and then calling actions associated with the matching event specification.) 140027 -35.00 32 s +2 sf +20320.0 74778.0 m +(active) 27371 0.00 -1 s +( grab) 33641 -80.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( grab is ) 63577 -102.00 32 s +5 sf +(active) 70315 0.00 -1 s +3 sf +( when the pointer or keyboard is actually owned by the single grabbing) 149352 -101.50 32 s +52832.0 77938.0 m +(client.) 59807 0.00 -1 s +( ) 60486 -27.00 32 s +2 sf +20320.0 84215.0 m +(ancestors) 31605 0.00 -1 s +3 sf +52832.0 h +(If) 54710 0.00 -1 s +( W is an inferior of A, then A is an ) 94554 -11.55 32 s +5 sf +(ancestor) 104273 0.00 -1 s +3 sf +( of W. ) 112076 -11.67 32 s +2 sf +20320.0 90492.0 m +(atom) 26431 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( unique ID corresponding to a string name. Atoms are used to identify properties,) 149352 208.31 32 s +52832.0 93653.0 m +(types,) 59495 0.00 -1 s +( and selections. ) 77419 -34.67 32 s +2 sf +20320.0 99929.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 99104 av +149352 99104 as +149352 99339 as +20320 99339 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 106025.0 m +(b) 22516 0.00 -1 s +2 sf +20320.0 112663.0 m +(backing) 29886 0.00 -1 s +( store) 36463 -83.00 32 s +3 sf +52832.0 h +(When) 59571 0.00 -1 s +( a server maintains the contents of a window, the off\036screen saved pixels are) 149352 287.38 32 s +52832.0 115824.0 m +(known) 60513 0.00 -1 s +( as a ) 66139 -32.00 32 s +5 sf +(backing store) 81391 -32.00 32 s +3 sf +(.) 82097 0.00 -1 s +( ) 82770 -33.00 32 s +2 sf +20320.0 122101.0 m +(before) 27998 0.00 -1 s +( action) 35989 -82.00 32 s +52832.0 h +3 sf +(An) 56280 0.00 -1 s +( action of a) 68024 -291.00 32 s +( ) 68438 -292.00 32 s +2 sf +(contact\036display) 86778 0.00 -1 s +3 sf +( that is called when an event is dispatched to a contact, but) 149352 -291.50 32 s +52832.0 125262.0 m +(before) 60038 0.00 -1 s +( any other contact input processing is performed.) 114966 -35.00 32 s +2 sf +20320.0 131538.0 m +(bit) 23612 0.00 -1 s +( gravity) 32896 -42.00 32 s +3 sf +52832.0 h +(When) 59571 0.00 -1 s +( a window is resized, the contents of the window are not necessarily discarded. It) 147044 -279.00 32 s +( is) 149352 -280.00 32 s +52832.0 134699.0 m +(possible) 62082 0.00 -1 s +( to request the server to relocate the previous contents to some region of the win\036) 149352 -268.73 32 s +52832.0 137860.0 m +(dow.) 58397 0.00 -1 s +( This attraction of window contents for some location of a window is known as ) 146373 -138.53 32 s +5 sf +(bit) 149352 0.00 -1 s +52832.0 141021.0 m +(gravity) 60826 0.00 -1 s +3 sf +(.) 61532 0.00 -1 s +2 sf +20320.0 147297.0 m +(bitmap) 28942 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( pixmap of depth one. ) 80106 -31.80 32 s +2 sf +20320.0 153574.0 m +(button) 28316 0.00 -1 s +( grabbing) 39895 -104.00 32 s +3 sf +52832.0 h +(Buttons) 61613 0.00 -1 s +( on the pointer can be passively ) 96453 -207.00 32 s +5 sf +(grabbed) 105859 0.00 -1 s +3 sf +( by a client. When the button is pressed,) 149352 -206.88 32 s +52832.0 156735.0 m +(the) 56280 0.00 -1 s +( pointer is then actively grabbed by the client.) 107697 -29.00 32 s +( ) 108373 -30.00 32 s +2 sf +20320.0 163012.0 m +(byte) 25492 0.00 -1 s +3 sf +( ) 26112 -86.00 32 s +2 sf +(order) 32851 0.00 -1 s +3 sf +52832.0 h +(For) 56751 0.00 -1 s +( image \(pixmap/bitmap\) data, byte order is) 105261 52.00 32 s +( defined by the server, and clients with) 149352 51.43 32 s +52832.0 166172.0 m +(different) 62545 0.00 -1 s +( native byte ordering must swap bytes as necessary. For all other parts of the) 149352 37.00 32 s +52832.0 169333.0 m +(protocol,) 62942 0.00 -1 s +( the byte order is defined by the client, and the server swaps bytes as necessary. ) 149352 -251.94 32 s +2 sf +20320.0 175610.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 174785 av +149352 174785 as +149352 175020 as +20320 175020 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 181706.0 m +(c) 22074 0.00 -1 s +2 sf +20320.0 188344.0 m +(callback) 30354 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( function) 64832 -147.00 32 s +( that represents a connection between a contact and the rest of an application) 149352 -147.54 32 s +52832.0 191505.0 m +(program.) 63097 0.00 -1 s +( A contact calls a callback function in order to report the results of) 136325 -124.00 32 s +( the user in\036) 149352 -124.67 32 s +52832.0 194666.0 m +(terface) 60506 0.00 -1 s +( component that it represents.) 93675 -35.00 32 s +2 sf +20320.0 200942.0 m +(children) 30354 0.00 -1 s +3 sf +52832.0 h +(First\036level) 64430 0.00 -1 s +( subwindows of a window. ) 95346 -24.60 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8331.0 m +(Glossary) 28759 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20591.0 208890.0 m +(Glossary\036202) 36424 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +2 sf +20320.0 22578.0 m +(class) 25964 0.00 -1 s +( event) 33054 -41.00 32 s +52832.0 h +/timsps10 3 declareFont +3 sf +(Event) 59415 0.00 -1 s +( translations that belong to all instances) 103791 -24.00 32 s +( of a contact class. A class event) 140140 -24.57 32 s +2 sf +20320.0 25739.0 m +(translations) 34586 0.00 -1 s +3 sf +52832.0 h +(translation) 64744 0.00 -1 s +( is created by the ) 84407 -33.00 32 s +2 sf +(defevent) 94593 0.00 -1 s +3 sf +( macro.) 103022 -34.00 32 s +2 sf +20320.0 32015.0 m +(class) 25964 0.00 -1 s +( resources) 38044 -67.00 32 s +52832.0 h +3 sf +(Resources) 64430 0.00 -1 s +( defined for each instance of a contact class. Also see constraint) 136051 -29.00 32 s +( resources.) 148088 -30.00 32 s +2 sf +20320.0 38292.0 m +(click) 25963 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( ) 55522 -53.00 32 s +2 sf +(:button\036press) 71667 0.00 -1 s +3 sf +( event followed immediately by a ) 109911 -52.67 32 s +2 sf +(:button\036release) 128090 0.00 -1 s +3 sf +( event for the same) 149352 -52.50 32 s +52832.0 41453.0 m +(button,) 60750 0.00 -1 s +( with no) 69938 -31.00 32 s +( intervening change in pointer position or modifier key state.) 138153 -31.56 32 s +2 sf +20320.0 47729.0 m +(client) 26902 0.00 -1 s +3 sf +52832.0 h +(An) 56280 0.00 -1 s +( application program connects to the window system server by some interprocess) 149352 132.27 32 s +52832.0 50890.0 m +(communication) 70388 0.00 -1 s +( \(IPC\) path, such as a TCP connection or) 115713 -105.00 32 s +( a shared memory buffer. This) 149352 -105.60 32 s +52832.0 54051.0 m +(program) 62391 0.00 -1 s +( is referred to as a ) 81812 -237.00 32 s +/timsps10i 5 declareFont +5 sf +(client) 88081 0.00 -1 s +3 sf +( of the window system server. More precisely, the client) 149352 -236.78 32 s +52832.0 57212.0 m +(is) 54714 0.00 -1 s +( the IPC path itself. A program with multiple paths open to the) 122431 -242.00 32 s +( server is viewed as mul\036) 149352 -242.60 32 s +52832.0 60373.0 m +(tiple) 57848 0.00 -1 s +( clients by the protocol. Resource lifetimes are controlled by connection lifetimes,) 149352 -95.73 32 s +52832.0 63534.0 m +(not) 56438 0.00 -1 s +( by program lifetimes.) 81454 -21.00 32 s +( ) 82138 -22.00 32 s +2 sf +20320.0 69810.0 m +(clipping) 30043 0.00 -1 s +( regions) 39443 -85.00 32 s +3 sf +52832.0 h +(In) 55182 0.00 -1 s +( a graphics context, a bitmap or list of rectangles can be specified) 126251 -223.00 32 s +( to restrict output to a) 149352 -223.60 32 s +52832.0 72971.0 m +(particular) 63643 0.00 -1 s +( region of the window. The image defined by the bitmap or rectangles is called) 149352 -231.57 32 s +52832.0 76132.0 m +(a) 54085 0.00 -1 s +( ) 54757 -34.00 32 s +5 sf +(clipping region) 72046 -34.00 32 s +3 sf +(.) 72752 0.00 -1 s +( ) 73423 -35.00 32 s +2 sf +20320.0 82409.0 m +(colormap) 31762 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( set of entries defining color values.) 93838 -232.00 32 s +( The colormap associated with a window is used to) 149352 -232.56 32 s +52832.0 85570.0 m +(display) 60984 0.00 -1 s +( the contents of the window. Each pixel value indexes the colormap to) 139609 -51.00 32 s +( produce) 149352 -52.00 32 s +52832.0 88731.0 m +(RGB) 58633 0.00 -1 s +( values that drive the guns of a monitor. Depending on hardware limitations, one or) 149352 -237.93 32 s +52832.0 91892.0 m +(more) 58630 0.00 -1 s +( colormaps can be installed at one time, such that windows) 124746 -27.00 32 s +( associated with those) 149352 -27.67 32 s +52832.0 95052.0 m +(maps) 58789 0.00 -1 s +( display with correct colors. ) 90808 -22.60 32 s +2 sf +20320.0 101329.0 m +(composite) 32388 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( subclass of ) 69244 167.00 32 s +2 sf +(contact) 78019 0.00 -1 s +3 sf +( representing contacts that are the) 116703 167.00 32 s +( parents of other contacts. A) 149352 166.40 32 s +52832.0 104490.0 m +(composite) 64432 0.00 -1 s +( provides geometry management and) 106565 110.00 32 s +( input focus management services for) 149352 109.40 32 s +52832.0 107651.0 m +(the) 56280 0.00 -1 s +( contacts that are its children.) 89227 -25.00 32 s +2 sf +20320.0 113927.0 m +(complete) 31132 0.00 -1 s +( resource) 42062 -119.00 32 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( list of symbols containing the class of the contact, the class of the) 137820 641.00 32 s +( contact's) 149352 640.00 32 s +2 sf +20320.0 117088.0 m +(class) 25964 0.00 -1 s +52832.0 h +(parent) 60826 0.00 -1 s +( ) 61484 -48.00 32 s +3 sf +(\(and so on\), and the class) 89773 -48.00 32 s +2 sf +( ) 90432 -47.00 32 s +3 sf +(of the ) 97547 -47.50 32 s +2 sf +(contact\036display) 115887 0.00 -1 s +3 sf +( to which the contact belongs.) 149352 -47.60 32 s +52832.0 120249.0 m +(The) 57220 0.00 -1 s +( complete resource class is one of the two items used as a key by a CLUE application) 149352 -246.53 32 s +52832.0 123410.0 m +(in) 55027 0.00 -1 s +( order to access a contact resource value in a resource database.) 126300 -31.55 32 s +2 sf +20320.0 129687.0 m +(complete) 31132 0.00 -1 s +( resource) 42062 -119.00 32 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( list of symbols containing the ) 97829 1359.17 32 s +2 sf +(name) 104412 0.00 -1 s +3 sf +( of the contact, the ) 132840 1359.40 32 s +2 sf +(name) 139423 0.00 -1 s +3 sf +( of the) 149352 1359.50 32 s +2 sf +20320.0 132848.0 m +(name) 26903 0.00 -1 s +52832.0 h +3 sf +(contact's) 63018 0.00 -1 s +( ) 63582 -142.00 32 s +2 sf +(parent) 71576 0.00 -1 s +( ) 72139 -143.00 32 s +3 sf +(\(and so on\), and the name of the ) 108070 -142.50 32 s +2 sf +(contact\036display) 126410 0.00 -1 s +3 sf +( to which the contact) 149352 -142.50 32 s +52832.0 136009.0 m +(belongs.) 62317 0.00 -1 s +( The complete resource name is one of the two items used as a key by a CLUE) 149352 -103.71 32 s +52832.0 139169.0 m +(application) 65371 0.00 -1 s +( in order to access a contact resource value in a resource database.) 139486 -33.83 32 s +2 sf +20320.0 145446.0 m +(connection) 33331 0.00 -1 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( IPC path between the server and client) 100035 -209.00 32 s +( program. A client program typically has one) 149352 -209.57 32 s +52832.0 148607.0 m +(connection) 65214 0.00 -1 s +( to the server over which requests and events) 115600 -30.00 32 s +( are sent. ) 126323 -30.67 32 s +2 sf +20320.0 154884.0 m +(constraint) 32546 0.00 -1 s +( resources) 44591 -102.00 32 s +52832.0 h +3 sf +(Resources) 64430 0.00 -1 s +( defined for each child belonging to a member of a composite class. Con\036) 149352 166.23 32 s +52832.0 158044.0 m +(straint) 59885 0.00 -1 s +( resources are typically used) 90765 -273.00 32 s +( to control the parent's geometry management policy.) 149352 -273.57 32 s +52832.0 161205.0 m +(Also) 58162 0.00 -1 s +( see class) 68624 -20.00 32 s +( resources.) 80670 -21.00 32 s +2 sf +20320.0 167482.0 m +(contact) 29095 0.00 -1 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( basic) 63694 -31.00 32 s +( CLUE object for programming a user interface.) 117856 -31.57 32 s +2 sf +20320.0 173759.0 m +(contact\036display) 38660 0.00 -1 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( CLUE object type that represents a) 97018 -80.67 32 s +2 sf +( ) 97643 -81.00 32 s +3 sf +(connection to an X server and that supports an) 149352 -80.50 32 s +52832.0 176919.0 m +(event) 58944 0.00 -1 s +( loop for application) 81805 -34.00 32 s +2 sf +( ) 82477 -34.00 32 s +3 sf +(input. ) 89656 -34.00 32 s +2 sf +20320.0 183196.0 m +(contact) 29095 0.00 -1 s +( initialization) 44952 -55.00 32 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( process of collecting initial values for all contact attributes. No server) 137870 122.00 32 s +( resources) 149352 121.00 32 s +52832.0 186357.0 m +(\(windows) 63960 0.00 -1 s +( and so) 71888 -34.00 32 s +( on\) are actually allocated until contact realization.) 128851 -34.57 32 s +2 sf +20320.0 192634.0 m +(contact) 29095 0.00 -1 s +( realization) 42559 -94.00 32 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( process of allocating contact resources.) 102016 -37.00 32 s +( This process completes contact creation.) 148223 -37.60 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +141134.0 8331.0 m +(Glossary) 149302 0.00 -1 s +/timsps10b 2 declareFont +2 sf +133180.0 208619.0 m +(Glossary\036203) 149013 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +1 sf +20320.0 208889.0 m +(CLX Programmer's Reference) 47865 -48.00 32 s +2 sf +20320.0 22578.0 m +(containment) 35367 0.00 -1 s +/timsps10 3 declareFont +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( window contains the pointer if the window is viewable and the hot spot of the cursor is) 149352 -255.88 32 s +52832.0 25739.0 m +(within) 60043 0.00 -1 s +( a visible region of the window or a visible region of one of its inferiors. The bor\036) 149352 -158.76 32 s +52832.0 28900.0 m +(der) 56435 0.00 -1 s +( of the window is included as part of the window for containment. The pointer is in) 147562 -168.00 32 s +( a) 149352 -169.00 32 s +52832.0 32060.0 m +(window) 61923 0.00 -1 s +( if the window contains the pointer but no) 108899 -26.00 32 s +( inferior contains the pointer. ) 142308 -26.60 32 s +2 sf +20320.0 38337.0 m +(content) 29253 0.00 -1 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( single child of a shell. The basic geometry management policy implemented by the) 149352 -183.85 32 s +52832.0 41498.0 m +2 sf +(shell) 58320 0.00 -1 s +3 sf +( class constrains a shell and its content to have the same width and height; size) 149352 159.00 32 s +52832.0 44659.0 m +(changes) 61922 0.00 -1 s +( to) 64786 -37.00 32 s +( one are automatically applied to the other.) 112799 -37.57 32 s +2 sf +20320.0 50935.0 m +(coordinate) 33173 0.00 -1 s +( system) 41950 -78.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( coordinate system has x horizontal and y vertical, with the origin [0, 0] at the upper) 149352 -168.75 32 s +52832.0 54096.0 m +(left.) 57298 0.00 -1 s +( Coordinates are discrete and are in terms of) 105073 -258.00 32 s +( pixels. Each window and pixmap has its) 149352 -258.57 32 s +52832.0 57257.0 m +(own) 57691 0.00 -1 s +( coordinate system. For a window, the origin is at the inside upper left, inside the) 149352 18.07 32 s +52832.0 60418.0 m +(border.) 60902 0.00 -1 s +( ) 61570 -38.00 32 s +2 sf +20320.0 66695.0 m +(cursor) 28157 0.00 -1 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( visible shape of the pointer on) 91234 -131.00 32 s +( a screen. It consists of a hot\036spot, a source bitmap, a) 149352 -131.55 32 s +52832.0 69856.0 m +(shape) 59258 0.00 -1 s +( bitmap, and a pair of colors. The cursor defined for a window controls the visible) 149352 -153.67 32 s +52832.0 73017.0 m +(appearance) 65522 0.00 -1 s +( when the pointer is in that window. ) 106567 -32.75 32 s +2 sf +20320.0 79293.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 78468 av +149352 78468 as +149352 78703 as +20320 78703 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 85389.0 m +(d) 22516 0.00 -1 s +2 sf +20320.0 92027.0 m +(depth) 27219 0.00 -1 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( depth of a window or pixmap is number of bits per pixel it has. The depth of a graph\036) 149352 -257.74 32 s +52832.0 95188.0 m +(ics) 55967 0.00 -1 s +( context is the depth of the drawables it can be used in conjunction with for) 139197 -110.00 32 s +( graphics) 149352 -111.00 32 s +52832.0 98349.0 m +(output.) 60750 0.00 -1 s +( ) 61412 -44.00 32 s +2 sf +20320.0 104625.0 m +(descendant) 33803 0.00 -1 s +3 sf +52832.0 h +(If) 54710 0.00 -1 s +( W is an inferior) 73148 -14.00 32 s +( of A, then W is a ) 93739 -14.57 32 s +/timsps10i 5 declareFont +5 sf +(descendant) 106435 0.00 -1 s +3 sf +( of A.) 112911 -14.50 32 s +2 sf +20320.0 110902.0 m +(device) 27843 0.00 -1 s +3 sf +52832.0 h +(Keyboards,) 65762 0.00 -1 s +( mice, tablets, track\036balls, button boxes, and so forth, are all collectively) 149352 203.45 32 s +52832.0 114063.0 m +(known) 60513 0.00 -1 s +( as input ) 69886 -299.00 32 s +5 sf +(devices) 78191 0.00 -1 s +3 sf +(. The core protocol only) 104190 -299.00 32 s +( deals with two devices: the keyboard and) 149352 -299.57 32 s +52832.0 117224.0 m +(the) 56280 0.00 -1 s +( pointer.) 65634 -51.00 32 s +2 sf +20320.0 123500.0 m +(direct) 27371 0.00 -1 s +( color) 34115 -74.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( class of colormap in which a pixel value is) 102770 -103.00 32 s +( decomposed into three separate subfields) 149352 -103.60 32 s +52832.0 126661.0 m +(for) 56121 0.00 -1 s +( indexing. One subfield indexes an array to produce red intensity values, the second) 149352 -93.00 32 s +52832.0 129822.0 m +(subfield) 61923 0.00 -1 s +( indexes a second array to produce blue intensity values, and) 129593 -75.00 32 s +( the third subfield) 149352 -75.67 32 s +52832.0 132983.0 m +(indexes) 61453 0.00 -1 s +( a third array) 75321 -209.00 32 s +( to produce green intensity values. The RGB values can be changed) 149352 -209.55 32 s +52832.0 136144.0 m +(dynamically.) 67488 0.00 -1 s +( ) 68117 -77.00 32 s +2 sf +20320.0 142421.0 m +(dispatching) 34276 0.00 -1 s +( an event) 44975 -59.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( process of finding the appropriate contact and its actions.) 122146 -31.00 32 s +2 sf +20320.0 148697.0 m +(double\036click) 35057 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( sequence of two clicks) 81093 -27.00 32 s +( of the same button in rapid succession.) 125420 -27.57 32 s +2 sf +20320.0 154974.0 m +(drawable) 31607 0.00 -1 s +3 sf +52832.0 h +(Both) 58320 0.00 -1 s +( windows and) 73834 -81.00 32 s +( pixmaps can be used as sources and destinations in graphics opera\036) 149352 -81.55 32 s +52832.0 158135.0 m +(tions.) 59026 0.00 -1 s +( These) 66585 114.00 32 s +( are collectively known as ) 97324 113.40 32 s +5 sf +(drawables) 109083 0.00 -1 s +3 sf +(. However, an ) 125959 113.67 32 s +2 sf +(:input\036only) 139442 0.00 -1 s +3 sf +( window) 149352 113.00 32 s +52832.0 161296.0 m +(cannot) 60355 0.00 -1 s +( be used as a source or destination in a graphics operation. ) 126390 -29.00 32 s +2 sf +20320.0 167572.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 166747 av +149352 166747 as +149352 166982 as +20320 166982 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 173668.0 m +(e) 22074 0.00 -1 s +2 sf +20320.0 180306.0 m +(event) 26745 0.00 -1 s +3 sf +52832.0 h +(Clients) 60828 0.00 -1 s +( receive information asynchronously via ) 109048 412.20 32 s +5 sf +(events) 116100 0.00 -1 s +3 sf +(. These events can be either) 149352 412.40 32 s +52832.0 183467.0 m +(asynchronously) 70545 0.00 -1 s +( generated from devices, or generated as side effects of client requests.) 149352 -80.55 32 s +52832.0 186628.0 m +(Events) 60513 0.00 -1 s +( are grouped into types; events are never sent to a client by the server unless the) 149352 -70.69 32 s +52832.0 189789.0 m +(client) 59101 0.00 -1 s +( has specifically asked to be informed of that type of event, but clients can force) 149352 -2.00 32 s +52832.0 192950.0 m +(events) 60042 0.00 -1 s +( to be sent to other clients. Events are typically reported relative to a window. ) 147839 -24.80 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8331.0 m +(Glossary) 28759 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20591.0 208890.0 m +(Glossary\036204) 36424 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +2 sf +20320.0 22578.0 m +(event) 26745 0.00 -1 s +( compression) 42401 -99.00 32 s +52832.0 h +/timsps10 3 declareFont +3 sf +(Ignoring) 62549 0.00 -1 s +( \(or compressing\)) 82621 84.00 32 s +( certain redundant input events. Compression of redundant) 149352 83.43 32 s +52832.0 25739.0 m +(events) 60042 0.00 -1 s +( is controlled by the class slots) 96596 344.00 32 s +( ) 97645 343.00 32 s +2 sf +(compress\036exposures) 121784 0.00 -1 s +3 sf +( and ) 127958 343.50 32 s +2 sf +(compress\036motion) 148646 0.00 -1 s +3 sf +(,) 149352 0.00 -1 s +52832.0 28900.0 m +(which) 59728 0.00 -1 s +( are shared) 71898 -26.00 32 s +( by all instances of a contact class.) 110586 -26.57 32 s +2 sf +20320.0 35176.0 m +(event) 26745 0.00 -1 s +( loop) 32557 -69.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( fundamental application control structure: wait for an event, figure out how to han\036) 149352 -183.00 32 s +52832.0 38337.0 m +(dle) 56280 0.00 -1 s +( it, process the event, then go back and wait for the next one. In CLUE, the event loop) 149352 -219.89 32 s +52832.0 41498.0 m +(is) 54714 0.00 -1 s +( implemented using the ) 81651 -46.00 32 s +2 sf +(process\036next\036event) 104061 0.00 -1 s +3 sf +( function.) 114831 -46.00 32 s +2 sf +20320.0 47775.0 m +(event) 26745 0.00 -1 s +( mask) 33822 -57.00 32 s +3 sf +52832.0 h +(Events) 60513 0.00 -1 s +( are requested relative to a window. The set) 108800 -106.00 32 s +( of event types a client requests rela\036) 149352 -106.57 32 s +52832.0 50935.0 m +(tive) 57064 0.00 -1 s +( to a window are described using an ) 98059 -28.63 32 s +/timsps10i 5 declareFont +5 sf +(event mask) 110490 -28.00 32 s +3 sf +(. ) 111873 -29.00 32 s +2 sf +20320.0 57212.0 m +(event) 26745 0.00 -1 s +( propagation) 42062 -127.00 32 s +3 sf +52832.0 h +(Device\036related) 69439 0.00 -1 s +( events ) 78399 169.00 32 s +5 sf +(propagate) 90000 0.00 -1 s +3 sf +( from the source window to ancestor windows until) 149352 169.50 32 s +52832.0 60373.0 m +(some) 58789 0.00 -1 s +( client has expressed interest in handling that type of event, or until the event is dis\036) 149352 -232.81 32 s +52832.0 63534.0 m +(carded) 60352 0.00 -1 s +( explicitly. ) 73039 -45.00 32 s +2 sf +20320.0 69810.0 m +(event) 26745 0.00 -1 s +( specification) 42424 -74.00 32 s +5 sf +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( notation for describing a certain sort of event. CLUE input processing consists of) 149352 166.00 32 s +52832.0 72971.0 m +(matching) 63334 0.00 -1 s +( an event with an event specification found in a contact's ) 127722 -52.82 32 s +2 sf +(event\036translations) 149352 0.00 -1 s +3 sf +52832.0 76132.0 m +(slot) 56909 0.00 -1 s +( and then calling actions associated with the matching event specification.) 140027 -35.00 32 s +2 sf +20320.0 82409.0 m +(event) 26745 0.00 -1 s +( synchronization) 46601 -134.00 32 s +3 sf +52832.0 h +(Certain) 61138 0.00 -1 s +( race conditions are possible when demultiplexing device events to clients \(in) 149352 75.18 32 s +52832.0 85570.0 m +(particular) 63643 0.00 -1 s +( deciding where pointer and keyboard events should be sent when in the) 143447 -129.00 32 s +( mid\036) 149352 -130.00 32 s +52832.0 88731.0 m +(dle) 56280 0.00 -1 s +( of window management operations\). The event synchronization mechanism allows) 149352 -143.00 32 s +52832.0 91892.0 m +(synchronous) 67097 0.00 -1 s +( processing of) 82842 -43.00 32 s +( device events. ) 100110 -43.67 32 s +2 sf +20320.0 98168.0 m +(event) 26745 0.00 -1 s +( source) 35199 -89.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( smallest window containing the pointer is the ) 109660 -29.00 32 s +5 sf +(source) 117184 0.00 -1 s +3 sf +( of a device related event. ) 146710 -28.83 32 s +2 sf +20320.0 104445.0 m +(event) 26745 0.00 -1 s +( translation) 40550 -69.00 32 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( process of determining which contact) 100004 -48.00 32 s +( action) 107557 -49.00 32 s +5 sf +( ) 108215 -48.00 32 s +3 sf +(functions will be executed. An event) 149352 -48.60 32 s +52832.0 107606.0 m +(translation) 64744 0.00 -1 s +( is a list) 74026 193.00 32 s +( found in a contact's ) 98735 192.40 32 s +2 sf +(event\036translations) 120365 0.00 -1 s +3 sf +( slot associating an event) 149352 192.50 32 s +52832.0 110767.0 m +(specification) 67250 0.00 -1 s +( with one or more action) 94780 -27.00 32 s +5 sf +( ) 95460 -26.00 32 s +3 sf +(names. Also see class event translations.) 141021 -26.60 32 s +2 sf +20320.0 117043.0 m +(exposure) 31137 0.00 -1 s +( event) 38156 -112.00 32 s +3 sf +52832.0 h +(Servers) 61294 0.00 -1 s +( do not guarantee to preserve the contents of windows when windows are ob\036) 149352 64.08 32 s +52832.0 120204.0 m +(scured) 60197 0.00 -1 s +( or reconfigured. ) 79888 34.00 32 s +5 sf +(Exposure) 90547 0.00 -1 s +3 sf +( events are sent to clients to inform them when) 143599 34.00 32 s +( con\036) 149352 33.00 32 s +52832.0 123365.0 m +(tents) 58162 0.00 -1 s +( of regions of windows have been lost. ) 102255 -23.75 32 s +2 sf +20320.0 129642.0 m +(extension) 31607 0.00 -1 s +3 sf +52832.0 h +(Named) 60981 0.00 -1 s +( ) 61444 -243.00 32 s +5 sf +(extensions) 73200 0.00 -1 s +3 sf +( to the) 79769 -243.00 32 s +( core protocol can be defined to extend the system. Extension to) 149352 -243.55 32 s +52832.0 132802.0 m +(output) 60044 0.00 -1 s +( requests, resources, and event types are all possible, and expected. ) 135918 -34.73 32 s +2 sf +20320.0 139079.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 138254 av +149352 138254 as +149352 138489 as +20320 138489 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 145175.0 m +(f) 21635 0.00 -1 s +2 sf +20320.0 151813.0 m +(focus) 26590 0.00 -1 s +( window) 36644 -59.00 32 s +3 sf +52832.0 h +(Another) 62078 0.00 -1 s +( term) 67935 -20.00 32 s +( for the input focus. ) 90718 -20.60 32 s +2 sf +20320.0 158090.0 m +(font) 25178 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( matrix of glyphs \(typically characters\). The protocol does no translation or interpreta\036) 149352 -243.75 32 s +52832.0 161250.0 m +(tion) 57222 0.00 -1 s +( of character sets. The client simply indicates values used to index the glyph array. A) 149352 -248.00 32 s +52832.0 164411.0 m +(font) 57377 0.00 -1 s +( contains additional metric information to) 102978 -269.00 32 s +( determine inter\036glyph and inter\036line spac\036) 149352 -269.60 32 s +52832.0 167572.0 m +(ing.) 57144 0.00 -1 s +( ) 57822 -28.00 32 s +2 sf +20320.0 173849.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 173024 av +149352 173024 as +149352 173259 as +20320 173259 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 179945.0 m +(g) 22296 0.00 -1 s +2 sf +20320.0 186583.0 m +(geometry) 31601 0.00 -1 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( process whereby a composite controls the geometrical properties of its) 149352 1188.30 32 s +2 sf +20320.0 189744.0 m +(management) 35836 0.00 -1 s +52832.0 h +3 sf +(child) 58475 0.00 -1 s +( contacts; the composite is referred to as the) 107773 -28.88 32 s +5 sf +( ) 108451 -28.00 32 s +3 sf +(geometry manager.) 130206 -29.00 32 s +2 sf +20320.0 196020.0 m +(glyph) 27064 0.00 -1 s +3 sf +52832.0 h +(An) 56280 0.00 -1 s +( image, typically of a character, in a font. ) 103226 -25.67 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +141134.0 8331.0 m +(Glossary) 149302 0.00 -1 s +/timsps10b 2 declareFont +2 sf +133180.0 208619.0 m +(Glossary\036205) 149013 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +1 sf +20320.0 208889.0 m +(CLX Programmer's Reference) 47865 -48.00 32 s +2 sf +20320.0 22578.0 m +(grab) 25964 0.00 -1 s +/timsps10 3 declareFont +3 sf +52832.0 h +(Keyboard) 63958 0.00 -1 s +( keys, the keyboard, pointer buttons, the pointer, and the server) 132143 -298.00 32 s +( can be ) 139946 -298.67 32 s +/timsps10i 5 declareFont +5 sf +(grabbed) 149352 0.00 -1 s +3 sf +52832.0 25739.0 m +(for) 56121 0.00 -1 s +( exclusive use by a client. In general, these facilities are not intended to be used) 145827 -2.00 32 s +( by) 149352 -3.00 32 s +52832.0 28900.0 m +(normal) 60825 0.00 -1 s +( applications but are intended for) 97515 -107.00 32 s +( various input and window managers to imple\036) 149352 -107.57 32 s +52832.0 32060.0 m +(ment) 58475 0.00 -1 s +( various styles of user interfaces. ) 96068 -17.00 32 s +2 sf +20320.0 38337.0 m +(gcontext) 30506 0.00 -1 s +3 sf +52832.0 h +(Shorthand) 64432 0.00 -1 s +( for) 68387 -40.00 32 s +( graphics context. ) 88956 -40.67 32 s +2 sf +20320.0 44614.0 m +(graphics) 30668 0.00 -1 s +( context) 40053 -96.00 32 s +3 sf +52832.0 h +(Various) 61765 0.00 -1 s +( information for graphics output is stored in a ) 114349 69.00 32 s +5 sf +(graphics context) 133150 69.00 32 s +3 sf +( \(or gcontext\),) 149352 69.00 32 s +52832.0 47775.0 m +(such) 58005 0.00 -1 s +( as foreground pixel, background pixel, line width, clipping region, and so forth. A) 149352 -159.85 32 s +52832.0 50935.0 m +(graphics) 62392 0.00 -1 s +( context can) 75784 -122.00 32 s +( only be used with drawables that have the same root and the same) 149352 -122.54 32 s +52832.0 54096.0 m +(depth) 59102 0.00 -1 s +( as the graphics context. ) 86834 -34.00 32 s +2 sf +20320.0 60373.0 m +(gray) 25806 0.00 -1 s +( scale) 32241 -70.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( degenerate case of pseudo color, in which the red, green, and blue values in any given) 149352 -202.81 32 s +52832.0 63534.0 m +(colormap) 63489 0.00 -1 s +( entry are equal, thus producing shades of gray.) 120442 438.00 32 s +( The gray values can be) 149352 437.40 32 s +52832.0 66695.0 m +(changed) 62235 0.00 -1 s +( dynamically.) 77517 -80.00 32 s +( ) 78142 -81.00 32 s +2 sf +20320.0 72971.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 72146 av +149352 72146 as +149352 72381 as +20320 72381 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 79067.0 m +(h) 22516 0.00 -1 s +2 sf +20320.0 85705.0 m +(hot) 24239 0.00 -1 s +( spot) 29938 -24.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( cursor has an associated ) 82729 -149.00 32 s +5 sf +(hot spot) 91596 -149.00 32 s +3 sf +( that) 96385 -149.00 32 s +( defines a point in the cursor that corresponds to) 149352 -149.56 32 s +52832.0 88866.0 m +(the) 56280 0.00 -1 s +( coordinates reported for) 84012 -28.00 32 s +( the pointer. ) 98191 -28.67 32 s +2 sf +20320.0 95143.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 94318 av +149352 94318 as +149352 94553 as +20320 94553 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 101239.0 m +(i) 21418 0.00 -1 s +2 sf +20320.0 107877.0 m +(identifier) 31447 0.00 -1 s +3 sf +52832.0 h +(Each) 58473 0.00 -1 s +( resource has an ) 76308 -243.00 32 s +5 sf +(identifier) 86654 0.00 -1 s +3 sf +(, a unique value associated with it that clients use to name) 149352 -242.73 32 s +52832.0 111038.0 m +(the) 56280 0.00 -1 s +( resource. An identifier can be used over) 101812 -33.00 32 s +( any connection to name the resource. ) 144994 -33.57 32 s +2 sf +20320.0 117314.0 m +(inferiors) 30664 0.00 -1 s +3 sf +52832.0 h +(All) 56437 0.00 -1 s +( of the subwindows nested below a window: the children, the children's children, and) 149352 -274.00 32 s +52832.0 120475.0 m +(so) 55341 0.00 -1 s +( on.) 59554 -21.00 32 s +( ) 60238 -22.00 32 s +2 sf +20320.0 126752.0 m +(initialization) 35526 0.00 -1 s +3 sf +52832.0 h +(See) 56907 0.00 -1 s +( contact) 65706 -56.00 32 s +( initialization.) 81325 -57.00 32 s +2 sf +20320.0 133028.0 m +(input) 26750 0.00 -1 s +( event) 33822 -59.00 32 s +52832.0 h +3 sf +(See) 56907 0.00 -1 s +( event.) 64347 -84.00 32 s +2 sf +20320.0 139305.0 m +(input) 26750 0.00 -1 s +( focus) 33686 -40.00 32 s +3 sf +52832.0 h +(Normally) 63646 0.00 -1 s +( a window defining the scope for processing of keyboard input. If a generated) 149352 -146.77 32 s +52832.0 142466.0 m +(keyboard) 63332 0.00 -1 s +( event would normally be reported to this window or one of its inferiors, the) 149352 14.36 32 s +52832.0 145627.0 m +(event) 58944 0.00 -1 s +( is reported normally; otherwise, the event is reported with respect to the focus) 149352 130.31 32 s +52832.0 148788.0 m +(window.) 62629 0.00 -1 s +( The input focus also can be set such that all keyboard events are discarded and) 149352 -179.93 32 s +52832.0 151948.0 m +(that) 57064 0.00 -1 s +( the focus window is dynamically taken to be the root window of whatever screen) 145478 -279.00 32 s +( the) 149352 -280.00 32 s +52832.0 155109.0 m +(pointer) 60825 0.00 -1 s +( is on at each keyboard event. ) 94759 -33.86 32 s +2 sf +20320.0 161386.0 m +(input\036only) 32864 0.00 -1 s +( window) 42898 -79.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( window that cannot) 77551 -94.00 32 s +( be used for graphics requests. ) 111859 -94.50 32 s +5 sf +(input\036only) 123458 0.00 -1 s +3 sf +( windows are invisible,) 149352 -94.67 32 s +52832.0 164547.0 m +(and) 56907 0.00 -1 s +( can be used to control such things as cursors, input event generation, and grabbing.) 149352 -142.86 32 s +52832.0 167708.0 m +5 sf +(input\036only) 64431 0.00 -1 s +3 sf +( windows cannot have ) 90155 -35.00 32 s +5 sf +(input/output) 103952 0.00 -1 s +3 sf +( windows) 114812 -35.00 32 s +( as inferiors. ) 129438 -35.67 32 s +2 sf +20320.0 173984.0 m +(input/output) 35530 0.00 -1 s +( window) 45562 -81.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( normal kind of opaque window, used for both input and output. Input/output win\036) 149352 -57.62 32 s +52832.0 177145.0 m +(dows) 58789 0.00 -1 s +( can have both ) 75743 -33.00 32 s +5 sf +(input/output) 89540 0.00 -1 s +3 sf +( and input\036only windows as inferiors. ) 132215 -32.83 32 s +2 sf +20320.0 183422.0 m +(insensitivity) 34743 0.00 -1 s +3 sf +52832.0 h +(See) 56907 0.00 -1 s +( sensitivity.) 69878 -43.00 32 s +2 sf +20320.0 189698.0 m +(interactive\036stream) 42412 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( contact subclass designed to integrate CLUE with the conventional stream\036based) 145068 -181.00 32 s +( I/O) 149352 -182.00 32 s +52832.0 192859.0 m +(of) 55182 0.00 -1 s +( Common Lisp.) 72746 -38.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8331.0 m +(Glossary) 28759 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20591.0 208890.0 m +(Glossary\036206) 36424 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +2 sf +20320.0 22578.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 3 declareFont +3 17 fillpatset +newpath +20320 21753 av +149352 21753 as +149352 21988 as +20320 21988 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 28674.0 m +(k) 22516 0.00 -1 s +2 sf +20320.0 35312.0 m +(key) 24553 0.00 -1 s +( grabbing) 36124 -112.00 32 s +3 sf +52832.0 h +(Keys) 58631 0.00 -1 s +( on the keyboard can be passively ) 95831 -228.00 32 s +/timsps10i 5 declareFont +5 sf +(grabbed) 105237 0.00 -1 s +3 sf +( by a client. When the key is pressed, the) 149352 -227.78 32 s +52832.0 38473.0 m +(keyboard) 63332 0.00 -1 s +( is then actively grabbed by the client. ) 106703 -35.63 32 s +2 sf +20320.0 44749.0 m +(keyboard) 31766 0.00 -1 s +( grabbing) 43282 -167.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( client can actively ) 76900 22.00 32 s +5 sf +(grab) 82231 0.00 -1 s +3 sf +( control of the keyboard, and key events will be sent to that) 149352 22.17 32 s +52832.0 47910.0 m +(client) 59101 0.00 -1 s +( rather than the client to which the events would normally have been sent. ) 142624 -29.64 32 s +2 sf +20320.0 54187.0 m +(keysym) 29412 0.00 -1 s +3 sf +52832.0 h +(An) 56280 0.00 -1 s +( encoding of a symbol on a keycap on a keyboard. ) 113250 -36.55 32 s +2 sf +20320.0 60463.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 59638 av +149352 59638 as +149352 59873 as +20320 59873 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 66559.0 m +(m) 23610 0.00 -1 s +2 sf +20320.0 73197.0 m +(managed) 31294 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( contact under geometry management) 97127 -54.00 32 s +( control.) 106477 -55.00 32 s +2 sf +20320.0 79474.0 m +(mapped) 30041 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( window is said to be ) 78697 -131.00 32 s +5 sf +(mapped) 87631 0.00 -1 s +3 sf +( if a map call has been) 112080 -131.00 32 s +( performed on it. Unmapped win\036) 149352 -131.60 32 s +52832.0 82635.0 m +(dows) 58789 0.00 -1 s +( and their inferiors are never viewable or visible. ) 114221 -22.78 32 s +2 sf +20320.0 88911.0 m +(modifier) 30663 0.00 -1 s +( keys) 36644 -56.00 32 s +3 sf +52832.0 h +(SHIFT,) 61376 0.00 -1 s +( CONTROL, META, SUPER, HYPER, ALT, Compose, Apple, CAPS LOCK,) 149352 -128.00 32 s +52832.0 92072.0 m +(Shift) 58319 0.00 -1 s +( Lock, and similar keys are called ) 96854 -25.71 32 s +5 sf +(modifier keys) 111954 -25.00 32 s +3 sf +(. ) 113340 -26.00 32 s +2 sf +20320.0 98349.0 m +(monochrome) 36150 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( special case of) 71961 -23.00 32 s +( static gray, in which there are only two colormap entries. ) 137454 -23.55 32 s +2 sf +20320.0 104625.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 103800 av +149352 103800 as +149352 104035 as +20320 104035 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 110721.0 m +(o) 22296 0.00 -1 s +2 sf +20320.0 117359.0 m +(obscure) 29726 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( window) 64630 -36.00 32 s +( is ) 67851 -36.50 32 s +5 sf +(obscured) 78197 0.00 -1 s +3 sf +( if some other window obscures it. For example, window A ob\036) 149352 -36.55 32 s +52832.0 120520.0 m +(scures) 59884 0.00 -1 s +( window B if: ) 76132 -14.00 32 s +/symbb8 7 declareFont +7 sf +52832.0 127068.0 m +(\267) 53872 0.00 -1 s +/symba8 6 declareFont +6 sf +57912.0 h +3 sf +(Both) 63400 0.00 -1 s +( windows are viewable ) 89884 -40.00 32 s +2 sf +(:input\036output) 106188 0.00 -1 s +3 sf +( windows) 117043 -40.00 32 s +7 sf +52832.0 133615.0 m +(\267) 53872 0.00 -1 s +6 sf +57912.0 h +3 sf +(Window) 67630 0.00 -1 s +( A is higher in the global stacking order than window B) 130116 -26.82 32 s +7 sf +52832.0 140163.0 m +(\267) 53872 0.00 -1 s +6 sf +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( rectangle defined by the outside edges of window A intersects) 130606 -254.00 32 s +( the rectangle de\036) 149352 -254.67 32 s +57912.0 143324.0 m +(fined) 63710 0.00 -1 s +( by the outside edges of window B) 102616 -29.57 32 s +52832.0 149600.0 m +(Notice) 60354 0.00 -1 s +( that window borders) 84302 15.00 32 s +( are included in the calculation, and that a window can be) 149352 14.45 32 s +52832.0 152761.0 m +(obscured) 63019 0.00 -1 s +( and yet still have visible regions. See occlude \(there is a fine distinction be\036) 149352 25.43 32 s +52832.0 155922.0 m +(tween) 59570 0.00 -1 s +( obscure and occlude\).) 84780 -60.00 32 s +2 sf +20320.0 162199.0 m +(occlude) 29412 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( window is ) 67918 -14.00 32 s +5 sf +(occluded) 78105 0.00 -1 s +3 sf +( if some other window occludes it. For example, window A oc\036) 149352 -13.82 32 s +52832.0 165360.0 m +(cludes) 60042 0.00 -1 s +( window B if: ) 76968 -16.80 32 s +7 sf +52832.0 171907.0 m +(\267) 53872 0.00 -1 s +6 sf +57912.0 h +3 sf +(Both) 63400 0.00 -1 s +( windows are mapped) 87940 -48.67 32 s +7 sf +52832.0 178455.0 m +(\267) 53872 0.00 -1 s +6 sf +57912.0 h +3 sf +(Window) 67630 0.00 -1 s +( A is higher in the global stacking order than window B) 130116 -26.82 32 s +7 sf +52832.0 185002.0 m +(\267) 53872 0.00 -1 s +6 sf +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( rectangle defined by the outside edges of window A intersects) 130606 -254.00 32 s +( the rectangle de\036) 149352 -254.67 32 s +57912.0 188163.0 m +(fined) 63710 0.00 -1 s +( by the outside edges of window B) 102616 -29.57 32 s +52832.0 194440.0 m +(Notice) 60354 0.00 -1 s +( that window borders are included in the) 105131 -108.00 32 s +( calculation. See obscure \(there is a fine) 149352 -108.57 32 s +52832.0 197601.0 m +(distinction) 64747 0.00 -1 s +( between occlude and) 88950 -56.00 32 s +( obscure\).) 100020 -57.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +141134.0 8331.0 m +(Glossary) 149302 0.00 -1 s +/timsps10b 2 declareFont +2 sf +133180.0 208619.0 m +(Glossary\036207) 149013 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +1 sf +20320.0 208889.0 m +(CLX Programmer's Reference) 47865 -48.00 32 s +2 sf +20320.0 22849.0 m +(override\036shell) 36934 0.00 -1 s +/symba8 6 declareFont +6 sf +52832.0 h +/timsps10 3 declareFont +3 sf +(A) 54869 0.00 -1 s +( subclass of) 67501 -268.00 32 s +( ) 67938 -269.00 32 s +2 sf +(shell ) 73864 -268.00 32 s +3 sf +(used to override the window manager. This subclass contains pop\036up) 149352 -268.56 32 s +52832.0 26010.0 m +(menus) 60200 0.00 -1 s +( and other) 71425 -30.00 32 s +( temporary objects that the user can never resize and so on.) 137702 -30.55 32 s +2 sf +20320.0 32286.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 31461 av +149352 31461 as +149352 31696 as +20320 31696 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 38382.0 m +(p) 22516 0.00 -1 s +2 sf +20320.0 45020.0 m +(padding) 30202 0.00 -1 s +3 sf +52832.0 h +(Some) 59260 0.00 -1 s +( padding bytes are inserted in the data stream to) 110762 -260.00 32 s +( maintain alignment of the protocol) 149352 -260.60 32 s +52832.0 48181.0 m +(requests) 62079 0.00 -1 s +( on natural boundaries.) 87054 -296.00 32 s +( This increases ease of portability to some machine archi\036) 149352 -296.56 32 s +52832.0 51342.0 m +(tectures.) 62313 0.00 -1 s +( ) 62992 -27.00 32 s +2 sf +20320.0 57618.0 m +(parent) 28314 0.00 -1 s +( window) 38337 -90.00 32 s +3 sf +52832.0 h +(If) 54710 0.00 -1 s +( C is a child of P, then P is the ) 89365 -14.00 32 s +/timsps10i 5 declareFont +5 sf +(parent) 96733 0.00 -1 s +3 sf +( of C. ) 103745 -14.67 32 s +2 sf +20320.0 63895.0 m +(passive) 28944 0.00 -1 s +( grab) 35221 -73.00 32 s +3 sf +52832.0 h +(Grabbing) 63489 0.00 -1 s +( a key or button) 80531 -168.00 32 s +( is a ) 85278 -168.67 32 s +5 sf +(passive grab) 99455 -168.00 32 s +3 sf +(. The grab activates when the key or button is) 149352 -168.56 32 s +52832.0 67056.0 m +(actually) 61765 0.00 -1 s +( pressed.) 71603 -37.00 32 s +( ) 72271 -38.00 32 s +2 sf +20320.0 73333.0 m +(pixel) 26121 0.00 -1 s +( value) 33189 -66.00 32 s +3 sf +52832.0 h +(An) 56280 0.00 -1 s +( ) 56700 -286.00 32 s +5 sf +(n) 58111 0.00 -1 s +3 sf +(\036bit value,) 69267 -286.00 32 s +( where ) 76999 -286.50 32 s +5 sf +(n) 78410 0.00 -1 s +3 sf +( is the number of bit planes used in \(that is, the depth of\) a particu\036) 149352 -286.53 32 s +52832.0 76494.0 m +(lar) 55808 0.00 -1 s +( window or pixmap. For a window, a pixel value indexes a) 120508 -139.00 32 s +( colormap to derive an ac\036) 149352 -139.60 32 s +52832.0 79654.0 m +(tual) 57064 0.00 -1 s +( color to be displayed. ) 82635 -27.60 32 s +2 sf +20320.0 85931.0 m +(pixmap) 29414 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( three dimensional array of bits. A pixmap is normally thought of as a two) 135095 -243.00 32 s +( dimensional) 149352 -244.00 32 s +52832.0 89882.0 m +(array) 58627 0.00 -1 s +( of pixels, where each pixel can be a) 97436 -272.00 32 s +( value from 0 to ) 114805 -272.60 32 s +0 0 fillpatset +114805.0 89565.0 m +(\() 115744 0.00 -1 s +115760.0 h +(2) 117171 0.00 -1 s +1 sf +117171.0 88502.0 m +(n) 118302 0.00 -1 s +3 sf +118308.0 89565.0 m +(\)) 119247 0.00 -1 s +119884.0 h +(-) 121295 0.00 -1 s +121914.0 h +(1) 123325 0.00 -1 s +123949.0 89882.0 m +(, where ) 132415 -272.50 32 s +5 sf +(n) 133826 0.00 -1 s +3 sf +( is the depth \(z) 149352 -272.50 32 s +52832.0 93088.0 m +(axis\)) 58317 0.00 -1 s +( of the pixmap. A) 78055 -23.00 32 s +( pixmap can also be thought of as a stack of ) 127880 -23.55 32 s +5 sf +(n) 129291 0.00 -1 s +3 sf +( bitmaps. ) 140298 -23.50 32 s +2 sf +20320.0 99365.0 m +(plane) 26906 0.00 -1 s +3 sf +52832.0 h +(When) 59571 0.00 -1 s +( a pixmap or window is thought of as a stack of bitmaps, each bitmap is called) 147424 -30.00 32 s +( a) 149352 -31.00 32 s +52832.0 102526.0 m +5 sf +(plane) 59102 0.00 -1 s +3 sf +( or ) 62796 -34.00 32 s +5 sf +(bit plane) 72717 -34.00 32 s +3 sf +(.) 73423 0.00 -1 s +2 sf +20320.0 108802.0 m +(plane) 26906 0.00 -1 s +( mask) 33980 -60.00 32 s +3 sf +52832.0 h +(Graphics) 63018 0.00 -1 s +( operations can be restricted to only affect a subset of) 120363 -284.00 32 s +( bit planes of a destination.) 149352 -284.60 32 s +52832.0 111963.0 m +(A) 54869 0.00 -1 s +( ) 55351 -224.00 32 s +5 sf +(plane mask) 67902 -224.00 32 s +3 sf +( is) 70266 -224.00 32 s +( a bit mask describing which planes are to be modified, and it is stored in) 149352 -224.53 32 s +52832.0 115124.0 m +(a) 54085 0.00 -1 s +( graphics context. ) 74665 -37.00 32 s +2 sf +20320.0 121401.0 m +(pointer) 29098 0.00 -1 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( pointing device attached to the cursor and) 104867 -34.00 32 s +( tracked on the screens. ) 131809 -34.60 32 s +2 sf +20320.0 127677.0 m +(pointer) 29098 0.00 -1 s +( grabbing) 40663 -118.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( client can actively ) 76634 -44.50 32 s +5 sf +(grab) 81965 0.00 -1 s +3 sf +( control of the pointer, and button and motion events will be) 149352 -44.55 32 s +52832.0 130838.0 m +(sent) 57378 0.00 -1 s +( to that client rather than the client to which the events would normally have been) 149352 -7.60 32 s +52832.0 133999.0 m +(sent.) 58084 0.00 -1 s +( ) 58770 -20.00 32 s +2 sf +20320.0 140276.0 m +(pointing) 30356 0.00 -1 s +( device) 38495 -90.00 32 s +3 sf +52832.0 h +(Typically) 63647 0.00 -1 s +( a mouse or tablet, or some other device with effective dimensional motion.) 149352 36.25 32 s +52832.0 143437.0 m +(There) 59412 0.00 -1 s +( is only one visible cursor defined by the core protocol, and it tracks whatever) 149352 149.00 32 s +52832.0 146598.0 m +(pointing) 62239 0.00 -1 s +( device is attached as the pointer.) 99436 -31.00 32 s +( ) 100110 -32.00 32 s +2 sf +20320.0 152874.0 m +(pop\036up) 28946 0.00 -1 s +3 sf +52832.0 h +(One) 57533 0.00 -1 s +( of the uses of a top\036level shell \(for example, a menu that pops up when a command) 149352 -158.82 32 s +52832.0 156035.0 m +(button) 60044 0.00 -1 s +( contact is activated\). Setting the ) 98276 115.00 32 s +2 sf +(state) 103916 0.00 -1 s +3 sf +( of) 107087 115.00 32 s +( a shell to ) 119147 114.50 32 s +2 sf +(:mapped) 129807 0.00 -1 s +3 sf +( is sometimes re\036) 149352 114.33 32 s +52832.0 159196.0 m +(ferred) 59566 0.00 -1 s +( to as ) 65825 -135.00 32 s +5 sf +(mapping) 75701 0.00 -1 s +3 sf +( or ) 79193 -135.00 32 s +5 sf +(popping up) 91836 -135.00 32 s +3 sf +( the shell. Setting the ) 115620 -134.80 32 s +2 sf +(state) 121260 0.00 -1 s +3 sf +( of a shell to ) 135245 -134.60 32 s +2 sf +(:withdrawn) 149352 0.00 -1 s +3 sf +52832.0 162357.0 m +(or) 55182 0.00 -1 s +( ) 55861 -27.00 32 s +2 sf +(:iconic) 63854 0.00 -1 s +3 sf +( is sometimes referred to as ) 95356 -26.50 32 s +5 sf +(unmapping) 108054 0.00 -1 s +3 sf +( or ) 111763 -26.50 32 s +5 sf +(popping down) 127807 -27.00 32 s +3 sf +( the shell.) 138650 -26.50 32 s +2 sf +20320.0 168633.0 m +(property) 30978 0.00 -1 s +3 sf +52832.0 h +(Windows) 63648 0.00 -1 s +( can have associated ) 87471 39.00 32 s +5 sf +(properties) 99072 0.00 -1 s +3 sf +(, consisting of a name, a type, a data format,) 149352 39.44 32 s +52832.0 171794.0 m +(and) 56907 0.00 -1 s +( some data. The protocol places no interpretation on properties; they are intended as a) 149352 -298.93 32 s +52832.0 174955.0 m +(general\036purpose) 71009 0.00 -1 s +( naming mechanism for clients. For example, clients might share) 142415 -191.00 32 s +( infor\036) 149352 -192.00 32 s +52832.0 178116.0 m +(mation) 60670 0.00 -1 s +( such as resize hints, program names, and icon formats with a window manager) 149352 -69.00 32 s +52832.0 181277.0 m +(via) 56280 0.00 -1 s +( properties.) 68950 -25.00 32 s +( ) 69630 -26.00 32 s +2 sf +20320.0 187554.0 m +(property) 30978 0.00 -1 s +( list) 35244 -45.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( list of properties that have been defined for a window.) 118802 -25.00 32 s +( ) 119482 -26.00 32 s +2 sf +20320.0 193830.0 m +(pseudo) 28789 0.00 -1 s +( color) 35515 -92.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( class of colormap in which a pixel value indexes the colormap) 122972 -271.00 32 s +( to produce independent) 149352 -271.67 32 s +52832.0 196991.0 m +(red,) 57141 0.00 -1 s +( green, and blue values. That is, the colormap is viewed as an array of triples \(RGB) 149352 -109.81 32 s +52832.0 200152.0 m +(values\).) 61687 0.00 -1 s +( The RGB values) 81069 -45.00 32 s +( can be changed dynamically. ) 115011 -45.60 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8331.0 m +(Glossary) 28759 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20591.0 208890.0 m +(Glossary\036208) 36424 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +2 sf +20320.0 22578.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 3 declareFont +3 17 fillpatset +newpath +20320 21753 av +149352 21753 as +149352 21988 as +20320 21988 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 28674.0 m +(r) 22074 0.00 -1 s +2 sf +20320.0 35312.0 m +(realization) 33172 0.00 -1 s +52832.0 h +3 sf +(See) 56907 0.00 -1 s +( contact) 65698 -64.00 32 s +( realization.) 78954 -65.00 32 s +2 sf +20320.0 41588.0 m +(redirecting) 33641 0.00 -1 s +( control) 42853 -114.00 32 s +3 sf +52832.0 h +(Window) 62550 0.00 -1 s +( managers \(or client) 84445 -198.00 32 s +( programs\) may choose to enforce window layout policy in) 149352 -198.56 32 s +52832.0 44749.0 m +(various) 61139 0.00 -1 s +( ways. When a client attempts to change the size or position of a window, the) 149352 65.33 32 s +52832.0 47910.0 m +(operation) 63489 0.00 -1 s +( can be ) 71531 -219.00 32 s +/timsps10i 5 declareFont +5 sf +(redirected) 83129 0.00 -1 s +3 sf +( to a specified client, rather than the) 122033 -219.00 32 s +( operation actually being) 149352 -219.67 32 s +52832.0 51071.0 m +(performed.) 65289 0.00 -1 s +( ) 65950 -45.00 32 s +2 sf +20320.0 57348.0 m +(reply) 26590 0.00 -1 s +3 sf +52832.0 h +(Information) 66309 0.00 -1 s +( requested by a client program is sent back to the client with a ) 136666 -12.86 32 s +5 sf +(reply) 142465 0.00 -1 s +3 sf +(. Both) 149352 -13.00 32 s +52832.0 60508.0 m +(events) 60042 0.00 -1 s +( and replies are multiplexed on the same connection. Most requests do not gener\036) 149352 -171.62 32 s +52832.0 63669.0 m +(ate) 56122 0.00 -1 s +( replies. However, some requests generate multiple replies.) 122531 -29.00 32 s +( ) 123207 -30.00 32 s +2 sf +20320.0 69946.0 m +(representation) 37874 0.00 -1 s +( type) 43643 -109.00 32 s +52832.0 h +3 sf +(The) 57220 0.00 -1 s +( type of representation of a resource value. For example, a color value might be rep\036) 149352 -184.53 32 s +52832.0 73107.0 m +(resented) 62234 0.00 -1 s +( either as a namestring \(\177red"\), a pixel value, an RGB triplet, an HSV triplet, and) 149352 -278.87 32 s +52832.0 76268.0 m +(so) 55341 0.00 -1 s +( on.) 59538 -37.00 32 s +2 sf +20320.0 82544.0 m +(request) 29254 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( command to the server is called) 90688 -117.00 32 s +( a ) 93118 -117.50 32 s +5 sf +(request) 101426 0.00 -1 s +3 sf +(. It is a single block of data sent over a con\036) 149352 -117.55 32 s +52832.0 85705.0 m +(nection.) 61845 0.00 -1 s +( ) 62495 -56.00 32 s +2 sf +20320.0 91982.0 m +(resource) 30663 0.00 -1 s +3 sf +52832.0 h +( A) 55461 -114.00 32 s +( value of the user interface that can be changed by the user in a resource database via) 149352 -114.53 32 s +52832.0 95143.0 m +(CLX) 58475 0.00 -1 s +( functions ) 70301 -44.00 32 s +2 sf +(add\036resource) 86132 0.00 -1 s +3 sf +(, ) 87500 -44.00 32 s +2 sf +(get\036resource) 102385 0.00 -1 s +3 sf +(, and so forth.) 117851 -44.00 32 s +( See server resource.) 141066 -44.67 32 s +2 sf +20320.0 101419.0 m +(resource) 30663 0.00 -1 s +( class,) 37637 -82.00 32 s +3 sf +52832.0 h +(See) 56907 0.00 -1 s +( complete resource class.) 84983 -45.00 32 s +2 sf +20320.0 104580.0 m +(complete) 31132 0.00 -1 s +20320.0 110857.0 m +(resource) 30663 0.00 -1 s +( database) 41904 -126.00 32 s +52832.0 h +3 sf +(Conceptually,) 68586 0.00 -1 s +( a set of resource name/value pairs \(or resource bindings\). CLX) 140479 19.00 32 s +( defines) 149352 18.00 32 s +52832.0 114018.0 m +(functions) 63334 0.00 -1 s +( for storing and retrieving interface resources from a resource database.) 143527 -27.80 32 s +2 sf +20320.0 120294.0 m +(resource) 30663 0.00 -1 s +( name,) 38540 -118.00 32 s +3 sf +52832.0 h +(See) 56907 0.00 -1 s +( complete resource name.) 85570 -58.00 32 s +2 sf +20320.0 123455.0 m +(complete) 31132 0.00 -1 s +20320.0 129732.0 m +(RGB) 26434 0.00 -1 s +( values) 34612 -54.00 32 s +3 sf +52832.0 h +5 sf +(Red) 57220 0.00 -1 s +3 sf +(,) 57926 0.00 -1 s +( ) 58479 -153.00 32 s +5 sf +(green) 64905 0.00 -1 s +3 sf +(,) 65611 0.00 -1 s +( and ) 70791 -153.50 32 s +5 sf +(blue) 75650 0.00 -1 s +3 sf +( intensity values used to define color. These values are always rep\036) 149352 -153.55 32 s +52832.0 132893.0 m +(resented) 62234 0.00 -1 s +( as 16\036bit unsigned numbers, with zero being the minimum) 127004 -206.00 32 s +( intensity and 65535) 149352 -206.67 32 s +52832.0 136054.0 m +(being) 59102 0.00 -1 s +( the maximum intensity. The values) 99228 -64.00 32 s +( are scaled by the server to match the display) 149352 -64.56 32 s +52832.0 139215.0 m +(hardware.) 64034 0.00 -1 s +( ) 64685 -55.00 32 s +2 sf +20320.0 145491.0 m +(root) 25334 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( special composite contact used to represent an entire display screen.) 132057 -31.90 32 s +2 sf +20320.0 151768.0 m +(root) 25334 0.00 -1 s +( window) 35379 -68.00 32 s +3 sf +52832.0 h +(Each) 58473 0.00 -1 s +( screen has a) 72471 -114.00 32 s +( ) 73062 -115.00 32 s +5 sf +(root window) 87139 -114.00 32 s +3 sf +( covering it. It cannot be reconfigured or unmapped, but) 149352 -114.56 32 s +52832.0 154929.0 m +(otherwise) 63802 0.00 -1 s +( acts as a full\036fledged window. A root window has no parent. ) 133096 -25.00 32 s +2 sf +20320.0 161205.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 160380 av +149352 160380 as +149352 160615 as +20320 160615 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 167301.0 m +(s) 21857 0.00 -1 s +2 sf +20320.0 173939.0 m +(save set) 29464 -25.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( ) 57743 -183.00 32 s +5 sf +(save set) 66416 -183.00 32 s +3 sf +( of a client is a list of other client's windows that, if) 122453 -183.00 32 s +( they are inferiors of one) 149352 -183.60 32 s +52832.0 177100.0 m +(of) 55182 0.00 -1 s +( the client's windows at connection close, should not be destroyed and that should be) 149352 -131.79 32 s +52832.0 180261.0 m +(remapped) 63958 0.00 -1 s +( if it is unmapped. Save sets are typically used by window) 128285 -109.00 32 s +( managers to avoid) 149352 -109.67 32 s +52832.0 183422.0 m +(lost) 56909 0.00 -1 s +( windows if the manager should terminate abnormally. ) 119143 -28.63 32 s +2 sf +20320.0 189698.0 m +(scanline) 30041 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( list of pixel or bit values viewed as a horizontal row \(all values having the same y coor\036) 149352 -280.56 32 s +52832.0 192859.0 m +(dinate\)) 60667 0.00 -1 s +( of an image, with the values ordered by increasing x coordinate. ) 134112 -31.67 32 s +2 sf +20320.0 199136.0 m +(scanline) 30041 0.00 -1 s +( order) 37389 -97.00 32 s +3 sf +52832.0 h +(An) 56280 0.00 -1 s +( image represented in ) 80092 -277.00 32 s +5 sf +(scanline order) 96197 -277.00 32 s +3 sf +( contains scanlines ordered by increasing y coor\036) 149352 -276.71 32 s +52832.0 202297.0 m +(dinate.) 60434 0.00 -1 s +( ) 61095 -45.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +141134.0 8331.0 m +(Glossary) 149302 0.00 -1 s +/timsps10b 2 declareFont +2 sf +133180.0 208619.0 m +(Glossary\036209) 149013 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +1 sf +20320.0 208889.0 m +(CLX Programmer's Reference) 47865 -48.00 32 s +2 sf +20320.0 22578.0 m +(screen) 27999 0.00 -1 s +/timsps10 3 declareFont +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( server can provide several independent ) 98593 -287.67 32 s +/timsps10i 5 declareFont +5 sf +(screens) 107057 0.00 -1 s +3 sf +(, which typically have physically inde\036) 149352 -287.60 32 s +52832.0 25739.0 m +(pendent) 61766 0.00 -1 s +( monitors. This would be the expected configuration when there is only a single) 149352 -183.85 32 s +52832.0 28900.0 m +(keyboard) 63332 0.00 -1 s +( and pointer shared among the screens. ) 107561 -40.86 32 s +2 sf +20320.0 35176.0 m +(selection) 30664 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( ) 55473 -102.00 32 s +5 sf +(selection) 65504 0.00 -1 s +3 sf +( can be thought of as an indirect property with dynamic type. That is, rather) 149352 -101.50 32 s +52832.0 38337.0 m +(than) 57691 0.00 -1 s +( having the property stored in the server, it is maintained by some client \(the ) 140652 -258.60 32 s +5 sf +(owner) 147707 0.00 -1 s +3 sf +(\).) 149352 0.00 -1 s +52832.0 41498.0 m +(A) 54869 0.00 -1 s +( selection is global in nature, being) 92962 -222.00 32 s +( thought of as belonging to the user \(but maintained) 149352 -222.56 32 s +52832.0 44659.0 m +(by) 55654 0.00 -1 s +( clients\), rather than being private to a particular window subhierarchy or a particular) 149352 -182.54 32 s +52832.0 47820.0 m +(set) 55967 0.00 -1 s +( of clients. When a client) 83976 -41.00 32 s +( asks for the contents of a selection, it specifies a selection) 149352 -41.55 32 s +52832.0 50981.0 m +5 sf +(target) 59573 0.00 -1 s +( type) 64860 -120.00 32 s +3 sf +(. This target type can be used to control the transmitted representation of the) 149352 -120.00 32 s +52832.0 54142.0 m +(contents.) 62943 0.00 -1 s +( ) 63602 -47.00 32 s +52832.0 60418.0 m +(For) 56751 0.00 -1 s +( example, if the selection is \177the last thing the user clicked on" and that is currently an) 149352 -269.59 32 s +52832.0 63579.0 m +(image,) 60434 0.00 -1 s +( then the target type might specify whether the contents) 122981 -8.00 32 s +( of the image should be) 149352 -8.60 32 s +52832.0 66740.0 m +(sent) 57378 0.00 -1 s +( in XY Format or Z Format. The target type can also be used to control the class of) 149352 -84.89 32 s +52832.0 69901.0 m +(contents) 62237 0.00 -1 s +( transmitted; that is, asking for the looks \(fonts, line spacing, indentation, and so) 149352 -262.85 32 s +52832.0 73062.0 m +(forth\)) 59255 0.00 -1 s +( of a paragraph selection, rather than the text of the paragraph. The target type can) 149352 -173.67 32 s +52832.0 76223.0 m +(also) 57378 0.00 -1 s +( be used for other purposes;) 88528 -24.00 32 s +( the semantics is not constrained by the protocol. ) 144114 -24.56 32 s +2 sf +20320.0 82499.0 m +(sensitivity) 32390 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( condition in which a user interface component of an application will accept input.) 149352 118.08 32 s +52832.0 85660.0 m +(Conversely,) 66391 0.00 -1 s +( when a contact is insensitive,) 99624 -94.00 32 s +( events of particular types are not dispatched) 149352 -94.57 32 s +52832.0 88821.0 m +(to) 55027 0.00 -1 s +( the contact and are ignored.) 86812 -37.60 32 s +2 sf +20320.0 95098.0 m +(server) 27841 0.00 -1 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( ) 57780 -146.00 32 s +5 sf +(server) 64833 0.00 -1 s +3 sf +( provides the basic windowing mechanism. It handles IPC connections from) 149352 -146.00 32 s +52832.0 98258.0 m +(clients,) 60905 0.00 -1 s +( demultiplexes graphics requests onto the screens, and multiplexes input back to) 149352 -181.91 32 s +52832.0 101419.0 m +(the) 56280 0.00 -1 s +( appropriate clients.) 78526 -44.00 32 s +2 sf +20320.0 107696.0 m +(server) 27841 0.00 -1 s +( grabbing) 39398 -126.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( server can be) 72218 -198.00 32 s +( ) 72725 -199.00 32 s +5 sf +(grabbed) 82131 0.00 -1 s +3 sf +( by a single client for exclusive use. This prevents processing) 149352 -198.50 32 s +52832.0 110857.0 m +(of) 55182 0.00 -1 s +( any) 59720 -243.00 32 s +( requests from other client connections until the grab is complete. This is typically) 149352 -243.54 32 s +52832.0 114018.0 m +(only) 57849 0.00 -1 s +( a transient state for such things as rubber\036banding and pop\036up menus, or to execute) 149352 -209.71 32 s +52832.0 117179.0 m +(requests) 62079 0.00 -1 s +( indivisibly.) 75541 -23.00 32 s +( ) 76223 -24.00 32 s +2 sf +20320.0 123455.0 m +(server) 27841 0.00 -1 s +( resource) 38766 -124.00 32 s +3 sf +52832.0 h +(Windows,) 64354 0.00 -1 s +( pixmaps,) 75357 28.00 32 s +( cursors, fonts, gcontexts, and colormaps are known as resources.) 149352 27.44 32 s +52832.0 126616.0 m +(They) 58631 0.00 -1 s +( all) 61914 -244.00 32 s +( have unique identifiers associated with them for naming purposes. The lifetime) 149352 -244.55 32 s +52832.0 129777.0 m +(of) 55182 0.00 -1 s +( a resource is bounded by the lifetime of the connection over which the resource was) 149352 -90.67 32 s +52832.0 132938.0 m +(created.) 61684 0.00 -1 s +( See resource.) 77306 -64.00 32 s +2 sf +20320.0 139215.0 m +(shell) 25808 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( composite that handles the duties required by standard conventions for top\036level X) 149352 49.33 32 s +52832.0 142375.0 m +(windows.) 63727 0.00 -1 s +2 sf +20320.0 148652.0 m +(sibling) 28319 0.00 -1 s +3 sf +52832.0 h +(Children) 62707 0.00 -1 s +( of the same parent window are known as ) 110025 -28.00 32 s +5 sf +(sibling) 117708 0.00 -1 s +3 sf +( windows.) 129281 -28.00 32 s +( ) 129958 -29.00 32 s +2 sf +20320.0 154929.0 m +(static) 26744 0.00 -1 s +( color) 33528 -34.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( degenerate case of pseudo color in which the RGB values are predefined and read\036) 149352 32.00 32 s +52832.0 158090.0 m +(only.) 58555 0.00 -1 s +( ) 59222 -39.00 32 s +2 sf +20320.0 164366.0 m +(static) 26744 0.00 -1 s +( gray) 32896 -40.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( degenerate case of) 76127 -96.00 32 s +( gray scale in which the gray values are predefined and read\036only.) 149352 -96.55 32 s +52832.0 167527.0 m +(The) 57220 0.00 -1 s +( values are typically \(near\036\)linear increasing ramps. ) 115779 -29.86 32 s +2 sf +20320.0 173804.0 m +(stacking) 30354 0.00 -1 s +( order) 37705 -94.00 32 s +3 sf +52832.0 h +(Sibling) 60986 0.00 -1 s +( windows can ) 77018 -64.00 32 s +5 sf +(stack) 82817 0.00 -1 s +3 sf +( on top) 90529 -64.00 32 s +( of each other. Windows above both obscure and oc\036) 149352 -64.56 32 s +52832.0 176965.0 m +(clude) 58944 0.00 -1 s +( lower windows. This is similar to paper) 103759 -92.00 32 s +( on a desk. The relationship between sib\036) 149352 -92.57 32 s +52832.0 180126.0 m +(ling) 57222 0.00 -1 s +( windows is known as the ) 86859 -25.00 32 s +5 sf +(stacking order) 103216 -25.00 32 s +3 sf +(. ) 104603 -25.00 32 s +2 sf +20320.0 186402.0 m +(state) 25960 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( slot of ) 63351 -21.00 32 s +2 sf +(contact) 72126 0.00 -1 s +3 sf +( that controls the visual effect of the) 112652 -21.00 32 s +( contact.) 122191 -22.00 32 s +2 sf +20320.0 192679.0 m +(stipple) 28316 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( bitmap that is used to tile a region to serve as an additional clip mask for a fill operation) 149352 -286.68 32 s +52832.0 195840.0 m +(with) 57848 0.00 -1 s +( the foreground color. ) 83041 -29.75 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8331.0 m +(Glossary) 28759 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20591.0 208890.0 m +(Glossary\036210) 36424 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +2 sf +20320.0 22578.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 3 declareFont +3 17 fillpatset +newpath +20320 21753 av +149352 21753 as +149352 21988 as +20320 21988 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 28674.0 m +(t) 21635 0.00 -1 s +2 sf +20320.0 35312.0 m +(tile) 24080 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( pixmap can be replicated in two dimensions to ) 107657 -135.00 32 s +/timsps10i 5 declareFont +5 sf +(tile) 111262 0.00 -1 s +3 sf +( a region. The pixmap itself is also) 149352 -134.71 32 s +52832.0 38473.0 m +(known) 60513 0.00 -1 s +( as a tile.) 70465 -27.00 32 s +2 sf +20320.0 44749.0 m +(timer) 26899 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( CLUE object that provides support for animation and other types of time\036sensitive) 149352 62.25 32 s +52832.0 47910.0 m +(user) 57533 0.00 -1 s +( interfaces.) 69883 -29.00 32 s +( A timer causes ) 87947 -29.50 32 s +2 sf +(:timer) 95465 0.00 -1 s +3 sf +( events to be dispatched to a specific contact for) 149352 -29.56 32 s +52832.0 51071.0 m +(processing.) 65607 0.00 -1 s +2 sf +20320.0 57348.0 m +(timestamp) 33013 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( time value, expressed in milliseconds, typically since the last server reset. Timestamp) 149352 -231.75 32 s +52832.0 60508.0 m +(values) 60042 0.00 -1 s +( wrap around \(after about 49.7 days\). The server, given its current time is) 141965 -52.00 32 s +( repre\036) 149352 -53.00 32 s +52832.0 63669.0 m +(sented) 60042 0.00 -1 s +( by timestamp T, always interprets timestamps from clients by treating half of the) 149352 -207.77 32 s +52832.0 66830.0 m +(timestamp space as being earlier in time than T and half of the timestamp space as being) 149352 -207.94 32 s +52832.0 69991.0 m +(later) 57845 0.00 -1 s +( in time) 66368 -50.00 32 s +( than T. One timestamp value \(named CurrentTime\) is never generated by) 149352 -50.55 32 s +52832.0 73152.0 m +(the) 56280 0.00 -1 s +( server; this value is reserved for use in requests to represent) 122587 -163.00 32 s +( the current server time. ) 149352 -163.60 32 s +2 sf +20320.0 79429.0 m +(top\036level) 30663 0.00 -1 s +( contact) 40076 -68.00 32 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( contact whose parent is a root. A top\036level contact is usually a composite at the top of a) 149352 -267.67 32 s +52832.0 82590.0 m +(hierarchy) 63486 0.00 -1 s +( of other contacts) 82879 -40.00 32 s +( created by an application program.) 122642 -40.60 32 s +2 sf +20320.0 88866.0 m +(top\036level\036session) 39913 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( subclass of ) 68674 -23.00 32 s +2 sf +(shell ) 74845 -23.00 32 s +3 sf +(that is used to communicate with a session manager.) 133841 -22.50 32 s +2 sf +20320.0 95143.0 m +(top\036level\036shell) 37090 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( subclass of ) 68665 -26.00 32 s +2 sf +(shell ) 74833 -26.00 32 s +3 sf +(that) 79065 0.00 -1 s +( provides full window manager interaction.) 127677 -26.60 32 s +2 sf +20320.0 101419.0 m +(transient\036shell) 37562 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( subclass) 65102 121.00 32 s +( of ) 69105 120.50 32 s +2 sf +(shell ) 75419 120.00 32 s +3 sf +(that a window manager typically will unmap when its owner be\036) 149352 120.50 32 s +52832.0 104580.0 m +(comes) 60042 0.00 -1 s +( unmapped or iconified and will not allow to be individually iconified.) 139147 -33.64 32 s +2 sf +20320.0 110857.0 m +(true) 25334 0.00 -1 s +( color) 32083 -69.00 32 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( degenerate case of direct color in which the subfields in the pixel value directly encode) 149352 -299.60 32 s +52832.0 114018.0 m +(the) 56280 0.00 -1 s +( corresponding RGB values. That is, the) 102208 104.00 32 s +( colormap has predefined read\036only RGB) 149352 103.40 32 s +52832.0 117179.0 m +(values.) 60748 0.00 -1 s +( The) 65811 -31.00 32 s +( values are typically \(near\036\)linear increasing ramps. ) 124358 -31.57 32 s +2 sf +20320.0 123455.0 m +(type) 25492 0.00 -1 s +3 sf +52832.0 h +(An) 56280 0.00 -1 s +( arbitrary atom used to identify the interpretation of property data. Types are com\036) 149352 22.15 32 s +52832.0 126616.0 m +(pletely) 60512 0.00 -1 s +( uninterpreted by the server; they are solely for the benefit of clients. ) 138424 -22.85 32 s +2 sf +20320.0 132893.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 132068 av +149352 132068 as +149352 132303 as +20320 132303 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 138989.0 m +(u) 22516 0.00 -1 s +2 sf +20320.0 145559.0 m +(unmanaged) 34432 0.00 -1 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( contact that is not under geometry management control.) 118285 -37.63 32 s +2 sf +20320.0 151836.0 m +(user) 25493 0.00 -1 s +( interface) 36779 -74.00 32 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( set of abstract interface objects used to control the dialog between an application and) 149352 -147.64 32 s +52832.0 154996.0 m +(its) 55498 0.00 -1 s +( human user.) 69946 -26.00 32 s +2 sf +20320.0 161273.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 160448 av +149352 160448 as +149352 160683 as +20320 160683 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 167369.0 m +(v) 22296 0.00 -1 s +2 sf +20320.0 174007.0 m +(viewable) 30822 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( window is ) 67621 -113.00 32 s +5 sf +(viewable) 77652 0.00 -1 s +3 sf +( if it and all of its ancestors are mapped.) 121777 -113.00 32 s +( This does not imply that) 149352 -113.60 32 s +52832.0 177168.0 m +(any) 56907 0.00 -1 s +( portion) 65667 -97.00 32 s +( of the window is actually visible. Graphics requests can be performed on a) 149352 -97.54 32 s +52832.0 180329.0 m +(window) 61923 0.00 -1 s +( when it is not viewable, but output will not be retained unless the server is main\036) 149352 -272.00 32 s +52832.0 183490.0 m +(taining) 60670 0.00 -1 s +( backing store. ) 77803 -36.67 32 s +2 sf +20320.0 189766.0 m +(visible) 28003 0.00 -1 s +3 sf +52832.0 h +(A) 54869 0.00 -1 s +( region of) 65514 -163.00 32 s +( a window is ) 79910 -163.50 32 s +5 sf +(visible) 87277 0.00 -1 s +3 sf +( if someone looking at the screen can actually see it; that) 149352 -163.55 32 s +52832.0 192927.0 m +(is,) 55420 0.00 -1 s +( the window is viewable) 82735 -29.00 32 s +( and the region is not occluded by any other window. ) 143075 -29.55 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +141134.0 8331.0 m +(Glossary) 149302 0.00 -1 s +/timsps10b 2 declareFont +2 sf +133180.0 208619.0 m +(Glossary\036211) 149013 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +1 sf +20320.0 208889.0 m +(CLX Programmer's Reference) 47865 -48.00 32 s +2 sf +20320.0 22578.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 3 declareFont +3 17 fillpatset +newpath +20320 21753 av +149352 21753 as +149352 21988 as +20320 21988 as +closepath +fp +/drawmode PL_SET def +/timsps14b 4 declareFont +4 sf +20320.0 28674.0 m +(w) 23172 0.00 -1 s +2 sf +20320.0 35312.0 m +(window) 29727 0.00 -1 s +( gravity) 38969 -84.00 32 s +3 sf +52832.0 h +(When) 59571 0.00 -1 s +( windows are resized, subwindows can be repositioned automatically relative to) 149352 -26.60 32 s +52832.0 38473.0 m +(some) 58789 0.00 -1 s +( position in the window. This attraction of a subwindow to some part of its parent is) 149352 -252.63 32 s +52832.0 41633.0 m +(known) 60513 0.00 -1 s +( as ) 64200 -38.00 32 s +/timsps10i 5 declareFont +5 sf +(window gravity) 81644 -37.00 32 s +3 sf +(. ) 83018 -38.00 32 s +2 sf +20320.0 47910.0 m +(window) 29727 0.00 -1 s +( manager) 40979 -112.00 32 s +3 sf +52832.0 h +(Manipulation) 68038 0.00 -1 s +( of windows on) 85058 -153.00 32 s +( the screen, and much of the user interface \(policy\) is typi\036) 149352 -153.55 32 s +52832.0 51071.0 m +(cally) 58317 0.00 -1 s +( provided by a ) 75095 -38.00 32 s +5 sf +(window manager) 94576 -38.00 32 s +3 sf +( client. ) 102887 -38.00 32 s +2 sf +20320.0 57348.0 m +(window) 29727 0.00 -1 s +( manager shell) 47165 -60.00 32 s +52832.0 h +3 sf +(A) 54869 0.00 -1 s +( subclass of ) 68674 -23.00 32 s +2 sf +(shell) 74162 0.00 -1 s +3 sf +( called ) 82266 -23.00 32 s +2 sf +(wm\036shell ) 93763 -23.00 32 s +3 sf +(that interacts with the window) 127841 -23.00 32 s +( manager.) 138944 -24.00 32 s +2 sf +20320.0 63624.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 62799 av +149352 62799 as +149352 63034 as +20320 63034 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 69720.0 m +(x) 22296 0.00 -1 s +2 sf +20320.0 76358.0 m +(XY) 24394 0.00 -1 s +( Format) 34138 -50.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( data for a pixmap is said to be in ) 95840 37.00 32 s +5 sf +(XY Format) 108341 37.00 32 s +3 sf +( if it is organized as a set of bitmaps) 149352 37.00 32 s +52832.0 79519.0 m +(representing) 66779 0.00 -1 s +( individual bit planes, with the planes appearing) 119971 -127.00 32 s +( from most to least signifi\036) 149352 -127.60 32 s +52832.0 82680.0 m +(cant) 57533 0.00 -1 s +( in bit order.) 71427 -19.00 32 s +( ) 72113 -20.00 32 s +2 sf +20320.0 88956.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 88131 av +149352 88131 as +149352 88366 as +20320 88366 as +closepath +fp +/drawmode PL_SET def +4 sf +20320.0 95052.0 m +(z) 22074 0.00 -1 s +2 sf +20320.0 101690.0 m +(Z) 22202 0.00 -1 s +( Format) 31948 -48.00 32 s +3 sf +52832.0 h +(The) 57220 0.00 -1 s +( data for a pixmap is said to be in ) 93170 -230.00 32 s +5 sf +(Z Format) 103680 -230.00 32 s +3 sf +( if it is organized as a set of pixel values in) 149352 -230.00 32 s +52832.0 104851.0 m +(scanline) 62079 0.00 -1 s +( order.) 69382 -62.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8331.0 m +(Glossary) 28759 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20591.0 208890.0 m +(Glossary\036212) 36424 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s06.ps +++ cmucl-20a-20090928/own-work/clx/s06.ps @@ -0,0 +1,5034 @@ +%!PS-Adobe-2.0 +%%Title: s06.ps +%%Pages: 12 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(6\03669) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 8 declareFont +8 sf +20410.0 39376.0 m +57076.0 39466.0 m +(GRAPHIC OPERATIONS) 115846 -64.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +0.0 sw +/drawmode PL_SET def +136954 39315 av +138323 36265 as +138323 36265 as +138323 32833 as +138323 32833 as +138323 29783 as +138323 29783 as +138323 26351 as +141973 26351 as +141973 27876 as +146080 27876 as +146080 25588 as +143342 23300 as +136954 23300 as +134216 25588 as +134216 37028 as +136954 39315 as +fp +newpath +136954 39315 av +138323 36265 as +newpath +270.0 sw +138323 36265 av +138323 32833 as +[] 0 setdash +dp +newpath +0.0 sw +138323 32833 av +138323 29783 as +newpath +270.0 sw +138323 29783 av +138323 26351 as +141973 26351 as +141973 27876 as +146080 27876 as +146080 25588 as +143342 23300 as +136954 23300 as +134216 25588 as +134216 37028 as +136954 39315 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +143342 39315 av +136954 39315 as +136954 39315 as +138323 36265 as +138323 36265 as +141973 36265 as +141973 32833 as +138323 32833 as +138323 32833 as +138323 29783 as +138323 29783 as +143342 29783 as +146080 32070 as +146080 37028 as +143342 39315 as +fp +newpath +143342 39315 av +136954 39315 as +[] 0 setdash +dp +newpath +0.0 sw +136954 39315 av +138323 36265 as +newpath +270.0 sw +138323 36265 av +141973 36265 as +141973 32833 as +138323 32833 as +[] 0 setdash +dp +newpath +0.0 sw +138323 32833 av +138323 29783 as +newpath +270.0 sw +138323 29783 av +143342 29783 as +146080 32070 as +146080 37028 as +143342 39315 as +[] 0 setdash +dp +0.0 sw +newpath +132847 23300 av +132847 23300 as +newpath +132847 43891 av +132847 43891 as +newpath +147449 43891 av +147449 43891 as +newpath +147449 23300 av +147449 23300 as +149351.0 39376.0 m +8 sf +/timsps10 4 declareFont +4 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 6 declareFont +6 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(6.1) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(Once) 64509 0.00 -1 s +( connected to an X server, a client can use CLX functions to perform graphic) 149352 -147.57 32 s +52832.0 50032.0 m +(operations) 64587 0.00 -1 s +( on drawables.) 80886 -40.00 32 s +( ) 81551 -41.00 32 s +52832.0 56309.0 m +(This) 57849 0.00 -1 s +( section) 66527 -22.00 32 s +( describes CLX functions to: ) 99568 -22.60 32 s +/symbb8 7 declareFont +7 sf +52832.0 62857.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Operate) 66842 0.00 -1 s +( on areas) 76806 -33.00 32 s +( and planes ) 90108 -33.67 32 s +7 sf +52832.0 69404.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Draw) 64178 0.00 -1 s +( points) 71765 -18.00 32 s +( ) 72452 -19.00 32 s +7 sf +52832.0 75952.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Draw) 64178 0.00 -1 s +( lines ) 70894 -13.00 32 s +7 sf +52832.0 82499.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Draw) 64178 0.00 -1 s +( rectangles) 76293 -30.00 32 s +( ) 76968 -31.00 32 s +7 sf +52832.0 89047.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Draw) 64178 0.00 -1 s +( arcs) 69413 -14.00 32 s +( ) 70104 -15.00 32 s +7 sf +52832.0 95594.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Draw) 64178 0.00 -1 s +( text ) 69788 -17.00 32 s +20320.0 101916.0 m +0.0 0.0 m +newpath +20455 100292 av +148878 100290 as +[] 0 setdash +dp +149352.0 101916.0 m +6 sf +20320.0 105303.0 m +(Area) 27464 0.00 -1 s +( and Plane) 42740 17.00 32 s +52832.0 h +2 sf +(6.2) 56360 0.00 -1 s +58710.0 h +(clear\036area) 70931 0.00 -1 s +4 sf +( clears an area or an entire window to the) 132897 1722.00 32 s +( background.) 149352 1721.00 32 s +2 sf +6 sf +20320.0 108689.0 m +(Operations) 36497 0.00 -1 s +52832.0 h +4 sf +(Since) 59102 0.00 -1 s +( pixmaps do not have backgrounds, they cannot be filled by) 127000 57.00 32 s +( using the functions) 149352 56.33 32 s +52832.0 111850.0 m +(described) 63645 0.00 -1 s +( in the following paragraphs. Instead, you should use ) 122846 -136.56 32 s +2 sf +(draw\036rectangle) 141181 0.00 -1 s +4 sf +(, which) 149352 -137.00 32 s +52832.0 115011.0 m +(sets) 57065 0.00 -1 s +( the pixmap to a known value.) 90027 -189.00 32 s +( See paragraph 6.5, Drawing Rectangles, for informa\036) 149352 -189.57 32 s +52832.0 118172.0 m +(tion) 57222 0.00 -1 s +( on ) 61357 -49.50 32 s +2 sf +(draw\036rectangle) 79692 0.00 -1 s +4 sf +(. ) 81054 -50.00 32 s +2 sf +34544.0 123771.0 m +(clear\036area) 46765 0.00 -1 s +( ) 47440 -31.00 32 s +/timsps10i 5 declareFont +5 sf +(window) 56221 0.00 -1 s +4 sf +( &key \() 64780 -31.00 32 s +2 sf +(:x) 67130 0.00 -1 s +4 sf +( 0\) \() 71769 -31.00 32 s +2 sf +(:y) 74119 0.00 -1 s +4 sf +( 0\) ) 77820 -30.50 32 s +2 sf +(:width) 85657 0.00 -1 s +4 sf +( ) 86333 -30.00 32 s +2 sf +(:height) 94797 0.00 -1 s +4 sf +( ) 95472 -31.00 32 s +2 sf +(:exposures\036p) 110834 0.00 -1 s +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 128490.0 m +(Draws) 60196 0.00 -1 s +( a rectangular area in the specified ) 98790 -117.00 32 s +5 sf +(window) 107571 0.00 -1 s +4 sf +( with the background pixel or pixmap) 149352 -116.50 32 s +52832.0 131651.0 m +(of) 55182 0.00 -1 s +( the ) 59838 -102.00 32 s +5 sf +(window) 68619 0.00 -1 s +4 sf +(. The ) 74921 -102.00 32 s +2 sf +(:x) 77271 0.00 -1 s +4 sf +( and ) 82554 -102.00 32 s +2 sf +(:y) 84904 0.00 -1 s +4 sf +( coordinates are relative to the) 118483 -101.60 32 s +5 sf +( window) 127869 -101.00 32 s +4 sf +( origin, and specify) 149352 -101.67 32 s +52832.0 134812.0 m +(the) 56280 0.00 -1 s +( upper\036left corner of the rectangular area that is to be cleared. A ) 127266 -120.85 32 s +2 sf +(nil) 130403 0.00 -1 s +4 sf +( or zero value for) 149352 -120.50 32 s +52832.0 137973.0 m +2 sf +(:height) 61296 0.00 -1 s +4 sf +( or ) 64592 -233.00 32 s +2 sf +(:width) 72429 0.00 -1 s +4 sf +( clears the remaining area \(height - y or width - x\). If the ) 134609 -232.57 32 s +5 sf +(window) 143390 0.00 -1 s +4 sf +( has a) 149352 -232.50 32 s +52832.0 141134.0 m +(defined) 61294 0.00 -1 s +( background tile,) 80377 19.00 32 s +( the rectangle is tiled by using a plane\036mask of all ones and a) 149352 18.46 32 s +52832.0 144295.0 m +(function) 62236 0.00 -1 s +( of ) 65724 -137.00 32 s +2 sf +(:copy) 72307 0.00 -1 s +4 sf +(. If the ) 80046 -137.00 32 s +5 sf +(window) 88827 0.00 -1 s +4 sf +( has background) 107049 -137.00 32 s +( ) 107617 -138.00 32 s +2 sf +(:none) 114358 0.00 -1 s +4 sf +(, the contents of the ) 136558 -137.40 32 s +5 sf +(window) 145339 0.00 -1 s +4 sf +( are) 149352 -138.00 32 s +52832.0 147455.0 m +(not) 56438 0.00 -1 s +( changed. In either case, if ) 87983 190.00 32 s +2 sf +(:exposures\036p) 103345 0.00 -1 s +4 sf +( is non\036) 112191 190.00 32 s +2 sf +(nil) 115328 0.00 -1 s +4 sf +(, then one or more ) 137596 190.00 32 s +2 sf +(:exposure) 149352 0.00 -1 s +4 sf +52832.0 150616.0 m +(events) 60042 0.00 -1 s +( are generated for regions of the rectangle that are either visible or are being re\036) 149352 -16.67 32 s +52832.0 153777.0 m +(tained) 59728 0.00 -1 s +( in a backing store.) 80986 -34.75 32 s +52832.0 159377.0 m +(To) 55967 0.00 -1 s +( clear the) 66243 -33.00 32 s +( entire area in a specified ) 95034 -33.50 32 s +5 sf +(window) 103815 0.00 -1 s +4 sf +(, use \() 110567 -33.50 32 s +2 sf +(clear\036area) 122788 0.00 -1 s +4 sf +( ) 123460 -34.00 32 s +5 sf +(window) 132241 0.00 -1 s +4 sf +(\).) 133886 0.00 -1 s +5 sf +52832.0 165653.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +4 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +4 sf +(.) 78593 0.00 -1 s +2 sf +52832.0 170440.0 m +(:x) 55182 0.00 -1 s +4 sf +(,) 55888 0.00 -1 s +( ) 56378 -216.00 32 s +2 sf +(:y ) 59218 -216.00 32 s +4 sf +(\037 Upper\036left) 74280 -216.00 32 s +( corner of the area to be cleared. These coordinates are relative to the) 149352 -216.54 32 s +57912.0 173601.0 m +5 sf +(window) 66693 0.00 -1 s +4 sf +( origin. Type is) 83836 -34.00 32 s +( ) 84507 -35.00 32 s +2 sf +(int16) 90621 0.00 -1 s +4 sf +(.) 91327 0.00 -1 s +2 sf +52832.0 179877.0 m +(:width) 60669 0.00 -1 s +( ) 61155 -220.00 32 s +4 sf +(\037 The width of the area to clear or ) 99689 -220.00 32 s +2 sf +(nil) 102826 0.00 -1 s +4 sf +( to clear to the remaining width of the win\036) 149352 -220.56 32 s +57912.0 183038.0 m +(dow.) 63477 0.00 -1 s +( Type is ) 73171 -35.00 32 s +2 sf +(card16) 81479 0.00 -1 s +4 sf +( or) 84500 -35.00 32 s +( ) 85170 -36.00 32 s +2 sf +(null) 89876 0.00 -1 s +4 sf +(.) 90582 0.00 -1 s +2 sf +52832.0 189315.0 m +(:height) 61296 0.00 -1 s +( ) 61992 -10.00 32 s +4 sf +(\037) 64814 0.00 -1 s +( The height of the area to clear or ) 103038 -10.56 32 s +2 sf +(nil) 106175 0.00 -1 s +4 sf +( to clear to the remaining height of the) 149352 -10.50 32 s +57912.0 192476.0 m +(window.) 67709 0.00 -1 s +( Type is ) 77397 -37.00 32 s +2 sf +(card16) 85705 0.00 -1 s +4 sf +( or) 88724 -37.00 32 s +( ) 89392 -38.00 32 s +2 sf +(null) 94098 0.00 -1 s +4 sf +(.) 94804 0.00 -1 s +2 sf +52832.0 198752.0 m +(:exposures\036p) 68194 0.00 -1 s +( ) 68793 -107.00 32 s +4 sf +(\037 Specifies if ) 85479 -107.00 32 s +2 sf +(:exposure) 97235 0.00 -1 s +4 sf +( events should be generated for the affected ar\036) 149352 -106.50 32 s +57912.0 201913.0 m +(eas.) 62222 0.00 -1 s +( Type) 68657 -70.00 32 s +( ) 69292 -71.00 32 s +2 sf +(boolean) 78700 0.00 -1 s +4 sf +(.) 79406 0.00 -1 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Graphic Operations) 38563 -41.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(6\03670) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(copy\036area) 46455 0.00 -1 s +( ) 47116 -45.00 32 s +/timsps10i 5 declareFont +5 sf +(source gcontext source\036x source\036y width height) 100263 -45.00 32 s +( ) 100923 -46.00 32 s +2 sf +139373.0 h +/timsps10 4 declareFont +4 sf +(Function) 149407 0.00 -1 s +52832.0 25739.0 m +5 sf +(destination) 65374 0.00 -1 s +( destination\036x destination\036y) 96136 -59.00 32 s +4 sf +52832.0 30457.0 m +(Copies) 60671 0.00 -1 s +( the specified rectangular area from the ) 104273 -185.00 32 s +5 sf +(source) 111797 0.00 -1 s +4 sf +( ) 112318 -185.00 32 s +2 sf +(drawable) 123605 0.00 -1 s +4 sf +( to the specified rectan\036) 149352 -184.50 32 s +52832.0 33618.0 m +(gular) 58630 0.00 -1 s +( area of the ) 72538 147.00 32 s +5 sf +(destination) 85080 0.00 -1 s +4 sf +( ) 85933 147.00 32 s +2 sf +(drawable) 97220 0.00 -1 s +4 sf +(, combining them as specified) 131589 147.00 32 s +( in the supplied) 149352 146.33 32 s +52832.0 36779.0 m +(graphics) 62392 0.00 -1 s +( context \() 72444 -303.00 32 s +5 sf +(gcontext) 82004 0.00 -1 s +4 sf +(\). The ) 88843 -303.00 32 s +5 sf +(x) 90096 0.00 -1 s +4 sf +( and ) 94977 -303.00 32 s +5 sf +(y) 96230 0.00 -1 s +4 sf +( coordinates are relative to their respective draw\036) 149352 -302.57 32 s +52832.0 39940.0 m +(able) 57533 0.00 -1 s +( origin, with each pair specifying the upper) 105933 -27.00 32 s +( left corner of the area.) 131493 -27.60 32 s +52832.0 46217.0 m +(If) 54710 0.00 -1 s +( either regions of the ) 78474 -59.00 32 s +5 sf +(source) 85998 0.00 -1 s +4 sf +( area are obscured and have not been retained in backing) 149352 -59.00 32 s +52832.0 49378.0 m +(store,) 59023 0.00 -1 s +( or regions outside the boundaries of the ) 104172 -117.00 32 s +5 sf +(source) 111696 0.00 -1 s +4 sf +( ) 112285 -117.00 32 s +2 sf +(drawable) 123572 0.00 -1 s +4 sf +( are specified, those) 145633 -117.00 32 s +( re\036) 149352 -118.00 32 s +52832.0 52538.0 m +(gions) 58947 0.00 -1 s +( are) 62978 -120.00 32 s +( not copied. Instead, the following occurs on all corresponding ) 133094 -120.50 32 s +5 sf +(destination) 145636 0.00 -1 s +4 sf +( re\036) 149352 -121.00 32 s +52832.0 55699.0 m +(gions) 58947 0.00 -1 s +( that are either visible or are retained in backing store: ) 120400 -20.00 32 s +( ) 121085 -21.00 32 s +/symbb8 7 declareFont +7 sf +52832.0 62247.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(If) 59790 0.00 -1 s +( the ) 64394 -128.00 32 s +5 sf +(destination) 76936 0.00 -1 s +4 sf +( rectangle is a window with a) 109240 -128.00 32 s +( background other than ) 135529 -128.50 32 s +2 sf +(:none) 142270 0.00 -1 s +4 sf +(, these) 149352 -129.00 32 s +57912.0 65408.0 m +(corresponding) 74055 0.00 -1 s +( regions of the ) 90140 -211.00 32 s +5 sf +(destination) 102682 0.00 -1 s +4 sf +( are tiled, using plane\036mask of all ones and) 149352 -210.88 32 s +57912.0 68569.0 m +(function) 67316 0.00 -1 s +( of ) 71004 -37.00 32 s +2 sf +(boole\0361) 79782 0.00 -1 s +4 sf +( \(copy source\), with that background. ) 122507 -37.00 32 s +7 sf +52832.0 75116.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(If) 59790 0.00 -1 s +( the exposures attribute of the graphics context is ) 115488 -37.67 32 s +2 sf +(:on) 119407 0.00 -1 s +4 sf +(, then ) 126309 -37.50 32 s +2 sf +(:graphics\036exposure) 149352 0.00 -1 s +4 sf +57912.0 78277.0 m +(events) 65122 0.00 -1 s +( for all corresponding ) 89787 -103.00 32 s +5 sf +(destination) 102329 0.00 -1 s +4 sf +( regions are generated \(regardless of) 142792 -103.00 32 s +( tiling) 149352 -104.00 32 s +57912.0 81438.0 m +(or) 60262 0.00 -1 s +( whether the) 74160 -25.00 32 s +( ) 74840 -26.00 32 s +5 sf +(destination) 87382 0.00 -1 s +4 sf +( is a window or a pixmap\).) 117404 -25.50 32 s +7 sf +52832.0 87986.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(If) 59790 0.00 -1 s +( exposures is ) 74745 -110.00 32 s +2 sf +(:on) 78664 0.00 -1 s +4 sf +( but no regions are exposed, a ) 112223 -110.00 32 s +2 sf +(:no\036exposure) 127898 0.00 -1 s +4 sf +( event is generated.) 149352 -110.67 32 s +57912.0 91146.0 m +(Note) 63397 0.00 -1 s +( that by default, exposures is ) 97217 137.00 32 s +2 sf +(:on) 101136 0.00 -1 s +4 sf +( for new) 110812 137.00 32 s +( graphics contexts. See Section 5,) 149352 136.40 32 s +57912.0 94307.0 m +(Graphics) 68098 0.00 -1 s +( Contexts,) 79517 -27.00 32 s +( for further information.) 106545 -27.67 32 s +5 sf +52832.0 100584.0 m +(source) 60356 0.00 -1 s +( ) 61007 -55.00 32 s +4 sf +(\037 Source ) 72967 -55.00 32 s +2 sf +(drawable) 84254 0.00 -1 s +4 sf +(.) 84960 0.00 -1 s +5 sf +52832.0 105370.0 m +(gcontext) 62392 0.00 -1 s +( ) 63060 -38.00 32 s +4 sf +(\037 The graphics context to use during) 105469 -38.00 32 s +( the copy operation.) 127768 -38.67 32 s +5 sf +52832.0 110157.0 m +(source\036x) 62548 0.00 -1 s +4 sf +(,) 63254 0.00 -1 s +( ) 63817 -143.00 32 s +5 sf +(source\036y) 73533 0.00 -1 s +( ) 74095 -144.00 32 s +4 sf +(\037) 76917 0.00 -1 s +5 sf +( ) 77480 -143.00 32 s +4 sf +(The x and y coordinates of the upper\036left corner of the area in the) 149352 -143.54 32 s +57912.0 113318.0 m +5 sf +(source) 65436 0.00 -1 s +4 sf +( ) 66273 131.00 32 s +2 sf +(drawable) 77560 0.00 -1 s +4 sf +(. These coordinates are relative to the ) 121421 131.00 32 s +5 sf +(source) 128945 0.00 -1 s +4 sf +( ) 129782 131.00 32 s +2 sf +(drawable) 141069 0.00 -1 s +4 sf +( origin.) 149352 131.00 32 s +57912.0 116479.0 m +(Type) 63711 0.00 -1 s +( is) 66268 -31.00 32 s +( ) 66942 -32.00 32 s +2 sf +(int16) 73056 0.00 -1 s +4 sf +(.) 73762 0.00 -1 s +5 sf +52832.0 121265.0 m +(width) 59104 0.00 -1 s +4 sf +(,) 59810 0.00 -1 s +( ) 60376 -140.00 32 s +5 sf +(height ) 67996 -140.00 32 s +4 sf +(\037) 70818 0.00 -1 s +5 sf +( ) 71384 -140.00 32 s +4 sf +(The width and height of the area being copied. These apply to both the) 149352 -139.85 32 s +57912.0 124426.0 m +5 sf +(source) 65436 0.00 -1 s +4 sf +( and) 70175 -42.00 32 s +( ) 70838 -43.00 32 s +5 sf +(destination) 83380 0.00 -1 s +4 sf +( areas. Type is ) 100217 -42.50 32 s +2 sf +(card16) 108525 0.00 -1 s +4 sf +(.) 109231 0.00 -1 s +5 sf +52832.0 129213.0 m +(destination) 65374 0.00 -1 s +( ) 66032 -48.00 32 s +4 sf +(\037) 68854 0.00 -1 s +( The destination ) 87598 -48.67 32 s +2 sf +(drawable) 98885 0.00 -1 s +4 sf +(.) 99591 0.00 -1 s +5 sf +52832.0 133999.0 m +(destination\036x) 67566 0.00 -1 s +4 sf +(,) 68272 0.00 -1 s +( ) 69004 26.00 32 s +5 sf +(destination\036y ) 84470 26.00 32 s +4 sf +(\037) 87292 0.00 -1 s +5 sf +( ) 88024 26.00 32 s +4 sf +(The x and y coordinates) 115245 26.00 32 s +( of the upper left corner of the) 149352 25.43 32 s +57912.0 137160.0 m +(area) 62610 0.00 -1 s +( in the ) 70087 -94.67 32 s +5 sf +(destination) 82629 0.00 -1 s +4 sf +( ) 83241 -94.00 32 s +2 sf +(drawable) 94528 0.00 -1 s +4 sf +(. These coordinates are relative to the ) 136810 -94.57 32 s +5 sf +(destination) 149352 0.00 -1 s +4 sf +57912.0 140321.0 m +2 sf +(drawable) 69199 0.00 -1 s +4 sf +( origin. Type is ) 86991 -39.75 32 s +2 sf +(int16) 93105 0.00 -1 s +4 sf +(.) 93811 0.00 -1 s +2 sf +34544.0 145107.0 m +(copy\036plane) 47713 0.00 -1 s +( ) 48375 -44.00 32 s +5 sf +(source gcontext plane) 73053 -44.00 32 s +( source\036x source\036y width height ) 109118 -44.60 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 148268.0 m +5 sf +(destination) 65374 0.00 -1 s +( destination\036x destination\036y) 96136 -59.00 32 s +4 sf +52832.0 152987.0 m +(Uses) 58318 0.00 -1 s +( a single bit plane of) 81218 -13.00 32 s +( the specified rectangular area of the ) 122886 -13.57 32 s +5 sf +(source) 130410 0.00 -1 s +4 sf +( ) 131103 -13.00 32 s +2 sf +(drawable) 142390 0.00 -1 s +4 sf +( along) 149352 -14.00 32 s +52832.0 156148.0 m +(with) 57848 0.00 -1 s +( the specified graphics context \() 93288 -106.00 32 s +5 sf +(gcontext) 102848 0.00 -1 s +4 sf +(\)) 103787 0.00 -1 s +( to modify the specified rectangle area of) 149352 -106.57 32 s +52832.0 159309.0 m +(the) 56280 0.00 -1 s +( ) 56840 -146.00 32 s +5 sf +(destination) 69382 0.00 -1 s +4 sf +( ) 69942 -146.00 32 s +2 sf +(drawabl) 79976 0.00 -1 s +4 sf +(e. The drawables specified by the ) 117578 -146.00 32 s +5 sf +(source) 125102 0.00 -1 s +4 sf +( and ) 130297 -146.00 32 s +5 sf +(destination) 142839 0.00 -1 s +4 sf +( argu\036) 149352 -146.00 32 s +52832.0 162470.0 m +(ments) 59573 0.00 -1 s +( must have the same root) 87556 -31.00 32 s +( but need not have the same depth.) 126368 -31.57 32 s +52832.0 168746.0 m +(Effectively,) 66073 0.00 -1 s +( this operation forms a pixmap of the same depth as ) 124508 -53.00 32 s +5 sf +(destination) 137050 0.00 -1 s +4 sf +( and with) 147447 -53.00 32 s +( a) 149352 -54.00 32 s +52832.0 171907.0 m +(size) 57220 0.00 -1 s +( specified by the ) 76244 -64.00 32 s +5 sf +(source) 83768 0.00 -1 s +4 sf +( area. It then uses the foreground and background from the) 149352 -63.50 32 s +52832.0 175068.0 m +(graphics) 62392 0.00 -1 s +( context \(foreground where the bit\036plane in ) 112809 161.00 32 s +5 sf +(source) 120333 0.00 -1 s +4 sf +( contains a one bit,) 142219 161.00 32 s +( back\036) 149352 160.00 32 s +52832.0 178229.0 m +(ground) 60826 0.00 -1 s +( where the bit\036plane in ) 86337 -117.00 32 s +5 sf +(source) 93861 0.00 -1 s +4 sf +( contains a zero bit\), and the equivalent of a) 142181 -117.00 32 s +( ) 142769 -118.00 32 s +2 sf +(copy\036) 149352 0.00 -1 s +52832.0 181390.0 m +(area) 58160 0.00 -1 s +4 sf +( operation is performed with all the same exposure semantics. This can also be) 149352 190.31 32 s +52832.0 184551.0 m +(thought) 61455 0.00 -1 s +( of as using the specified) 89425 -2.00 32 s +( region of the ) 105246 -2.50 32 s +5 sf +(source) 112770 0.00 -1 s +4 sf +( bit\036plane as a stipple with a fill\036) 149352 -2.57 32 s +52832.0 187712.0 m +(style) 58162 0.00 -1 s +( of ) 61874 -25.00 32 s +2 sf +(:opaque\036stippled) 82099 0.00 -1 s +4 sf +( for filling a rectangular area of the ) 122174 -24.88 32 s +5 sf +(destination) 134716 0.00 -1 s +4 sf +(.) 135422 0.00 -1 s +5 sf +52832.0 193988.0 m +(source) 60356 0.00 -1 s +( ) 61017 -45.00 32 s +4 sf +(\037) 63839 0.00 -1 s +( The source ) 77573 -45.67 32 s +2 sf +(drawable) 88860 0.00 -1 s +4 sf +(.) 89566 0.00 -1 s +5 sf +52832.0 198775.0 m +(gcontext) 62392 0.00 -1 s +( ) 63060 -38.00 32 s +4 sf +(\037 The graphics context to use during) 105469 -38.00 32 s +( the copy operation.) 127768 -38.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +130770.0 7925.0 m +(Graphic Operations) 149013 -41.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(6\03671) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 5 declareFont +5 sf +52832.0 22578.0 m +(plane) 59102 0.00 -1 s +( ) 59861 53.00 32 s +/timsps10 4 declareFont +4 sf +(\037 Specifies the bit\036plane of the ) 96857 53.00 32 s +5 sf +(source) 104381 0.00 -1 s +4 sf +( ) 105140 53.00 32 s +2 sf +(drawable) 116427 0.00 -1 s +4 sf +(. Exactly one bit) 135084 53.00 32 s +( must be set.) 149352 52.33 32 s +57912.0 25739.0 m +(Type) 63711 0.00 -1 s +( is ) 66939 -33.00 32 s +2 sf +(pixel) 72740 0.00 -1 s +4 sf +(.) 73446 0.00 -1 s +5 sf +52832.0 30525.0 m +(source\036x) 62548 0.00 -1 s +4 sf +(,) 63254 0.00 -1 s +( ) 63836 -124.00 32 s +5 sf +(source\036y) 73552 0.00 -1 s +2 sf +( ) 74134 -124.00 32 s +4 sf +(\037 The ) 82508 -124.00 32 s +5 sf +(x) 83761 0.00 -1 s +4 sf +( and ) 89000 -124.00 32 s +5 sf +(y) 90253 0.00 -1 s +4 sf +( coordinates of the upper\036left corner of the area in the) 149352 -123.60 32 s +57912.0 33686.0 m +5 sf +(source) 65436 0.00 -1 s +4 sf +( ) 66273 131.00 32 s +2 sf +(drawable) 77560 0.00 -1 s +4 sf +(. These coordinates are relative to the ) 121421 131.00 32 s +5 sf +(source) 128945 0.00 -1 s +4 sf +( ) 129782 131.00 32 s +2 sf +(drawable) 141069 0.00 -1 s +4 sf +( origin.) 149352 131.00 32 s +57912.0 36847.0 m +(Type) 63711 0.00 -1 s +( is) 66268 -31.00 32 s +( ) 66942 -32.00 32 s +2 sf +(int16) 73056 0.00 -1 s +4 sf +(.) 73762 0.00 -1 s +5 sf +52832.0 41633.0 m +(width) 59104 0.00 -1 s +4 sf +(,) 59810 0.00 -1 s +( ) 60376 -140.00 32 s +5 sf +(height) 67430 0.00 -1 s +2 sf +( ) 67996 -140.00 32 s +4 sf +(\037 The width and height of the area being copied. These apply to both the) 149352 -139.86 32 s +57912.0 44794.0 m +5 sf +(source) 65436 0.00 -1 s +4 sf +( and) 70175 -42.00 32 s +( ) 70838 -43.00 32 s +5 sf +(destination) 83380 0.00 -1 s +4 sf +( areas. Type is ) 100217 -42.50 32 s +2 sf +(card16) 108525 0.00 -1 s +4 sf +(.) 109231 0.00 -1 s +5 sf +52832.0 49581.0 m +(destination) 65374 0.00 -1 s +( ) 66032 -48.00 32 s +4 sf +(\037) 68854 0.00 -1 s +( The destination ) 87598 -48.67 32 s +2 sf +(drawable) 98885 0.00 -1 s +4 sf +(.) 99591 0.00 -1 s +5 sf +52832.0 54367.0 m +(destination\036x) 67566 0.00 -1 s +4 sf +(,) 68272 0.00 -1 s +( ) 68988 10.00 32 s +5 sf +(destination\036y ) 84438 10.00 32 s +4 sf +(\037 The x and y coordinates of) 118199 10.00 32 s +( the upper\036left corner of the) 149352 9.40 32 s +57912.0 57528.0 m +(destination) 70296 0.00 -1 s +( area in the ) 83141 -80.00 32 s +5 sf +(destination) 95683 0.00 -1 s +4 sf +( ) 96309 -80.00 32 s +2 sf +(drawable) 107596 0.00 -1 s +4 sf +(. These coordinates are) 133372 -80.00 32 s +( relative to the) 149352 -80.67 32 s +57912.0 60689.0 m +5 sf +(destination) 70454 0.00 -1 s +4 sf +( ) 71120 -40.00 32 s +2 sf +(drawable) 82407 0.00 -1 s +4 sf +( origin. Type is ) 100199 -39.75 32 s +2 sf +(int16) 106313 0.00 -1 s +4 sf +(.) 107019 0.00 -1 s +20320.0 66198.0 m +0.0 0.0 m +newpath +20455 64574 av +148878 64572 as +[] 0 setdash +dp +149352.0 66198.0 m +/timsps12b 6 declareFont +6 sf +20320.0 69585.0 m +(Drawing) 32923 0.00 -1 s +( Points) 42807 7.00 32 s +52832.0 h +2 sf +(6.3) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( ) 63700 51.00 32 s +2 sf +(draw\036point) 77181 0.00 -1 s +4 sf +( and ) 82770 51.00 32 s +2 sf +(draw\036points) 97349 0.00 -1 s +4 sf +( functions make use of) 123103 51.00 32 s +( the following graphics) 149352 50.33 32 s +52832.0 72746.0 m +(context) 61139 0.00 -1 s +( components:) 76980 713.00 32 s +( function, plane\036mask, foreground, subwindow\036mode, clip\036x,) 149352 712.40 32 s +52832.0 75906.0 m +(clip\036y,) 60120 0.00 -1 s +( clip\036ordering, clip\036region and clip\036mask.) 106529 -35.00 32 s +( ) 107199 -36.00 32 s +52832.0 82183.0 m +(The) 57220 0.00 -1 s +( ) 58115 189.00 32 s +2 sf +(draw\036point) 71596 0.00 -1 s +4 sf +( function uses the foreground pixel and function components of the) 149352 189.00 32 s +52832.0 85344.0 m +(graphics) 62392 0.00 -1 s +( context to draw a single point into the specified drawable, while ) 134773 -114.00 32 s +2 sf +(draw\036points) 149352 0.00 -1 s +4 sf +52832.0 88505.0 m +(draws) 59570 0.00 -1 s +( multiple points into the specified drawable. These functions are not affected) 145847 -22.00 32 s +( by) 149352 -23.00 32 s +52832.0 91666.0 m +(the tile or stipple in) 74687 -23.00 32 s +( the graphics context.) 98755 -23.67 32 s +2 sf +34544.0 97942.0 m +(draw\036point) 48025 0.00 -1 s +( ) 48682 -49.00 32 s +5 sf +(drawable) 59343 0.00 -1 s +( gcontext x y) 73378 -49.67 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 102661.0 m +(Combines) 64277 0.00 -1 s +( the foreground pixel in the ) 95076 -117.83 32 s +5 sf +(gcontext) 104636 0.00 -1 s +4 sf +( with the pixel in the ) 127917 -117.50 32 s +5 sf +(drawable) 138578 0.00 -1 s +4 sf +( specified) 149352 -118.00 32 s +52832.0 105822.0 m +(by) 55654 0.00 -1 s +( the ) 60442 -36.00 32 s +5 sf +(x) 61695 0.00 -1 s +4 sf +( and ) 67111 -35.50 32 s +5 sf +(y) 68364 0.00 -1 s +4 sf +( coordinates.) 82748 -36.00 32 s +5 sf +52832.0 112099.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 116885.0 m +(gcontext) 62392 0.00 -1 s +( ) 63063 -35.00 32 s +4 sf +(\037 The graphics context for drawing the point.) 115327 -35.00 32 s +5 sf +52832.0 121672.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55470 -27.00 32 s +5 sf +(y ) 57402 -27.00 32 s +4 sf +(\037 The ) 65970 -27.00 32 s +5 sf +(x) 67223 0.00 -1 s +4 sf +( and ) 72656 -27.00 32 s +5 sf +(y) 73909 0.00 -1 s +4 sf +( coordinates of the point drawn. Type is ) 119390 -26.50 32 s +2 sf +(int16) 125504 0.00 -1 s +4 sf +(.) 126210 0.00 -1 s +2 sf +34544.0 126458.0 m +(draw\036points) 49123 0.00 -1 s +( ) 49779 -50.00 32 s +5 sf +(drawable gcontext points ) 78869 -49.33 32 s +4 sf +(&optional) 90313 0.00 -1 s +5 sf +( relative\036p) 101939 -50.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 131177.0 m +(Combines) 64277 0.00 -1 s +( the foreground pixels in the graphics context with the pixels at each point in) 149352 -103.71 32 s +52832.0 134338.0 m +(the) 56280 0.00 -1 s +( ) 56958 -28.00 32 s +5 sf +(drawable) 67619 0.00 -1 s +4 sf +(. The points are drawn in the order listed.) 113950 -27.75 32 s +2 sf +52832.0 140614.0 m +(draw\036points) 67411 0.00 -1 s +4 sf +( requires a mode argument, ) 98045 -174.00 32 s +5 sf +(relative\036p) 109015 0.00 -1 s +4 sf +( that indicates whether the points are) 149352 -173.67 32 s +52832.0 143775.0 m +(relative) 61293 0.00 -1 s +( to the destination origin or to the previous point. In either case, the first point is) 149352 -139.63 32 s +52832.0 146936.0 m +(always) 60668 0.00 -1 s +( relative to the destination origin. The rest of the points are relative either to the) 149352 -64.80 32 s +52832.0 150097.0 m +5 sf +(drawable) 63493 0.00 -1 s +4 sf +('s) 65530 0.00 -1 s +( origin or to the previous point, depending) 112962 -32.00 32 s +( on the value of ) 131061 -32.60 32 s +5 sf +(relative\036p) 142031 0.00 -1 s +4 sf +(.) 142737 0.00 -1 s +5 sf +52832.0 156374.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 161160.0 m +(gcontext) 62392 0.00 -1 s +( ) 63064 -34.00 32 s +4 sf +(\037 The graphics context for drawing the points.) 116434 -33.86 32 s +5 sf +52832.0 165947.0 m +(points) 59731 0.00 -1 s +( ) 60221 -216.00 32 s +4 sf +(\037 A list of points to be drawn in the order listed. The first point is always relative) 149352 -215.71 32 s +57912.0 169108.0 m +(to the ) 64536 -215.50 32 s +5 sf +(drawable) 75197 0.00 -1 s +4 sf +('s origin; if ) 87952 -215.67 32 s +5 sf +(relative\036p) 98922 0.00 -1 s +4 sf +(, the rest of the points are drawn relative to the) 149352 -215.50 32 s +57912.0 172268.0 m +(previous) 67630 0.00 -1 s +( point, else they are drawn relative to the ) 112367 -219.00 32 s +5 sf +(drawable) 123028 0.00 -1 s +4 sf +('s origin. Type is ) 142141 -218.75 32 s +2 sf +(point\036) 149352 0.00 -1 s +57912.0 175429.0 m +(seq) 61832 0.00 -1 s +4 sf +(.) 62538 0.00 -1 s +5 sf +52832.0 180216.0 m +(relative\036p) 63802 0.00 -1 s +( ) 64247 -261.00 32 s +4 sf +(\037 Specifies) 77858 -261.00 32 s +( the coordinate mode used for drawing the pixels either relative to) 149352 -261.55 32 s +57912.0 183377.0 m +(the) 61360 0.00 -1 s +( origin) 68773 -33.00 32 s +( or to the previous point. Type ) 103497 -33.57 32 s +2 sf +(boolean) 112905 0.00 -1 s +4 sf +(.) 113611 0.00 -1 s +20320.0 188886.0 m +0.0 0.0 m +newpath +20455 187262 av +148878 187260 as +[] 0 setdash +dp +149352.0 188886.0 m +6 sf +20320.0 192272.0 m +(Drawing) 32923 0.00 -1 s +( Lines) 41679 6.00 32 s +52832.0 h +2 sf +(6.4) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( ) 64163 514.00 32 s +2 sf +(draw\036line) 75762 0.00 -1 s +4 sf +(, ) 77688 514.00 32 s +2 sf +(draw\036lines) 90385 0.00 -1 s +4 sf +(, and ) 97606 514.00 32 s +2 sf +(draw\036segments) 115786 0.00 -1 s +4 sf +( functions use the following) 149352 514.50 32 s +52832.0 195433.0 m +(graphics) 62392 0.00 -1 s +( context components: background, cap\036style, clip\036x\036origin, clip\036y\036origin,) 143581 -105.00 32 s +( clip\036) 149352 -106.00 32 s +52832.0 198594.0 m +(mask,) 59495 0.00 -1 s +( dash\036list, dash\036offset, fill\036style, foreground,) 110349 253.00 32 s +( function, plane\036mask, line\036width,) 149352 252.33 32 s +52832.0 201755.0 m +(line\036style,) 64039 0.00 -1 s +( stipple, subwindow\036mode, tile, ts\036x\036origin, and) 117589 -28.00 32 s +( ts\036y\036origin.) 130883 -29.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Graphic Operations) 38563 -41.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(6\03672) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( ) 57891 -35.00 32 s +2 sf +(draw\036lines ) 71259 -35.00 32 s +4 sf +(function also uses the join\036style graphics context component. ) 140660 -34.63 32 s +2 sf +34544.0 28854.0 m +(draw\036line) 46143 0.00 -1 s +( ) 46806 -43.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable gcontext x1 y1 x2 y2 ) 81661 -43.00 32 s +4 sf +(&optional) 93105 0.00 -1 s +5 sf +( relative\036p) 104738 -43.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 33573.0 m +(Draws) 60196 0.00 -1 s +( a line from the point ) 84932 47.00 32 s +5 sf +(x1) 87596 0.00 -1 s +4 sf +(,) 88302 0.00 -1 s +5 sf +(y1) 90966 0.00 -1 s +4 sf +( to the point) 104669 47.00 32 s +( ) 105421 46.00 32 s +5 sf +(x2) 108085 0.00 -1 s +4 sf +(,) 108791 0.00 -1 s +5 sf +(y2) 111455 0.00 -1 s +4 sf +(. When ) 120405 46.50 32 s +5 sf +(relative\036p) 131375 0.00 -1 s +4 sf +( is true, the first) 149352 46.50 32 s +52832.0 36734.0 m +(point) 58633 0.00 -1 s +( is) 61008 -213.00 32 s +( relative to the destination origin but the second point is relative to the first point.) 149352 -213.53 32 s +52832.0 39895.0 m +(When) 59571 0.00 -1 s +( ) 60254 -23.00 32 s +5 sf +(relative\036p) 71224 0.00 -1 s +4 sf +( is ) 74472 -23.00 32 s +2 sf +(nil) 77609 0.00 -1 s +4 sf +(, both points are relative to the destination) 124945 -23.00 32 s +( origin.) 133073 -24.00 32 s +5 sf +52832.0 46172.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 50958.0 m +(gcontext) 62392 0.00 -1 s +( ) 63064 -34.00 32 s +4 sf +(\037 The graphics context for drawing the line.) 113769 -33.57 32 s +5 sf +52832.0 55745.0 m +(x1) 55496 0.00 -1 s +4 sf +(,) 56202 0.00 -1 s +( ) 56882 -26.00 32 s +5 sf +(y1) 59546 0.00 -1 s +4 sf +(, ) 60932 -26.00 32 s +5 sf +(x2) 63596 0.00 -1 s +4 sf +(, ) 64982 -26.00 32 s +5 sf +(y2 ) 68326 -26.00 32 s +4 sf +(\037 The end points of the line. ) 102006 -26.00 32 s +5 sf +52832.0 60531.0 m +(relative\036p) 63802 0.00 -1 s +( ) 64440 -68.00 32 s +4 sf +(\037 Specifies) 78244 -68.00 32 s +( the coordinate mode used for drawing the line either relative to) 149352 -68.55 32 s +57912.0 63692.0 m +(the) 61360 0.00 -1 s +( origin or the previous point. In either case, the first) 118562 -95.00 32 s +( point is always drawn rela\036) 149352 -95.60 32 s +57912.0 66853.0 m +(tive) 62144 0.00 -1 s +( to the ) 69827 -26.00 32 s +5 sf +(drawable) 80488 0.00 -1 s +4 sf +('s) 82525 0.00 -1 s +( origin.) 90650 -27.00 32 s +2 sf +34544.0 71639.0 m +(draw\036lines) 47241 0.00 -1 s +( ) 47915 -32.00 32 s +5 sf +(drawable gcontext points ) 77059 -31.33 32 s +4 sf +(&key) 83329 0.00 -1 s +2 sf +( :relative\036p :fill\036p) 103951 -31.50 32 s +4 sf +( ) 104625 -32.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 74800.0 m +(\() 53771 0.00 -1 s +2 sf +(:shape) 61610 0.00 -1 s +( :complex) 73229 -57.00 32 s +4 sf +(\)) 74168 0.00 -1 s +52832.0 79519.0 m +(Draws) 60196 0.00 -1 s +( a line between each pair of ) 92303 53.00 32 s +5 sf +(points) 99202 0.00 -1 s +4 sf +( in the points list. The lines are drawn in the) 149352 53.50 32 s +52832.0 82680.0 m +(order) 58785 0.00 -1 s +( listed and join correctly at all intermediate points. The join\036style graphics context) 149352 -166.00 32 s +52832.0 85841.0 m +(component) 65372 0.00 -1 s +( defines the type of) 86846 -39.00 32 s +( joint to use. When the first and last points coincide, the) 149352 -39.55 32 s +52832.0 89002.0 m +(first) 57376 0.00 -1 s +( and last lines also join correctly to produce a hollow polygon.) 127497 -23.91 32 s +52832.0 95278.0 m +(When) 59571 0.00 -1 s +( ) 60230 -47.00 32 s +2 sf +(:relative\036p) 72765 0.00 -1 s +4 sf +( is true,) 81058 -47.00 32 s +( the first point is always relative to the destination origin, but) 149352 -47.55 32 s +52832.0 98439.0 m +(the) 56280 0.00 -1 s +( rest are relative to the previous point. When ) 106495 -80.67 32 s +2 sf +(:relative\036p) 119030 0.00 -1 s +4 sf +( is ) 122163 -80.50 32 s +2 sf +(nil) 125300 0.00 -1 s +4 sf +(, the rest of the points) 149352 -80.60 32 s +52832.0 101600.0 m +(are) 56277 0.00 -1 s +( drawn relative to the destination) 93206 -28.00 32 s +( origin.) 101329 -29.00 32 s +52832.0 107877.0 m +(When) 59571 0.00 -1 s +( ) 60081 -196.00 32 s +2 sf +(:fill\036p) 66819 0.00 -1 s +4 sf +( is true, the polygon defined by the) 104794 -196.00 32 s +( ) 105303 -197.00 32 s +5 sf +(points) 112202 0.00 -1 s +4 sf +( list is filled. The ) 131131 -196.40 32 s +2 sf +(:shape) 138970 0.00 -1 s +4 sf +( keyword) 149352 -197.00 32 s +52832.0 111038.0 m +(provides) 62550 0.00 -1 s +( the server with a hint about how to fill the polygon. ) 119605 -203.00 32 s +2 sf +(:shape) 127444 0.00 -1 s +4 sf +( can be either) 141958 -203.00 32 s +( ) 142460 -204.00 32 s +2 sf +(:com\036) 149352 0.00 -1 s +52832.0 114198.0 m +(plex) 57849 0.00 -1 s +4 sf +( \(by default\), ) 73082 -42.00 32 s +2 sf +(:convex) 82329 0.00 -1 s +4 sf +(, or ) 86714 -41.50 32 s +2 sf +(:non\036convex) 101449 0.00 -1 s +4 sf +(. ) 102819 -42.00 32 s +52832.0 120475.0 m +(The) 57220 0.00 -1 s +( ) 57737 -189.00 32 s +2 sf +(:convex) 66984 0.00 -1 s +4 sf +( operand is the simplest type of area and the fastest to fill. A fill area is con\036) 149352 -189.00 32 s +52832.0 123636.0 m +(vex) 56907 0.00 -1 s +( if every straight line connecting any two interior points is entirely inside the area.) 149352 -8.00 32 s +52832.0 126797.0 m +(For) 56751 0.00 -1 s +( example, triangles and rectangles are convex polygons.) 119504 -47.86 32 s +52832.0 133073.0 m +(The) 57220 0.00 -1 s +( ) 57767 -159.00 32 s +2 sf +(:non\036convex) 72502 0.00 -1 s +4 sf +( operand is for filling an area that is not convex and is also not self\036in\036) 149352 -159.00 32 s +52832.0 136234.0 m +(tersecting.) 64508 0.00 -1 s +( Filling this type of area is harder than filling a convex area, but easier than) 149352 3.13 32 s +52832.0 139395.0 m +(filling) 59729 0.00 -1 s +( one that is self\036intersecting. For example, the shape of the letter \177T" is non\036con\036) 149352 -91.86 32 s +52832.0 142556.0 m +(vex) 56907 0.00 -1 s +( and) 61632 -56.00 32 s +( non\036self\036intersecting.) 86337 -57.00 32 s +52832.0 148833.0 m +(The) 57220 0.00 -1 s +( ) 57705 -221.00 32 s +2 sf +(:complex) 68675 0.00 -1 s +4 sf +( operand is the most general \(and therefore the hardest\) type of fill area. A) 149352 -220.79 32 s +52832.0 151994.0 m +(complex) 62550 0.00 -1 s +( fill area can be non\036convex and self\036intersecting. For example, draw the outline) 149352 -302.67 32 s +52832.0 155154.0 m +(of) 55182 0.00 -1 s +( a bow tie, without lifting your pencil or tracing over an edge twice. This shape is non\036) 149352 -209.59 32 s +52832.0 158315.0 m +(convex) 60982 0.00 -1 s +( and intersects itself at the knot in the middle. ) 112866 -23.90 32 s +52832.0 167640.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 166815 av +149352 166815 as +149352 166933 as +52832 166933 as +closepath +fp +/drawmode PL_SET def +52832.0 170801.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62240 -233.00 32 s +4 sf +(Unless you are sure that a shape is ) 99879 -232.75 32 s +2 sf +(:convex) 109126 0.00 -1 s +4 sf +( or ) 112423 -232.50 32 s +2 sf +(:non\036convex) 127158 0.00 -1 s +4 sf +(, it should always be) 149352 -232.50 32 s +52832.0 173962.0 m +(drawn) 59883 0.00 -1 s +( as a ) 66265 220.00 32 s +2 sf +(:complex) 77235 0.00 -1 s +4 sf +( shape. If ) 89023 220.00 32 s +2 sf +(:convex) 98270 0.00 -1 s +4 sf +( or) 101546 220.00 32 s +( ) 102471 219.00 32 s +2 sf +(:non\036convex) 117206 0.00 -1 s +4 sf +( is specified incorrectly, the) 149352 219.50 32 s +52832.0 177123.0 m +(graphics) 62392 0.00 -1 s +( result is) 71891 -32.00 32 s +( undefined.) 84554 -33.00 32 s +52832.0 180284.0 m +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 179459 av +149352 179459 as +149352 179577 as +52832 179577 as +closepath +fp +/drawmode PL_SET def +5 sf +52832.0 186492.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 191279.0 m +(gcontext) 62392 0.00 -1 s +( ) 63066 -32.00 32 s +4 sf +(\037) 65888 0.00 -1 s +( The graphics context for drawing the lines.) 114876 -32.57 32 s +5 sf +52832.0 196065.0 m +(points) 59731 0.00 -1 s +( ) 60421 -16.00 32 s +4 sf +(\037 A list) 70110 -16.00 32 s +( of points that define the lines. Type is ) 114012 -16.56 32 s +2 sf +(point\036seq) 125143 0.00 -1 s +4 sf +(.) 125849 0.00 -1 s +2 sf +52832.0 200852.0 m +(:relative\036p) 65367 0.00 -1 s +( ) 66043 -30.00 32 s +4 sf +(\037 The coordinate mode of the points. ) 109570 -29.71 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +130770.0 7925.0 m +(Graphic Operations) 149013 -41.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(6\03673) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:fill\036p) 59570 0.00 -1 s +( ) 60256 -20.00 32 s +/timsps10 4 declareFont +4 sf +(\037) 63078 0.00 -1 s +( When true, a filled polygon is drawn instead of a polyline.) 129393 -20.55 32 s +2 sf +52832.0 28854.0 m +(:shape) 60671 0.00 -1 s +( ) 61573 196.00 32 s +4 sf +(\037 A hint that allows the server to use the most efficient area fill algorithm.) 149352 196.14 32 s +57912.0 32015.0 m +(Either) 64807 0.00 -1 s +( ) 65454 -59.00 32 s +2 sf +(:convex) 74701 0.00 -1 s +4 sf +(,) 75407 0.00 -1 s +2 sf +( :non\036convex) 90789 -59.00 32 s +4 sf +(, or ) 95139 -59.00 32 s +2 sf +(:complex) 106109 0.00 -1 s +4 sf +(.) 106815 0.00 -1 s +2 sf +34544.0 38292.0 m +(draw\036segments) 52724 0.00 -1 s +( ) 53364 -66.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable gcontext) 74225 -66.00 32 s +( segments) 85209 -67.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 43011.0 m +(Draws) 60196 0.00 -1 s +( multiple lines,) 76584 -233.00 32 s +( not necessarily connected. ) 106763 -233.50 32 s +5 sf +(segments) 117108 0.00 -1 s +4 sf +( is a sequence of the form {x1) 149352 -233.57 32 s +52832.0 46172.0 m +(y1) 55654 0.00 -1 s +( x2 y2}*, in which each subsequence specifies the end points of a line segment. Line) 149352 -129.67 32 s +52832.0 49332.0 m +(segments) 63335 0.00 -1 s +( are drawn in the order given by ) 100646 59.88 32 s +5 sf +(segments) 110991 0.00 -1 s +4 sf +(. Unlike ) 120926 68.50 32 s +2 sf +(draw\036lines) 133623 0.00 -1 s +4 sf +(, no joining is) 149352 68.33 32 s +52832.0 52493.0 m +(performed) 64583 0.00 -1 s +( at coincident) 79671 -58.00 32 s +( end points.) 92704 -29.50 32 s +5 sf +52832.0 58770.0 m +(drawable) 63493 0.00 -1 s +( ) 64161 -38.00 32 s +4 sf +(\037 The destination ) 85760 -37.67 32 s +2 sf +(drawable) 97047 0.00 -1 s +4 sf +( to receive the line segments.) 129619 -37.60 32 s +5 sf +52832.0 63556.0 m +(gcontext) 62392 0.00 -1 s +( ) 63067 -31.00 32 s +4 sf +(\037 Specifies the graphics context for drawing the lines.) 124968 -30.88 32 s +5 sf +52832.0 68343.0 m +(segments) 63177 0.00 -1 s +( ) 63864 -19.00 32 s +4 sf +(\037 The points list for the segments to draw. Type is ) 122442 -19.00 32 s +2 sf +(seq) 126362 0.00 -1 s +4 sf +(.) 127068 0.00 -1 s +20320.0 73852.0 m +0.0 0.0 m +newpath +20455 72228 av +148878 72226 as +[] 0 setdash +dp +149352.0 73852.0 m +/timsps12b 6 declareFont +6 sf +20320.0 77239.0 m +(Drawing) 32923 0.00 -1 s +( ) 33776 6.00 32 s +52832.0 h +2 sf +(6.5) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( ) 65548 1899.00 32 s +2 sf +(draw\036rectangle) 83883 0.00 -1 s +4 sf +( and ) 93168 1899.00 32 s +2 sf +(draw\036rectangles ) 115206 1899.00 32 s +4 sf +(functions draw hollow or) 149352 1899.33 32 s +2 sf +6 sf +20320.0 80625.0 m +(Rectangles) 35928 0.00 -1 s +52832.0 h +4 sf +(filled) 58787 0.00 -1 s +( outlines of the specified) 86887 89.00 32 s +( rectangle or rectangles as if a five\036point polyline were) 149352 88.44 32 s +52832.0 83786.0 m +(specified) 63018 0.00 -1 s +( for each rectangle, as follows:) 97513 -28.00 32 s +52832.0 90063.0 m +([x,y,] [x+width,y] [x+width,y+height] [x,y+height] [x,y] ) 117292 -27.20 32 s +2 sf +52832.0 96339.0 m +(draw\036rectangle) 71167 0.00 -1 s +4 sf +( and ) 76294 -180.00 32 s +2 sf +(draw\036rectangles) 95727 0.00 -1 s +4 sf +( use the following) 115487 -180.00 32 s +( graphics context components:) 149352 -180.67 32 s +52832.0 99500.0 m +(background,) 66860 0.00 -1 s +( function, plane\036mask, foreground, subwindow\036mode, cap\036style, clip\036x,) 149352 347.33 32 s +52832.0 102661.0 m +(clip\036y,) 60120 0.00 -1 s +( clip\036ordering, clip\036region and clip\036mask, dash\036list, dash\036offset, fill\036style, join\036) 149352 94.25 32 s +52832.0 105822.0 m +(style,) 58868 0.00 -1 s +( line\036width, line\036style, stipple, tile, ts\036x\036origin, and ts\036y\036origin.) 129055 -16.71 32 s +2 sf +34544.0 112099.0 m +(draw\036rectangle) 52879 0.00 -1 s +( ) 53543 -42.00 32 s +5 sf +(drawable gcontext x y width height ) 93580 -42.00 32 s +4 sf +(&optional) 105024 0.00 -1 s +5 sf +( fill\036p) 111173 -43.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 116817.0 m +(Draws) 60196 0.00 -1 s +( a rectangle defined by the ) 90554 -34.00 32 s +5 sf +(x) 91807 0.00 -1 s +4 sf +(, ) 93185 -34.00 32 s +5 sf +(y) 94438 0.00 -1 s +4 sf +(, ) 95816 -34.00 32 s +5 sf +(width) 102088 0.00 -1 s +4 sf +(, and ) 108213 -34.00 32 s +5 sf +(height) 115267 0.00 -1 s +4 sf +( arguments.) 128400 -34.00 32 s +5 sf +52832.0 123094.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 127881.0 m +(gcontext) 62392 0.00 -1 s +( ) 63060 -38.00 32 s +4 sf +(\037 The graphics context for drawing the rectangle.) 119843 -38.00 32 s +5 sf +52832.0 132667.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55546 49.00 32 s +5 sf +(y ) 57554 49.00 32 s +4 sf +(\037 The x and y coordinates that define the upper left corner of the rectangle. The) 149352 49.20 32 s +57912.0 135828.0 m +(coordinates) 70920 0.00 -1 s +( are relative to the destination origin. Type is ) 122077 -28.56 32 s +2 sf +(int16) 128191 0.00 -1 s +4 sf +(.) 128897 0.00 -1 s +5 sf +52832.0 140614.0 m +(width) 59104 0.00 -1 s +4 sf +(,) 59810 0.00 -1 s +( ) 60446 -70.00 32 s +5 sf +(height ) 68136 -70.00 32 s +4 sf +(\037 Specifies the width and height that define the outline of the rectangle.) 149352 -70.00 32 s +57912.0 143775.0 m +(Type) 63711 0.00 -1 s +( is) 66243 -56.00 32 s +( ) 66892 -57.00 32 s +2 sf +(card16) 75200 0.00 -1 s +4 sf +(.) 75906 0.00 -1 s +5 sf +52832.0 148562.0 m +(fill\036p) 58318 0.00 -1 s +( ) 58999 -25.00 32 s +4 sf +(\037 Specifies whether the rectangle is) 100329 -25.00 32 s +( filled or not. Type ) 122147 -25.60 32 s +2 sf +(boolean) 131555 0.00 -1 s +4 sf +(.) 132261 0.00 -1 s +2 sf +34544.0 153348.0 m +(draw\036rectangles) 53977 0.00 -1 s +( ) 54628 -55.00 32 s +5 sf +(drawable gcontext rectangles ) 88558 -55.00 32 s +4 sf +(&optional) 100002 0.00 -1 s +5 sf +( fill\036p) 106138 -56.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 158067.0 m +(Draws) 60196 0.00 -1 s +( the rectangles in) 78736 -220.00 32 s +( the order listed in) 98388 -220.50 32 s +5 sf +( rectangles) 110629 -221.00 32 s +4 sf +(. For the specified ) 130830 -220.50 32 s +5 sf +(rectangle) 141488 0.00 -1 s +4 sf +( or ) 144809 -220.50 32 s +5 sf +(rec\036) 149352 0.00 -1 s +52832.0 161228.0 m +(tangles) 60984 0.00 -1 s +4 sf +(,) 61690 0.00 -1 s +( no pixel is drawn more than once. The x and y coordinates of each rectangle are) 149352 -207.63 32 s +52832.0 164389.0 m +(relative) 61293 0.00 -1 s +( to the destination origin and define the upper left corner of the rectangle. If rec\036) 149352 -158.00 32 s +52832.0 167550.0 m +(tangles) 60826 0.00 -1 s +( intersect, the intersecting pixels are drawn multiple times.) 126616 -24.88 32 s +5 sf +52832.0 173826.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 178613.0 m +(gcontext) 62392 0.00 -1 s +( ) 63050 -48.00 32 s +4 sf +(\037 The graphics context.) 90808 -47.67 32 s +5 sf +52832.0 183399.0 m +(rectangles) 64588 0.00 -1 s +( ) 65089 -205.00 32 s +4 sf +(\037 A list specifying the upper left corner x and y, width and height of the rec\036) 149352 -204.81 32 s +57912.0 186560.0 m +(tangles.) 66612 0.00 -1 s +( Type is ) 76300 -37.00 32 s +2 sf +(rect\036seq) 85857 0.00 -1 s +4 sf +(.) 86563 0.00 -1 s +5 sf +52832.0 191347.0 m +(fill\036p) 58318 0.00 -1 s +( ) 59002 -22.00 32 s +4 sf +(\037 Specified if the rectangles are filled or not. Type is ) 120363 -21.55 32 s +2 sf +(boolean) 129771 0.00 -1 s +4 sf +(.) 130477 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Graphic Operations) 38563 -41.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(6\03674) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 6 declareFont +6 sf +20320.0 26687.0 m +(Drawing) 32923 0.00 -1 s +( Arcs) 40550 12.00 32 s +52832.0 h +2 sf +(6.6) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +4 sf +( ) 59215 -201.00 32 s +2 sf +(draw\036arc) 70341 0.00 -1 s +4 sf +( draws a single circular or an elliptical arc, while ) 124050 -200.70 32 s +2 sf +(draw\036arcs) 136274 0.00 -1 s +4 sf +( draws mul\036) 149352 -200.50 32 s +52832.0 29848.0 m +(tiple) 57848 0.00 -1 s +( circular or elliptical arcs. ) 86117 -270.00 32 s +2 sf +(draw\036arc) 97243 0.00 -1 s +4 sf +( and ) 102190 -270.00 32 s +2 sf +(draw\036arcs) 114414 0.00 -1 s +4 sf +( use the following graphics con\036) 149352 -269.60 32 s +52832.0 33009.0 m +(text) 57064 0.00 -1 s +( components:) 72100 -92.00 32 s +( arc\036mode, background, cap\036style, clip\036x, clip\036y, clip\036mask, dash\036list,) 149352 -92.57 32 s +52832.0 36170.0 m +(dash\036offset,) 66074 0.00 -1 s +( fill\036style, foreground, join\036style, function, plane\036mask, line\036width, line\036) 149352 309.14 32 s +52832.0 39330.0 m +(style,) 58868 0.00 -1 s +( stipple, subwindow\036mode, tile, ts\036x\036origin, and ts\036y\036origin.) 125713 -28.00 32 s +2 sf +34544.0 45607.0 m +(draw\036arc) 45670 0.00 -1 s +( ) 46334 -42.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable gcontext x y width height angle1 angle2 ) 103062 -41.88 32 s +4 sf +(&optional ) 115170 -42.00 32 s +5 sf +(fill\036p) 120656 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 50326.0 m +(Draws) 60196 0.00 -1 s +( either a circular or an elliptical arc. Also, outlined or filled arcs) 132745 51.00 32 s +( can be drawn.) 149352 50.33 32 s +52832.0 53487.0 m +(Each) 58473 0.00 -1 s +( arc is specified by a rectangle \() 93205 -154.00 32 s +5 sf +(x) 94458 0.00 -1 s +4 sf +(,) 95164 0.00 -1 s +5 sf +( y) 96969 -154.00 32 s +4 sf +(,) 97675 0.00 -1 s +5 sf +( width) 104499 -154.00 32 s +4 sf +(,) 105205 0.00 -1 s +5 sf +( ) 105757 -154.00 32 s +4 sf +(and ) 110385 -153.00 32 s +5 sf +(height) 117439 0.00 -1 s +4 sf +(\) and two angles \() 137044 -153.50 32 s +5 sf +(angle1 ) 145277 -154.00 32 s +4 sf +(and) 149352 0.00 -1 s +52832.0 56648.0 m +5 sf +(angle2) 60513 0.00 -1 s +4 sf +(\).) 62158 0.00 -1 s +( The angles are signed integers in) 101241 218.00 32 s +( radians, with positive indicating counter\036) 149352 217.40 32 s +52832.0 59809.0 m +(clockwise) 64116 0.00 -1 s +( motion and negative indicating clockwise motion. The start of) 137588 291.00 32 s +( the arc is) 149352 290.33 32 s +52832.0 62969.0 m +(specified) 63018 0.00 -1 s +( by ) 67002 -125.00 32 s +5 sf +(angle1) 74683 0.00 -1 s +4 sf +(, and the path and extent of the arc is specified by ) 129852 -124.58 32 s +5 sf +(angle2) 137533 0.00 -1 s +4 sf +( relative to) 149352 -124.50 32 s +52832.0 66130.0 m +(the) 56280 0.00 -1 s +( start of the arc. If the magnitude of ) 95396 -181.56 32 s +5 sf +(angle2) 103077 0.00 -1 s +4 sf +( is greater than 360 degrees, it is truncated) 149352 -181.50 32 s +52832.0 69291.0 m +(to) 55027 0.00 -1 s +( 360 degrees. The ) 75748 -12.00 32 s +5 sf +(x) 77001 0.00 -1 s +4 sf +( and ) 82464 -12.00 32 s +5 sf +(y) 83717 0.00 -1 s +4 sf +( coordinates of the rectangle are relative to the ) 136654 -12.56 32 s +5 sf +(drawable) 147315 0.00 -1 s +4 sf +('s) 149352 0.00 -1 s +52832.0 72452.0 m +(origin.) 60278 0.00 -1 s +( ) 60960 -24.00 32 s +52832.0 78729.0 m +(For) 56751 0.00 -1 s +( example, an arc specified as [) 90604 -39.00 32 s +5 sf +(x) 91857 0.00 -1 s +4 sf +(,) 92563 0.00 -1 s +5 sf +(y) 93816 0.00 -1 s +4 sf +(,) 94522 0.00 -1 s +5 sf +(width) 100794 0.00 -1 s +4 sf +(,) 101500 0.00 -1 s +5 sf +(height) 108554 0.00 -1 s +4 sf +(,) 109260 0.00 -1 s +5 sf +(angle1) 116941 0.00 -1 s +4 sf +(,) 117647 0.00 -1 s +5 sf +(angle2) 125328 0.00 -1 s +4 sf +(] has the origin of the) 149352 -38.60 32 s +52832.0 81890.0 m +(major) 59414 0.00 -1 s +( and) 64169 -26.00 32 s +( minor axes at:) 80783 -26.67 32 s +52832.0 88166.0 m +([) 53771 0.00 -1 s +5 sf +(x) 55024 0.00 -1 s +4 sf +(+\() 57555 0.00 -1 s +5 sf +(width) 63827 0.00 -1 s +4 sf +(/2\),) 67667 0.00 -1 s +5 sf +(y) 68920 0.00 -1 s +4 sf +(+\() 71451 0.00 -1 s +5 sf +(height) 78505 0.00 -1 s +4 sf +(/2\)]) 82578 0.00 -1 s +52832.0 94443.0 m +(The) 57220 0.00 -1 s +( infinitely thin path describing the entire circle/ellipse intersects the horizontal axis) 149352 -124.00 32 s +52832.0 97604.0 m +(at:) 55653 0.00 -1 s +52832.0 103880.0 m +([) 53771 0.00 -1 s +5 sf +(x) 55024 0.00 -1 s +4 sf +(,) 55730 0.00 -1 s +5 sf +(y) 56983 0.00 -1 s +4 sf +(+\() 59514 0.00 -1 s +5 sf +(height) 66568 0.00 -1 s +4 sf +(/2\)]) 70641 0.00 -1 s +( and [) 77005 -31.00 32 s +5 sf +(x) 78258 0.00 -1 s +4 sf +(+) 79850 0.00 -1 s +5 sf +(width) 86122 0.00 -1 s +4 sf +(,) 86828 0.00 -1 s +5 sf +(y) 88081 0.00 -1 s +4 sf +(+\() 90612 0.00 -1 s +5 sf +(height) 97666 0.00 -1 s +4 sf +(/2\)]) 101739 0.00 -1 s +( ) 102413 -32.00 32 s +52832.0 110157.0 m +(The) 57220 0.00 -1 s +( intersection of the vertical axis is at:) 98710 -17.86 32 s +52832.0 116434.0 m +([) 53771 0.00 -1 s +5 sf +(x) 55024 0.00 -1 s +4 sf +(+\() 57555 0.00 -1 s +5 sf +(width) 63827 0.00 -1 s +4 sf +(/2\),) 67667 0.00 -1 s +5 sf +(y) 68920 0.00 -1 s +4 sf +(]) 69859 0.00 -1 s +( and [) 76211 -37.00 32 s +5 sf +(x) 77464 0.00 -1 s +4 sf +(+\() 79995 0.00 -1 s +5 sf +(width) 86267 0.00 -1 s +4 sf +(/2\),) 90107 0.00 -1 s +5 sf +(y) 91360 0.00 -1 s +4 sf +(+) 92952 0.00 -1 s +5 sf +(height) 100006 0.00 -1 s +4 sf +(]) 100945 0.00 -1 s +52832.0 122710.0 m +(These) 59571 0.00 -1 s +( coordinates can be fractional; that is, they are not truncated to discrete coordi\036) 149352 82.46 32 s +52832.0 125871.0 m +(nates.) 59337 0.00 -1 s +( Note that the angle values are slightly different in CLX than in the X protocol) 149352 102.13 32 s +52832.0 129032.0 m +(specification.) 67956 0.00 -1 s +52832.0 135309.0 m +(If) 54710 0.00 -1 s +( ) 55248 -168.00 32 s +5 sf +(fill\036p) 60734 0.00 -1 s +4 sf +( is ) 63693 -167.50 32 s +2 sf +(nil) 66830 0.00 -1 s +4 sf +(, then only the outline of the arc is drawn. Otherwise, if ) 128067 -167.50 32 s +5 sf +(fill\036p) 133553 0.00 -1 s +4 sf +( is true, ) 142143 -167.67 32 s +2 sf +(draw\036) 149352 0.00 -1 s +52832.0 138470.0 m +(arc) 56749 0.00 -1 s +4 sf +( fills the area bounded by the arc outline and one or) 112589 -203.00 32 s +( two line segments, depending on) 149352 -203.60 32 s +52832.0 141630.0 m +(the) 56280 0.00 -1 s +( arc\036mode. If the arc\036mode is ) 88436 -217.00 32 s +2 sf +(:chord) 96430 0.00 -1 s +4 sf +(, the filled area) 112704 -217.00 32 s +( is bounded by the arc outline and) 149352 -217.57 32 s +52832.0 144791.0 m +(the) 56280 0.00 -1 s +( line segment joining the arc end points.) 99839 -227.00 32 s +( If the arc\036mode is ) 120093 -227.60 32 s +2 sf +(:pie\036slice) 130749 0.00 -1 s +4 sf +(, the filled area is) 149352 -227.50 32 s +52832.0 147952.0 m +(bounded) 62551 0.00 -1 s +( by the arc outline and the two line segments joining each arc end point with) 145417 -218.00 32 s +( the) 149352 -219.00 32 s +52832.0 151113.0 m +(center) 59725 0.00 -1 s +( point.) 66875 -63.00 32 s +5 sf +52832.0 157390.0 m +(drawable) 63493 0.00 -1 s +( ) 64147 -52.00 32 s +4 sf +(\037) 66969 0.00 -1 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 162176.0 m +(gcontext) 62392 0.00 -1 s +( ) 63064 -34.00 32 s +4 sf +(\037 The graphics context for drawing the arc.) 112979 -34.00 32 s +5 sf +52832.0 166963.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55269 -228.00 32 s +5 sf +(y ) 57000 -228.00 32 s +4 sf +(\037 The x and y coordinates of the arc rectangle) 108001 -228.00 32 s +( relative to the origin of the ) 137985 -228.57 32 s +5 sf +(drawable) 148646 0.00 -1 s +4 sf +(.) 149352 0.00 -1 s +57912.0 170124.0 m +(Type) 63711 0.00 -1 s +( is) 66268 -31.00 32 s +( ) 66942 -32.00 32 s +2 sf +(int16) 73056 0.00 -1 s +4 sf +(.) 73762 0.00 -1 s +5 sf +52832.0 174910.0 m +(width) 59104 0.00 -1 s +4 sf +(,) 59810 0.00 -1 s +( ) 60289 -227.00 32 s +5 sf +(height ) 67822 -227.00 32 s +4 sf +(\037 Specifies the width and height of the rectangle. These are the major) 144799 -227.00 32 s +( and) 149352 -228.00 32 s +57912.0 178071.0 m +(minor) 64652 0.00 -1 s +( axes of the arc. Type is ) 92022 -31.00 32 s +2 sf +(card16) 100330 0.00 -1 s +4 sf +(.) 101036 0.00 -1 s +5 sf +52832.0 182857.0 m +(angle1) 60513 0.00 -1 s +( ) 61196 -23.00 32 s +4 sf +(\037 Specifies the) 79176 -23.00 32 s +( start of the arc in radians. Type is ) 118150 -23.56 32 s +2 sf +(angle) 124578 0.00 -1 s +4 sf +(.) 125284 0.00 -1 s +5 sf +52832.0 187644.0 m +(angle2) 60513 0.00 -1 s +( ) 61189 -30.00 32 s +4 sf +(\037 Specifies) 75031 -30.00 32 s +( the direction and end point of the arc. Type is ) 127520 -30.55 32 s +2 sf +(angle) 133948 0.00 -1 s +4 sf +(.) 134654 0.00 -1 s +5 sf +52832.0 192430.0 m +(fill\036p) 58318 0.00 -1 s +( ) 59002 -22.00 32 s +4 sf +(\037 Specifies whether the) 86756 -22.00 32 s +( arc is filled or not. Type ) 115283 -22.57 32 s +2 sf +(boolean) 124691 0.00 -1 s +4 sf +(.) 125397 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +130770.0 7925.0 m +(Graphic Operations) 149013 -41.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(6\03675) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(draw\036arcs) 46768 0.00 -1 s +( ) 47431 -43.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable gcontext arcs ) 74502 -42.67 32 s +/timsps10 4 declareFont +4 sf +(&optional) 85946 0.00 -1 s +5 sf +( fill\036p) 92095 -43.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Draws) 60196 0.00 -1 s +( circular or elliptical, outlined or filled arcs. Each arc) 119571 -46.00 32 s +( is specified by a rectangle) 149352 -46.60 32 s +52832.0 30457.0 m +(and) 56907 0.00 -1 s +( two angles. For a more detailed) 92972 -37.00 32 s +( description, see ) 111826 -37.67 32 s +2 sf +(draw\036arc) 122952 0.00 -1 s +4 sf +(.) 123658 0.00 -1 s +52832.0 36734.0 m +(The) 57220 0.00 -1 s +( arcs are) 66774 77.00 32 s +( filled in the order listed. For any given arc, no pixel is drawn more than) 149352 76.47 32 s +52832.0 39895.0 m +(once.) 58866 0.00 -1 s +( If regions intersect, the intersecting pixels are drawn multiple times.) 136212 -24.00 32 s +5 sf +52832.0 46172.0 m +(drawable) 63493 0.00 -1 s +( ) 64163 -36.00 32 s +4 sf +(\037 Specifies the ) 82787 -36.00 32 s +2 sf +(drawable) 94074 0.00 -1 s +4 sf +( where you want the arcs drawn.) 130454 -35.83 32 s +5 sf +52832.0 50958.0 m +(gcontext) 62392 0.00 -1 s +( ) 63066 -32.00 32 s +4 sf +(\037 Specifies the graphics context for) 104206 -32.00 32 s +( drawing the arc.) 123071 -32.67 32 s +5 sf +52832.0 55745.0 m +(arcs) 57692 0.00 -1 s +( ) 58127 -271.00 32 s +4 sf +(\037 A sequence containing the width, height, angle1, and) 119367 -271.00 32 s +( angle2 arguments defining) 149352 -271.67 32 s +57912.0 58905.0 m +(the) 61360 0.00 -1 s +( arcs. See ) 72709 -31.00 32 s +2 sf +(draw\036arc) 83835 0.00 -1 s +4 sf +( for) 87799 -31.00 32 s +( more detail. Type is ) 111625 -31.60 32 s +2 sf +(arc\036seq) 120401 0.00 -1 s +4 sf +(.) 121107 0.00 -1 s +5 sf +52832.0 63692.0 m +(fill\036p) 58318 0.00 -1 s +( ) 59003 -21.00 32 s +4 sf +(\037 Specifies whether) 82627 -21.00 32 s +( the arcs are filled or not. Type is ) 120521 -21.56 32 s +2 sf +(boolean) 129929 0.00 -1 s +4 sf +(.) 130635 0.00 -1 s +20320.0 69201.0 m +0.0 0.0 m +newpath +20455 67577 av +148878 67575 as +[] 0 setdash +dp +149352.0 69201.0 m +/timsps12b 6 declareFont +6 sf +20320.0 72588.0 m +(Drawing) 32923 0.00 -1 s +( Text) 40369 17.00 32 s +52832.0 h +2 sf +(6.7) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(CLX) 64198 0.00 -1 s +( provides functions for drawing text using text fonts provided by the X server.) 149352 -226.00 32 s +52832.0 75748.0 m +(An) 56280 0.00 -1 s +( X font is array of character bit maps indexed by integer codes. See Section 8 for a) 149352 -1.71 32 s +52832.0 78909.0 m +(complete) 63176 0.00 -1 s +( discussion of the CLX functions used to manage fonts and characters.) 142311 -30.64 32 s +2 sf +() 142311 0.00 -1 s +144661.0 h +() 144661 0.00 -1 s +4 sf +( ) 145333 -34.00 32 s +52832.0 85186.0 m +(Since) 59102 0.00 -1 s +( Common Lisp programs typically represent text as sequences of characters) 143557 -81.00 32 s +( \(that) 149352 -82.00 32 s +52832.0 88347.0 m +(is,) 55420 0.00 -1 s +( strings\), CLX text functions must be prepared to convert a Common Lisp character) 149352 -45.00 32 s +52832.0 91508.0 m +(into) 57222 0.00 -1 s +( the integer code used to) 83826 -181.00 32 s +( index the appropriate character bitmap in a given font. The) 149352 -163.40 32 s +52832.0 94669.0 m +2 sf +(:translate) 64428 0.00 -1 s +4 sf +( argument to a text function is a function which performs this conversion. The) 149352 -243.69 32 s +52832.0 97830.0 m +(default) 60667 0.00 -1 s +( ) 61387 14.00 32 s +2 sf +(:translate) 72983 0.00 -1 s +4 sf +( function handles all characters that satisfy ) 121892 12.29 32 s +2 sf +(graphic\036char\036p) 140075 0.00 -1 s +4 sf +( by con\036) 149352 14.50 32 s +52832.0 100990.0 m +(verting) 60825 0.00 -1 s +( each character into its ASCII code. Note that the assumption made by the default) 149352 -254.21 32 s +52832.0 104151.0 m +2 sf +(:translate) 64428 0.00 -1 s +4 sf +( function\037that is, that an X font indexes bitmaps by ASCII codes\037is often) 149352 -62.08 32 s +52832.0 107312.0 m +(valid,) 59181 0.00 -1 s +( but other encodings are possible. In general, a ) 113004 67.56 32 s +2 sf +(:translate) 124600 0.00 -1 s +4 sf +( function can perform) 149352 75.33 32 s +52832.0 110473.0 m +(complex) 62550 0.00 -1 s +( transformations. It) 83897 -102.00 32 s +( can be used to convert non\036character input, to handle non\036) 149352 -92.30 32 s +52832.0 113634.0 m +(ASCII) 60198 0.00 -1 s +( character encodings, and to change the fonts used to) 119976 24.00 32 s +( access character bitmaps.) 149352 23.33 32 s +52832.0 116795.0 m +(The) 57220 0.00 -1 s +( complete behavior of a ) 84720 30.00 32 s +2 sf +(:translate) 96316 0.00 -1 s +4 sf +( function is given below by describing a proto\036) 149352 26.38 32 s +52832.0 119956.0 m +(typical) 60512 0.00 -1 s +( ) 61135 -83.00 32 s +2 sf +(translate\036function) 82764 0.00 -1 s +4 sf +(.) 83470 0.00 -1 s +52832.0 126232.0 m +(CLX) 58475 0.00 -1 s +( offers two different ways to draw text\037filled text and block text. The ) 135399 -255.69 32 s +2 sf +(draw\036glyph) 149352 0.00 -1 s +4 sf +52832.0 129393.0 m +(and ) 57358 -255.00 32 s +2 sf +(draw\036glyphs) 72409 0.00 -1 s +4 sf +( functions create filled text, in which each character image is treated as) 149352 -255.33 32 s +52832.0 132554.0 m +(an) 55496 0.00 -1 s +( area to be filled according to the fill\036style of the given graphics context, without oth\036) 149352 -158.87 32 s +52832.0 135715.0 m +(erwise) 60196 0.00 -1 s +( disturbing the surrounding background. In addition, filled text sends a) 139019 -81.00 32 s +( complex) 149352 -91.00 32 s +52832.0 138876.0 m +(type) 57691 0.00 -1 s +( of server request which) 83879 -231.00 32 s +( allows a series of font indices, font changes, and horizontal) 149352 -208.40 32 s +52832.0 142037.0 m +(position) 61926 0.00 -1 s +( changes to be compiled into a single request. Filled text functions) 144141 676.36 32 s +( use) 149352 743.00 32 s +52832.0 145198.0 m +(the) 56280 0.00 -1 s +( following graphics context attributes: background, clip\036mask, clip\036x\036origin, clip\036y\036) 149352 -131.25 32 s +52832.0 148359.0 m +(origin, fill\036style,) 71250 0.00 32 s +( font, foreground, function, plane\036mask, stipple, subwindow\036mode,) 149352 398.67 32 s +52832.0 151519.0 m +(tile,) 57143 0.00 -1 s +( ts\036x\036origin,) 70465 -1.00 32 s +( ts\036y\036origin.) 83786 -2.00 32 s +52832.0 157796.0 m +(Block) 59573 0.00 -1 s +( text) 64240 -271.00 32 s +( is a rendering style commonly used by display terminals, in which each char\036) 149352 -252.14 32 s +52832.0 160957.0 m +(acter) 58314 0.00 -1 s +( image appears in the foreground pixel inside a rectangular character cell drawn in) 149352 -139.92 32 s +52832.0 164118.0 m +(the) 56280 0.00 -1 s +( graphics context background pixel. The ) 105274 472.00 32 s +2 sf +(draw\036image\036glyph) 127375 0.00 -1 s +4 sf +( and ) 133995 566.50 32 s +2 sf +(draw\036image\036) 149352 0.00 -1 s +52832.0 167279.0 m +(glyphs) 60674 0.00 -1 s +4 sf +( functions create block text. Block text functions use the following graphics con\036) 149352 -205.83 32 s +52832.0 170440.0 m +(text ) 57770 0.00 32 s +( attributes: background, clip\036mask,) 97569 178.00 32 s +( clip\036x\036origin, clip\036y\036origin, font, foreground,) 149352 133.00 32 s +52832.0 173601.0 m +(plane\036mask,) 66546 0.00 -1 s +( stipple, subwindow\036mode, tile, ts\036x\036origin, ts\036y\036origin.) 128603 -35.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Graphic Operations) 38563 -41.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(6\03676) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(draw\036glyph) 48497 0.00 -1 s +/timsps10 4 declareFont +4 sf +( ) 49161 -42.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable gcontext x y element) 83319 -42.00 32 s +4 sf +( &key ) 90918 -41.50 32 s +2 sf +(:translate :width) 111015 -42.00 32 s +4 sf +138673.0 h +(Function) 148707 0.00 -1 s +( ) 149352 -61.00 32 s +52832.0 25739.0 m +(\() 53771 0.00 -1 s +2 sf +(:size) 59098 0.00 -1 s +( :default) 69206 -1.00 32 s +4 sf +(\)) 70145 0.00 -1 s +( ) 70849 -2.00 32 s +2 sf +34544.0 28900.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 32060.0 m +( ) 54175 -34.50 32 s +5 sf +(output\036p) 63737 0.00 -1 s +4 sf +( \037 Type ) 74372 -34.67 32 s +2 sf +(boolean) 83780 0.00 -1 s +4 sf +(.) 84486 0.00 -1 s +52832.0 35221.0 m +( ) 54204 -20.00 32 s +5 sf +(width) 60476 0.00 -1 s +4 sf +( \037 Type ) 71156 -19.67 32 s +2 sf +(int32) 77270 0.00 -1 s +4 sf +( or ) 80993 -19.50 32 s +2 sf +(null) 85699 0.00 -1 s +4 sf +(.) 86405 0.00 -1 s +52832.0 39940.0 m +(Draws) 60196 0.00 -1 s +( a single character of filled text represented by the given ) 121771 -236.82 32 s +5 sf +(element) 130546 0.00 -1 s +4 sf +(. The given ) 143555 -157.67 32 s +5 sf +(x) 144808 0.00 -1 s +4 sf +( and) 149352 -237.00 32 s +52832.0 43101.0 m +5 sf +(y) 54085 0.00 -1 s +4 sf +( specify the left baseline position for the character. The first return value is true if the) 149352 -45.56 32 s +52832.0 46262.0 m +(character) 63170 0.00 -1 s +( is successfully translated and drawn, or ) 111105 309.43 32 s +2 sf +(nil) 114242 0.00 -1 s +4 sf +( if the) 121547 361.00 32 s +( ) 122613 360.00 32 s +2 sf +(:translate) 134209 0.00 -1 s +4 sf +( function did) 149352 360.50 32 s +52832.0 49423.0 m +(not translate) 66703 0.00 32 s +( it. The second return value gives the total pixel width of the character actu\036) 149352 -203.57 32 s +52832.0 52584.0 m +(ally) 57064 0.00 -1 s +( drawn, if known.) 76945 -34.67 32 s +52832.0 58860.0 m +(Specifying) 65058 0.00 -1 s +( a ) 67509 -107.00 32 s +2 sf +(:width) 75346 0.00 -1 s +4 sf +( is a hint to improve performance. The ) 118613 -107.00 32 s +2 sf +(:width) 126450 0.00 -1 s +4 sf +( is assumed to be) 145306 -107.00 32 s +( the) 149352 -108.00 32 s +52832.0 62021.0 m +(total) 57848 0.00 -1 s +( pixel width of the character actually drawn. Specifying ) 120172 -128.00 32 s +2 sf +(:width) 128009 0.00 -1 s +4 sf +( permits) 137035 -144.00 32 s +( appending) 149352 -145.00 32 s +52832.0 65182.0 m +(the) 56280 0.00 -1 s +( output of subsequent) 80492 -3.00 32 s +( calls to the same protocol request, provided ) 131019 -3.13 32 s +5 sf +(gcontext) 140579 0.00 -1 s +4 sf +( has not) 149352 -3.50 32 s +52832.0 68343.0 m +(been) 58160 0.00 -1 s +( modified in the interim. If ) 87571 -231.67 32 s +2 sf +(:width) 95408 0.00 -1 s +4 sf +( is not specified, appending of subsequent output) 149352 -242.88 32 s +52832.0 71504.0 m +(might) 59417 0.00 -1 s +( not occur \(unless ) 80008 -25.00 32 s +2 sf +(:translate) 91604 0.00 -1 s +4 sf +( returns the character) 115268 -25.00 32 s +( width\).) 124020 -26.00 32 s +52832.0 77780.0 m +(The) 57220 0.00 -1 s +( ) 57810 -116.00 32 s +2 sf +(:size) 63137 0.00 -1 s +4 sf +( specifies the element) 87161 -116.00 32 s +( size of the destination buffer given to ) 129804 -116.50 32 s +2 sf +(:translate) 141400 0.00 -1 s +4 sf +( \(either) 149352 -117.00 32 s +52832.0 80941.0 m +(8,) 54949 0.00 -1 s +( 16, or ) 62117 -276.00 32 s +2 sf +(:default) 71520 0.00 -1 s +4 sf +(\).) 73165 0.00 -1 s +( If ) 75902 -276.50 32 s +2 sf +(:default) 85305 0.00 -1 s +4 sf +( is specified, the size is based on the current font, if known;) 149352 -253.50 32 s +52832.0 84102.0 m +(otherwise,) 64508 0.00 -1 s +( 16 is used.) 77126 -27.67 32 s +5 sf +52832.0 90379.0 m +(drawable) 63493 0.00 -1 s +4 sf +( \037) 66969 -52.00 32 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 95165.0 m +(gcontext ) 63098 0.00 32 s +4 sf +(\037) 65920 0.00 -1 s +( The graphics context for drawing text.) 109638 -41.00 32 s +5 sf +52832.0 99952.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55472 -25.00 32 s +5 sf +(y) 56725 0.00 -1 s +4 sf +( \037 The left baseline position for the character drawn. ) 117698 -23.00 32 s +5 sf +52832.0 104738.0 m +(element) 61607 0.00 -1 s +4 sf +( \037) 65135 0.00 32 s +( A) 67850 -28.00 32 s +( character or other object to be translated into a font index. ) 134383 -26.17 32 s +2 sf +52832.0 109525.0 m +(:translate) 64428 0.00 -1 s +4 sf +( \037 A function to translate text to font indexes. Default is ) 126236 -276.92 32 s +2 sf +(#'translate\036default) 148646 0.00 -1 s +4 sf +(.) 149352 0.00 -1 s +2 sf +52832.0 114311.0 m +(:width) 60669 0.00 -1 s +4 sf +( \037 The total pixel width of the character actually drawn, if known.) 136054 -26.58 32 s +2 sf +52832.0 119098.0 m +(:size) 58159 0.00 -1 s +4 sf +( \037 Specifies the element size of the destination buffer given to ) 127384 -226.75 32 s +2 sf +(:translate) 138980 0.00 -1 s +4 sf +( \(8, 16, or) 149352 -226.67 32 s +57912.0 122259.0 m +2 sf +(:default) 67315 0.00 -1 s +4 sf +(\).) 68960 0.00 -1 s +2 sf +34544.0 127045.0 m +(draw\036glyphs) 49595 0.00 -1 s +4 sf +( ) 50264 -37.00 32 s +5 sf +(drawable gcontext x y sequence) 86010 -37.00 32 s +4 sf +( &key \() 94557 -37.00 32 s +2 sf +(:start) 101136 0.00 -1 s +4 sf +( 0\) ) 104823 -37.50 32 s +2 sf +(:end :translate) 122417 -38.00 32 s +4 sf +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 130206.0 m +2 sf +(:width) 60669 0.00 -1 s +4 sf +( \() 62312 -2.00 32 s +2 sf +(:size) 67639 0.00 -1 s +( :default) 77745 -3.00 32 s +4 sf +(\)) 78684 0.00 -1 s +2 sf +34544.0 133367.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 136528.0 m +( ) 54188 -28.00 32 s +5 sf +(new\036start ) 65526 -28.00 32 s +4 sf +(\037 Type ) 75503 -28.00 32 s +2 sf +(array\036index) 89767 0.00 -1 s +4 sf +( or ) 93473 -28.00 32 s +2 sf +(null) 98179 0.00 -1 s +4 sf +(. ) 99591 0.00 32 s +52832.0 139689.0 m +( ) 54204 -20.00 32 s +5 sf +(width) 60476 0.00 -1 s +4 sf +( \037 Type ) 71156 -19.67 32 s +2 sf +(int32) 77270 0.00 -1 s +4 sf +( or ) 80993 -19.50 32 s +2 sf +(null) 85699 0.00 -1 s +4 sf +(.) 86405 0.00 -1 s +52832.0 144407.0 m +(Draws) 60196 0.00 -1 s +( the filled text characters represented by the given sequence. ) 127967 -95.40 32 s +2 sf +(:start) 134546 0.00 -1 s +4 sf +( and ) 139820 -106.50 32 s +2 sf +(:end) 145150 0.00 -1 s +4 sf +( de\036) 149352 -107.00 32 s +52832.0 147568.0 m +(fine) 57219 0.00 -1 s +( the elements of the sequence which are drawn. The given ) 123711 31.82 32 s +5 sf +(x) 124964 0.00 -1 s +4 sf +( and ) 130521 35.00 32 s +5 sf +(y) 131774 0.00 -1 s +4 sf +( specify the left) 149352 34.33 32 s +52832.0 150729.0 m +(baseline) 62079 0.00 -1 s +( position for the first character. The first return value is ) 127585 162.67 32 s +2 sf +(nil) 130722 0.00 -1 s +4 sf +( if all characters) 149352 177.33 32 s +52832.0 153890.0 m +(are successfully) 70776 0.00 32 s +( translated and drawn; otherwise, the index of the first untranslated se\036) 149352 -80.73 32 s +52832.0 157051.0 m +(quence) 60824 0.00 -1 s +( element is returned. The) 89070 28.00 32 s +( second return value gives the total pixel width of the) 149352 24.70 32 s +52832.0 160212.0 m +(characters) 64268 0.00 -1 s +( actually drawn, if known.) 93720 -43.00 32 s +52832.0 166489.0 m +(Specifying) 65058 0.00 -1 s +( a ) 67509 -107.00 32 s +2 sf +(:width) 75346 0.00 -1 s +4 sf +( is a hint to improve performance. The) 118014 -107.00 32 s +2 sf +( :width) 126450 -107.00 32 s +4 sf +( is assumed to be) 145306 -107.00 32 s +( the) 149352 -108.00 32 s +52832.0 169649.0 m +(total) 57848 0.00 -1 s +( pixel width of the character sequence actually drawn. Specifying ) 132348 -2.50 32 s +2 sf +(:width) 140185 0.00 -1 s +4 sf +( permits) 149352 -3.00 32 s +52832.0 172810.0 m +(appending) 64588 0.00 -1 s +( the output) 76554 -53.00 32 s +( of subsequent calls to the same protocol request, provided ) 142927 -48.20 32 s +5 sf +(gcon\036) 149352 0.00 -1 s +52832.0 175971.0 m +(text) 56906 0.00 -1 s +4 sf +( has not been modified in the interim. If ) 100713 -200.89 32 s +2 sf +(:width) 108550 0.00 -1 s +4 sf +( is not specified, appending of subse\036) 149352 -188.33 32 s +52832.0 179132.0 m +(quent) 59102 0.00 -1 s +( output might not occur \(unless ) 94813 -31.50 32 s +2 sf +(:translate) 106409 0.00 -1 s +4 sf +( returns the character width\).) 138831 -23.75 32 s +52832.0 185409.0 m +(The) 57220 0.00 -1 s +( ) 57800 -126.00 32 s +2 sf +(:size) 63127 0.00 -1 s +4 sf +( specifies the element size of the destination buffer given to) 129108 -126.00 32 s +2 sf +( :translate) 141410 0.00 32 s +4 sf +( \(either) 149352 -127.00 32 s +52832.0 188570.0 m +(8,) 54949 0.00 -1 s +( 16, or ) 62192 -251.00 32 s +2 sf +(:default) 71595 0.00 -1 s +4 sf +(\). If :) 76812 -251.00 32 s +2 sf +(default) 85276 0.00 -1 s +4 sf +( is specified, the size is based on the current font, if) 140433 -251.00 32 s +( known;) 149352 -252.00 32 s +52832.0 191730.0 m +(otherwise,) 64508 0.00 -1 s +( 16 is used.) 77126 -27.67 32 s +5 sf +52832.0 198007.0 m +(drawable) 63493 0.00 -1 s +4 sf +( \037) 66969 -52.00 32 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +130770.0 7925.0 m +(Graphic Operations) 149013 -41.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(6\03677) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 5 declareFont +5 sf +52832.0 22578.0 m +(gcontext) 62392 0.00 -1 s +/timsps10 4 declareFont +4 sf +( \037 The graphics context for drawing) 104030 -35.00 32 s +( text.) 109638 -36.00 32 s +5 sf +52832.0 27364.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55472 -25.00 32 s +5 sf +(y) 56725 0.00 -1 s +4 sf +( \037 The left baseline position for the character drawn.) 116998 -24.89 32 s +5 sf +52832.0 32151.0 m +(sequence) 63175 0.00 -1 s +4 sf +( \037 A sequence of characters or other objects to be translated) 129601 -209.00 32 s +( into font indexes.) 149352 -209.67 32 s +2 sf +52832.0 36937.0 m +(:start) 59411 0.00 -1 s +4 sf +(,) 60117 0.00 -1 s +( ) 60795 -28.00 32 s +2 sf +(:end) 66125 0.00 -1 s +4 sf +( \037 Start and end indexes defining the elements to draw. ) 129958 -25.36 32 s +2 sf +52832.0 41724.0 m +(:translate) 64428 0.00 -1 s +4 sf +( \037 A function to) 84470 190.00 32 s +( translate text to font indexes. Default is ) 131645 165.75 32 s +2 sf +(#'translate\036de\036) 149352 0.00 -1 s +57912.0 44885.0 m +(fault) 63554 0.00 -1 s +4 sf +(.) 64260 0.00 -1 s +2 sf +52832.0 49671.0 m +(:width) 60669 0.00 -1 s +4 sf +( \037 The total total pixel width of the character actually drawn, if known.) 142466 -23.93 32 s +2 sf +52832.0 54458.0 m +(:size) 58159 0.00 -1 s +4 sf +( \037 The element size of the destination buffer given to ) 121018 93.00 32 s +2 sf +(:translate) 132614 0.00 -1 s +4 sf +( \(8, 16, or ) 144652 70.00 32 s +2 sf +(:de\036) 149352 0.00 -1 s +57912.0 57618.0 m +(fault) 63554 0.00 -1 s +4 sf +(\).) 65199 0.00 -1 s +2 sf +34544.0 62405.0 m +(draw\036image\036glyph) 56645 0.00 -1 s +4 sf +( ) 57307 -44.00 32 s +5 sf +(drawable gcontext x) 80105 -44.00 32 s +( y element) 91456 -44.50 32 s +4 sf +( &key ) 99049 -44.50 32 s +2 sf +(:translate) 110645 0.00 -1 s +4 sf +( ) 111306 -45.00 32 s +2 sf +(:width) 119143 0.00 -1 s +138673.0 h +4 sf +(Function) 148707 0.00 -1 s +( ) 149352 -61.00 32 s +52832.0 65566.0 m +(\() 53771 0.00 -1 s +2 sf +(:size) 59098 0.00 -1 s +( :default) 69206 -1.00 32 s +4 sf +(\)) 70145 0.00 -1 s +( ) 70849 -2.00 32 s +2 sf +34544.0 68727.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 71888.0 m +( ) 54175 -34.50 32 s +5 sf +(output\036p) 63737 0.00 -1 s +4 sf +( \037 Type ) 74372 -34.67 32 s +2 sf +(boolean) 83780 0.00 -1 s +4 sf +(.) 84486 0.00 -1 s +2 sf +52832.0 75049.0 m +( ) 54204 -20.00 32 s +5 sf +(width) 60476 0.00 -1 s +4 sf +( \037 Type ) 71156 -19.67 32 s +2 sf +(int32) 77270 0.00 -1 s +4 sf +( or ) 80993 -19.50 32 s +2 sf +(null) 85699 0.00 -1 s +4 sf +(.) 86405 0.00 -1 s +52832.0 79767.0 m +(Draws) 60196 0.00 -1 s +( a single character of block text represented) 107514 -259.00 32 s +( by the given ) 121840 -259.50 32 s +5 sf +(element) 130615 0.00 -1 s +4 sf +(. The given ) 143578 -173.00 32 s +5 sf +(x) 144831 0.00 -1 s +4 sf +( and) 149352 -260.00 32 s +52832.0 82928.0 m +5 sf +(y) 54085 0.00 -1 s +4 sf +( specify the left baseline position for the character. The first return value is true if the) 149352 -45.56 32 s +52832.0 86089.0 m +(character) 63170 0.00 -1 s +( is successfully translated and drawn, or ) 111105 309.43 32 s +2 sf +(nil) 114242 0.00 -1 s +4 sf +( if the) 121547 361.00 32 s +( ) 122613 360.00 32 s +2 sf +(:translate) 134209 0.00 -1 s +4 sf +( function did) 149352 360.50 32 s +52832.0 89250.0 m +(not translate) 66703 0.00 32 s +( it. The ) 75279 -68.00 32 s +2 sf +(:translate) 86875 0.00 -1 s +4 sf +( function is allowed to return an initial font change.) 144327 -60.44 32 s +( The) 149352 -69.00 32 s +52832.0 92411.0 m +(second) 60669 0.00 -1 s +( return value) 74396 -267.00 32 s +( gives the total pixel width of the character actually drawn, if known.) 149352 -245.25 32 s +52832.0 98687.0 m +(The) 57220 0.00 -1 s +( ) 57986 60.00 32 s +2 sf +(:translate) 69582 0.00 -1 s +4 sf +( function may not return) 97252 60.00 32 s +( a horizontal position change, since ) 138070 49.50 32 s +2 sf +(draw\036im\036) 149352 0.00 -1 s +52832.0 101848.0 m +(age\036glyph) 64590 0.00 -1 s +4 sf +( does not generate complex output requests.) 113747 -49.67 32 s +52832.0 108125.0 m +(Specifying) 65058 0.00 -1 s +( a ) 67493 -115.00 32 s +2 sf +(:width) 75330 0.00 -1 s +4 sf +( is a hint to improve performance. The ) 118535 -114.75 32 s +2 sf +(:width) 126372 0.00 -1 s +4 sf +( is assumed to be the) 149352 -91.60 32 s +52832.0 111286.0 m +(total) 57848 0.00 -1 s +( pixel width of the character actually drawn. Specifying ) 120172 -128.00 32 s +2 sf +(:width) 128009 0.00 -1 s +4 sf +( permits) 137035 -144.00 32 s +( appending) 149352 -145.00 32 s +52832.0 114447.0 m +(the) 56280 0.00 -1 s +( output of subsequent) 80492 -3.00 32 s +( calls to the same protocol request, provided ) 131019 -3.13 32 s +5 sf +(gcontext) 140579 0.00 -1 s +4 sf +( has not) 149352 -3.50 32 s +52832.0 117608.0 m +(been) 58160 0.00 -1 s +( modified in the interim. If ) 89034 -90.43 32 s +2 sf +(:width) 96871 0.00 -1 s +4 sf +( is not specified, appending of subsequent out\036) 149352 -92.38 32 s +52832.0 120769.0 m +(put) 56438 0.00 -1 s +( might not occur \(unless ) 84295 -25.00 32 s +2 sf +(:translate) 95891 0.00 -1 s +4 sf +( returns the character width\).) 128310 -24.50 32 s +52832.0 127045.0 m +(The) 57220 0.00 -1 s +( ) 57810 -116.00 32 s +2 sf +(:size) 63137 0.00 -1 s +4 sf +( specifies the element) 87161 -116.00 32 s +( size of the destination buffer given to ) 129804 -116.50 32 s +2 sf +(:translate) 141400 0.00 -1 s +4 sf +( \(either) 149352 -117.00 32 s +52832.0 130206.0 m +(8,) 54949 0.00 -1 s +( 16, or ) 62165 -260.00 32 s +2 sf +(:default) 71568 0.00 -1 s +4 sf +(\). If ) 75983 -260.00 32 s +2 sf +(:default) 85386 0.00 -1 s +4 sf +( is specified, the size is based on) 120248 -260.00 32 s +( the current font, if known;) 149352 -260.60 32 s +52832.0 133367.0 m +(otherwise,) 64508 0.00 -1 s +( 16 is used.) 77126 -27.67 32 s +5 sf +52832.0 139644.0 m +(drawable) 63493 0.00 -1 s +4 sf +( \037) 66969 -52.00 32 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 144430.0 m +(gcontext) 62392 0.00 -1 s +( ) 63063 -35.00 32 s +4 sf +(\037 The graphics context for drawing) 104030 -35.00 32 s +( text.) 109638 -36.00 32 s +5 sf +52832.0 149217.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55472 -25.00 32 s +5 sf +(y) 56725 0.00 -1 s +4 sf +( \037 The left baseline position for the character drawn.) 116998 -24.89 32 s +5 sf +52832.0 154003.0 m +(element) 61607 0.00 -1 s +4 sf +( \037 A character or other object) 95928 -26.00 32 s +( to be translated into a font index. ) 134383 -23.25 32 s +2 sf +52832.0 158790.0 m +(:translate) 64428 0.00 -1 s +4 sf +( \037 A function to translate text to font indexes. Default is ) 131645 106.15 32 s +2 sf +(#'translate\036de\036) 149352 0.00 -1 s +57912.0 161950.0 m +(fault) 63554 0.00 -1 s +4 sf +(. ) 64966 0.00 32 s +2 sf +52832.0 166737.0 m +(:width) 60669 0.00 -1 s +4 sf +( \037 The total pixel width of the character actually drawn, if known.) 136054 -26.58 32 s +2 sf +52832.0 171523.0 m +(:size) 58159 0.00 -1 s +4 sf +( \037 Specifies the element size of the destination buffer given to ) 127432 -222.75 32 s +2 sf +(:translate) 139028 0.00 -1 s +4 sf +( \(8, 16, or) 149352 -242.67 32 s +57912.0 174684.0 m +2 sf +(:default) 67315 0.00 -1 s +4 sf +(\).) 68960 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Graphic Operations) 38563 -41.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(6\03678) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(draw\036image\036glyphs) 57743 0.00 -1 s +/timsps10 4 declareFont +4 sf +( ) 58411 -38.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable gcontext x y sequence) 94153 -38.00 32 s +4 sf +( &key \() 102698 -38.00 32 s +2 sf +(:start) 109277 0.00 -1 s +4 sf +( 0\) ) 112964 -37.50 32 s +2 sf +(:end ) 118962 -38.00 32 s +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 25739.0 m +2 sf +(:translate) 64428 0.00 -1 s +4 sf +( ) 65126 -8.00 32 s +2 sf +(:width) 72963 0.00 -1 s +4 sf +( \() 74600 -8.00 32 s +2 sf +(:size) 79927 0.00 -1 s +( :default) 90027 -9.00 32 s +4 sf +(\)) 90966 0.00 -1 s +2 sf +34544.0 28900.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 32060.0 m +( ) 54190 -27.00 32 s +5 sf +(new\036start) 64850 0.00 -1 s +4 sf +( \037 Type ) 75508 -27.00 32 s +2 sf +(array\036index) 89772 0.00 -1 s +4 sf +( or) 92801 -27.00 32 s +( ) 93479 -28.00 32 s +2 sf +(null) 98185 0.00 -1 s +4 sf +(.) 98891 0.00 -1 s +52832.0 35221.0 m +( ) 54204 -20.00 32 s +5 sf +(width) 60476 0.00 -1 s +4 sf +( \037 Type ) 71156 -19.67 32 s +2 sf +(int32) 77270 0.00 -1 s +4 sf +( or ) 80993 -19.50 32 s +2 sf +(null) 85699 0.00 -1 s +4 sf +(.) 86405 0.00 -1 s +52832.0 39940.0 m +(Draws) 60196 0.00 -1 s +( the block text characters represented by the given ) 116052 -158.78 32 s +2 sf +(sequence) 126869 0.00 -1 s +4 sf +(. ) 128123 -158.00 32 s +2 sf +(:start) 134702 0.00 -1 s +4 sf +( and ) 139872 -158.50 32 s +2 sf +(:end) 145202 0.00 -1 s +4 sf +( de\036) 149352 -159.00 32 s +52832.0 43101.0 m +(fine) 57219 0.00 -1 s +( the elements of the ) 80201 35.00 32 s +5 sf +(sequence) 90544 0.00 -1 s +4 sf +( which are drawn. The given ) 123711 29.17 32 s +5 sf +(x) 124964 0.00 -1 s +4 sf +( and ) 130521 35.00 32 s +5 sf +(y) 131774 0.00 -1 s +4 sf +( specify the left) 149352 34.33 32 s +52832.0 46262.0 m +(baseline) 62079 0.00 -1 s +( position for the first character. The first return value is ) 127381 223.09 32 s +2 sf +(nil) 130518 0.00 -1 s +4 sf +( if all characters) 149352 245.33 32 s +52832.0 49423.0 m +(are successfully) 70776 0.00 32 s +( translated and drawn; otherwise, the index of the first untranslated se\036) 149352 -80.73 32 s +52832.0 52584.0 m +(quence) 60824 0.00 -1 s +( element is returned. The ) 89455 -41.80 32 s +2 sf +(:translate) 101051 0.00 -1 s +4 sf +( function is allowed to return an initial font) 149352 -36.38 32 s +52832.0 55745.0 m +(change.) 61530 0.00 -1 s +( The second return value gives the total pixel width of the characters actually) 149352 70.15 32 s +52832.0 58905.0 m +(drawn,) 60589 0.00 -1 s +( if known.) 72023 -44.00 32 s +52832.0 65182.0 m +(The) 57220 0.00 -1 s +( ) 57986 60.00 32 s +2 sf +(:translate) 69582 0.00 -1 s +4 sf +( function may not return) 97252 60.00 32 s +( a horizontal position change, since ) 138070 49.50 32 s +2 sf +(draw\036im\036) 149352 0.00 -1 s +52832.0 68343.0 m +(age\036glyphs) 65688 0.00 -1 s +4 sf +( does not generate) 85998 -48.00 32 s +( complex output requests.) 114853 -48.67 32 s +52832.0 74620.0 m +(Specifying) 65058 0.00 -1 s +( a ) 67493 -115.00 32 s +2 sf +(:width) 75330 0.00 -1 s +4 sf +( is a hint to improve performance. The ) 118535 -114.75 32 s +2 sf +(:width) 126372 0.00 -1 s +4 sf +( is assumed to be the) 149352 -91.60 32 s +52832.0 77780.0 m +(total) 57848 0.00 -1 s +( pixel width of the character sequence actually drawn. Specifying ) 132348 -2.50 32 s +2 sf +(:width) 140185 0.00 -1 s +4 sf +( permits) 149352 -3.00 32 s +52832.0 80941.0 m +(appending) 64588 0.00 -1 s +( the output) 76554 -53.00 32 s +( of subsequent calls to the same protocol request, provided ) 142927 -48.20 32 s +5 sf +(gcon\036) 149352 0.00 -1 s +52832.0 84102.0 m +(text) 56906 0.00 -1 s +4 sf +( has not been modified in the interim. If ) 100757 -196.00 32 s +2 sf +(:width) 108594 0.00 -1 s +4 sf +( is not specified, appending of subse\036) 149352 -195.67 32 s +52832.0 87263.0 m +(quent) 59102 0.00 -1 s +( output might not occur \(unless ) 94813 -31.50 32 s +2 sf +(:translate) 106409 0.00 -1 s +4 sf +( returns the character width\).) 138831 -23.75 32 s +52832.0 93540.0 m +(The) 57220 0.00 -1 s +( ) 57800 -126.00 32 s +2 sf +(:size) 63127 0.00 -1 s +4 sf +( specifies the element size of the destination buffer given to ) 129814 -114.55 32 s +2 sf +(:translate) 141410 0.00 -1 s +4 sf +( \(either) 149352 -127.00 32 s +52832.0 96701.0 m +(8,) 54949 0.00 -1 s +( 16, or ) 62733 -70.67 32 s +2 sf +(:default) 72136 0.00 -1 s +4 sf +(\). If ) 76930 -70.50 32 s +2 sf +(:default) 86333 0.00 -1 s +4 sf +( is specified, the size will be based on the current font, if) 149352 -64.67 32 s +52832.0 99862.0 m +(known;) 61297 0.00 -1 s +( otherwise, 16 is) 79696 -33.00 32 s +( used.) 86247 -34.00 32 s +5 sf +52832.0 106138.0 m +(drawable) 63493 0.00 -1 s +4 sf +( \037) 66969 -52.00 32 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +4 sf +(.) 97694 0.00 -1 s +5 sf +52832.0 110925.0 m +(x) 54085 0.00 -1 s +4 sf +(,) 54791 0.00 -1 s +( ) 55472 -25.00 32 s +5 sf +(y) 56725 0.00 -1 s +4 sf +( \037 The left baseline position for the character drawn.) 116998 -24.89 32 s +5 sf +52832.0 115711.0 m +(gcontext) 62392 0.00 -1 s +4 sf +( \037 The graphics context for drawing) 104030 -35.00 32 s +( text.) 109638 -36.00 32 s +5 sf +52832.0 120498.0 m +(sequence) 63175 0.00 -1 s +4 sf +( \037) 66703 0.00 32 s +( A sequence of characters or other objects to) 115054 -225.00 32 s +( be translated into font indexes.) 149352 -225.60 32 s +2 sf +52832.0 125284.0 m +(:start) 59411 0.00 -1 s +4 sf +(,) 60117 0.00 -1 s +( ) 60793 -30.00 32 s +2 sf +(:end) 66123 0.00 -1 s +4 sf +( \037 Start and end indexes defining the elements to) 122237 -26.67 32 s +( draw.) 129258 -31.00 32 s +2 sf +52832.0 130071.0 m +(:translate) 64428 0.00 -1 s +4 sf +( \037 A function to translate text to font indexes. Default is ) 131645 106.15 32 s +2 sf +(#'translate\036de\036) 149352 0.00 -1 s +57912.0 133231.0 m +(fault) 63554 0.00 -1 s +4 sf +(.) 64260 0.00 -1 s +2 sf +52832.0 138018.0 m +(:width) 60669 0.00 -1 s +4 sf +( \037 The total) 74932 -27.00 32 s +( total pixel width of the character actually drawn, if known.) 141766 -24.80 32 s +2 sf +52832.0 142804.0 m +(:size) 58159 0.00 -1 s +4 sf +( \037 The element size of the destination buffer given to ) 121018 93.00 32 s +2 sf +(:translate) 132614 0.00 -1 s +4 sf +( \(8, 16, or ) 144652 70.00 32 s +2 sf +(:de\036) 149352 0.00 -1 s +57912.0 145965.0 m +(fault) 63554 0.00 -1 s +4 sf +(\).) 65199 0.00 -1 s +2 sf +34544.0 150752.0 m +(translate\036function) 56173 0.00 -1 s +4 sf +( ) 56839 -40.00 32 s +5 sf +(source source\036start source\036end font) 96927 -40.00 32 s +( destination) 110134 -41.00 32 s +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 153913.0 m +5 sf +(destination\036start) 71488 0.00 -1 s +( ) 72181 -13.00 32 s +2 sf +34544.0 157074.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +52832.0 160234.0 m +( ) 53504 -34.00 32 s +5 sf +( first\036not\036done) 69694 -34.00 32 s +4 sf +( \037 Type ) 80331 -34.00 32 s +2 sf +(array\036index) 94595 0.00 -1 s +4 sf +(.) 95301 0.00 -1 s +52832.0 163395.0 m +( ) 54196 -24.00 32 s +5 sf +(to\036continue) 67048 0.00 -1 s +4 sf +( \037 Type ) 77715 -24.00 32 s +2 sf +(int16) 83829 0.00 -1 s +4 sf +(, ) 85217 -24.00 32 s +2 sf +(font) 90075 0.00 -1 s +4 sf +(, or ) 94495 -24.00 32 s +2 sf +(null) 99201 0.00 -1 s +4 sf +(.) 99907 0.00 -1 s +52832.0 166556.0 m +( ) 54201 -21.50 32 s +5 sf +(current\036width) 69720 0.00 -1 s +4 sf +( \037 Type ) 80394 -21.67 32 s +2 sf +(int32) 86508 0.00 -1 s +4 sf +( or ) 90227 -21.50 32 s +2 sf +(null) 94933 0.00 -1 s +4 sf +(.) 95639 0.00 -1 s +52832.0 171275.0 m +(A) 54869 0.00 -1 s +( function used as the ) 77980 -159.00 32 s +2 sf +(:translate) 89576 0.00 -1 s +4 sf +( argument) 100780 -159.00 32 s +( for text functions. Converts elements of the) 149352 -159.57 32 s +52832.0 174436.0 m +5 sf +(source) 60356 0.00 -1 s +4 sf +( \(sub\)sequence into font indexes for the given ) 111341 -170.88 32 s +5 sf +(font) 115731 0.00 -1 s +4 sf +( and stores them into the ) 143083 -170.50 32 s +5 sf +(desti\036) 149352 0.00 -1 s +52832.0 177597.0 m +(nation) 60044 0.00 -1 s +4 sf +( vector.) 68433 -74.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +130770.0 7925.0 m +(Graphic Operations) 149013 -41.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(6\03679) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( ) 58037 111.00 32 s +/timsps10i 5 declareFont +5 sf +(destination) 70579 0.00 -1 s +4 sf +( vector) 78447 111.00 32 s +( is created automatically by CLX. ) 117905 110.50 32 s +5 sf +(destination) 130447 0.00 -1 s +4 sf +( is guaranteed to) 149352 110.33 32 s +52832.0 25739.0 m +(have) 58160 0.00 -1 s +( room for \(- ) 73727 287.00 32 s +5 sf +(source\036end source\036star) 100112 287.00 32 s +4 sf +(t\) integer elements,) 122393 287.00 32 s +( starting at ) 135871 286.33 32 s +5 sf +(destination\036) 149352 0.00 -1 s +52832.0 28900.0 m +(start) 58007 0.00 -1 s +4 sf +(.) 58713 0.00 -1 s +( Elements of ) 73143 -180.00 32 s +5 sf +(destination) 85685 0.00 -1 s +4 sf +( can be either ) 100794 -180.00 32 s +2 sf +(card8) 107691 0.00 -1 s +4 sf +( or ) 111273 -90.00 32 s +2 sf +(card16) 119581 0.00 -1 s +4 sf +( integers, depending on the) 149352 -179.50 32 s +52832.0 32060.0 m +(context.) 61845 0.00 -1 s +( ) 62439 -112.00 32 s +5 sf +(font) 66829 0.00 -1 s +4 sf +( is the current) 81931 -112.00 32 s +( font, if known, or ) 102609 -112.60 32 s +2 sf +(nil) 105746 0.00 -1 s +4 sf +( otherwise. Starting with the element at) 149352 -112.50 32 s +52832.0 35221.0 m +5 sf +(source\036start) 66470 0.00 -1 s +4 sf +(, ) 67882 0.00 32 s +2 sf +(translate\036function) 89511 0.00 -1 s +4 sf +( should translate as many elements of ) 131595 -135.00 32 s +5 sf +(source) 139119 0.00 -1 s +4 sf +( as) 142041 -135.00 32 s +( possi\036) 149352 -136.00 32 s +52832.0 38382.0 m +(ble \(up) 60747 0.00 32 s +( to the ) 68355 -51.00 32 s +5 sf +(source\036end) 80893 0.00 -1 s +4 sf +( element\) into indexes in the current ) 121994 -51.00 32 s +5 sf +(font) 126384 0.00 -1 s +4 sf +(,) 127090 0.00 -1 s +( and store them into) 149352 -38.75 32 s +52832.0 41543.0 m +5 sf +(destination) 65374 0.00 -1 s +4 sf +(.) 66080 0.00 -1 s +( The) 71250 76.00 32 s +( first return value should be the source index of the first untranslated) 149352 69.17 32 s +52832.0 44704.0 m +(element.) 62471 0.00 -1 s +52832.0 50981.0 m +(The) 57220 0.00 -1 s +( second return value indicates the changes which should be made to the current text) 149352 -147.86 32 s +52832.0 54142.0 m +(output) 60044 0.00 -1 s +( request before translating the remaining ) 105668 -128.00 32 s +5 sf +(source) 113192 0.00 -1 s +4 sf +( elements. If) 127091 -64.00 32 s +( no further elements) 149352 -128.67 32 s +52832.0 57302.0 m +(need) 58160 0.00 -1 s +( to be translated, the second return value should be ) 114648 -143.10 32 s +2 sf +(nil) 117785 0.00 -1 s +4 sf +(. If a horizontal) 134704 -159.00 32 s +( motion is re\036) 149352 -159.67 32 s +52832.0 60463.0 m +(quired) 60041 0.00 -1 s +( before further translation, the second) 101408 -189.60 32 s +( return value should be the change in x posi\036) 149352 -237.56 32 s +52832.0 63624.0 m +(tion.) 57928 0.00 -1 s +( If a) 62417 -27.00 32 s +( font change is required for further translation, the second return value should) 149352 -50.00 32 s +52832.0 66785.0 m +(be) 55496 0.00 -1 s +( the new) 64993 -32.00 32 s +( font.) 70917 -33.00 32 s +52832.0 73062.0 m +(If) 54710 0.00 -1 s +( known, the pixel width of the translated text can be returned as the third value; this can) 149352 -250.88 32 s +52832.0 76223.0 m +(allow) 59101 0.00 -1 s +( for appending of subsequent output) 100549 154.00 32 s +( to the same protocol request, if no overall) 149352 134.25 32 s +52832.0 79383.0 m +(width) 59259 0.00 -1 s +( has been specified at the) 87410 -28.00 32 s +( higher level. ) 102842 -28.67 32 s +5 sf +52832.0 85660.0 m +(source) 60356 0.00 -1 s +4 sf +( \037 A sequence of characters or other objects to be translated. ) 130183 -25.83 32 s +5 sf +52832.0 90447.0 m +(source\036start) 66470 0.00 -1 s +4 sf +( \037 An array\036index specifying the first ) 110266 -23.86 32 s +5 sf +(source) 117790 0.00 -1 s +4 sf +( element to be translated.) 145988 -23.50 32 s +5 sf +52832.0 95233.0 m +(source\036end) 65370 0.00 -1 s +4 sf +( \037 An array\036index specifying the end of the) 113760 -201.00 32 s +( ) 114264 -202.00 32 s +5 sf +(source) 121788 0.00 -1 s +4 sf +( subsequence to be trans\036) 149352 -201.50 32 s +57912.0 98394.0 m +(lated.) 64103 0.00 -1 s +5 sf +52832.0 103180.0 m +(font) 57222 0.00 -1 s +4 sf +( \037 The font indexed by translated ) 96416 -32.71 32 s +5 sf +(source) 103940 0.00 -1 s +4 sf +( elements.) 115350 -33.00 32 s +5 sf +52832.0 107967.0 m +(destination) 65374 0.00 -1 s +4 sf +( \037 A vector where translated ) 99211 -28.67 32 s +5 sf +(source) 106735 0.00 -1 s +4 sf +( elements are stored.) 129845 -28.67 32 s +5 sf +52832.0 112753.0 m +(destination\036start) 71488 0.00 -1 s +4 sf +( \037 An array\036index) 94233 451.00 32 s +( specifying the position to begin storing trans\036) 149352 450.43 32 s +57912.0 115914.0 m +(lated ) 64103 0.00 32 s +5 sf +(source) 71627 0.00 -1 s +4 sf +( elements.) 82973 -97.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Graphic Operations) 38563 -41.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(6\03680) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s10.ps +++ cmucl-20a-20090928/own-work/clx/s10.ps @@ -0,0 +1,1968 @@ +%!PS-Adobe-2.0 +%%Title: s10.ps +%%Pages: 4 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps18 /ILtims 18 map + /timsps10b /ILtimsb 10 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(10\036107) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 7 declareFont +7 sf +20410.0 39376.0 m +91620.0 39466.0 m +(CURSORS) 115887 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +144272 39315 av +146476 37028 as +146476 25588 as +144272 23300 as +139132 23300 as +139132 23300 as +140233 26351 as +140233 26351 as +143171 26351 as +143171 36265 as +140233 36265 as +140233 36265 as +139132 39315 as +139132 39315 as +144272 39315 as +fp +newpath +144272 39315 av +146476 37028 as +146476 25588 as +144272 23300 as +139132 23300 as +[] 0 setdash +dp +newpath +0.0 sw +139132 23300 av +140233 26351 as +newpath +270.0 sw +140233 26351 av +143171 26351 as +143171 36265 as +140233 36265 as +[] 0 setdash +dp +newpath +0.0 sw +140233 36265 av +139132 39315 as +newpath +270.0 sw +139132 39315 av +144272 39315 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +0.0 sw +/drawmode PL_SET def +139132 39315 av +140233 36265 as +140233 36265 as +140233 26351 as +140233 26351 as +139132 23300 as +139132 23300 as +136929 25588 as +136929 37028 as +139132 39315 as +fp +newpath +139132 39315 av +140233 36265 as +newpath +270.0 sw +140233 36265 av +140233 26351 as +[] 0 setdash +dp +newpath +0.0 sw +140233 26351 av +139132 23300 as +newpath +270.0 sw +139132 23300 av +136929 25588 as +136929 37028 as +139132 39315 as +[] 0 setdash +dp +0.0 sw +newpath +135827 43891 av +135827 43891 as +newpath +135827 23300 av +135827 23300 as +newpath +147577 23300 av +147577 23300 as +newpath +147577 43891 av +147577 43891 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +134900 39315 av +134900 23300 as +131963 23300 as +129025 26351 as +129025 27876 as +131596 27876 as +131596 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +128658 23300 av +128658 23300 as +newpath +128658 43891 av +128658 43891 as +newpath +136369 43891 av +136369 43891 as +newpath +136369 23300 av +136369 23300 as +149351.0 39376.0 m +7 sf +/timsps10 5 declareFont +5 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 6 declareFont +6 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(10.1) 57771 0.00 -1 s +60121.0 h +() 60121 0.00 -1 s +5 sf +(A ) 62817 -47.00 32 s +/timsps10i 4 declareFont +4 sf +(cursor) 70186 0.00 -1 s +5 sf +( is a) 74639 -47.00 32 s +( visible shape that appears at the current position of the pointer de\036) 149352 -43.58 32 s +52832.0 50032.0 m +(vice.) 58239 0.00 -1 s +( The) 63435 102.00 32 s +( cursor shape moves with the pointer to provide continuous feedback to the) 149352 93.00 32 s +52832.0 53193.0 m +(user) 57533 0.00 -1 s +( about the current location) 86836 -80.00 32 s +( of the pointer. Each window can have a cursor attribute) 149352 -72.50 32 s +52832.0 56354.0 m +(that) 57064 0.00 -1 s +( defines the appearance of the pointer cursor when the pointer position lies within) 149352 15.69 32 s +52832.0 59515.0 m +(the) 56280 0.00 -1 s +( window. See) 71436 -64.00 32 s +( ) 72077 -65.00 32 s +2 sf +(window\036cursor) 90260 0.00 -1 s +5 sf +(.) 90966 0.00 -1 s +52832.0 65792.0 m +(A) 54869 0.00 -1 s +( cursor image is composed of a source bitmap, a mask bitmap, a ) 125069 -213.00 32 s +4 sf +(hot spot) 133872 -213.00 32 s +5 sf +(, a) 136324 -213.00 32 s +( foreground) 149352 -214.00 32 s +52832.0 68953.0 m +(color,) 59336 0.00 -1 s +( and a background color. Either 1\036bit pixmaps or font glyphs can be) 132583 -264.00 32 s +( used to specify) 149352 -288.67 32 s +52832.0 72113.0 m +(source) 60197 0.00 -1 s +( and mask bitmaps. The source bitmap identifies the foreground and background) 149352 -159.82 32 s +52832.0 75274.0 m +(pixels) 59573 0.00 -1 s +( of the cursor image; the mask bitmap identifies which source pixels are actually) 149352 -80.92 32 s +52832.0 78435.0 m +(drawn.) 60589 0.00 -1 s +( The mask bitmap thus allows a cursor to assume any shape. The) 131407 -192.50 32 s +( hot spot defines) 149352 -210.67 32 s +52832.0 81596.0 m +(the position) 66080 0.00 32 s +( within the cursor image that is displayed at the pointer position.) 138379 -25.55 32 s +52832.0 87873.0 m +(In) 55182 0.00 -1 s +( CLX, a cursor is represented by a ) 92141 -288.00 32 s +2 sf +(cursor) 99978 0.00 -1 s +5 sf +( object. This section describes the CLX func\036) 149352 -246.43 32 s +52832.0 91034.0 m +(tions) 58320 0.00 -1 s +( to:) 61999 -6.00 32 s +/symbb8 8 declareFont +8 sf +52832.0 97581.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Create) 65276 0.00 -1 s +( and free cursor objects ) 92185 -25.00 32 s +8 sf +52832.0 104129.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Change) 66533 0.00 -1 s +( cursor colors ) 82499 -33.00 32 s +8 sf +52832.0 110676.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Inquire) 66060 0.00 -1 s +( the best cursor size ) 88934 -17.80 32 s +8 sf +52832.0 117224.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Access) 65904 0.00 -1 s +( cursor attributes) 84836 -16.00 32 s +( ) 85525 -17.00 32 s +20320.0 124223.0 m +0.0 0.0 m +newpath +20455 122599 av +148878 122597 as +[] 0 setdash +dp +149352.0 124223.0 m +6 sf +20320.0 127610.0 m +(Creating) 33108 0.00 -1 s +( ) 33980 25.00 32 s +52832.0 h +2 sf +(10.2) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( following paragraphs describe the CLX functions used to create) 149352 1355.00 32 s +6 sf +20320.0 131335.0 m +(Cursors) 31981 0.00 -1 s +49378.0 h +5 sf +52832.0 h +(and) 56907 0.00 -1 s +( free ) 62569 -67.00 32 s +2 sf +(cursor) 70406 0.00 -1 s +5 sf +( objects.) 79812 0.00 32 s +2 sf +34544.0 137612.0 m +(create\036cursor) 50682 0.00 -1 s +5 sf +( &key ) 58250 -57.00 32 s +2 sf +(:source :mask :x :y :foreground) 96266 -57.00 32 s +( :background) 112437 -58.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +34544.0 140772.0 m +52832.0 h +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 143933.0 m +( cursor \037 ) 64730 -32.67 32 s +5 sf +(Type ) 71202 -33.00 32 s +2 sf +(cursor) 79039 0.00 -1 s +5 sf +(.) 79745 0.00 -1 s +52832.0 148652.0 m +(Creates) 61294 0.00 -1 s +( and returns a cursor. ) 85319 -85.00 32 s +2 sf +(:x) 87669 0.00 -1 s +5 sf +( and ) 92986 -85.00 32 s +2 sf +(:y) 95336 0.00 -1 s +5 sf +( define the position of the hot spot relative to the) 149352 -84.90 32 s +52832.0 151813.0 m +(origin) 59572 0.00 -1 s +( of the) 66576 -103.00 32 s +( ) 67178 -104.00 32 s +2 sf +(:source. :foreground) 91840 -103.00 32 s +5 sf +( and ) 97120 -103.50 32 s +2 sf +(:background) 112643 0.00 -1 s +5 sf +( colors must be specified, even if) 149352 -86.33 32 s +52832.0 154974.0 m +(the) 56280 0.00 -1 s +( server only has a ) 76630 -21.00 32 s +2 sf +(:static\036gray) 90418 0.00 -1 s +5 sf +( or ) 94138 -21.00 32 s +2 sf +(:gray\036scale) 107301 0.00 -1 s +5 sf +( screen. The ) 121677 -14.33 32 s +2 sf +(:source) 130453 0.00 -1 s +5 sf +(, ) 131843 -22.00 32 s +2 sf +(:x) 134193 0.00 -1 s +5 sf +(, and ) 140343 -21.50 32 s +2 sf +(:y) 142693 0.00 -1 s +5 sf +( argu\036) 149352 0.00 32 s +52832.0 158135.0 m +(ments) 59573 0.00 -1 s +( must also be) 74314 -25.00 32 s +( specified.) 85886 -26.00 32 s +52832.0 164411.0 m +(The) 57220 0.00 -1 s +( cursor image is drawn by drawing a pixel from the ) 113211 -231.91 32 s +2 sf +(:source) 121987 0.00 -1 s +5 sf +( bitmap at every position) 149352 -173.75 32 s +52832.0 167572.0 m +(where) 59725 0.00 -1 s +( the corresponding bit in the ) 90680 -249.00 32 s +2 sf +(:mask) 98047 0.00 -1 s +5 sf +( bitmap is 1. If the corresponding ) 134801 -213.43 32 s +2 sf +(:source) 143577 0.00 -1 s +5 sf +( bit is) 149352 -249.00 32 s +52832.0 170733.0 m +(1,) 54949 0.00 -1 s +( a pixel) 63211 -23.00 32 s +( is drawn in the ) 81199 -23.60 32 s +2 sf +(:foreground) 95776 0.00 -1 s +5 sf +( color; otherwise, a pixel is drawn in the ) 141672 -20.89 32 s +2 sf +(:back\036) 149352 0.00 -1 s +52832.0 173894.0 m +(ground) 61614 0.00 -1 s +5 sf +( color. If the ) 75564 -176.00 32 s +2 sf +(:mask) 82931 0.00 -1 s +5 sf +( is omitted, all ) 99258 -132.00 32 s +2 sf +(:source) 108034 0.00 -1 s +5 sf +( pixels are drawn. If given, the ) 141985 -176.57 32 s +2 sf +(:mask) 149352 0.00 -1 s +5 sf +52832.0 177055.0 m +(must) 58320 0.00 -1 s +( be the same size as the ) 85187 -24.71 32 s +2 sf +(:source) 93963 0.00 -1 s +5 sf +(.) 94669 0.00 -1 s +52832.0 183332.0 m +(An) 56280 0.00 -1 s +( X server may not be) 79014 -171.00 32 s +( able to support every cursor size. A server is free to modify any) 149352 -171.54 32 s +52832.0 186492.0 m +(component) 65372 0.00 -1 s +( of the cursor to satisfy hardware or software limitations.) 129280 -21.67 32 s +52832.0 192769.0 m +(The) 57220 0.00 -1 s +( ) 57683 -243.00 32 s +2 sf +(:source) 66459 0.00 -1 s +5 sf +( and ) 71460 -243.00 32 s +2 sf +(:mask) 78827 0.00 -1 s +5 sf +( can be freed immediately after the cursor is created.) 135878 -243.00 32 s +( Subsequent) 149352 -244.00 32 s +52832.0 195930.0 m +(drawing) 62078 0.00 -1 s +( in the ) 69743 -32.00 32 s +2 sf +(:source) 78519 0.00 -1 s +5 sf +( or ) 82249 -16.00 32 s +2 sf +(:mask) 89616 0.00 -1 s +5 sf +( pixmap has an undefined effect on the) 133200 -32.00 32 s +( cursor.) 141630 -33.00 32 s +2 sf +52832.0 202207.0 m +(:source) 61608 0.00 -1 s +5 sf +( \037 The source) 78202 -33.00 32 s +( pixmap. This argument is required.) 118398 -33.60 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Cursors) 27611 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(10\036108) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:mask) 60199 0.00 -1 s +/timsps10 5 declareFont +5 sf +( \037) 63695 -32.00 32 s +( The mask pixmap.) 85231 -32.67 32 s +2 sf +52832.0 27364.0 m +(:x) 55182 0.00 -1 s +5 sf +(,) 55888 0.00 -1 s +( ) 56571 -23.00 32 s +2 sf +(:y) 58921 0.00 -1 s +5 sf +( \037 The hot spot position in the ) 94642 -23.00 32 s +2 sf +(:source) 103418 0.00 -1 s +5 sf +(. This argument is) 123729 -23.00 32 s +( required.) 134518 -24.00 32 s +2 sf +52832.0 32151.0 m +(:foreground) 67409 0.00 -1 s +5 sf +( \037 A ) 74554 56.00 32 s +2 sf +(color) 80666 0.00 -1 s +5 sf +( object specifying the foreground color. This argument is re\036) 149352 56.22 32 s +57912.0 35312.0 m +(quired.) 65827 0.00 -1 s +2 sf +52832.0 40098.0 m +(:background) 68355 0.00 -1 s +5 sf +( \037 A ) 75068 -88.00 32 s +2 sf +(color) 81180 0.00 -1 s +5 sf +( object specifying the background color. This) 131830 -88.00 32 s +( argument is re\036) 149352 -88.67 32 s +57912.0 43259.0 m +(quired.) 65827 0.00 -1 s +2 sf +34544.0 48046.0 m +(create\036glyph\036cursor) 58365 0.00 -1 s +5 sf +( &key ) 65931 -58.00 32 s +2 sf +(:source\036font :source\036char :mask\036font) 110165 -58.00 32 s +( ) 110812 -59.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 51206.0 m +(\() 53771 0.00 -1 s +2 sf +(:mask\036char) 67563 0.00 -1 s +5 sf +( 0\)) 70540 -79.00 32 s +2 sf +( :foreground :background) 101894 -79.00 32 s +5 sf +34544.0 54367.0 m +52832.0 h +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +/timsps10i 4 declareFont +4 sf +52832.0 57528.0 m +( cursor \037 ) 64730 -32.67 32 s +5 sf +(Type ) 71202 -33.00 32 s +2 sf +(cursor) 79039 0.00 -1 s +5 sf +(.) 79745 0.00 -1 s +52832.0 62247.0 m +(Creates) 61294 0.00 -1 s +( and returns a cursor defined by font glyphs. The source bitmap) 130561 -215.00 32 s +( is defined by the) 149352 -161.75 32 s +52832.0 65408.0 m +2 sf +(:source\036font) 67405 0.00 -1 s +5 sf +( and ) 73324 216.00 32 s +2 sf +(:source\036char) 88525 0.00 -1 s +5 sf +(. The mask bitmap is defined by the ) 131191 189.38 32 s +2 sf +(:mask\036font) 144355 0.00 -1 s +5 sf +( and) 149352 216.00 32 s +52832.0 68569.0 m +2 sf +(:mask\036char) 66624 0.00 -1 s +5 sf +(.) 67330 0.00 -1 s +( It is an error if the ) 87870 -189.00 32 s +2 sf +(:source\036char) 103071 0.00 -1 s +5 sf +( and ) 108369 -94.50 32 s +2 sf +(:mask\036char) 122161 0.00 -1 s +5 sf +( are not valid indexes for) 149352 -188.60 32 s +52832.0 71730.0 m +(the) 56280 0.00 -1 s +( ) 56926 -60.00 32 s +2 sf +(:source\036font) 71499 0.00 -1 s +5 sf +( and ) 76866 -60.00 32 s +2 sf +(:mask\036font) 90030 0.00 -1 s +5 sf +(, respectively. The) 110816 -30.00 32 s +( hot spot position is defined by the) 149352 -60.57 32 s +52832.0 74890.0 m +(\177character) 64423 0.00 -1 s +( origin" of the source glyph, that is, the position [- ) 122435 -38.50 32 s +4 sf +(char\036left\036bearing) 141870 0.00 -1 s +5 sf +(, ) 143240 -42.00 32 s +4 sf +(char\036) 149352 0.00 -1 s +52832.0 78051.0 m +(ascent) 60042 0.00 -1 s +5 sf +(] relative) 70148 0.00 32 s +( to the upper left corner) 96567 -29.00 32 s +( of the source glyph bitmap.) 128084 -29.60 32 s +52832.0 84328.0 m +(Source) 60668 0.00 -1 s +( and mask bits are compared after aligning the character origins of the source and) 149352 -225.64 32 s +52832.0 87489.0 m +(mask) 58789 0.00 -1 s +( glyphs. The source and mask glyphs need not have the same size) 130952 -145.75 32 s +( or character ori\036) 149352 -159.67 32 s +52832.0 90650.0 m +(gin) 56438 0.00 -1 s +( position.) 66924 -20.00 32 s +( If the ) 74306 -20.67 32 s +2 sf +(:mask\036font) 87470 0.00 -1 s +5 sf +( is omitted, all source pixels are drawn.) 131628 -17.57 32 s +52832.0 96926.0 m +(An) 56280 0.00 -1 s +( X server) 66260 -181.00 32 s +( may not be able to support every cursor size. A server is free to modify any) 149352 -170.19 32 s +52832.0 100087.0 m +(component) 65372 0.00 -1 s +( of the cursor to satisfy hardware or software limitations.) 129280 -21.67 32 s +52832.0 106364.0 m +(Either) 59727 0.00 -1 s +( of the ) 67574 -23.00 32 s +2 sf +(:source\036font) 82147 0.00 -1 s +5 sf +( or ) 85862 -23.50 32 s +2 sf +(:mask\036font) 99026 0.00 -1 s +5 sf +( can be closed after the cursor is created.) 144701 -20.63 32 s +2 sf +52832.0 112641.0 m +(:source\036font) 67405 0.00 -1 s +5 sf +( \037 The source font. This is a required argument.) 122259 -26.89 32 s +2 sf +52832.0 117427.0 m +(:source\036char) 68033 0.00 -1 s +5 sf +( \037 An index specifying a glyph in the source font. This is) 131274 -197.08 32 s +( a required argu\036) 149352 -215.67 32 s +57912.0 120588.0 m +(ment.) 64261 0.00 -1 s +2 sf +52832.0 125374.0 m +(:mask\036font) 65996 0.00 -1 s +5 sf +( \037 The mask font.) 87163 -18.75 32 s +4 sf +( ) 87850 -19.00 32 s +2 sf +52832.0 130161.0 m +(:mask\036char) 66624 0.00 -1 s +5 sf +( \037 An index specifying a glyph in the mask font.) 122214 -29.70 32 s +2 sf +52832.0 134947.0 m +(:foreground) 67409 0.00 -1 s +5 sf +( \037 A ) 73673 -237.67 32 s +2 sf +(color) 79785 0.00 -1 s +5 sf +( object specifying the foreground color. This is a required argu\036) 149352 -213.80 32 s +57912.0 138108.0 m +(ment.) 64261 0.00 -1 s +2 sf +52832.0 142895.0 m +(:background) 68355 0.00 -1 s +5 sf +( \037 A ) 74891 -147.00 32 s +2 sf +(color) 81003 0.00 -1 s +5 sf +( object specifying the background color. This is a required ar\036) 149352 -132.00 32 s +57912.0 146056.0 m +(gument.) 67083 0.00 -1 s +4 sf +( ) 67733 -56.00 32 s +2 sf +34544.0 150842.0 m +(free\036cursor) 48018 0.00 -1 s +5 sf +( ) 48646 -78.00 32 s +4 sf +(cursor) 56015 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 155561.0 m +(Destroys) 62863 0.00 -1 s +( the ) 67329 -197.00 32 s +2 sf +(cursor) 75166 0.00 -1 s +5 sf +( object. Cursor server resources are) 113986 -197.00 32 s +( freed when no other references) 149352 -164.67 32 s +52832.0 158722.0 m +(remain.) 61373 0.00 -1 s +4 sf +52832.0 164998.0 m +(cursor) 60201 0.00 -1 s +5 sf +( \037 A ) 67085 -31.00 32 s +2 sf +(cursor) 74922 0.00 -1 s +5 sf +( object.) 83199 -31.00 32 s +20320.0 170507.0 m +0.0 0.0 m +newpath +20455 168883 av +148878 168881 as +[] 0 setdash +dp +149352.0 170507.0 m +/timsps12b 6 declareFont +6 sf +20320.0 173894.0 m +(Cursor) 30664 0.00 -1 s +52832.0 h +2 sf +(10.3) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( following paragraphs describe the CLX functions used to operate) 138357 -41.00 32 s +6 sf +20320.0 177281.0 m +(Functions) 34619 0.00 -1 s +52832.0 h +5 sf +(on) 55654 0.00 -1 s +( ) 56304 -56.00 32 s +2 sf +(cursor) 64141 0.00 -1 s +5 sf +( objects.) 73491 -56.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +141720.0 8195.0 m +(Cursors) 149011 0.00 -1 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(10\036109) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(query\036best\036cursor ) 56818 -61.00 32 s +/timsps10i 4 declareFont +4 sf +(width height display) 79587 -60.50 32 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +34544.0 25739.0 m +52832.0 h +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( width) 59769 -41.00 32 s +5 sf +(,) 60475 0.00 -1 s +4 sf +( height \037 ) 72033 -41.00 32 s +5 sf +(Type ) 78497 -41.00 32 s +2 sf +(card16) 86805 0.00 -1 s +5 sf +(.) 87511 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the cursor size closest to the requested ) 104770 -189.00 32 s +4 sf +(width) 111042 0.00 -1 s +5 sf +( and ) 116151 -189.00 32 s +4 sf +(height) 123205 0.00 -1 s +5 sf +( that is best suited to the) 149352 -188.83 32 s +52832.0 36779.0 m +(display.) 61690 0.00 -1 s +( The ) 67135 -177.50 32 s +4 sf +(width) 73407 0.00 -1 s +5 sf +( and ) 78539 -177.50 32 s +4 sf +(height) 85593 0.00 -1 s +5 sf +( returned define the largest cursor size supported by the X) 149352 -159.80 32 s +52832.0 39940.0 m +(server.) 60431 0.00 -1 s +( Clients should always be prepared to limit cursor sizes to those supported by the) 149352 -176.36 32 s +52832.0 43101.0 m +(server.) 60431 0.00 -1 s +4 sf +52832.0 49378.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67875 -28.67 32 s +2 sf +(display) 76501 0.00 -1 s +5 sf +( object.) 84780 -29.00 32 s +4 sf +52832.0 54164.0 m +(width) 59104 0.00 -1 s +5 sf +(,) 59810 0.00 -1 s +4 sf +( height) 67570 0.00 32 s +5 sf +( \037 The requested cursor size.) 101108 -32.00 32 s +( ) 101781 -33.00 32 s +2 sf +34544.0 58951.0 m +(recolor\036cursor) 51938 0.00 -1 s +5 sf +( ) 52553 -91.00 32 s +4 sf +(cursor foreground) 73236 -91.00 32 s +( background) 87331 -92.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 63669.0 m +(Changes) 62551 0.00 -1 s +( the color of the specified ) 93043 171.00 32 s +4 sf +(cursor) 100412 0.00 -1 s +5 sf +(. If the cursor is displayed on a screen, the) 149352 152.11 32 s +52832.0 66830.0 m +(change) 60824 0.00 -1 s +( is visible immediately.) 87037 -41.67 32 s +4 sf +52832.0 73107.0 m +(cursor) 60201 0.00 -1 s +5 sf +( \037 A ) 67085 -31.00 32 s +2 sf +(cursor) 74922 0.00 -1 s +5 sf +( object.) 83199 -31.00 32 s +4 sf +52832.0 77893.0 m +(foreground) 65531 0.00 -1 s +5 sf +( \037 A ) 72394 -38.00 32 s +2 sf +(color) 78506 0.00 -1 s +5 sf +( object specifying the new foreground color.) 128355 -37.83 32 s +4 sf +52832.0 82680.0 m +(background) 66313 0.00 -1 s +5 sf +( \037 A ) 73150 -46.67 32 s +2 sf +(color) 79262 0.00 -1 s +5 sf +( object specifying the new background color.) 129845 -46.50 32 s +20320.0 88189.0 m +0.0 0.0 m +newpath +20455 86565 av +148878 86563 as +[] 0 setdash +dp +149352.0 88189.0 m +/timsps12b 6 declareFont +6 sf +20320.0 91575.0 m +(Cursor) 30664 0.00 -1 s +52832.0 h +2 sf +(10.4) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( complete set of cursor attributes is discussed in the following) 149352 1524.30 32 s +2 sf +6 sf +20320.0 94962.0 m +(Attributes) 35176 0.00 -1 s +52832.0 h +5 sf +(paragraphs.) 65917 0.00 -1 s +2 sf +34544.0 101239.0 m +(cursor\036display) 51946 0.00 -1 s +5 sf +( ) 52575 -77.00 32 s +4 sf +(cursor) 59944 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 104400.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 107561.0 m +( display ) 63036 -22.00 32 s +5 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +5 sf +(. ) 83041 -22.00 32 s +52832.0 112279.0 m +(Returns) 61610 0.00 -1 s +( the ) 66416 -27.00 32 s +2 sf +(display) 75042 0.00 -1 s +5 sf +( object associated with the specified ) 116260 -27.00 32 s +4 sf +(cursor) 123629 0.00 -1 s +5 sf +(.) 124335 0.00 -1 s +( ) 125013 -28.00 32 s +4 sf +52832.0 118556.0 m +(cursor \037) 63389 -27.00 32 s +( ) 64069 -26.00 32 s +5 sf +(A) 66106 0.00 -1 s +( ) 66785 -27.00 32 s +2 sf +(cursor) 74622 0.00 -1 s +5 sf +( object. ) 83583 -26.50 32 s +2 sf +34544.0 123342.0 m +(cursor\036equal) 49906 0.00 -1 s +( ) 50557 -55.00 32 s +4 sf +(cursor\0361) 60276 0.00 -1 s +5 sf +( ) 60927 -55.00 32 s +4 sf +(cursor\0362) 70646 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 128061.0 m +(Returns) 61610 0.00 -1 s +( true if the two arguments refer to the same server) 115553 -232.00 32 s +( resource and ) 130605 -232.67 32 s +2 sf +(nil) 133742 0.00 -1 s +5 sf +( if they do not.) 149352 -232.50 32 s +4 sf +52832.0 134338.0 m +(cursor\0361) 62551 0.00 -1 s +5 sf +(,) 63257 0.00 -1 s +( ) 63931 -32.00 32 s +4 sf +(cursor\0362 ) 74324 -32.00 32 s +5 sf +(\037 ) 77820 -32.00 32 s +2 sf +(cursor) 85657 0.00 -1 s +5 sf +( objects.) 95030 -33.00 32 s +2 sf +34544.0 139124.0 m +(cursor\036id) 45673 0.00 -1 s +5 sf +( ) 46321 -58.00 32 s +4 sf +(cursor) 53690 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 142285.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 145446.0 m +( id ) 57067 -26.00 32 s +5 sf +(\037 Type ) 67049 -25.50 32 s +2 sf +(resource\036id.) 81390 0.00 -1 s +5 sf +( ) 82070 -26.00 32 s +52832.0 150165.0 m +(Returns) 61610 0.00 -1 s +( the unique resource ID that has been assigned to the specified ) 132268 -28.83 32 s +4 sf +(cursor) 139637 0.00 -1 s +5 sf +(.) 140343 0.00 -1 s +4 sf +52832.0 156441.0 m +(cursor) 60201 0.00 -1 s +( ) 60876 -31.00 32 s +5 sf +(\037 A ) 67085 -31.00 32 s +2 sf +(cursor) 74922 0.00 -1 s +5 sf +( object.) 83199 -31.00 32 s +2 sf +34544.0 161228.0 m +(cursor\036p) 44889 0.00 -1 s +5 sf +( ) 45531 -64.00 32 s +4 sf +(cursor) 52900 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 164389.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 167550.0 m +( cursor\036p) 63911 -26.00 32 s +5 sf +( \037 Type ) 74573 -25.67 32 s +2 sf +(boolean) 83981 0.00 -1 s +5 sf +(. ) 85367 -26.00 32 s +52832.0 172268.0 m +(Returns true if the argument is a ) 89727 -25.00 32 s +2 sf +(cursor) 97564 0.00 -1 s +5 sf +( object) 105142 -24.00 32 s +( and ) 110580 -24.50 32 s +2 sf +(nil) 113717 0.00 -1 s +5 sf +( otherwise.) 126074 -25.00 32 s +2 sf +34544.0 178545.0 m +(cursor\036plist) 48494 0.00 -1 s +5 sf +( ) 49166 -34.00 32 s +4 sf +(cursor) 56535 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 181706.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 184867.0 m +( plist) 59093 -6.00 32 s +5 sf +( \037 A property list.) 80467 -6.00 32 s +52832.0 189586.0 m +(Returns) 61610 0.00 -1 s +( and) 66238 -153.00 32 s +( \(with ) 73298 -153.50 32 s +2 sf +(setf) 77527 0.00 -1 s +5 sf +(\) sets the property list for the specified ) 120499 -153.50 32 s +4 sf +(cursor) 127868 0.00 -1 s +5 sf +(. This function pro\036) 149352 -153.67 32 s +52832.0 192746.0 m +(vides) 58789 0.00 -1 s +( a hook where extensions can add data.) 102548 -40.86 32 s +4 sf +52832.0 199023.0 m +(cursor) 60201 0.00 -1 s +( ) 60876 -31.00 32 s +5 sf +(\037 A ) 67085 -31.00 32 s +2 sf +(cursor) 74922 0.00 -1 s +5 sf +( object.) 83199 -31.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Cursors) 27611 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(10\036110) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/types.ps +++ cmucl-20a-20090928/own-work/clx/types.ps @@ -0,0 +1,1069 @@ +%!PS-Adobe-2.0 +%%Title: types.ps +%%Pages: 2 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 5 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /helvps18b /ILhelvpsb 18 map + /timsps8i /ILtimsi 8 map + /timsps10b /ILtimsb 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Times-Italic /ILhelvpsb ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 5 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +136821.0 8737.0 m +(Types ) 142638 -26.00 32 s +( Index) 148200 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036227) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +149013 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/helvps18b 4 declareFont +4 sf +20320.0 29261.0 m +(Types) 33303 0.00 -1 s +20320.0 41860.0 m +(A) 23987 0.00 -1 s +3 sf +20320.0 47933.0 m +(xlib:alist,) 30903 0.00 -1 s +( 1\03612) 36757 -24.00 32 s +20320.0 52674.0 m +(xlib:angle,) 32312 0.00 -1 s +( 1\03612) 38111 -79.00 32 s +20320.0 57416.0 m +(xlib:arc\036seq,) 34346 0.00 -1 s +( 1\03612) 40166 -58.00 32 s +20320.0 62157.0 m +(xlib:array\036index,) 39204 0.00 -1 s +( 1\03612) 44998 -84.00 32 s +4 sf +20320.0 73423.0 m +(B) 23708 0.00 -1 s +3 sf +20320.0 79497.0 m +(xlib:bit\036gravity,) 38111 0.00 -1 s +( 1\03612) 43936 -53.00 32 s +20320.0 84238.0 m +(xlib:bitmap,) 34038 0.00 -1 s +( 1\03612) 39850 -66.00 32 s +20320.0 88979.0 m +(xlib:bitmap\036format,) 42498 0.00 -1 s +( 1\03613) 48316 -60.00 32 s +20320.0 93721.0 m +(xlib:boole\036constant,) 42814 0.00 -1 s +( 1\03614) 48587 -105.00 32 s +20320.0 98462.0 m +(xlib:boolean,) 35134 0.00 -1 s +( 1\03614) 40911 -101.00 32 s +4 sf +20320.0 109728.0 m +(C) 23987 0.00 -1 s +3 sf +20320.0 115802.0 m +(xlib:card16,) 33878 0.00 -1 s +( 1\03614) 39669 -87.00 32 s +20320.0 120543.0 m +(xlib:card29, 1\03614) 39669 -87.00 32 s +20320.0 125284.0 m +(xlib:card32, 1\03614) 39669 -87.00 32 s +20320.0 130026.0 m +(xlib:card8,) 32467 0.00 -1 s +( 1\03614) 38269 -76.00 32 s +20320.0 134767.0 m +(xlib:color,) 31998 0.00 -1 s +( 1\03614) 37818 -58.00 32 s +20320.0 139508.0 m +(xlib:colormap,) 36857 0.00 -1 s +( 1\03614) 42649 -86.00 32 s +20320.0 144250.0 m +(xlib:cursor,) 33251 0.00 -1 s +( 1\03614) 39082 -47.00 32 s +4 sf +20320.0 155516.0 m +(D) 23987 0.00 -1 s +3 sf +20320.0 161589.0 m +(xlib:device\036event\036mask,) 47512 0.00 -1 s +( 1\03614) 53261 -129.00 32 s +20320.0 166331.0 m +(xlib:device\036event\036mask\036class,) 53937 0.00 -1 s +( 1\03614) 59696 -119.00 32 s +20320.0 171072.0 m +(xlib:display,) 34352 0.00 -1 s +( 1\03615) 40166 -64.00 32 s +20320.0 175813.0 m +(xlib:draw\036direction,) 42809 0.00 -1 s +( 1\03615) 48610 -77.00 32 s +20320.0 180555.0 m +(xlib:drawable,) 36541 0.00 -1 s +( 1\03615) 42333 -86.00 32 s +4 sf +20320.0 191821.0 m +(E) 23708 0.00 -1 s +3 sf +20320.0 197895.0 m +(xlib:error\036key,) 36695 0.00 -1 s +( 1\03615) 42514 -59.00 32 s +20320.0 202636.0 m +(xlib:event\036key,) 37326 0.00 -1 s +( 1\03615) 43101 -103.00 32 s +4 sf +88234.0 29261.0 m +3 sf +35244.0 v +(xlib:event\036mask,) 107122 0.00 -1 s +( 1\03615) 112912 -88.00 32 s +88234.0 39918.0 m +(xlib:event\036mask\036class,) 113547 0.00 -1 s +( 1\03616) 119346 -79.00 32 s +4 sf +88234.0 50913.0 m +(F) 91337 0.00 -1 s +3 sf +88234.0 56896.0 m +(xlib:font,) 98659 0.00 -1 s +( 1\03616) 104490 -47.00 32 s +88234.0 61570.0 m +(xlib:font\036props,) 105868 0.00 -1 s +( 1\03616) 111692 -54.00 32 s +88234.0 66244.0 m +(xlib:fontable,) 103360 0.00 -1 s +( 1\03616) 109164 -74.00 32 s +4 sf +88234.0 77239.0 m +(G) 92185 0.00 -1 s +3 sf +88234.0 83222.0 m +(xlib:gcontext,) 103832 0.00 -1 s +( 1\03616) 109615 -95.00 32 s +88234.0 87896.0 m +(xlib:gcontext\036key,) 108846 0.00 -1 s +( 1\03616) 114605 -119.00 32 s +88234.0 92569.0 m +(xlib:grab\036status,) 106495 0.00 -1 s +( 1\03617) 112324 -49.00 32 s +4 sf +88234.0 103565.0 m +(I) 90210 0.00 -1 s +3 sf +88234.0 109548.0 m +(xlib:image\036depth,) 108219 0.00 -1 s +( 1\03617) 113995 -102.00 32 s +88234.0 114221.0 m +(xlib:index\036size,) 105711 0.00 -1 s +( 1\03617) 111512 -77.00 32 s +88234.0 118895.0 m +(xlib:int16,) 99915 0.00 -1 s +( 1\03617) 105732 -61.00 32 s +88234.0 123568.0 m +(xlib:int32, 1\03617) 105732 -61.00 32 s +88234.0 128242.0 m +(xlib:int8,) 98504 0.00 -1 s +( 1\03617) 104332 -50.00 32 s +4 sf +88234.0 139237.0 m +(K) 92185 0.00 -1 s +3 sf +88234.0 145221.0 m +(xlib:keysym,) 102893 0.00 -1 s +( 1\03617) 108689 -82.00 32 s +4 sf +88234.0 156216.0 m +(M) 93029 0.00 -1 s +3 sf +88234.0 162199.0 m +(xlib:mask16, 1\03617) 108689 -82.00 32 s +88234.0 166873.0 m +(xlib:mask32, 1\03618) 108689 -82.00 32 s +88234.0 171546.0 m +(xlib:modifier\036key,) 108844 0.00 -1 s +( 1\03618) 114650 -72.00 32 s +88234.0 176220.0 m +(xlib:modifier\036mask,) 110726 0.00 -1 s +( 1\03618) 116547 -57.00 32 s +4 sf +88234.0 187215.0 m +(P) 91337 0.00 -1 s +3 sf +88234.0 193198.0 m +(xlib:pixarray,) 103515 0.00 -1 s +( 1\03618) 109322 -71.00 32 s +88234.0 197872.0 m +(xlib:pixel,) 99757 0.00 -1 s +( 1\03618) 105574 -61.00 32 s +88234.0 202546.0 m +(xlib:pixmap,) 102579 0.00 -1 s +( 1\03618) 108373 -84.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Types ) 26137 -26.00 32 s +( Index) 31699 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +148440 207266 av +21675 207264 as +[] 0 setdash +dp +121885.0 211600.0 m +(CLX) 126034 0.00 -1 s +( Programmer's Reference) 149430 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19864.0 211329.0 m +(Index\036228) 31936 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(xlib:pixmap\036format,) 43125 0.00 -1 s +( 1\03618) 48926 -77.00 32 s +20320.0 27297.0 m +(xlib:point\036seq,) 36702 0.00 -1 s +( 1\03619) 42514 -66.00 32 s +20320.0 32015.0 m +(xlib:pointer\036event\036mask,) 48140 0.00 -1 s +( 1\03619) 53916 -102.00 32 s +20320.0 36734.0 m +(xlib:pointer\036event\036mask\036class,) 54565 0.00 -1 s +( 1\03619) 60350 -93.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 47865.0 m +(R) 23987 0.00 -1 s +3 sf +20320.0 53893.0 m +(xlib:rect\036seq,) 35130 0.00 -1 s +( 1\03619) 40956 -52.00 32 s +20320.0 58612.0 m +(xlib:repeat\036seq,) 37794 0.00 -1 s +( 1\03619) 43598 -74.00 32 s +20320.0 63331.0 m +(xlib:resource\036id,) 38891 0.00 -1 s +( 1\03620) 44704 -65.00 32 s +20320.0 68049.0 m +(xlib:rgb\036val,) 34348 0.00 -1 s +( 1\03620) 40166 -60.00 32 s +4 sf +20320.0 79180.0 m +(S) 23144 0.00 -1 s +3 sf +20320.0 85209.0 m +(xlib:screen,) 33407 0.00 -1 s +( 1\03620) 39218 -67.00 32 s +20320.0 89927.0 m +(xlib:seg\036seq,) 34663 0.00 -1 s +( 1\03620) 40482 -59.00 32 s +20320.0 94646.0 m +(xlib:state\036mask\036key,) 43282 0.00 -1 s +( 1\03620) 49084 -76.00 32 s +88234.0 22578.0 m +(xlib:stringable,) 105242 0.00 -1 s +( 1\03620) 111060 -60.00 32 s +4 sf +88234.0 33483.0 m +(T) 91622 0.00 -1 s +3 sf +88234.0 39421.0 m +(xlib:timestamp,) 105871 0.00 -1 s +( 1\03621) 111692 -57.00 32 s +4 sf +88234.0 50326.0 m +(V) 91901 0.00 -1 s +3 sf +88234.0 56264.0 m +(xlib:visual\036info,) 106339 0.00 -1 s +( 1\03621) 112166 -51.00 32 s +4 sf +88234.0 67169.0 m +(W) 93314 0.00 -1 s +3 sf +88234.0 73107.0 m +(xlib:win\036gravity,) 107278 0.00 -1 s +( 1\03622) 113092 -64.00 32 s +88234.0 77758.0 m +(xlib:window,) 103205 0.00 -1 s +( 1\03622) 109006 -77.00 32 s +4 sf +88234.0 88663.0 m +(X) 91901 0.00 -1 s +3 sf +88234.0 94601.0 m +(xlib:xatom,) 101168 0.00 -1 s +( 1\03622) 106974 -72.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/README.clx +++ cmucl-20a-20090928/own-work/clx/README.clx @@ -0,0 +1,8 @@ +The clx library is installed in /usr/lib/cmucl/subsystems/. +You should configure it in with /usr/lib/cmucl/config. + +NOTICE: you can't get clx OUT of an image again (easy I mean). +So keep a backup of the original lisp image. + +Peter + --- cmucl-20a-20090928.orig/own-work/clx/s03.ps +++ cmucl-20a-20090928/own-work/clx/s03.ps @@ -0,0 +1,2082 @@ +%!PS-Adobe-2.0 +%%Title: s03.ps +%%Pages: 4 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 8 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps12b /ILtimsb 12 map + /timsps10b /ILtimsb 10 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 8 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(3\03631) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 5 declareFont +5 sf +20410.0 39376.0 m +92455.0 39466.0 m +(SCREENS) 115880 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +143371 39315 av +146108 37028 as +146108 32833 as +143827 30926 as +146108 29020 as +146108 25588 as +143371 23300 as +136982 23300 as +134244 25588 as +134244 27876 as +138351 27876 as +138351 26351 as +142002 26351 as +142002 29401 as +138807 29401 as +138807 32452 as +142002 32452 as +142002 36265 as +138351 36265 as +138351 34740 as +134244 34740 as +134244 37028 as +136982 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +133332 23300 av +133332 23300 as +newpath +133332 43891 av +133332 43891 as +newpath +147477 43891 av +147477 43891 as +newpath +147477 23300 av +147477 23300 as +149351.0 39376.0 m +5 sf +/timsps10 4 declareFont +4 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 6 declareFont +6 sf +20320.0 46871.0 m +(Screens and) 37727 6.00 32 s +52832.0 h +2 sf +(3.1) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(An) 62003 0.00 -1 s +( X display supports graphical output to one or more ) 120615 -32.90 32 s +/timsps10i 3 declareFont +3 sf +(screens) 129079 0.00 -1 s +4 sf +(. Each) 136099 -33.00 32 s +6 sf +20320.0 50258.0 m +(Visuals) 30857 0.00 -1 s +52832.0 h +4 sf +(screen) 60039 0.00 -1 s +( has its own root window and window hierarchy. Each window belongs to exactly) 149352 -243.77 32 s +52832.0 53419.0 m +(one) 56907 0.00 -1 s +( screen and cannot simultaneously appear) 103615 -47.00 32 s +( on another screen.) 124787 -47.67 32 s +52832.0 59696.0 m +(The) 57220 0.00 -1 s +( kinds of graphics hardware used by X screens can vary greatly in) 130551 -80.00 32 s +( their support for) 149352 -80.67 32 s +52832.0 62857.0 m +(color) 58630 0.00 -1 s +( and in their methods) 82242 -54.00 32 s +( for accessing raster memory. X uses the concept of a ) 142611 -54.55 32 s +3 sf +(visual) 149352 0.00 -1 s +52832.0 66017.0 m +(type) 57533 0.00 -1 s +4 sf +( \(usually referred to simply as a ) 91895 -297.00 32 s +3 sf +(visual) 98636 0.00 -1 s +4 sf +(\) which) 106880 -297.00 32 s +( uniquely identifies the hardware capa\036) 149352 -297.60 32 s +52832.0 69178.0 m +(bilities) 60514 0.00 -1 s +( of a display screen. Fundamentally, a visual is represented by) 130011 -57.00 32 s +( a ) 132561 -57.50 32 s +2 sf +(card29) 140869 0.00 -1 s +4 sf +( integer) 149352 -58.00 32 s +52832.0 72339.0 m +(ID,) 56514 0.00 -1 s +( which uniquely identifies the visual type relative) 110341 -271.00 32 s +( to a single display. CLX also repre\036) 149352 -271.57 32 s +52832.0 75500.0 m +(sents) 58476 0.00 -1 s +( a visual with a ) 75139 -226.00 32 s +2 sf +(visual\036info) 87838 0.00 -1 s +4 sf +( structure that contains other attributes associated with) 147620 -226.00 32 s +( a) 149352 -227.00 32 s +52832.0 78661.0 m +(visual) 59573 0.00 -1 s +( \(see paragraph 1.6, Data Types\). A screen can support more than one depth \(that) 149352 -130.79 32 s +52832.0 81822.0 m +(is,) 55420 0.00 -1 s +( pixel size\), and for each supported depth, a screen may support more than one visual.) 149352 -195.73 32 s +52832.0 84983.0 m +(However,) 63879 0.00 -1 s +( it is more typical for a screen to have only) 111676 -48.00 32 s +( a single depth and a single visual) 149352 -48.57 32 s +52832.0 88144.0 m +(type.) 58397 0.00 -1 s +52832.0 94420.0 m +(A) 54869 0.00 -1 s +( visual represents various) 83408 -22.00 32 s +( aspects of the screen hardware, as follows:) 132148 -22.57 32 s +/symbb8 7 declareFont +7 sf +52832.0 100968.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(A) 59949 0.00 -1 s +( screen can be color) 82251 -27.00 32 s +( or gray\036scale. ) 98936 -27.67 32 s +7 sf +52832.0 107515.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(A screen can have a colormap that is either writable or read\036only.) 131425 -27.55 32 s +7 sf +52832.0 114063.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(A) 59949 0.00 -1 s +( screen can have a single) 88820 179.00 32 s +( colormap or separate colormaps for each of the red,) 149352 178.44 32 s +57912.0 117224.0 m +(green,) 64885 0.00 -1 s +( and blue components. With separate colormaps, a pixel value is decomposed) 149352 -265.64 32 s +57912.0 120385.0 m +(into) 62302 0.00 -1 s +( three parts to determine indexes) 97596 -292.00 32 s +( into each of the red, green, and blue colormaps.) 149352 -292.56 32 s +52832.0 126661.0 m +(CLX) 58475 0.00 -1 s +( supports the following classes of visual types: ) 118224 806.13 32 s +2 sf +(:direct\036color) 133265 0.00 -1 s +4 sf +(, ) 135483 806.00 32 s +2 sf +(:gray\036scale) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +52832.0 129822.0 m +2 sf +(:pseudo\036color) 69291 0.00 -1 s +4 sf +(,) 69997 0.00 -1 s +( ) 70504 -199.00 32 s +2 sf +(:static\036color) 84918 0.00 -1 s +4 sf +(, ) 86131 -199.00 32 s +2 sf +(:static\036gray) 99919 0.00 -1 s +4 sf +(, and ) 105714 -199.00 32 s +2 sf +(:true\036color) 118718 0.00 -1 s +4 sf +(. The following tables show) 149352 -199.00 32 s +52832.0 132983.0 m +(how) 57691 0.00 -1 s +( the) 61824 -21.00 32 s +( characteristics of a screen determine the class of its visual type.) 133841 -21.55 32 s +52832.0 139260.0 m +(For) 56751 0.00 -1 s +( screens with a single colormap:) 92908 -25.80 32 s +52832.0 145536.0 m +68072.0 h +( ) 68765 -13.00 32 s +( Color) 75884 -14.00 32 s +83312.0 h +98552.0 h +(Gray\036Scale) 111243 0.00 -1 s +52832.0 151813.0 m +( Read\036only) 65927 -36.00 32 s +68072.0 h +( ) 69462 -11.00 32 s +2 sf +(:static\036color) 83876 0.00 -1 s +4 sf +98552.0 h +2 sf +(:static\036gray) 112340 0.00 -1 s +4 sf +52832.0 154974.0 m +( Writable) 64098 -9.00 32 s +68072.0 h +( ) 69404 -40.00 32 s +2 sf +(:pseudo\036color) 85863 0.00 -1 s +4 sf +98552.0 h +2 sf +(:gray\036scale) 111715 0.00 -1 s +4 sf +52832.0 161250.0 m +(For) 56751 0.00 -1 s +( screens with red, green, and blue colormaps:) 107538 -33.00 32 s +52832.0 167527.0 m +( Read\036only) 65927 -36.00 32 s +68072.0 h +( ) 68750 -28.00 32 s +( ) 69427 -29.00 32 s +2 sf +(:true\036color) 82431 0.00 -1 s +4 sf +83312.0 h +52832.0 170688.0 m +( Writable) 64098 -9.00 32 s +68072.0 h +( ) 69422 -31.00 32 s +2 sf +(:direct\036color) 84463 0.00 -1 s +4 sf +98552.0 h +2 sf +(:gray\036scale) 111715 0.00 -1 s +4 sf +52832.0 176965.0 m +(The) 57220 0.00 -1 s +( visual class also indicates how screen colormaps are handled. See paragraph 9.1,) 149352 30.00 32 s +52832.0 180126.0 m +(Colormaps) 65216 0.00 -1 s +( and Colors.) 78842 -46.00 32 s +20320.0 187125.0 m +0.0 0.0 m +newpath +20455 185501 av +148878 185499 as +[] 0 setdash +dp +149352.0 187125.0 m +6 sf +20320.0 190511.0 m +(Screen) 30098 0.00 -1 s +( ) 30967 22.00 32 s +( ) 31835 21.00 32 s +52832.0 h +2 sf +(3.2) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(In) 60905 0.00 -1 s +( CLX, each display screen is represented by a ) 112788 -34.56 32 s +2 sf +(screen) 120467 0.00 -1 s +4 sf +( structure. The) 136776 -34.50 32 s +6 sf +20320.0 193898.0 m +(Attributes) 35176 0.00 -1 s +52832.0 h +2 sf +(display\036roots) 68509 0.00 -1 s +4 sf +( function returns the list of ) 98704 -88.00 32 s +2 sf +(screen) 106383 0.00 -1 s +4 sf +( structures for the display. The follow\036) 149352 -87.50 32 s +52832.0 197059.0 m +(ing) 56438 0.00 -1 s +( paragraphs discuss the) 82458 -26.00 32 s +( attributes of CLX ) 103670 -26.50 32 s +2 sf +(screen) 111349 0.00 -1 s +4 sf +( structures.) 123704 -27.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8195.0 m +(Screens) 27625 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(3\03632) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(screen\036backing\036stores ) 61293 -132.00 32 s +/timsps10i 3 declareFont +3 sf +(screen) 68659 0.00 -1 s +2 sf +139373.0 h +/timsps10 4 declareFont +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 28900.0 m +( backing\036stores\036type ) 77103 -34.00 32 s +4 sf +(\037 One of ) 88993 -33.67 32 s +2 sf +(:always) 98084 0.00 -1 s +4 sf +(, ) 99462 -34.00 32 s +2 sf +(:never) 107140 0.00 -1 s +4 sf +(, or ) 111541 -33.50 32 s +2 sf +(:when\036mapped) 129568 0.00 -1 s +4 sf +(.) 130274 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( a value indicating when the ) 93241 -136.00 32 s +3 sf +(screen) 100607 0.00 -1 s +4 sf +( supports backing stores, although it may be) 149352 -135.71 32 s +52832.0 36779.0 m +(storage) 60981 0.00 -1 s +( limited in the number of windows) 98874 -190.00 32 s +( it can support at once. The value returned can) 149352 -190.56 32 s +52832.0 39940.0 m +(be) 55496 0.00 -1 s +( one of ) 63928 -37.00 32 s +2 sf +(:always) 73019 0.00 -1 s +4 sf +(, ) 74394 -37.00 32 s +2 sf +(:never) 82072 0.00 -1 s +4 sf +(, or ) 86466 -37.00 32 s +2 sf +(:when\036mapped) 104493 0.00 -1 s +4 sf +(.) 105199 0.00 -1 s +( ) 105867 -38.00 32 s +3 sf +52832.0 46217.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 51003.0 m +(screen\036black\036pixel) 56488 0.00 -1 s +( ) 57071 -123.00 32 s +3 sf +(screen) 64437 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 54164.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 57325.0 m +( black\036pixel ) 67396 -30.00 32 s +4 sf +(\037 Type ) 77369 -30.00 32 s +2 sf +(pixel) 83170 0.00 -1 s +4 sf +(.) 83876 0.00 -1 s +52832.0 62044.0 m +(Returns) 61610 0.00 -1 s +( the black) 72526 -28.00 32 s +( pixel value for the specified ) 105269 -28.50 32 s +3 sf +(screen) 112635 0.00 -1 s +4 sf +(. ) 114018 -29.00 32 s +3 sf +52832.0 68320.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 73107.0 m +(screen\036default\036colormap) 64007 0.00 -1 s +( ) 64567 -146.00 32 s +3 sf +(screen) 71933 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 76268.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 79429.0 m +( default\036colormap ) 74438 -35.00 32 s +4 sf +(\037 Type ) 84401 -35.00 32 s +2 sf +(colormap) 95843 0.00 -1 s +4 sf +(. ) 97220 -35.00 32 s +52832.0 84147.0 m +(Returns) 61610 0.00 -1 s +( the ) 66070 -200.00 32 s +3 sf +(default\036colormap) 85663 0.00 -1 s +4 sf +( for the specified ) 104612 -199.50 32 s +3 sf +(screen) 111978 0.00 -1 s +4 sf +(. The ) 118085 -199.50 32 s +3 sf +(default\036colormap) 137678 0.00 -1 s +4 sf +( is initially) 149352 -199.50 32 s +52832.0 87308.0 m +(associated) 64430 0.00 -1 s +( with the root window. Clients with minimal color requirements creating win\036) 149352 -259.64 32 s +52832.0 90469.0 m +(dows) 58789 0.00 -1 s +( of the same depth as the root may want to allocate from this map by default. Most) 149352 -149.94 32 s +52832.0 93630.0 m +(routine) 60825 0.00 -1 s +( allocations of color should be made out of this colormap.) 125668 -28.90 32 s +3 sf +52832.0 99907.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 104693.0 m +(screen\036depths) 51159 0.00 -1 s +( ) 51765 -100.00 32 s +3 sf +(screen) 59131 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 107854.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 111015.0 m +( depths ) 62264 -18.00 32 s +4 sf +(\037 Type ) 72262 -17.50 32 s +2 sf +(alist) 77278 0.00 -1 s +4 sf +(.) 77984 0.00 -1 s +52832.0 115734.0 m +(Returns) 61610 0.00 -1 s +( an association list that specifies what drawable depths are supported on the) 149352 206.08 32 s +52832.0 118895.0 m +(specified) 63018 0.00 -1 s +( ) 63460 -264.00 32 s +3 sf +(screen) 70826 0.00 -1 s +4 sf +(. Elements of the returned association list have the form \(depth ) 139555 -263.91 32 s +3 sf +(visual) 146296 0.00 -1 s +4 sf +(*\),) 149352 0.00 -1 s +52832.0 122055.0 m +(where) 59725 0.00 -1 s +( each ) 65735 -286.00 32 s +3 sf +(visual) 72476 0.00 -1 s +4 sf +( is a ) 76871 -286.00 32 s +2 sf +(visual\036info) 89570 0.00 -1 s +4 sf +( structure. Pixmaps are supported for each depth listed,) 149352 -286.00 32 s +52832.0 125216.0 m +(and) 56907 0.00 -1 s +( windows of that depth are supported if at least one visual type) 125141 -205.00 32 s +( is listed for the depth.) 149352 -205.60 32 s +52832.0 128377.0 m +(A) 54869 0.00 -1 s +( pixmap depth of one is always supported and listed, but windows of depth one might) 149352 -138.93 32 s +52832.0 131538.0 m +(not) 56438 0.00 -1 s +( be supported. A depth of zero is never) 99887 -45.00 32 s +( listed, but zero\036depth ) 125020 -45.50 32 s +2 sf +(:input\036only) 138503 0.00 -1 s +4 sf +( windows) 149352 -46.00 32 s +52832.0 134699.0 m +(are) 56277 0.00 -1 s +( always) 64770 -49.00 32 s +( supported.) 77261 -50.00 32 s +3 sf +52832.0 140976.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 145762.0 m +(screen\036event\036mask\036at\036open) 66984 0.00 -1 s +( ) 67547 -143.00 32 s +3 sf +(screen) 74913 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 148923.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 152084.0 m +( event\036mask\036at\036open ) 77084 -39.00 32 s +4 sf +(\037 Type) 86372 -39.00 32 s +( ) 87038 -40.00 32 s +2 sf +(mask32) 96288 0.00 -1 s +4 sf +(.) 96994 0.00 -1 s +52832.0 156803.0 m +(Returns) 61610 0.00 -1 s +( the initial root event mask for the specified ) 111319 -23.78 32 s +3 sf +(screen) 118685 0.00 -1 s +4 sf +(.) 119391 0.00 -1 s +3 sf +52832.0 163079.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +142014.0 8737.0 m +(Screens) 149048 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(3\03633) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(screen\036height ) 51291 -102.00 32 s +/timsps10i 3 declareFont +3 sf +(screen) 58657 0.00 -1 s +2 sf +139373.0 h +/timsps10 4 declareFont +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 28900.0 m +( height) 61228 -35.00 32 s +( ) 61898 -36.00 32 s +4 sf +(\037 Type ) 71860 -35.50 32 s +2 sf +(card16) 80168 0.00 -1 s +4 sf +(.) 80874 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the ) 66420 -25.00 32 s +3 sf +(height) 73474 0.00 -1 s +4 sf +( of the specified ) 92182 -25.00 32 s +3 sf +(screen) 99548 0.00 -1 s +4 sf +( in pixel units.) 115621 -25.67 32 s +3 sf +52832.0 39895.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 44681.0 m +(screen\036height\036in\036millimeters) 68550 0.00 -1 s +( ) 69173 -83.00 32 s +3 sf +(screen) 76539 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 47842.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 51003.0 m +( height\036in\036millimeters ) 78683 -30.00 32 s +4 sf +(\037 Type ) 88657 -29.50 32 s +2 sf +(card16) 96965 0.00 -1 s +4 sf +(.) 97671 0.00 -1 s +52832.0 55722.0 m +(Returns) 61610 0.00 -1 s +( the height of the specified ) 93040 118.00 32 s +3 sf +(screen) 100406 0.00 -1 s +4 sf +( in millimeters. The returned height can be) 149352 118.00 32 s +52832.0 58883.0 m +(used) 58005 0.00 -1 s +( with the width in millimeters to determine the physical size and the) 133062 -133.00 32 s +( aspect ratio of) 149352 -133.67 32 s +52832.0 62044.0 m +(the) 56280 0.00 -1 s +( screen.) 64843 -56.00 32 s +3 sf +52832.0 68320.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 73107.0 m +(screen\036max\036installed\036maps) 66831 0.00 -1 s +4 sf +( ) 67434 -103.00 32 s +3 sf +(screen) 74800 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 76268.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 79429.0 m +( max\036installed\036colormaps ) 83040 -41.00 32 s +4 sf +(\037 Type ) 92992 -40.50 32 s +2 sf +(card16) 101300 0.00 -1 s +4 sf +(.) 102006 0.00 -1 s +52832.0 84147.0 m +(Returns) 61610 0.00 -1 s +( the maximum number of colormaps that can be installed simultaneously with) 149352 -10.91 32 s +52832.0 87308.0 m +2 sf +(install\036colormap) 72582 0.00 -1 s +4 sf +(.) 73288 0.00 -1 s +3 sf +52832.0 93585.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 98371.0 m +(screen\036min\036installed\036maps) 66362 0.00 -1 s +( ) 66983 -85.00 32 s +3 sf +(screen) 74349 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 101532.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 104693.0 m +( min\036installed\036colormaps ) 82583 -37.00 32 s +4 sf +(\037 Type) 91873 -37.00 32 s +( ) 92541 -38.00 32 s +2 sf +(card16) 100849 0.00 -1 s +4 sf +(.) 101555 0.00 -1 s +52832.0 109412.0 m +(Returns) 61610 0.00 -1 s +( the minimum number of colormaps that can be guaranteed to) 128585 -262.00 32 s +( be installed simul\036) 149352 -262.67 32 s +52832.0 112573.0 m +(taneously.) 64354 0.00 -1 s +3 sf +52832.0 118849.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 123636.0 m +(screen\036p) 44731 0.00 -1 s +( ) 45353 -84.00 32 s +3 sf +(screen) 52719 0.00 -1 s +2 sf +52832.0 h +4 sf +(Function) 62866 0.00 -1 s +2 sf +34544.0 126797.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 129958.0 m +( screen\036p ) 64564 -34.00 32 s +4 sf +(\037 Type ) 74530 -33.50 32 s +2 sf +(boolean) 83938 0.00 -1 s +4 sf +(.) 84644 0.00 -1 s +52832.0 134676.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67466 -22.00 32 s +2 sf +(nil) 70603 0.00 -1 s +4 sf +( if the ) 77826 -22.00 32 s +3 sf +(screen) 85192 0.00 -1 s +4 sf +( argument is a ) 101720 -22.00 32 s +2 sf +(screen) 109399 0.00 -1 s +4 sf +( structure; otherwise, returns ) 142303 -21.75 32 s +2 sf +(nil) 145440 0.00 -1 s +4 sf +(.) 146146 0.00 -1 s +2 sf +34544.0 140953.0 m +(screen\036plist) 48336 0.00 -1 s +( ) 48988 -54.00 32 s +3 sf +(screen) 56354 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 144114.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 147275.0 m +( plist ) 59793 -6.00 32 s +4 sf +(\037) 62615 0.00 -1 s +( Type ) 69813 -6.50 32 s +2 sf +(list) 73418 0.00 -1 s +4 sf +(. ) 74823 -7.00 32 s +52832.0 151994.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73299 -153.00 32 s +2 sf +(setf) 77528 0.00 -1 s +4 sf +(\) sets the property list) 101369 -153.00 32 s +( for the specified ) 120502 -153.50 32 s +3 sf +(screen) 127868 0.00 -1 s +4 sf +(. This function pro\036) 149352 -153.67 32 s +52832.0 155154.0 m +(vides) 58789 0.00 -1 s +( a hook where extensions can add data.) 102548 -40.86 32 s +3 sf +52832.0 161431.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 166218.0 m +(screen\036root) 48176 0.00 -1 s +( ) 48785 -97.00 32 s +3 sf +(screen) 56151 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 169378.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 172539.0 m +( root\036window ) 69296 -26.00 32 s +4 sf +(\037 Type ) 79277 -26.00 32 s +2 sf +(window ) 89365 -25.00 32 s +4 sf +(or ) 92395 -26.00 32 s +2 sf +(null) 97101 0.00 -1 s +4 sf +(.) 97807 0.00 -1 s +52832.0 177258.0 m +(Returns) 61610 0.00 -1 s +( the ) 66084 -193.00 32 s +3 sf +(root\036window) 80508 0.00 -1 s +4 sf +( for the specified ) 99483 -193.00 32 s +3 sf +(screen) 106849 0.00 -1 s +4 sf +(. This function is useful with functions) 149352 -192.67 32 s +52832.0 180419.0 m +(that) 57064 0.00 -1 s +( take a parent window as an argument. The class of the) 118470 -46.00 32 s +( root window is always ) 145121 -46.60 32 s +2 sf +(:in\036) 149352 0.00 -1 s +52832.0 183580.0 m +(put\036output) 65844 0.00 -1 s +4 sf +(.) 66550 0.00 -1 s +3 sf +52832.0 189857.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20591.0 8195.0 m +(Screens) 27625 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(3\03634) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(screen\036root\036depth ) 56597 -123.00 32 s +/timsps10i 3 declareFont +3 sf +(screen) 63963 0.00 -1 s +2 sf +139373.0 h +/timsps10 4 declareFont +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 28900.0 m +( root\036window\036depth ) 76460 -41.00 32 s +4 sf +(\037 Type ) 86411 -41.00 32 s +2 sf +(image\036depth) 101458 0.00 -1 s +4 sf +(.) 102164 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the depth of the root window for the specified ) 113469 -127.60 32 s +3 sf +(screen) 120835 0.00 -1 s +4 sf +(. Other depths can also be) 149352 -127.60 32 s +52832.0 36779.0 m +(supported) 63961 0.00 -1 s +( on this) 72200 -36.00 32 s +( ) 72869 -37.00 32 s +3 sf +(screen) 80235 0.00 -1 s +4 sf +(.) 80941 0.00 -1 s +3 sf +52832.0 43056.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 47842.0 m +(screen\036root\036visual) 56172 0.00 -1 s +( ) 56777 -101.00 32 s +3 sf +(screen) 64143 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 51003.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 54164.0 m +( root\036window\036visual ) 76940 -38.00 32 s +4 sf +(\037 Type) 86229 -38.00 32 s +( ) 86896 -39.00 32 s +2 sf +(card29) 95204 0.00 -1 s +4 sf +(.) 95910 0.00 -1 s +52832.0 58883.0 m +(Returns) 61610 0.00 -1 s +( the default visual type for) 91192 -24.00 32 s +( the root window for the specified ) 129969 -24.57 32 s +3 sf +(screen) 137335 0.00 -1 s +4 sf +(.) 138041 0.00 -1 s +3 sf +52832.0 65159.0 m +(screen) 60198 0.00 -1 s +( ) 60869 -35.00 32 s +4 sf +(\037 A ) 67070 -35.00 32 s +2 sf +(screen) 74749 0.00 -1 s +4 sf +(.) 75455 0.00 -1 s +2 sf +34544.0 69946.0 m +(screen\036save\036unders\036p) 60093 0.00 -1 s +( ) 60661 -138.00 32 s +3 sf +(screen) 68027 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 73107.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 76268.0 m +( save\036unders\036p ) 70825 -37.00 32 s +4 sf +(\037 Type ) 80784 -37.00 32 s +2 sf +(boolean) 90192 0.00 -1 s +4 sf +(.) 90898 0.00 -1 s +52832.0 80986.0 m +(If) 54710 0.00 -1 s +( true, the server can) 76589 -74.00 32 s +( support the save\036under mode in ) 113135 -74.50 32 s +2 sf +(create\036window) 130843 0.00 -1 s +4 sf +( and in changing) 149352 -74.67 32 s +52832.0 84147.0 m +(window) 61923 0.00 -1 s +( attributes.) 73784 -52.00 32 s +3 sf +52832.0 90424.0 m +(screen) 60198 0.00 -1 s +( ) 60876 -28.00 32 s +4 sf +(\037 A) 66413 -28.00 32 s +( screen.) 75003 -29.00 32 s +2 sf +34544.0 95210.0 m +(screen\036white\036pixel) 56484 0.00 -1 s +( ) 57094 -96.00 32 s +3 sf +(screen) 64460 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 98371.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 101532.0 m +( white\036pixel ) 67410 -26.00 32 s +4 sf +(\037 Type ) 77392 -25.50 32 s +2 sf +(pixel) 83193 0.00 -1 s +4 sf +(.) 83899 0.00 -1 s +52832.0 106251.0 m +(Returns the white pixel value for the specified ) 105446 -25.88 32 s +3 sf +(screen) 112812 0.00 -1 s +4 sf +(. ) 114198 -26.00 32 s +3 sf +52832.0 112528.0 m +(screen) 60198 0.00 -1 s +( ) 60876 -28.00 32 s +4 sf +(\037 A) 66413 -28.00 32 s +( screen.) 75003 -29.00 32 s +2 sf +34544.0 117314.0 m +(screen\036width) 50060 0.00 -1 s +( ) 50681 -85.00 32 s +3 sf +(screen) 58047 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 120475.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 123636.0 m +( width ) 61124 -32.67 32 s +4 sf +(\037 Type ) 71092 -32.50 32 s +2 sf +(card16) 79400 0.00 -1 s +4 sf +(.) 80106 0.00 -1 s +52832.0 128355.0 m +(Returns) 61610 0.00 -1 s +( the width of the) 80015 -23.00 32 s +( specified ) 91566 -23.50 32 s +3 sf +(screen ) 99614 -24.00 32 s +4 sf +(in pixel units.) 115011 -23.50 32 s +3 sf +52832.0 134631.0 m +(screen) 60198 0.00 -1 s +( ) 60876 -28.00 32 s +4 sf +(\037 A) 66413 -28.00 32 s +( screen.) 75003 -29.00 32 s +2 sf +34544.0 139418.0 m +(screen\036width\036in\036millimeters) 67923 0.00 -1 s +( ) 68563 -66.00 32 s +3 sf +(screen) 75929 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 142579.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 145740.0 m +( width\036in\036millimeters ) 77910 -27.00 32 s +4 sf +(\037 Type ) 87890 -26.50 32 s +2 sf +(card16) 96198 0.00 -1 s +4 sf +(.) 96904 0.00 -1 s +52832.0 150458.0 m +(Returns) 61610 0.00 -1 s +( the width of the specified ) 90379 -221.00 32 s +3 sf +(screen) 97745 0.00 -1 s +4 sf +( in millimeters. The returned width can be used) 149352 -220.63 32 s +52832.0 153619.0 m +(with) 57848 0.00 -1 s +( the height in millimeters to determine the physical size and the aspect ratio of the) 149352 -59.93 32 s +52832.0 156780.0 m +(screen.) 60745 0.00 -1 s +3 sf +52832.0 163057.0 m +(screen) 60198 0.00 -1 s +( ) 60876 -28.00 32 s +4 sf +(\037 A) 66413 -28.00 32 s +( screen.) 75003 -29.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s15.ps +++ cmucl-20a-20090928/own-work/clx/s15.ps @@ -0,0 +1,1183 @@ +%!PS-Adobe-2.0 +%%Title: s15.ps +%%Pages: 2 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /timsps10b /ILtimsb 10 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(15\036183) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 4 declareFont +4 sf +20410.0 39376.0 m +83131.0 39466.0 m +(EXTENSIONS) 115871 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +144269 39315 av +139128 39315 as +136925 37028 as +136925 34740 as +140230 34740 as +140230 36265 as +143167 36265 as +143167 32452 as +138027 32452 as +136925 31308 as +136925 23300 as +146105 23300 as +146105 26351 as +140230 26351 as +140230 29401 as +144269 29401 as +146472 31689 as +146472 37028 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +136191 43891 av +136191 43891 as +newpath +136191 23300 av +136191 23300 as +newpath +147206 23300 av +147206 23300 as +newpath +147206 43891 av +147206 43891 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +134900 39315 av +134900 23300 as +131963 23300 as +129025 26351 as +129025 27876 as +131596 27876 as +131596 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +128658 23300 av +128658 23300 as +newpath +128658 43891 av +128658 43891 as +newpath +136369 43891 av +136369 43891 as +newpath +136369 23300 av +136369 23300 as +149351.0 39376.0 m +4 sf +/timsps10 5 declareFont +5 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 6 declareFont +6 sf +20320.0 46871.0 m +(Extensions) 35936 0.00 -1 s +52832.0 h +2 sf +(15.1) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The X Window System is based on a core protocol) 115580 -204.00 32 s +( which can be extended to pro\036) 149352 -170.50 32 s +52832.0 50032.0 m +(vide) 57691 0.00 -1 s +( new functionality. An extension is generally represented by an additional set of) 149352 57.62 32 s +52832.0 53193.0 m +(requests) 62079 0.00 -1 s +( or event types that are implemented by an X server supporting the extension.) 149352 -14.77 32 s +52832.0 56354.0 m +(By) 56125 0.00 -1 s +( definition, a client program using an extension may not be portable to other servers.) 149352 -148.29 32 s +52832.0 59515.0 m +(However,) 63879 0.00 -1 s +( extensions allow different server implementations and different sites to) 144601 -25.78 32 s +( add) 149352 -30.00 32 s +52832.0 62676.0 m +(their) 58003 0.00 -1 s +( own special features to X, without disrupting clients that rely only on the core pro\036) 149352 -179.93 32 s +52832.0 65837.0 m +(tocol.) 59181 0.00 -1 s +52832.0 72113.0 m +(Extensions) 65217 0.00 -1 s +( are) 69529 161.00 32 s +( identified by assigning them unique name strings and major protocol) 149352 144.40 32 s +52832.0 75274.0 m +(numbers.) 63256 0.00 -1 s +( A client program can request an X server to use a protocol extension by fur\036) 149352 -33.27 32 s +52832.0 78435.0 m +(nishing) 61142 0.00 -1 s +( the) 78571 13275.00 32 s +( extension protocol number) 149352 13274.33 32 s +52832.0 81596.0 m +(as) 55183 0.00 -1 s +( an argument to ) 72785 -184.50 32 s +2 sf +(open\036display) 88152 0.00 -1 s +5 sf +(. The X Consortium maintains a registry of standard) 145290 -215.25 32 s +( ex\036) 149352 -247.00 32 s +52832.0 84757.0 m +(tension) 60984 0.00 -1 s +( names and protocol) 83653 -46.00 32 s +( numbers.) 94736 -47.00 32 s +52832.0 91034.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 123094 -34.00 32 s +/symbb8 7 declareFont +7 sf +52832.0 97581.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(List) 62302 0.00 -1 s +( all supported extensions.) 90898 -30.67 32 s +7 sf +52832.0 104129.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Find) 63087 0.00 -1 s +( out if a given extension is supported.) 105212 -28.86 32 s +2 sf +34544.0 110405.0 m +(list\036extensions) 51473 0.00 -1 s +5 sf +( ) 52169 -10.00 32 s +/timsps10i 8 declareFont +8 sf +(display) 60321 0.00 -1 s +5 sf +( &key \() 68922 -10.00 32 s +2 sf +(:result\036type) 82868 0.00 -1 s +5 sf +( ) 83564 -10.00 32 s +2 sf +('list) 88108 0.00 -1 s +5 sf +(\)) 89047 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 113566.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 116727.0 m +( ) 54186 -29.00 32 s +8 sf +(names) 61396 0.00 -1 s +5 sf +( \037 Type ) 72048 -29.00 32 s +2 sf +(sequence) 82865 0.00 -1 s +5 sf +( of ) 86570 -28.50 32 s +2 sf +(string) 93624 0.00 -1 s +5 sf +(.) 94330 0.00 -1 s +52832.0 121446.0 m +(Returns) 61610 0.00 -1 s +( a sequence containing the) 90199 -298.00 32 s +( ) 90606 -299.00 32 s +8 sf +(names) 97816 0.00 -1 s +5 sf +( of all extensions supported by the ) 135153 -298.43 32 s +8 sf +(display) 143305 0.00 -1 s +5 sf +( serv\036) 149352 -299.00 32 s +52832.0 124607.0 m +(er.) 55730 0.00 -1 s +8 sf +52832.0 130883.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 135670.0 m +(:result\036type) 66778 0.00 -1 s +5 sf +( \037) 70275 -31.00 32 s +( The type of name sequence to return.) 112686 -31.57 32 s +2 sf +34544.0 140456.0 m +(query\036extension) 53825 0.00 -1 s +( ) 54449 -82.00 32 s +8 sf +(display) 62601 0.00 -1 s +( name) 69336 -83.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 143617.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 146778.0 m +( ) 54202 -21.00 32 s +8 sf +(major\036opcode) 70032 0.00 -1 s +5 sf +(,) 70738 0.00 -1 s +8 sf +( ) 71424 -20.00 32 s +5 sf +( ) 72109 -21.00 32 s +8 sf +(first\036event) 83550 0.00 -1 s +5 sf +(,) 84256 0.00 -1 s +8 sf +( first\036error) 96387 -20.00 32 s +5 sf +( \037 Type ) 107064 -20.67 32 s +2 sf +(card8) 113961 0.00 -1 s +5 sf +( or ) 117682 -20.50 32 s +2 sf +(null) 122388 0.00 -1 s +5 sf +(.) 123094 0.00 -1 s +52832.0 151497.0 m +(Returns) 61610 0.00 -1 s +( the ) 65968 -251.00 32 s +8 sf +(major\036opcode) 81798 0.00 -1 s +5 sf +( for the given extension ) 107896 -251.00 32 s +8 sf +(name) 114008 0.00 -1 s +5 sf +( support by the ) 130814 -188.25 32 s +8 sf +(display) 138966 0.00 -1 s +5 sf +( server.) 147020 -251.00 32 s +( If) 149352 -252.00 32 s +52832.0 154658.0 m +(the) 56280 0.00 -1 s +( extension is not supported, only ) 93690 3.00 32 s +2 sf +(nil) 96827 0.00 -1 s +5 sf +( values are returned. The extension ) 137044 2.50 32 s +8 sf +(name) 143156 0.00 -1 s +5 sf +( must) 149352 2.00 32 s +52832.0 157819.0 m +(contain) 61139 0.00 -1 s +( only ISO Latin\0361 characters; case is) 102037 -27.50 32 s +( significant.) 115327 -34.00 32 s +52832.0 164095.0 m +(If) 54710 0.00 -1 s +( the extension involves additional event types, the) 109140 -264.00 32 s +( ) 109581 -265.00 32 s +8 sf +(first\036event) 121022 0.00 -1 s +5 sf +( returned is the base event) 149352 -211.60 32 s +52832.0 167256.0 m +(type) 57691 0.00 -1 s +( code for new events; otherwise, the ) 97533 -219.43 32 s +8 sf +(first\036event) 108974 0.00 -1 s +5 sf +( is ) 111756 -256.00 32 s +2 sf +(nil) 114893 0.00 -1 s +5 sf +(. If the extension involves addi\036) 149352 -256.00 32 s +52832.0 170417.0 m +(tional) 59259 0.00 -1 s +( error codes, the ) 77433 -177.75 32 s +8 sf +(first\036error) 88878 0.00 -1 s +5 sf +( returned is) 101099 -237.00 32 s +( the base code for new errors; otherwise, the) 149352 -207.88 32 s +52832.0 173578.0 m +8 sf +(first\036error) 64277 0.00 -1 s +5 sf +( is ) 67589 9.00 32 s +2 sf +(nil) 70726 0.00 -1 s +5 sf +(. The formats of error and event messages sent by the) 131073 8.10 32 s +( server are com\036) 149352 8.33 32 s +52832.0 176739.0 m +(pletely) 60512 0.00 -1 s +( defined) 69635 -45.00 32 s +( by the extension.) 89408 -45.67 32 s +8 sf +52832.0 183015.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +8 sf +52832.0 187802.0 m +(name) 58944 0.00 -1 s +5 sf +( \037 An extension name string.) 92637 -33.60 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Extensions) 30121 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(15\036184) 28314 0.00 -1 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +1 sf +121372.0 208348.0 m +(CLX Programmer's Reference) 149013 0.00 32 s +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/reverse-pages.el +++ cmucl-20a-20090928/own-work/clx/reverse-pages.el @@ -0,0 +1,67 @@ +;;- Reverse the page order in the `pstotext' output. + +;; Note: This is a batch mode command! + +;; Fairly ad-hoc. It could be generalized, but I need more knowledge of postscript, I think. +(defun clx-man-add-page-comments-to-ps () + (unless (noninteractive) + (error "Only for -batch mode.")) + (while command-line-args-left + (find-file (car command-line-args-left)) + (goto-char (point-min)) + (let* ((n-pages (loop with n = 0 + ;; I know that in these files, the `bop' is at the start of line. + while (re-search-forward "^bop" nil t) + do (incf n) + finally return n)) + (title (file-name-nondirectory (replace-in-string (buffer-file-name) + "\.orig" "" t))) + (rev (get-buffer-create title)) + (buf (current-buffer)) + trailer beg end) + (goto-char (point-min)) + (insert (concat "%!PS-Adobe-2.0\n" + "%%Title: " title "\n" + "%%Pages: " n-pages "\n" + "%%PageOrder: Ascend\n" ; after they are reversed, at any rate. + "%%EndComments\n" + "%%%%% ")) + (re-search-forward "^bop") + (beginning-of-line) + (previous-line 1) + (end-of-line) + (insert "\n%%EndProlog\n") + (previous-line 2) + ;; number the pages. + (while (re-search-forward "^bop" nil t) + (beginning-of-line) + (insert (concat "\n%%Page: " n-pages "\n")) + (forward-line 1) + (setq n-pages (1- n-pages))) + ;; Now physically reverse them, so BuildLectern will see them in + ;; the correct unshuffled order. + (goto-char (point-min)) + (goto-char (setq end (re-search-forward "^%%EndProlog\n") + beg (point-min))) + (with-current-buffer rev + (insert (buffer-substring beg end buf))) + (delete-region beg end) ; get it out of our way. + (goto-char (point-max)) + (re-search-backward "^eop") + (end-of-line) + (forward-char 1) + (setq trailer (buffer-substring (point) (point-max)) + end (point)) + (while (re-search-backward "^%%Page:" nil t) + (setq beg (point)) + (with-current-buffer rev + (insert (buffer-substring beg end buf))) + (setq end beg)) + (with-current-buffer rev + (insert "\n%%Trailer\n" trailer "\n%%EOF\n") + (let ((buffer-file-name title)) + (save-buffer)) + (kill-buffer (current-buffer)))) + (kill-buffer (current-buffer)) + (setq command-line-args-left (cdr command-line-args-left))) + (kill-emacs)) --- cmucl-20a-20090928.orig/own-work/clx/s07.ps +++ cmucl-20a-20090928/own-work/clx/s07.ps @@ -0,0 +1,4226 @@ +%!PS-Adobe-2.0 +%%Title: s07.ps +%%Pages: 8 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 8 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 8 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(7\03681) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 7 declareFont +7 sf +20410.0 39376.0 m +95255.0 39466.0 m +(IMAGES) 115856 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +140362 39315 av +146750 26351 as +146750 23300 as +133517 23300 as +133517 27876 as +137624 27876 as +137624 26351 as +142643 26351 as +136255 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +133517 23300 av +133517 23300 as +newpath +133517 43891 av +133517 43891 as +newpath +147206 43891 av +147206 43891 as +newpath +147206 23300 av +147206 23300 as +149351.0 39376.0 m +7 sf +/timsps10 3 declareFont +3 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 5 declareFont +5 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(7.1) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The X protocol) 75322 -237.00 32 s +( provides for the transfer of images \(two\036dimensional arrays of pix\036) 149352 -213.80 32 s +52832.0 50032.0 m +(el) 54869 0.00 -1 s +( data\) between a client program and a ) 97240 -91.00 32 s +2 sf +(drawable) 108527 0.00 -1 s +3 sf +(. The) 114236 -91.00 32 s +( format for image data can vary) 149352 -76.33 32 s +52832.0 53193.0 m +(considerably.) 67957 0.00 -1 s +( In order to present a uniform data representation for the) 129413 -201.60 32 s +( manipulation of a) 149352 -224.67 32 s +52832.0 56354.0 m +(variety) 60667 0.00 -1 s +( of images, CLX defines a special ) 99349 -27.29 32 s +2 sf +(image) 106558 0.00 -1 s +3 sf +( data type. Additional ) 131592 -31.50 32 s +2 sf +(image) 138801 0.00 -1 s +3 sf +( subtypes) 149352 -32.00 32 s +52832.0 59515.0 m +(\037) 55654 0.00 -1 s +( ) 56476 116.00 32 s +2 sf +(image\036xy) 67446 0.00 -1 s +3 sf +( and ) 73165 116.00 32 s +2 sf +(image\036z) 82566 0.00 -1 s +3 sf +( \037 allow for the representation of an image either) 139994 103.11 32 s +( as a se\036) 149352 115.33 32 s +52832.0 62676.0 m +(quence) 60824 0.00 -1 s +( of bit planes or as an array of pixels. CLX includes functions for accessing ) 145279 -85.60 32 s +2 sf +(im\036) 149352 0.00 -1 s +52832.0 65837.0 m +(age) 56907 0.00 -1 s +3 sf +( objects;) 66391 0.00 32 s +( for transferring) 84195 -29.00 32 s +( image data between ) 107900 -29.50 32 s +2 sf +(image) 115109 0.00 -1 s +3 sf +( objects, ) 125162 -29.50 32 s +2 sf +(drawables) 137547 0.00 -1 s +3 sf +(, and files;) 149352 -15.00 32 s +52832.0 68998.0 m +(and) 56907 0.00 -1 s +( also for direct transfer of raw image) 98059 -20.00 32 s +( data.) 104151 -21.00 32 s +20320.0 75997.0 m +0.0 0.0 m +newpath +20455 74373 av +149013 74371 as +[] 0 setdash +dp +149352.0 75997.0 m +5 sf +20320.0 79383.0 m +(Image) 29346 0.00 -1 s +( Types) 38856 8.00 32 s +52832.0 h +2 sf +(7.2) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( ) 63512 -137.00 32 s +2 sf +(image) 70721 0.00 -1 s +3 sf +( data type is the base type for all ) 106719 -136.67 32 s +2 sf +(image) 113928 0.00 -1 s +3 sf +( objects. ) 123767 -136.50 32 s +2 sf +(image\036xy) 134737 0.00 -1 s +3 sf +( and ) 139951 -136.50 32 s +2 sf +(image\036z) 149352 0.00 -1 s +3 sf +52832.0 82544.0 m +(are) 56277 0.00 -1 s +( subtypes of the ) 74404 -93.00 32 s +2 sf +(image) 81613 0.00 -1 s +3 sf +( type) 87085 -93.00 32 s +( which furnish accessors specialized for different image) 149352 -93.57 32 s +52832.0 85705.0 m +(representations.) 70620 0.00 -1 s +52832.0 92637.0 m +0.0 0.0 m +newpath +149013 91078 av +52967 91080 as +[] 0 setdash +dp +149352.0 92637.0 m +20320.0 95459.0 m +33663.0 h +2 sf +(Basic) 40091 0.00 -1 s +( Images) 49378 -40.00 32 s +52832.0 h +(7.2.1) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The) 65060 0.00 -1 s +( following paragraphs describe the CLX functions that can be used to access) 149352 -159.58 32 s +52832.0 98620.0 m +(all) 55653 0.00 -1 s +( types of ) 66001 -25.67 32 s +2 sf +(image) 73210 0.00 -1 s +3 sf +( objects.) 82590 -26.00 32 s +2 sf +34544.0 104896.0 m +(image\036blue\036mask) 55234 0.00 -1 s +3 sf +( ) 55848 -92.00 32 s +/timsps10i 4 declareFont +4 sf +(image) 62744 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 108057.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 111218.0 m +( mask) 60003 -20.00 32 s +3 sf +( \037 Type) 69996 -20.00 32 s +( ) 70681 -21.00 32 s +2 sf +(pixel) 76482 0.00 -1 s +3 sf +( or ) 80203 -20.50 32 s +2 sf +(null) 84909 0.00 -1 s +3 sf +(.) 85615 0.00 -1 s +52832.0 115937.0 m +(Returns) 61610 0.00 -1 s +( \(and with ) 72954 -268.00 32 s +2 sf +(setf) 77183 0.00 -1 s +3 sf +(\) changes the ) 91974 -268.00 32 s +4 sf +(mask) 97773 0.00 -1 s +3 sf +( that selects the pixel subfield for blue intensity) 149352 -234.25 32 s +52832.0 119098.0 m +(values.) 60748 0.00 -1 s +( The ) 67098 275.00 32 s +4 sf +(mask) 72897 0.00 -1 s +3 sf +( is non\036) 81914 275.50 32 s +2 sf +(nil) 85051 0.00 -1 s +3 sf +( only for images for ) 109272 220.40 32 s +2 sf +(:direct\036color) 124313 0.00 -1 s +3 sf +( or ) 128626 275.50 32 s +2 sf +(:true\036color) 141630 0.00 -1 s +3 sf +( visual) 149352 275.00 32 s +52832.0 122259.0 m +(types.) 59495 0.00 -1 s +4 sf +52832.0 128535.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 133322.0 m +(image\036depth) 49591 0.00 -1 s +3 sf +( ) 50203 -94.00 32 s +4 sf +(image) 57099 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 136483.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 139644.0 m +( depth) 60446 -34.00 32 s +3 sf +( \037 Type ) 71081 -34.67 32 s +2 sf +(card8) 77978 0.00 -1 s +3 sf +(.) 78684 0.00 -1 s +52832.0 144362.0 m +(Returns) 61610 0.00 -1 s +( the ) 66432 -19.00 32 s +4 sf +(depth) 72702 0.00 -1 s +3 sf +( \(that is, the) 85970 -19.00 32 s +( number of bits per pixel\) for the ) 123431 -19.50 32 s +4 sf +(image) 130327 0.00 -1 s +3 sf +(. ) 131719 -20.00 32 s +4 sf +52832.0 150639.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 155425.0 m +(image\036green\036mask) 56798 0.00 -1 s +3 sf +( ) 57383 -121.00 32 s +4 sf +(image) 64279 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 158586.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 161747.0 m +( mask) 60003 -20.00 32 s +3 sf +( \037 Type) 69996 -20.00 32 s +( ) 70681 -21.00 32 s +2 sf +(pixel) 76482 0.00 -1 s +3 sf +( or ) 80203 -20.50 32 s +2 sf +(null) 84909 0.00 -1 s +3 sf +(.) 85615 0.00 -1 s +52832.0 166466.0 m +(Returns) 61610 0.00 -1 s +( \(and with ) 73317 -147.00 32 s +2 sf +(setf) 77546 0.00 -1 s +3 sf +(\) changes the mask that selects the pixel subfield for green inten\036) 149352 -133.55 32 s +52832.0 169627.0 m +(sity) 56909 0.00 -1 s +( values. The mask is non\036) 84959 -159.00 32 s +2 sf +(nil) 88096 0.00 -1 s +3 sf +( only for images for ) 110577 -127.60 32 s +2 sf +(:direct\036color) 125618 0.00 -1 s +3 sf +( or ) 129061 -159.50 32 s +2 sf +(:true\036color) 142065 0.00 -1 s +3 sf +( visual) 149352 -160.00 32 s +52832.0 172788.0 m +(types.) 59495 0.00 -1 s +4 sf +52832.0 179064.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Images) 26852 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(7\03682) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(image\036height) 50217 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 50835 -88.00 32 s +/timsps10i 4 declareFont +4 sf +(image) 57731 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( height) 61228 -35.00 32 s +3 sf +( \037 Type ) 71860 -35.67 32 s +2 sf +(card16) 80168 0.00 -1 s +3 sf +(.) 80874 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the ) 66418 -26.00 32 s +4 sf +(height) 73472 0.00 -1 s +3 sf +( of the ) 81310 -26.00 32 s +4 sf +(image) 88206 0.00 -1 s +3 sf +( in) 91081 -26.00 32 s +( pixels.) 99207 -27.00 32 s +4 sf +52832.0 39895.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 44681.0 m +(image\036name) 49275 0.00 -1 s +3 sf +( ) 49887 -94.00 32 s +4 sf +(image) 56783 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 47842.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 51003.0 m +( name) 60306 -25.00 32 s +3 sf +( \037 Type ) 70968 -25.67 32 s +2 sf +(stringable) 83039 0.00 -1 s +3 sf +( or ) 86750 -25.50 32 s +2 sf +(null) 91456 0.00 -1 s +3 sf +(.) 92162 0.00 -1 s +52832.0 55722.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73665 -31.00 32 s +2 sf +(setf) 77894 0.00 -1 s +3 sf +(\) changes the ) 93396 -31.00 32 s +4 sf +(name) 99508 0.00 -1 s +3 sf +( string optionally associated with the ) 141524 -25.50 32 s +4 sf +(image) 148420 0.00 -1 s +3 sf +(.) 149126 0.00 -1 s +4 sf +52832.0 61999.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 66785.0 m +(image\036plist) 47866 0.00 -1 s +3 sf +( ) 48532 -40.00 32 s +4 sf +(image) 55428 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 69946.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 73107.0 m +( plist) 59093 -6.00 32 s +3 sf +( \037 Type ) 69812 -6.67 32 s +2 sf +(list) 73417 0.00 -1 s +3 sf +(.) 74123 0.00 -1 s +52832.0 77826.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73617 -47.00 32 s +2 sf +(setf) 77846 0.00 -1 s +3 sf +(\) changes the ) 93300 -47.00 32 s +4 sf +(image) 100196 0.00 -1 s +3 sf +( property list. The property list is) 137191 -39.17 32 s +( a hook for) 149352 -47.67 32 s +52832.0 80986.0 m +(added) 59571 0.00 -1 s +( application extensions.) 85976 -83.00 32 s +4 sf +52832.0 87263.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 92050.0 m +(image\036red\036mask) 54134 0.00 -1 s +3 sf +( ) 54741 -99.00 32 s +4 sf +(image) 61637 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 95210.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 98371.0 m +( mask) 60003 -20.00 32 s +3 sf +( \037 Type) 69996 -20.00 32 s +( ) 70681 -21.00 32 s +2 sf +(pixel) 76482 0.00 -1 s +3 sf +( or ) 80203 -20.50 32 s +2 sf +(null) 84909 0.00 -1 s +3 sf +(.) 85615 0.00 -1 s +52832.0 103090.0 m +(Returns) 61610 0.00 -1 s +( \(and with ) 73353 -135.00 32 s +2 sf +(setf) 77582 0.00 -1 s +3 sf +(\) changes the ) 92772 -135.00 32 s +4 sf +(mask) 98571 0.00 -1 s +3 sf +( which selects the pixel subfield for red inten\036) 149352 -117.75 32 s +52832.0 106251.0 m +(sity) 56909 0.00 -1 s +( values. The ) 70893 -146.00 32 s +4 sf +(mask) 76692 0.00 -1 s +3 sf +( is non\036) 84866 -146.00 32 s +2 sf +(nil) 88003 0.00 -1 s +3 sf +( only for images for ) 110538 -116.80 32 s +2 sf +(:direct\036color) 125579 0.00 -1 s +3 sf +( or ) 129048 -146.50 32 s +2 sf +(:true\036color) 142052 0.00 -1 s +3 sf +( visual) 149352 -147.00 32 s +52832.0 109412.0 m +(types.) 59495 0.00 -1 s +4 sf +52832.0 115689.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 120475.0 m +(image\036width) 49590 0.00 -1 s +3 sf +( ) 50226 -70.00 32 s +4 sf +(image) 57122 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 123636.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 126797.0 m +( width) 60451 -32.50 32 s +3 sf +( \037 Type ) 71092 -32.67 32 s +2 sf +(card16) 79400 0.00 -1 s +3 sf +(.) 80106 0.00 -1 s +52832.0 131516.0 m +(Returns) 61610 0.00 -1 s +( the ) 66422 -24.00 32 s +4 sf +(width) 72694 0.00 -1 s +3 sf +( of the ) 80538 -24.00 32 s +4 sf +(image) 87434 0.00 -1 s +3 sf +( in) 90311 -24.00 32 s +( pixels.) 98439 -25.00 32 s +4 sf +52832.0 137792.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 142579.0 m +(image\036x\036hot) 48961 0.00 -1 s +3 sf +( ) 49594 -73.00 32 s +4 sf +(image) 56490 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 145740.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 148900.0 m +( x\036position) 65476 -27.00 32 s +3 sf +( \037 Type ) 76134 -27.00 32 s +2 sf +(card16) 84442 0.00 -1 s +3 sf +( or ) 88150 -27.00 32 s +2 sf +(null) 92856 0.00 -1 s +3 sf +(.) 93562 0.00 -1 s +52832.0 153619.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73143 -205.00 32 s +2 sf +(setf) 77372 0.00 -1 s +3 sf +(\) changes the x position of the hot spot for an image used as a cur\036) 149352 -191.20 32 s +52832.0 156780.0 m +(sor) 56280 0.00 -1 s +( glyph. The hot spot position is specified relative to the upper\036left origin) 134667 -253.92 32 s +( of the ) 141750 -277.67 32 s +4 sf +(image) 148646 0.00 -1 s +3 sf +(.) 149352 0.00 -1 s +4 sf +52832.0 163057.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +2 sf +34544.0 167843.0 m +(image\036y\036hot) 48961 0.00 -1 s +3 sf +( ) 49594 -73.00 32 s +4 sf +(image) 56490 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 171004.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 174165.0 m +( y\036position) 64797 -27.00 32 s +3 sf +( \037 Type ) 75455 -27.00 32 s +2 sf +(card16) 83763 0.00 -1 s +3 sf +( or ) 87471 -27.00 32 s +2 sf +(null) 92177 0.00 -1 s +3 sf +(.) 92883 0.00 -1 s +4 sf +( ) 93562 -27.00 32 s +3 sf +52832.0 178884.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73143 -205.00 32 s +2 sf +(setf) 77372 0.00 -1 s +3 sf +(\) changes the y position of the hot spot for an image used as a cur\036) 149352 -191.20 32 s +52832.0 182045.0 m +(sor) 56280 0.00 -1 s +( glyph. The hot spot position is specified relative to the upper\036left origin) 134667 -253.92 32 s +( of the ) 141750 -277.67 32 s +4 sf +(image) 148646 0.00 -1 s +3 sf +(.) 149352 0.00 -1 s +4 sf +52832.0 188321.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67696 -35.00 32 s +2 sf +(image) 74905 0.00 -1 s +3 sf +( object.) 83177 -36.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +142511.0 8195.0 m +(Images) 149043 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(7\03683) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +35312.0 h +2 sf +(XY\036Format) 49413 0.00 -1 s +52832.0 h +(7.2.2) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The ) 65726 -40.00 32 s +2 sf +(image\036xy) 76696 0.00 -1 s +3 sf +( subtype represents an image as a sequence of bitmaps,) 138402 -40.56 32 s +20320.0 29216.0 m +40775.0 h +2 sf +(Images) 49396 0.00 -1 s +52832.0 h +3 sf +(one) 56907 0.00 -1 s +( for each plane of the image, in most\036significant to least\036significant bit order. The) 149352 39.85 32 s +52832.0 32377.0 m +(following) 63804 0.00 -1 s +( paragraphs describe) 86821 -88.00 32 s +( the additional CLX functions that can be used to access) 149352 -79.70 32 s +52832.0 35537.0 m +2 sf +(image\036xy) 63802 0.00 -1 s +3 sf +( objects.) 73129 -79.00 32 s +2 sf +34544.0 41814.0 m +(image\036xy\036bitmap\036list) 59619 0.00 -1 s +3 sf +( ) 60273 -52.00 32 s +/timsps10i 4 declareFont +4 sf +(image) 67169 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 44975.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 48136.0 m +( bitmaps) 63152 -14.00 32 s +3 sf +( \037 Type) 73157 -14.00 32 s +( ) 73848 -15.00 32 s +2 sf +(list) 77453 0.00 -1 s +3 sf +( of ) 81186 -14.50 32 s +2 sf +(bitmap) 89808 0.00 -1 s +3 sf +(.) 90514 0.00 -1 s +52832.0 52855.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73695 -21.00 32 s +2 sf +(setf) 77924 0.00 -1 s +3 sf +(\) changes the list of bitmap planes for the ) 125155 -20.56 32 s +4 sf +(image) 132051 0.00 -1 s +3 sf +(.) 132757 0.00 -1 s +4 sf +52832.0 59131.0 m +(image) 59728 0.00 -1 s +( \037 ) 63571 -39.00 32 s +3 sf +(An ) 67686 -39.00 32 s +2 sf +(image\036xy) 78656 0.00 -1 s +3 sf +( object.) 86924 -40.00 32 s +52832.0 64572.0 m +0.0 0.0 m +newpath +149013 63013 av +52967 63015 as +[] 0 setdash +dp +149352.0 64572.0 m +20320.0 67395.0 m +37502.0 h +2 sf +(Z\036Format) 49411 0.00 -1 s +52832.0 h +(7.2.3) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The ) 65727 -39.00 32 s +2 sf +(image\036z) 75128 0.00 -1 s +3 sf +( subtype represents an image as a two\036dimensional array) 138605 -39.25 32 s +20320.0 70556.0 m +40775.0 h +2 sf +(Images) 49396 0.00 -1 s +52832.0 h +3 sf +(of pixels,) 63335 0.00 32 s +( in scanline order. The following paragraphs describe the additional) 149352 1076.33 32 s +52832.0 73716.0 m +(CLX functions) 69683 0.00 32 s +( that can be used to access ) 99757 -36.71 32 s +2 sf +(image\036z) 109158 0.00 -1 s +3 sf +( objects. ) 119233 -18.50 32 s +2 sf +34544.0 79993.0 m +(image\036z\036bits\036per\036pixel) 61028 0.00 -1 s +3 sf +( ) 61650 -84.00 32 s +4 sf +(image) 68546 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 83154.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 86315.0 m +( pixel\036data\036size) 70813 -22.00 32 s +3 sf +( \037 One of 1, 4, 8, 16, 24, or 32.) 106815 -21.60 32 s +52832.0 91034.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73437 -107.00 32 s +2 sf +(setf) 77666 0.00 -1 s +3 sf +(\) changes the number of bits per data unit used to contain a pixel) 149352 -98.54 32 s +52832.0 94194.0 m +(value) 58944 0.00 -1 s +( for the ) 67541 -86.00 32 s +4 sf +(image) 74437 0.00 -1 s +3 sf +(. Depending on the storage format for image data, this value can) 146069 -78.18 32 s +( be) 149352 -87.00 32 s +52832.0 97355.0 m +(larger) 59411 0.00 -1 s +( than the) 69054 -38.00 32 s +( actual ) 77127 -38.50 32 s +4 sf +(image) 84023 0.00 -1 s +3 sf +( depth.) 91666 -39.00 32 s +4 sf +52832.0 103632.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67695 -36.00 32 s +2 sf +(image\036z) 77096 0.00 -1 s +3 sf +( object.) 85367 -37.00 32 s +2 sf +34544.0 108418.0 m +(image\036z\036pixarray) 55387 0.00 -1 s +( ) 55961 -132.00 32 s +4 sf +(image) 62857 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 111579.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 114740.0 m +( pixarray) 63890 -36.50 32 s +3 sf +( \037 Type ) 74519 -36.67 32 s +2 sf +(pixarray) 85022 0.00 -1 s +3 sf +(.) 85728 0.00 -1 s +52832.0 119459.0 m +(Returns) 61610 0.00 -1 s +( and) 66311 -80.00 32 s +( \(with ) 73517 -80.50 32 s +2 sf +(setf) 77746 0.00 -1 s +3 sf +(\) changes the two\036dimensional array of pixel data for the ) 141750 -72.50 32 s +4 sf +(image) 148646 0.00 -1 s +3 sf +(.) 149352 0.00 -1 s +4 sf +52832.0 125736.0 m +(image) 59728 0.00 -1 s +( \037 ) 63577 -36.00 32 s +3 sf +(An ) 67695 -36.00 32 s +2 sf +(image\036z) 77096 0.00 -1 s +3 sf +( object.) 85367 -37.00 32 s +20320.0 131245.0 m +0.0 0.0 m +newpath +20455 129621 av +149013 129619 as +[] 0 setdash +dp +149352.0 131245.0 m +/timsps12b 5 declareFont +5 sf +20320.0 134631.0 m +(Image) 29346 0.00 -1 s +( Functions) 44501 9.00 32 s +52832.0 h +2 sf +(7.3) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( following paragraphs describe the CLX functions used) 125138 -38.00 32 s +( to:) 128784 -39.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 141179.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Create) 65276 0.00 -1 s +( an ) 69262 -45.00 32 s +2 sf +(image) 76471 0.00 -1 s +3 sf +( object.) 84734 -45.00 32 s +6 sf +52832.0 147726.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Copy) 64027 0.00 -1 s +( an image) 74923 -38.00 32 s +( or a subimage.) 92050 -38.67 32 s +6 sf +52832.0 154274.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Read) 63711 0.00 -1 s +( an image from a ) 83330 -41.60 32 s +2 sf +(drawable) 94617 0.00 -1 s +3 sf +(.) 95323 0.00 -1 s +6 sf +52832.0 160822.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Display) 66690 0.00 -1 s +( an image to a) 82370 -38.00 32 s +( ) 83037 -39.00 32 s +2 sf +(drawable) 94324 0.00 -1 s +3 sf +(.) 95030 0.00 -1 s +2 sf +34544.0 167098.0 m +(create\036image) 50054 0.00 -1 s +3 sf +( &key ) 57688 -24.00 32 s +2 sf +(:bit\036lsb\036first\036p :bits\036per\036pixel :blue\036mask ) 107380 -23.67 32 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 170259.0 m +2 sf +(:byte\036lsb\036first\036p) 71793 0.00 -1 s +( :bytes\036per\036line :data :depth :format ) 116140 -16.80 32 s +52832.0 173420.0 m +(:green\036mask) 67877 0.00 -1 s +( :height) 77024 -23.00 32 s +( :name :plist :red\036mask :width ) 114289 -23.60 32 s +52832.0 176581.0 m +(:x\036hot) 60040 0.00 -1 s +( :y\036hot ) 70036 -9.00 32 s +34544.0 179742.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 182903.0 m +( ) 53505 -33.00 32 s +4 sf +(image) 60401 0.00 -1 s +3 sf +( \037 Type ) 71039 -33.67 32 s +2 sf +(image) 78248 0.00 -1 s +3 sf +(.) 78954 0.00 -1 s +52832.0 187621.0 m +(Creates) 61294 0.00 -1 s +( an ) 64908 -231.00 32 s +2 sf +(image) 72117 0.00 -1 s +3 sf +( object from the given ) 96590 -231.00 32 s +2 sf +(:data) 102859 0.00 -1 s +3 sf +( and returns either) 122618 -231.00 32 s +( an ) 126231 -231.50 32 s +2 sf +(image) 133440 0.00 -1 s +3 sf +(, ) 134852 0.00 32 s +2 sf +(image\036xy) 145822 0.00 -1 s +3 sf +(, or) 149352 -232.00 32 s +52832.0 190782.0 m +(an) 55496 0.00 -1 s +( ) 56066 -136.00 32 s +2 sf +(image\036z) 65467 0.00 -1 s +3 sf +(, depending on the type of image ) 102294 -136.00 32 s +2 sf +(:data) 108563 0.00 -1 s +3 sf +(. If the ) 116305 -136.00 32 s +2 sf +(:data) 122574 0.00 -1 s +3 sf +( is a) 126985 -68.00 32 s +( list, it is assumed to) 149352 -136.60 32 s +52832.0 193943.0 m +(be) 55496 0.00 -1 s +( a ) 57677 -242.00 32 s +2 sf +(list) 61282 0.00 -1 s +3 sf +( of ) 64560 -242.00 32 s +2 sf +(bitmaps) 74280 0.00 -1 s +3 sf +( and an ) 82411 -242.00 32 s +2 sf +(image\036xy) 93381 0.00 -1 s +3 sf +( is created. If the ) 112005 -193.20 32 s +2 sf +(:data) 118274 0.00 -1 s +3 sf +( is a ) 122803 -241.33 32 s +2 sf +(pixarray) 133306 0.00 -1 s +3 sf +(, an ) 137605 -241.50 32 s +2 sf +(image\036z) 147006 0.00 -1 s +3 sf +( is) 149352 -242.00 32 s +52832.0 197104.0 m +(created. Otherwise,) 74692 0.00 32 s +( the ) 79500 -26.00 32 s +2 sf +(:data) 85769 0.00 -1 s +3 sf +( must be an array of bytes \() 116386 -26.00 32 s +2 sf +(card8) 123283 0.00 -1 s +3 sf +(\), in) 127803 -26.00 32 s +( which case a basic) 149352 -20.00 32 s +52832.0 200265.0 m +2 sf +(image) 60041 0.00 -1 s +3 sf +( object is) 70157 -37.00 32 s +( created.) 79677 -38.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Images) 26852 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(7\03684) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(If the ) 59614 22.00 32 s +2 sf +(:data) 65883 0.00 -1 s +3 sf +( is a list, each element must be a bitmap of equal size. ) 127519 20.38 32 s +2 sf +(:width) 135356 0.00 -1 s +3 sf +( and ) 140888 22.50 32 s +2 sf +(:height) 149352 0.00 -1 s +3 sf +52832.0 25739.0 m +(default) 60667 0.00 -1 s +( to the bitmap width \037 \() 88708 -81.43 32 s +2 sf +(array\036dimension) 108773 0.00 -1 s +3 sf +( ) 109384 -95.00 32 s +2 sf +(bitmap) 118006 0.00 -1 s +3 sf +( 1\) \037 and) 129181 -63.33 32 s +( the bitmap height) 149352 -95.67 32 s +52832.0 28900.0 m +(\037) 55654 0.00 -1 s +( \() 57198 -101.00 32 s +2 sf +(array\036dimension) 77263 0.00 -1 s +3 sf +( ) 77868 -101.00 32 s +2 sf +(bitmap) 86490 0.00 -1 s +3 sf +( 0\) \037 respectively. ) 108422 -101.00 32 s +2 sf +(:depth) 116260 0.00 -1 s +3 sf +( defaults to the) 132651 -101.00 32 s +( number of bit\036) 149352 -101.67 32 s +52832.0 32060.0 m +(maps.) 59495 0.00 -1 s +52832.0 38337.0 m +(If) 54710 0.00 -1 s +( the ) 62528 1479.00 32 s +2 sf +(:data) 68797 0.00 -1 s +3 sf +( is a ) 78488 1479.33 32 s +2 sf +(pixarray) 88991 0.00 -1 s +3 sf +(, ) 91882 1479.00 32 s +2 sf +(:width) 99719 0.00 -1 s +3 sf +( and ) 108165 1479.50 32 s +2 sf +(:height) 116629 0.00 -1 s +3 sf +( default to the ) 138849 1479.50 32 s +2 sf +(pixarray) 149352 0.00 -1 s +3 sf +52832.0 41498.0 m +(width) 59259 0.00 -1 s +( \037 \() 68778 2173.00 32 s +2 sf +(array\036dimension pixarray) 102225 2173.00 32 s +3 sf +( 1\),) 108160 2173.00 32 s +( and the pixarray height \037) 149352 2172.40 32 s +52832.0 44659.0 m +(\() 53771 0.00 -1 s +2 sf +(array\036dimension) 73836 0.00 -1 s +( pixarray) 85678 633.00 32 s +3 sf +( 0\), respectively. ) 107091 633.00 32 s +2 sf +(:depth) 114929 0.00 -1 s +3 sf +( defaults to \() 131011 632.33 32 s +2 sf +(pixarray\036depth) 149352 0.00 -1 s +52832.0 47820.0 m +(:data) 59101 0.00 -1 s +3 sf +(\).) 60746 0.00 -1 s +( The ) 66082 -232.00 32 s +2 sf +(:bits\036per\036pixel) 83165 0.00 -1 s +3 sf +( is rounded to a valid size, if necessary. By default, the ) 143084 -212.25 32 s +2 sf +(:bits\036) 149352 0.00 -1 s +52832.0 50981.0 m +(per\036pixel) 63647 0.00 -1 s +3 sf +( is equal to the ) 80661 -30.60 32 s +2 sf +(:depth) 88499 0.00 -1 s +3 sf +(.) 89205 0.00 -1 s +52832.0 57257.0 m +(If) 54710 0.00 -1 s +( the) 58667 -197.00 32 s +( ) 59175 -198.00 32 s +2 sf +(:data) 65444 0.00 -1 s +3 sf +( is an array of ) 80678 -197.40 32 s +2 sf +(card8) 87575 0.00 -1 s +3 sf +(, the ) 92746 -197.50 32 s +2 sf +(:width) 100583 0.00 -1 s +3 sf +( and ) 105675 -197.50 32 s +2 sf +(:height) 114139 0.00 -1 s +3 sf +( are required to interpret the im\036) 149352 -164.67 32 s +52832.0 60418.0 m +(age) 56749 0.00 -1 s +( data correctly. The) 77918 -257.00 32 s +( ) 78366 -258.00 32 s +2 sf +(:bits\036per\036pixel) 95449 0.00 -1 s +3 sf +( defaults to the ) 112077 -193.00 32 s +2 sf +(:depth) 119915 0.00 -1 s +3 sf +(, and the ) 129489 -257.67 32 s +2 sf +(:depth) 137327 0.00 -1 s +3 sf +( defaults to) 149352 -257.50 32 s +52832.0 63579.0 m +(1.) 54949 0.00 -1 s +( ) 55633 -22.00 32 s +2 sf +(:bytes\036per\036line) 73185 0.00 -1 s +3 sf +( defaults to: ) 87150 -21.67 32 s +52832.0 69856.0 m +(\() 53771 0.00 -1 s +2 sf +(floor) 59569 0.00 -1 s +3 sf +( \() 61214 0.00 32 s +2 sf +(length) 68739 0.00 -1 s +( :data) 75694 -20.00 32 s +3 sf +(\)) 76633 0.00 -1 s +( \(* ) 80354 -20.50 32 s +2 sf +(:bits\036per\036pixel :height) 106586 -21.00 32 s +3 sf +(\)\)) 108464 0.00 -1 s +52832.0 76132.0 m +(The) 57220 0.00 -1 s +( ) 57632 -294.00 32 s +2 sf +(:format) 66874 0.00 -1 s +3 sf +( defines the storage format of image data bytes and can be one of the) 140636 -273.00 32 s +( follow\036) 149352 -295.00 32 s +52832.0 79293.0 m +(ing) 56438 0.00 -1 s +( values:) 65092 -46.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 85841.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:xy\036pixmap) 71706 0.00 -1 s +3 sf +( \037 The ) 81067 11.00 32 s +2 sf +(:data) 87336 0.00 -1 s +3 sf +( is organized as a set of bitmaps representing image bit) 149352 10.10 32 s +57912.0 89002.0 m +(planes,) 65828 0.00 -1 s +( appearing in most\036significant to least\036significant bit) 125465 -23.14 32 s +( order.) 132802 -28.00 32 s +6 sf +52832.0 95549.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:z\036pixmap) 70137 0.00 -1 s +3 sf +( \037 The ) 79387 -26.00 32 s +2 sf +(:data) 85656 0.00 -1 s +3 sf +( is organized as a set of pixel values in scanline order.) 146214 -23.55 32 s +6 sf +52832.0 102097.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:bitmap) 67473 0.00 -1 s +3 sf +( \037 Similar to ) 83258 -91.00 32 s +2 sf +(:xy\036pixmap) 97052 0.00 -1 s +3 sf +(, except that the ) 115263 -91.00 32 s +2 sf +(:depth) 123101 0.00 -1 s +3 sf +( must be 1, and 1 and) 147327 -78.00 32 s +( 0) 149352 -92.00 32 s +57912.0 105258.0 m +(bits) 61989 0.00 -1 s +( represent the foreground and background pixels, respectively.) 132125 -45.00 32 s +52832.0 111534.0 m +(By) 56125 0.00 -1 s +( default, the ) 70178 -18.00 32 s +2 sf +(:format) 79420 0.00 -1 s +3 sf +( is ) 82678 -18.00 32 s +2 sf +(:bitmap) 92239 0.00 -1 s +3 sf +( if) 94650 -18.00 32 s +( ) 95337 -19.00 32 s +2 sf +(:depth) 103175 0.00 -1 s +3 sf +( is 1; otherwise, ) 121678 -18.50 32 s +2 sf +(:z\036pixmap) 133903 0.00 -1 s +3 sf +(.) 134609 0.00 -1 s +2 sf +52832.0 117811.0 m +(:bit\036lsb\036first\036p) 69913 0.00 -1 s +3 sf +( \037 For a returned image, true if the order of bits in each ) 134825 52.00 32 s +2 sf +(:data) 141094 0.00 -1 s +3 sf +( byte is) 149352 52.50 32 s +57912.0 120972.0 m +(least\036significant) 75935 0.00 -1 s +( bit first.) 85592 8.00 32 s +2 sf +52832.0 125758.0 m +(:bits\036per\036pixel) 69915 0.00 -1 s +( ) 70597 -24.00 32 s +3 sf +(\037 One of 1, 4,) 87432 -24.00 32 s +( 8, 16, 24, or 32.) 105890 -24.60 32 s +2 sf +52832.0 130545.0 m +(:blue\036mask) 66313 0.00 -1 s +3 sf +( \037 For ) 75079 -31.00 32 s +2 sf +(:true\036color) 88083 0.00 -1 s +3 sf +( or ) 91784 -30.50 32 s +2 sf +(:direct\036color) 106825 0.00 -1 s +3 sf +( images, a pixel mask.) 131786 -30.50 32 s +2 sf +52832.0 135331.0 m +(:byte\036lsb\036first\036p) 71793 0.00 -1 s +3 sf +( \037 For a returned ) 91403 -263.00 32 s +/timsps10i 4 declareFont +4 sf +(image) 98299 0.00 -1 s +3 sf +(,) 99005 0.00 -1 s +( true if the ) 110333 -263.50 32 s +2 sf +(:data) 116602 0.00 -1 s +3 sf +( byte order is least\036significant) 149352 -197.75 32 s +57912.0 138492.0 m +(byte) 62771 0.00 -1 s +( first.) 68727 0.00 32 s +2 sf +52832.0 143279.0 m +(:bytes\036per\036line) 70384 0.00 -1 s +3 sf +( \037 For a returned) 90479 -31.00 32 s +( ) 91153 -32.00 32 s +4 sf +(image) 98049 0.00 -1 s +3 sf +(, the number of ) 115871 -31.50 32 s +2 sf +(:data) 122140 0.00 -1 s +3 sf +( bytes per scanline.) 143708 -21.00 32 s +2 sf +52832.0 148065.0 m +(:data) 59101 0.00 -1 s +3 sf +( \037 Either a ) 72795 -25.00 32 s +2 sf +(list) 76400 0.00 -1 s +3 sf +( of ) 80113 -24.50 32 s +2 sf +(bitmaps) 89833 0.00 -1 s +3 sf +(, a ) 93155 -24.50 32 s +2 sf +(pixarray) 103658 0.00 -1 s +3 sf +(, or an array of ) 120955 -19.60 32 s +2 sf +(card8) 127852 0.00 -1 s +3 sf +( bytes.) 135196 -25.00 32 s +2 sf +52832.0 152852.0 m +(:depth) 60670 0.00 -1 s +3 sf +( \037 The number of bits per displayed) 102092 -28.00 32 s +( pixel.) 109118 -29.00 32 s +2 sf +52832.0 157638.0 m +(:format) 62074 0.00 -1 s +3 sf +( \037 One of ) 74691 -20.00 32 s +2 sf +(:bitmap) 84252 0.00 -1 s +3 sf +(, ) 85644 -20.00 32 s +2 sf +(:xy\036format) 98647 0.00 -1 s +3 sf +(, or) 102389 -20.00 32 s +( ) 103074 -21.00 32 s +2 sf +(:z\036format) 114508 0.00 -1 s +3 sf +(.) 115214 0.00 -1 s +2 sf +52832.0 162425.0 m +(:green\036mask) 67877 0.00 -1 s +3 sf +( \037 For ) 76634 -34.00 32 s +2 sf +(:true\036color) 89638 0.00 -1 s +3 sf +( or ) 93332 -34.00 32 s +2 sf +(:direct\036color) 108373 0.00 -1 s +3 sf +( images, a pixel mask.) 133322 -33.50 32 s +2 sf +52832.0 167211.0 m +(:height) 61296 0.00 -1 s +3 sf +( \037 A ) 68192 -27.00 32 s +2 sf +(card16) 76500 0.00 -1 s +3 sf +( for the image height in) 102777 -27.00 32 s +( pixels.) 110902 -28.00 32 s +2 sf +52832.0 171998.0 m +(:name) 60354 0.00 -1 s +3 sf +( \037 An optional) 77898 -31.00 32 s +( ) 78572 -32.00 32 s +2 sf +(stringable) 90643 0.00 -1 s +3 sf +( for the image name.) 113792 -31.50 32 s +2 sf +52832.0 176784.0 m +(:plist) 58945 0.00 -1 s +( ) 59634 -17.00 32 s +3 sf +(\037 An optional) 76531 -17.00 32 s +( image property list.) 99207 -17.67 32 s +2 sf +52832.0 181570.0 m +(:red\036mask) 65213 0.00 -1 s +3 sf +( \037 For ) 73979 -31.00 32 s +2 sf +(:true\036color) 86983 0.00 -1 s +3 sf +( or) 90008 -31.00 32 s +( ) 90682 -32.00 32 s +2 sf +(:direct\036color) 105723 0.00 -1 s +3 sf +( images, a pixel mask.) 130680 -31.50 32 s +2 sf +52832.0 186357.0 m +(:width) 60669 0.00 -1 s +3 sf +( \037 A ) 67577 -23.00 32 s +2 sf +(card16) 75885 0.00 -1 s +3 sf +( for the image) 91567 -23.00 32 s +( width in pixels.) 109683 -23.67 32 s +2 sf +52832.0 191143.0 m +(:x\036hot) 60040 0.00 -1 s +3 sf +( \037 For a ) 70764 -23.50 32 s +2 sf +(cursor ) 79284 -23.00 32 s +3 sf +(image, the x position of the hot spot.) 120430 -23.57 32 s +2 sf +52832.0 195930.0 m +(:y\036hot) 60040 0.00 -1 s +3 sf +( \037 For a cursor image, the y position of the hot) 113590 -20.00 32 s +( spot.) 119685 -21.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +142511.0 8195.0 m +(Images) 149043 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(7\03685) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(copy\036image) 48336 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 49020 -22.00 32 s +/timsps10i 4 declareFont +4 sf +(image ) 56600 -22.00 32 s +3 sf +(&key \() 64493 -22.00 32 s +2 sf +(:x) 66843 0.00 -1 s +3 sf +( 0\) \() 71499 -22.50 32 s +2 sf +(:y) 73849 0.00 -1 s +3 sf +( 0\) ) 77566 -22.50 32 s +2 sf +(:width :height :result\036type) 109180 -22.50 32 s +3 sf +( ) 109863 -23.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 28900.0 m +( ) 53506 -32.00 32 s +4 sf +(new\036image) 65887 0.00 -1 s +3 sf +( \037 Type ) 76530 -32.00 32 s +2 sf +(image) 83739 0.00 -1 s +3 sf +(.) 84445 0.00 -1 s +( ) 85118 -33.00 32 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( a new image, of the given ) 91413 -109.00 32 s +2 sf +(:result\036type) 105359 0.00 -1 s +3 sf +(, containing a copy of the portion of the) 149352 -95.00 32 s +52832.0 36779.0 m +4 sf +(image) 59728 0.00 -1 s +3 sf +( defined by ) 73046 -28.00 32 s +2 sf +(:x) 75396 0.00 -1 s +3 sf +(, ) 76780 -28.00 32 s +2 sf +(:y) 79130 0.00 -1 s +3 sf +(, ) 80515 -27.00 32 s +2 sf +(:width) 88352 0.00 -1 s +3 sf +(, and ) 94490 -27.50 32 s +2 sf +(:height) 102954 0.00 -1 s +3 sf +(. By default, ) 117557 -18.33 32 s +2 sf +(:width) 125394 0.00 -1 s +3 sf +( is:) 128738 -28.00 32 s +52832.0 43056.0 m +(\(-) 55182 0.00 -1 s +( \() 56808 -19.00 32 s +2 sf +(image\036width) 71854 0.00 -1 s +3 sf +( ) 72541 -19.00 32 s +4 sf +(image) 79437 0.00 -1 s +3 sf +(\)) 80376 0.00 -1 s +( ) 81062 -20.00 32 s +2 sf +(:x) 83412 0.00 -1 s +3 sf +(\)) 84351 0.00 -1 s +52832.0 49332.0 m +(and) 56907 0.00 -1 s +( ) 57591 -22.00 32 s +2 sf +(:height) 66055 0.00 -1 s +3 sf +( is:) 69404 -23.00 32 s +52832.0 55609.0 m +(\(-) 55182 0.00 -1 s +( \() 56789 -38.00 32 s +2 sf +(image\036height) 72462 0.00 -1 s +3 sf +( ) 73130 -38.00 32 s +4 sf +(image) 80026 0.00 -1 s +3 sf +(\) ) 81671 0.00 32 s +2 sf +(:y) 84021 0.00 -1 s +3 sf +(\)) 84960 0.00 -1 s +52832.0 61886.0 m +(If) 54710 0.00 -1 s +( necessary, the new image is converted to the ) 105626 -89.89 32 s +2 sf +(:result\036type) 119572 0.00 -1 s +3 sf +(, that can be one of the fol\036) 149352 -89.57 32 s +52832.0 65047.0 m +(lowing) 60670 0.00 -1 s +( values:) 69314 -56.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 71594.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +('image\036x) 68410 0.00 -1 s +3 sf +( \037 A basic ) 81793 -24.75 32 s +2 sf +(image) 89002 0.00 -1 s +3 sf +( object is returned.) 109931 -24.67 32 s +6 sf +52832.0 78142.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +('image\036xy) 69821 0.00 -1 s +3 sf +( \037 An ) 78122 -29.00 32 s +2 sf +(image\036xy) 89092 0.00 -1 s +3 sf +( is returned.) 102435 -29.00 32 s +6 sf +52832.0 84689.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +('image\036z) 68252 0.00 -1 s +3 sf +( \037 An) 75886 -24.00 32 s +( ) 76567 -25.00 32 s +2 sf +(image\036z) 85968 0.00 -1 s +3 sf +( is returned.) 99320 -24.50 32 s +4 sf +52832.0 90966.0 m +(image) 59728 0.00 -1 s +3 sf +( \037 An ) 68011 -35.00 32 s +2 sf +(image) 75220 0.00 -1 s +3 sf +( object.) 83493 -35.00 32 s +2 sf +52832.0 95752.0 m +(:x) 55182 0.00 -1 s +3 sf +(,) 55888 0.00 -1 s +( ) 56608 14.00 32 s +2 sf +(:y) 58958 0.00 -1 s +3 sf +( \037 ) 63221 14.50 32 s +2 sf +(card16) 71529 0.00 -1 s +3 sf +( values defining the position of the upper\036left corner of the subimage) 149352 14.45 32 s +57912.0 98913.0 m +(copied.) 66141 0.00 -1 s +2 sf +52832.0 103700.0 m +(:width) 60669 0.00 -1 s +3 sf +(,) 61375 0.00 -1 s +( ) 62046 -35.00 32 s +2 sf +(:height) 70510 0.00 -1 s +3 sf +( \037 ) 74674 -35.00 32 s +2 sf +(card16) 82982 0.00 -1 s +3 sf +( values defining the size of subimage copied.) 133525 -34.86 32 s +2 sf +52832.0 108486.0 m +(:result\036type) 66778 0.00 -1 s +3 sf +( \037 One of ) 79371 -26.00 32 s +2 sf +('image\036x) 89869 0.00 -1 s +3 sf +(,) 90575 0.00 -1 s +( ) 91254 -27.00 32 s +2 sf +('image\036xy) 103163 0.00 -1 s +3 sf +(, or ) 107578 -26.50 32 s +2 sf +('image\036z) 117918 0.00 -1 s +3 sf +(.) 118624 0.00 -1 s +2 sf +34544.0 113273.0 m +(get\036image) 46295 0.00 -1 s +3 sf +( ) 46972 -29.00 32 s +4 sf +(drawable ) 58310 -29.00 32 s +3 sf +(&key ) 65257 -29.00 32 s +2 sf +(:x) 67607 0.00 -1 s +3 sf +( ) 68284 -29.00 32 s +2 sf +(:y) 70634 0.00 -1 s +3 sf +( ) 71311 -29.00 32 s +2 sf +(:width) 79148 0.00 -1 s +3 sf +( ) 79825 -29.00 32 s +2 sf +(:height) 88289 0.00 -1 s +3 sf +( ) 88966 -29.00 32 s +2 sf +(:plane\036mask ) 104535 -29.00 32 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 116434.0 m +(\() 53771 0.00 -1 s +2 sf +(:format) 63013 0.00 -1 s +( :z\036format) 75140 -13.00 32 s +3 sf +(\)) 76079 0.00 -1 s +2 sf +( :result\036type) 90718 -13.00 32 s +34544.0 119594.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +52832.0 122755.0 m +( ) 53505 -33.00 32 s +4 sf +(image) 60401 0.00 -1 s +3 sf +( \037 Type ) 71039 -33.67 32 s +2 sf +(image) 78248 0.00 -1 s +3 sf +(.) 78954 0.00 -1 s +52832.0 127474.0 m +(Returns) 61610 0.00 -1 s +( an ) 65499 -93.50 32 s +4 sf +(image) 72395 0.00 -1 s +3 sf +( containing pixel values from the region of the ) 124612 -93.56 32 s +4 sf +(drawable) 135273 0.00 -1 s +3 sf +( given by ) 146296 -62.33 32 s +2 sf +(:x) 148646 0.00 -1 s +3 sf +(,) 149352 0.00 -1 s +52832.0 130635.0 m +2 sf +(:y) 55182 0.00 -1 s +3 sf +(,) 55888 0.00 -1 s +( ) 56408 -186.00 32 s +2 sf +(:width) 64245 0.00 -1 s +3 sf +(, and ) 70066 -186.00 32 s +2 sf +(:height) 78530 0.00 -1 s +3 sf +(. The bits for all planes selected by 1 bits in the ) 130495 -170.00 32 s +2 sf +(:plane\036mask) 145387 0.00 -1 s +3 sf +( are) 149352 -186.00 32 s +52832.0 133796.0 m +(returned) 62233 0.00 -1 s +( as zero; the default ) 83962 -215.00 32 s +2 sf +(:plane\036mask) 98854 0.00 -1 s +3 sf +( is all 1 bits. The ) 117302 -178.83 32 s +2 sf +(:format) 126544 0.00 -1 s +3 sf +( of the returned pixel) 149352 -214.50 32 s +52832.0 136957.0 m +(values) 60042 0.00 -1 s +( may be) 68911 -33.00 32 s +( either ) 76680 -33.50 32 s +2 sf +(:xy\036format) 89683 0.00 -1 s +3 sf +( or ) 93411 -17.00 32 s +2 sf +(:z\036format) 104845 0.00 -1 s +3 sf +(.) 105551 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Images) 26852 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(7\03686) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(The ) 57895 -31.00 32 s +2 sf +(:result\036type) 71841 0.00 -1 s +3 sf +( defines the) 84788 -31.00 32 s +( type of image object returned:) 119346 -31.60 32 s +/symbb8 6 declareFont +6 sf +52832.0 29125.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +('image\036x) 68410 0.00 -1 s +3 sf +( \037 A basic ) 81793 -24.75 32 s +2 sf +(image) 89002 0.00 -1 s +3 sf +( object is returned.) 109931 -24.67 32 s +6 sf +52832.0 35673.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +('image\036xy) 69821 0.00 -1 s +3 sf +( \037 An ) 78122 -29.00 32 s +2 sf +(image\036xy) 89092 0.00 -1 s +3 sf +( is returned.) 102435 -29.00 32 s +6 sf +52832.0 42220.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +('image\036z) 68252 0.00 -1 s +3 sf +( \037 An) 75886 -24.00 32 s +( ) 76567 -25.00 32 s +2 sf +(image\036z) 85968 0.00 -1 s +3 sf +( is returned.) 99320 -24.50 32 s +52832.0 48497.0 m +(By) 56125 0.00 -1 s +( default, ) 65880 -99.00 32 s +2 sf +(:result\036type) 79826 0.00 -1 s +3 sf +( is ) 82922 -99.00 32 s +2 sf +('image\036z) 93262 0.00 -1 s +3 sf +( if ) 96200 -98.50 32 s +2 sf +(:format) 105442 0.00 -1 s +3 sf +( is ) 108539 -98.50 32 s +2 sf +(:z\036format) 119973 0.00 -1 s +3 sf +( and ) 125263 -98.50 32 s +2 sf +('image\036xy) 137172 0.00 -1 s +3 sf +( if ) 140110 -98.50 32 s +2 sf +(:format) 149352 0.00 -1 s +3 sf +52832.0 51658.0 m +(is) 54714 0.00 -1 s +( ) 55402 -18.00 32 s +2 sf +(:xy\036format) 68405 0.00 -1 s +3 sf +(.) 69111 0.00 -1 s +/timsps10i 4 declareFont +4 sf +52832.0 57935.0 m +(drawable) 63493 0.00 -1 s +3 sf +( \037 A ) 70326 -48.00 32 s +2 sf +(drawable) 81613 0.00 -1 s +3 sf +(.) 82319 0.00 -1 s +2 sf +52832.0 62721.0 m +(:x) 55182 0.00 -1 s +3 sf +(,) 55888 0.00 -1 s +( ) 56644 50.00 32 s +2 sf +(:y) 58994 0.00 -1 s +3 sf +( \037 ) 63328 50.00 32 s +2 sf +(card16) 71636 0.00 -1 s +3 sf +( values defining the upper\036left) 105846 50.00 32 s +( ) 106601 49.00 32 s +2 sf +(drawable) 117888 0.00 -1 s +3 sf +( pixel returned. These argu\036) 149352 49.50 32 s +57912.0 65882.0 m +(ments) 64653 0.00 -1 s +( are) 68767 -37.00 32 s +( required.) 79542 -38.00 32 s +2 sf +52832.0 70668.0 m +(:width) 60669 0.00 -1 s +3 sf +(,) 61375 0.00 -1 s +( ) 62024 -57.00 32 s +2 sf +(:height) 70488 0.00 -1 s +3 sf +( \037 ) 74608 -57.00 32 s +2 sf +(card16) 82916 0.00 -1 s +3 sf +( values defining the size of the ) 117709 -56.71 32 s +4 sf +(image) 124605 0.00 -1 s +3 sf +( returned. These argu\036) 149352 -56.67 32 s +57912.0 73829.0 m +(ments) 64653 0.00 -1 s +( are) 68767 -37.00 32 s +( required.) 79542 -38.00 32 s +2 sf +52832.0 78616.0 m +(:plane\036mask) 67724 0.00 -1 s +3 sf +( \037 A pixel mask.) 87602 -27.75 32 s +2 sf +52832.0 83402.0 m +(:format) 62074 0.00 -1 s +3 sf +( \037 Either) 73151 -26.00 32 s +( ) 73830 -27.00 32 s +2 sf +(:xy\036pixmap) 87624 0.00 -1 s +3 sf +( or ) 91333 -26.50 32 s +2 sf +(:z\036pixmap) 103558 0.00 -1 s +3 sf +(.) 104264 0.00 -1 s +2 sf +52832.0 88189.0 m +(:result\036type) 66778 0.00 -1 s +3 sf +( \037 One of ) 79371 -26.00 32 s +2 sf +('image\036x) 89869 0.00 -1 s +3 sf +(, ) 91254 -27.00 32 s +2 sf +('image\036xy) 103163 0.00 -1 s +3 sf +(, or ) 107578 -26.50 32 s +2 sf +('image\036z) 117918 0.00 -1 s +3 sf +(.) 118624 0.00 -1 s +2 sf +34544.0 92975.0 m +(put\036image) 46769 0.00 -1 s +3 sf +( ) 47450 -25.00 32 s +4 sf +(drawable gcontext image ) 76610 -25.00 32 s +3 sf +(&key \() 84500 -25.00 32 s +2 sf +(:src\036x) 91393 0.00 -1 s +3 sf +( 0\)) 94424 -25.00 32 s +( \() 96043 -26.00 32 s +2 sf +(:src\036y) 102936 0.00 -1 s +3 sf +( 0\) ) 106647 -25.50 32 s +2 sf +(:x) 108997 0.00 -1 s +3 sf +( ) 109678 -25.00 32 s +2 sf +(:y) 112028 0.00 -1 s +3 sf +( ) 112708 -26.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 96136.0 m +2 sf +(:width) 60669 0.00 -1 s +( :height) 69816 -23.00 32 s +( :bitmap\036p) 82567 -24.00 32 s +3 sf +52832.0 100855.0 m +(Displays) 62708 0.00 -1 s +( a region of the ) 79198 -260.00 32 s +4 sf +(image) 86094 0.00 -1 s +3 sf +( defined by ) 98716 -260.00 32 s +2 sf +(:src\036x) 105609 0.00 -1 s +3 sf +(, ) 106762 -259.00 32 s +2 sf +(:src\036y) 113655 0.00 -1 s +3 sf +(, ) 114807 -260.00 32 s +2 sf +(:width) 122644 0.00 -1 s +3 sf +(, and ) 128578 -129.50 32 s +2 sf +(:height) 137042 0.00 -1 s +3 sf +( on the des\036) 149352 -259.67 32 s +52832.0 104016.0 m +(tination) 61454 0.00 -1 s +( d) 63502 -69.00 32 s +4 sf +(rawable) 72752 0.00 -1 s +3 sf +(, with the upper\036left pixel of the ) 108949 -68.57 32 s +4 sf +(image) 115845 0.00 -1 s +3 sf +( region displayed at the ) 142611 -54.80 32 s +4 sf +(draw\036) 149352 0.00 -1 s +52832.0 107177.0 m +(able) 57691 0.00 -1 s +3 sf +( position given by ) 78601 -25.00 32 s +2 sf +(:x) 80951 0.00 -1 s +3 sf +( and ) 86389 -24.50 32 s +2 sf +(:y) 88739 0.00 -1 s +3 sf +(. By default, ) 103348 -16.33 32 s +2 sf +(:width) 111185 0.00 -1 s +3 sf +( is: ) 115214 -24.50 32 s +52832.0 113453.0 m +(\(-) 55182 0.00 -1 s +( \() 56806 -21.00 32 s +2 sf +(image\036width) 71852 0.00 -1 s +3 sf +( ) 72537 -21.00 32 s +4 sf +(image) 79433 0.00 -1 s +3 sf +(\) ) 81057 -21.00 32 s +2 sf +(:src\036x) 87950 0.00 -1 s +3 sf +(\)) 88889 0.00 -1 s +52832.0 119730.0 m +(and) 56907 0.00 -1 s +( ) 57596 -17.00 32 s +2 sf +(:height) 66060 0.00 -1 s +3 sf +( is: ) 70104 -17.00 32 s +52832.0 126007.0 m +(\(-) 55182 0.00 -1 s +( \() 56787 -40.00 32 s +2 sf +(image\036height) 72460 0.00 -1 s +3 sf +( ) 73166 0.00 32 s +4 sf +(image) 80062 0.00 -1 s +3 sf +(\)) 81001 0.00 -1 s +( ) 81666 -41.00 32 s +2 sf +(:src\036y) 88559 0.00 -1 s +3 sf +(\)) 89498 0.00 -1 s +52832.0 132283.0 m +(The) 57220 0.00 -1 s +( following attributes of the ) 86601 -284.00 32 s +4 sf +(gcontext) 96161 0.00 -1 s +3 sf +( are used to display the ) 121109 -283.50 32 s +2 sf +(image) 128318 0.00 -1 s +3 sf +(: clip\036mask, clip\036x,) 149352 -142.00 32 s +52832.0 135444.0 m +(clip\036y,) 60120 0.00 -1 s +( function, plane\036mask, and) 89945 -64.00 32 s +( subwindow\036mode.) 111512 -65.00 32 s +52832.0 141721.0 m +(The) 57220 0.00 -1 s +( ) 57727 -199.00 32 s +2 sf +(:bitmap\036p) 69796 0.00 -1 s +3 sf +( argument applies only to images of depth 1. In this case, if ) 134894 -183.62 32 s +2 sf +(:bitmap\036p) 146963 0.00 -1 s +3 sf +( is) 149352 -199.00 32 s +52832.0 144882.0 m +(true) 57219 0.00 -1 s +( or if the ) 67160 -101.00 32 s +4 sf +(image) 74056 0.00 -1 s +3 sf +( is a basic ) 85410 -101.00 32 s +2 sf +(image) 92619 0.00 -1 s +3 sf +( object created with ) 115198 -75.75 32 s +2 sf +(:format :bitmap) 134606 -101.00 32 s +3 sf +(, the ) 139970 -101.00 32 s +4 sf +(image) 146866 0.00 -1 s +3 sf +( is) 149352 -102.00 32 s +52832.0 148042.0 m +(combined) 63961 0.00 -1 s +( with the foreground and background pixels of the ) 120411 -93.33 32 s +2 sf +(gcontext) 130597 0.00 -1 s +3 sf +(. 1 bits) 137993 -105.00 32 s +( of the ) 145592 -105.67 32 s +4 sf +(im\036) 149352 0.00 -1 s +52832.0 151203.0 m +(age) 56907 0.00 -1 s +3 sf +( are displayed in) 74719 -254.00 32 s +( the foreground pixel and 0 bits are displayed in the background pix\036) 149352 -233.33 32 s +52832.0 154364.0 m +(el.) 55575 0.00 -1 s +4 sf +52832.0 160641.0 m +(drawable) 63493 0.00 -1 s +3 sf +( \037) 66969 -52.00 32 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +3 sf +(.) 97694 0.00 -1 s +4 sf +52832.0 165427.0 m +(gcontext) 62392 0.00 -1 s +3 sf +( \037 The graphics context used to display the ) 112467 -36.00 32 s +4 sf +(image) 119363 0.00 -1 s +3 sf +(.) 120069 0.00 -1 s +4 sf +52832.0 170214.0 m +(image) 59728 0.00 -1 s +3 sf +( \037 An ) 68011 -35.00 32 s +2 sf +(image) 75220 0.00 -1 s +3 sf +( object.) 83493 -35.00 32 s +2 sf +52832.0 175000.0 m +(:src\036x) 59725 0.00 -1 s +3 sf +(,) 60431 0.00 -1 s +( ) 61086 -51.00 32 s +2 sf +(:src\036y) 67979 0.00 -1 s +3 sf +( \037 ) 72111 -51.00 32 s +2 sf +(card16) 80419 0.00 -1 s +3 sf +( values defining the upper\036left position of the ) 131741 -50.50 32 s +4 sf +(image) 138637 0.00 -1 s +3 sf +( region to) 149352 -50.50 32 s +57912.0 178161.0 m +(display.) 66770 0.00 -1 s +2 sf +52832.0 182948.0 m +(:x) 55182 0.00 -1 s +3 sf +(,) 55888 0.00 -1 s +( ) 56419 -175.00 32 s +2 sf +(:y) 58769 0.00 -1 s +3 sf +( \037 The position in the ) 83902 -175.00 32 s +4 sf +(drawable) 94563 0.00 -1 s +3 sf +( where the ) 106497 -175.00 32 s +4 sf +(image) 113393 0.00 -1 s +3 sf +( region is displayed. These) 142869 -175.00 32 s +( argu\036) 149352 -176.00 32 s +57912.0 186109.0 m +(ments) 64653 0.00 -1 s +( are) 68767 -37.00 32 s +( required.) 79542 -38.00 32 s +2 sf +52832.0 190895.0 m +(:width) 60669 0.00 -1 s +3 sf +(,) 61375 0.00 -1 s +( ) 62049 -32.00 32 s +2 sf +(:height ) 71187 -32.00 32 s +3 sf +(\037 ) 74683 -32.00 32 s +2 sf +(card16) 82991 0.00 -1 s +3 sf +( values defining the size of the ) 117953 -32.57 32 s +4 sf +(image) 124849 0.00 -1 s +3 sf +( region displayed.) 144927 -32.50 32 s +2 sf +52832.0 195682.0 m +(:bitmap\036p) 64901 0.00 -1 s +3 sf +( \037 If ) 71914 65.00 32 s +4 sf +(image) 78810 0.00 -1 s +3 sf +( is depth 1, then if true, foreground and) 123533 65.00 32 s +( background pixels are) 149352 64.33 32 s +57912.0 198842.0 m +(used) 63085 0.00 -1 s +( to display 1 and 0 bits of the ) 96346 -23.56 32 s +4 sf +(image) 103242 0.00 -1 s +3 sf +(.) 103948 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +142511.0 8195.0 m +(Images) 149043 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(7\03687) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +149013 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 5 declareFont +5 sf +20320.0 26687.0 m +(Image Files) 37005 41.00 32 s +52832.0 h +2 sf +(7.4) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(CLX) 64198 0.00 -1 s +( provides functions that allow images to) 109644 50.00 32 s +( be written to a file in a standard X) 149352 49.44 32 s +52832.0 29848.0 m +(format.) 61059 0.00 -1 s +( The following paragraphs describe the CLX functions used to:) 132012 -31.89 32 s +/symbb8 6 declareFont +6 sf +52832.0 36395.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Read) 63711 0.00 -1 s +( an image from a) 82728 -26.00 32 s +( file.) 87873 -27.00 32 s +6 sf +52832.0 42943.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Write) 64336 0.00 -1 s +( an image to a) 80100 -17.00 32 s +( file.) 85254 -18.00 32 s +2 sf +34544.0 49220.0 m +(read\036bitmap\036file) 54290 0.00 -1 s +3 sf +( ) 54939 -57.00 32 s +/timsps10i 4 declareFont +4 sf +(pathname) 66068 0.00 -1 s +3 sf +( ) 66717 -57.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 52380.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 55541.0 m +( ) 53510 -28.00 32 s +4 sf +(image) 60406 0.00 -1 s +3 sf +( \037 Type ) 71061 -28.00 32 s +2 sf +(image) 78270 0.00 -1 s +3 sf +(. ) 79654 -28.00 32 s +52832.0 60260.0 m +(Reads) 59729 0.00 -1 s +( an image file in standard X format and returns an ) 114843 -169.00 32 s +2 sf +(image) 122052 0.00 -1 s +3 sf +( object. The returned ) 145592 -168.75 32 s +4 sf +(im\036) 149352 0.00 -1 s +52832.0 63421.0 m +(age) 56907 0.00 -1 s +3 sf +( can have depth greater than one.) 93856 -45.67 32 s +4 sf +52832.0 69698.0 m +(pathname) 63961 0.00 -1 s +3 sf +( \037 An image) 79140 -35.00 32 s +( file pathname.) 95918 -35.50 32 s +4 sf +( ) 96588 -36.00 32 s +2 sf +34544.0 74484.0 m +(write\036bitmap\036file) 55070 0.00 -1 s +3 sf +( ) 55725 -51.00 32 s +4 sf +(pathname) 66854 0.00 -1 s +( image) 74404 -52.00 32 s +3 sf +( &optional ) 87157 -51.50 32 s +4 sf +(name) 93269 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 79203.0 m +(Writes) 60354 0.00 -1 s +( the ) 65712 249.00 32 s +4 sf +(image) 72608 0.00 -1 s +3 sf +( to an image file in standard) 105608 249.00 32 s +( X format. The ) 124078 248.50 32 s +4 sf +(image) 130974 0.00 -1 s +3 sf +( can have depth) 149352 248.33 32 s +52832.0 82364.0 m +(greater) 60664 0.00 -1 s +( than one. The ) 77020 -124.00 32 s +4 sf +(name) 83132 0.00 -1 s +3 sf +( is an image identifier written) 115818 -124.00 32 s +( to the file; the default ) 140777 -124.50 32 s +4 sf +(name) 146889 0.00 -1 s +3 sf +( is) 149352 -125.00 32 s +52832.0 85525.0 m +(\() 53771 0.00 -1 s +2 sf +(or) 56435 0.00 -1 s +3 sf +( \() 58041 -39.00 32 s +2 sf +(image\036name) 72772 0.00 -1 s +3 sf +( ) 73439 -39.00 32 s +4 sf +(image) 80335 0.00 -1 s +3 sf +(\)) 81274 0.00 -1 s +2 sf +( 'image) 90089 -39.00 32 s +3 sf +(\).) 91734 0.00 -1 s +4 sf +52832.0 91801.0 m +(pathname) 63961 0.00 -1 s +3 sf +( \037 An image file) 83547 -41.00 32 s +( pathname.) 95888 -42.00 32 s +4 sf +52832.0 96588.0 m +(image) 59728 0.00 -1 s +3 sf +( \037 An ) 68011 -35.00 32 s +2 sf +(image) 75220 0.00 -1 s +3 sf +( object.) 83493 -35.00 32 s +4 sf +52832.0 101374.0 m +(name) 58944 0.00 -1 s +3 sf +( \037 A ) 65808 -37.67 32 s +2 sf +(stringable) 77879 0.00 -1 s +3 sf +( image name.) 92930 -37.50 32 s +20320.0 106883.0 m +0.0 0.0 m +newpath +20455 105259 av +149013 105257 as +[] 0 setdash +dp +149352.0 106883.0 m +5 sf +20320.0 110270.0 m +(Direct) 29342 0.00 -1 s +( Image) 39245 30.00 32 s +( ) 40121 29.00 32 s +52832.0 h +2 sf +(7.5) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(For) 62474 0.00 -1 s +( cases where the ) 81446 -37.00 32 s +2 sf +(image) 88655 0.00 -1 s +3 sf +( representation is not needed, CLX) 127813 -37.00 32 s +( provides) 138199 -38.00 32 s +5 sf +20320.0 113657.0 m +(Transfer) 33108 0.00 -1 s +52832.0 h +3 sf +(functions) 63334 0.00 -1 s +( to read and display image data directly.) 108238 -34.00 32 s +2 sf +34544.0 119933.0 m +(get\036raw\036image) 51935 0.00 -1 s +3 sf +( ) 52617 -24.00 32 s +4 sf +(drawable ) 63960 -24.00 32 s +3 sf +(&key ) 70912 -24.00 32 s +2 sf +(:data) 77181 0.00 -1 s +3 sf +( \() 78802 -24.00 32 s +2 sf +(:start) 85381 0.00 -1 s +3 sf +( 0\)) 88413 -24.00 32 s +2 sf +( :x :y :width :height) 112144 -23.50 32 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 123094.0 m +2 sf +(:plane\036mask) 67724 0.00 -1 s +( ) 68403 -27.00 32 s +3 sf +(\() 69342 0.00 -1 s +2 sf +(:format) 78584 0.00 -1 s +3 sf +( ) 79263 -27.00 32 s +2 sf +(:z\036format) 90697 0.00 -1 s +3 sf +(\)) 91636 0.00 -1 s +( \() 93253 -28.00 32 s +2 sf +(:result\036type) 107199 0.00 -1 s +3 sf +( ) 107878 -27.00 32 s +2 sf +(') 108817 0.00 -1 s +3 sf +(\() 109756 0.00 -1 s +2 sf +(vector) 117276 0.00 -1 s +3 sf +( ) 117954 -28.00 32 s +2 sf +(card8) 124851 0.00 -1 s +3 sf +(\)\)) 126729 0.00 -1 s +2 sf +34544.0 127813.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 130974.0 m +54864.0 h +4 sf +(data) 59881 0.00 -1 s +3 sf +( \037 Type ) 70480 -46.67 32 s +2 sf +(sequence) 81297 0.00 -1 s +3 sf +( or ) 84966 -46.50 32 s +2 sf +(card8) 91863 0.00 -1 s +3 sf +(.) 92569 0.00 -1 s +52832.0 134135.0 m +54864.0 h +4 sf +(depth) 61134 0.00 -1 s +3 sf +( \037 Type) 71061 -53.00 32 s +( ) 71713 -54.00 32 s +2 sf +(card8) 78610 0.00 -1 s +3 sf +(.) 79316 0.00 -1 s +52832.0 137295.0 m +54864.0 h +4 sf +(visual) 61605 0.00 -1 s +3 sf +( \037 Type ) 72198 -48.67 32 s +2 sf +(card29) 80506 0.00 -1 s +3 sf +(.) 81212 0.00 -1 s +52832.0 142014.0 m +(Returns) 61610 0.00 -1 s +( a sequence of image data from the region of) 114446 272.00 32 s +( the ) 119849 271.50 32 s +4 sf +(drawable) 130510 0.00 -1 s +3 sf +( given by ) 142263 181.00 32 s +2 sf +(:x) 144613 0.00 -1 s +3 sf +(, ) 146296 271.00 32 s +2 sf +(:y) 148646 0.00 -1 s +3 sf +(,) 149352 0.00 -1 s +52832.0 145175.0 m +2 sf +(:width) 60669 0.00 -1 s +3 sf +(,) 61375 0.00 -1 s +( and ) 66766 -48.00 32 s +2 sf +(:height) 75230 0.00 -1 s +3 sf +(. If ) 79130 -48.00 32 s +2 sf +(:data) 85399 0.00 -1 s +3 sf +( is given, it is modified beginning with the element at the) 149352 -43.45 32 s +52832.0 148336.0 m +2 sf +(:start) 59411 0.00 -1 s +3 sf +( index) 66531 144.00 32 s +( and returned. The ) 88499 143.50 32 s +4 sf +(depth) 94769 0.00 -1 s +3 sf +( and ) 100399 71.50 32 s +4 sf +(visua) 106356 0.00 -1 s +3 sf +(l type ID of the ) 125021 143.60 32 s +4 sf +(drawable) 135682 0.00 -1 s +3 sf +( are also re\036) 149352 143.33 32 s +52832.0 151497.0 m +(turned.) 60747 0.00 -1 s +52832.0 157774.0 m +(The) 57220 0.00 -1 s +( bits for all planes selected by 1 bits in the ) 103302 -193.00 32 s +2 sf +(:plane\036mask) 118194 0.00 -1 s +3 sf +( are returned as zero; the) 145237 -154.40 32 s +( de\036) 149352 -194.00 32 s +52832.0 160934.0 m +(fault) 58003 0.00 -1 s +( ) 58662 -47.00 32 s +2 sf +(:plane\036mask) 73554 0.00 -1 s +3 sf +( is all 1 bits. The ) 92793 -47.00 32 s +2 sf +(:format) 102035 0.00 -1 s +3 sf +( of the returned pixel values may be) 142270 -40.29 32 s +( either) 149352 -48.00 32 s +52832.0 164095.0 m +2 sf +(:xy\036format) 65835 0.00 -1 s +3 sf +( or ) 69539 -29.00 32 s +2 sf +(:z\036format) 80973 0.00 -1 s +3 sf +(. The ) 87422 -28.50 32 s +2 sf +(:result\036type) 101368 0.00 -1 s +3 sf +( defines the type of image data returned.) 146620 -28.57 32 s +52832.0 170372.0 m +(The) 57220 0.00 -1 s +( calling program is responsible for handling the byte\036order and bit\036order returned by) 149352 -237.25 32 s +52832.0 173533.0 m +(the) 56280 0.00 -1 s +( server for the ) 72286 -112.00 32 s +4 sf +(drawable) 82947 0.00 -1 s +3 sf +('s display) 93730 -112.00 32 s +( \(see ) 99460 -112.50 32 s +2 sf +(display\036byte\036order) 121875 0.00 -1 s +3 sf +( and ) 127249 -56.50 32 s +2 sf +(display\036image\036lsb\036) 149352 0.00 -1 s +52832.0 176694.0 m +(first\036p) 60353 0.00 -1 s +3 sf +(\).) 61998 0.00 -1 s +4 sf +52832.0 182970.0 m +(drawable) 63493 0.00 -1 s +3 sf +( \037 A ) 70326 -48.00 32 s +2 sf +(drawable) 81613 0.00 -1 s +3 sf +(.) 82319 0.00 -1 s +2 sf +52832.0 187757.0 m +(:data) 59101 0.00 -1 s +3 sf +( \037 An optional ) 77284 -40.00 32 s +2 sf +(sequence) 88101 0.00 -1 s +3 sf +( of ) 91784 -39.50 32 s +2 sf +(card8) 98681 0.00 -1 s +3 sf +(.) 99387 0.00 -1 s +2 sf +52832.0 192543.0 m +(:start) 59411 0.00 -1 s +( ) 60099 -18.00 32 s +3 sf +(\037 The index of the first ) 88049 -18.00 32 s +2 sf +(:data) 94318 0.00 -1 s +3 sf +( element modified.) 115521 -18.00 32 s +4 sf +( ) 116208 -19.00 32 s +2 sf +52832.0 197330.0 m +(:x) 55182 0.00 -1 s +3 sf +(,) 55888 0.00 -1 s +( ) 56637 43.00 32 s +2 sf +(:y) 58987 0.00 -1 s +3 sf +( \037 ) 63307 43.00 32 s +2 sf +(card16) 71615 0.00 -1 s +3 sf +( values defining) 89727 43.00 32 s +( the size of the ) 107103 42.40 32 s +2 sf +(image) 114312 0.00 -1 s +3 sf +( returned. These arguments are) 149352 42.50 32 s +57912.0 200491.0 m +(required.) 68019 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Images) 26852 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(7\03688) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:width) 60669 0.00 -1 s +/timsps10 3 declareFont +3 sf +(, ) 62078 -3.00 32 s +2 sf +(:height) 70542 0.00 -1 s +3 sf +( \037 ) 74770 -3.00 32 s +2 sf +(card16) 83078 0.00 -1 s +3 sf +( values defining the size of the image returned.These argu\036) 149352 -2.56 32 s +57912.0 25739.0 m +(ments) 64653 0.00 -1 s +( are required.) 79563 -27.00 32 s +( ) 80241 -28.00 32 s +2 sf +52832.0 30525.0 m +(:plane\036mask) 67724 0.00 -1 s +3 sf +( \037 A pixel mask.) 87602 -27.75 32 s +2 sf +52832.0 35312.0 m +(:format) 62074 0.00 -1 s +3 sf +( \037 Either ) 73819 -30.00 32 s +2 sf +(:xy-pixmap) 88085 0.00 -1 s +3 sf +( or ) 91787 -30.00 32 s +2 sf +(:z-pixmap) 104484 0.00 -1 s +3 sf +(. This argument is required.) 135557 -30.00 32 s +2 sf +52832.0 40098.0 m +(:result\036type) 66778 0.00 -1 s +3 sf +( \037 The type of image data sequence to) 110732 -31.00 32 s +( return.) 118849 -32.00 32 s +2 sf +34544.0 44885.0 m +(put\036raw\036image) 52409 0.00 -1 s +3 sf +( ) 53086 -29.00 32 s +/timsps10i 4 declareFont +4 sf +(drawable gcontext data ) 80355 -29.00 32 s +3 sf +(&key \() 88241 -29.00 32 s +2 sf +(:start) 94820 0.00 -1 s +3 sf +( 0\) ) 98524 -29.00 32 s +2 sf +(:depth :x :y) 112416 -29.00 32 s +( ) 113092 -30.00 32 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 48046.0 m +2 sf +(:width) 60669 0.00 -1 s +( :height) 69827 -12.00 32 s +3 sf +( \() 71460 -12.00 32 s +2 sf +(:left\036pad) 81802 0.00 -1 s +3 sf +( 0\) ) 85540 -12.00 32 s +2 sf +(:format) 94782 0.00 -1 s +3 sf +52832.0 52764.0 m +(Displays) 62708 0.00 -1 s +( a region of the) 78988 -201.00 32 s +( image data defined by ) 104391 -201.60 32 s +2 sf +(:start) 110970 0.00 -1 s +3 sf +(, ) 112181 -201.00 32 s +2 sf +(:left\036pad) 122523 0.00 -1 s +3 sf +(, ) 123733 -202.00 32 s +2 sf +(:width,) 132276 0.00 -1 s +3 sf +( and ) 137562 -100.50 32 s +2 sf +(:height) 146026 0.00 -1 s +3 sf +( on) 149352 -202.00 32 s +52832.0 55925.0 m +(the) 56280 0.00 -1 s +( destination ) 69860 -108.00 32 s +4 sf +(drawable) 80521 0.00 -1 s +3 sf +(, with the upper\036left pixel of the image region displayed at the) 149352 -97.82 32 s +52832.0 59086.0 m +4 sf +(drawable) 63493 0.00 -1 s +3 sf +( position) 73266 -27.00 32 s +( given by ) 84393 -27.67 32 s +2 sf +(:x) 86743 0.00 -1 s +3 sf +( and ) 92175 -27.50 32 s +2 sf +(:y) 94525 0.00 -1 s +3 sf +(. ) 96588 -27.50 32 s +52832.0 65363.0 m +(The) 57220 0.00 -1 s +( ) 57945 19.00 32 s +2 sf +(:format) 67187 0.00 -1 s +3 sf +( can be either ) 83092 19.00 32 s +2 sf +(:xy\036pixmap) 96886 0.00 -1 s +3 sf +(, ) 98318 20.00 32 s +2 sf +(:z\036pixmap) 110543 0.00 -1 s +3 sf +(, or ) 115050 19.50 32 s +2 sf +(:bitmap) 124611 0.00 -1 s +3 sf +(. If ) 128646 19.50 32 s +2 sf +(:xy\036pixmap) 142440 0.00 -1 s +3 sf +( or ) 146221 9.50 32 s +2 sf +(:z\036) 149352 0.00 -1 s +52832.0 68524.0 m +(pixmap) 61926 0.00 -1 s +3 sf +( formats are used, ) 81658 -258.75 32 s +2 sf +(:depth) 89496 0.00 -1 s +3 sf +( must match the depth of the destination ) 133619 -226.13 32 s +4 sf +(drawable) 144280 0.00 -1 s +3 sf +(. For) 149352 -259.00 32 s +52832.0 71684.0 m +2 sf +(:xy\036pixmap) 66626 0.00 -1 s +3 sf +(,) 67332 0.00 -1 s +( the data must be) 86093 -91.00 32 s +( in XY format. For ) 107672 -73.20 32 s +2 sf +(:z\036pixmap) 119897 0.00 -1 s +3 sf +(, the data must be in Z for\036) 149352 -91.57 32 s +52832.0 74845.0 m +(mat) 57064 0.00 -1 s +( for) 61031 -28.00 32 s +( the given ) 72781 -28.67 32 s +2 sf +(:depth) 80619 0.00 -1 s +3 sf +(.) 81325 0.00 -1 s +52832.0 81122.0 m +(If) 54710 0.00 -1 s +( the ) 59056 -257.00 32 s +2 sf +(:format) 68298 0.00 -1 s +3 sf +( is ) 71078 -257.00 32 s +2 sf +(:bitmap) 80639 0.00 -1 s +3 sf +(, the ) 85691 -257.00 32 s +2 sf +(:depth) 93529 0.00 -1 s +3 sf +( must be 1. In this) 112470 -257.00 32 s +( case, the image is combined with) 149352 -214.67 32 s +52832.0 84283.0 m +(the) 56280 0.00 -1 s +( foreground and background pixels of) 98124 -142.00 32 s +( the ) 102699 -142.50 32 s +4 sf +(gcontext) 112259 0.00 -1 s +3 sf +(. 1 bits of the image are displayed) 149352 -142.57 32 s +52832.0 87444.0 m +(in) 55027 0.00 -1 s +( the foreground pixel and) 83409 -36.00 32 s +( 0 bits are displayed in the background pixel.) 133864 -32.00 32 s +52832.0 93720.0 m +(The) 57220 0.00 -1 s +( ) 58016 90.00 32 s +2 sf +(:left\036pad) 68358 0.00 -1 s +3 sf +( must be zero for ) 88635 90.00 32 s +2 sf +(:z\036pixmap) 100860 0.00 -1 s +3 sf +( format. For ) 115395 90.33 32 s +2 sf +(:bitmap) 124956 0.00 -1 s +3 sf +( and ) 130624 90.50 32 s +2 sf +(:xy\036pixmap) 144418 0.00 -1 s +3 sf +( for\036) 149352 0.00 32 s +52832.0 96881.0 m +(mats,) 58868 0.00 -1 s +( the ) 63166 -281.00 32 s +2 sf +(:left\036pad) 73508 0.00 -1 s +3 sf +( must be) 82510 -281.00 32 s +( less than the bitmap\036scanline\036pad for the ) 128078 -241.29 32 s +4 sf +(drawable) 138739 0.00 -1 s +3 sf +('s display) 149352 -282.00 32 s +52832.0 100042.0 m +(\(see) 57375 0.00 -1 s +( ) 58257 176.00 32 s +2 sf +(display\036bitmap\036format) 85686 0.00 -1 s +3 sf +(\). The first ) 98909 176.00 32 s +2 sf +(:left\036pad) 109251 0.00 -1 s +3 sf +( bits in every) 124260 117.33 32 s +( scanline are to be ig\036) 149352 175.40 32 s +52832.0 103203.0 m +(nored) 59257 0.00 -1 s +( by the server; the actual image begins that many bits into the data. ) 134993 -26.36 32 s +52832.0 109480.0 m +(The) 57220 0.00 -1 s +( following attributes of the ) 86601 -284.00 32 s +4 sf +(gcontext) 96161 0.00 -1 s +3 sf +( are used to display the ) 121109 -283.50 32 s +2 sf +(image) 128318 0.00 -1 s +3 sf +(: clip\036mask, clip\036x,) 149352 -142.00 32 s +52832.0 112641.0 m +(clip\036y,) 60120 0.00 -1 s +( function, plane\036mask, and) 89945 -64.00 32 s +( subwindow\036mode.) 111512 -65.00 32 s +52832.0 118917.0 m +(The) 57220 0.00 -1 s +( calling program is responsible for handling the byte\036order and bit\036order required by) 149352 -237.25 32 s +52832.0 122078.0 m +(the) 56280 0.00 -1 s +( server for the ) 72286 -112.00 32 s +4 sf +(drawable) 82947 0.00 -1 s +3 sf +('s display) 93730 -112.00 32 s +( \(see ) 99460 -112.50 32 s +2 sf +(display\036byte\036order) 121875 0.00 -1 s +3 sf +( and ) 127249 -56.50 32 s +2 sf +(display\036image\036lsb\036) 149352 0.00 -1 s +52832.0 125239.0 m +(first\036p) 60353 0.00 -1 s +3 sf +(\).) 61998 0.00 -1 s +4 sf +52832.0 131516.0 m +(drawable) 63493 0.00 -1 s +3 sf +( \037) 66969 -52.00 32 s +( The destination ) 85701 -52.67 32 s +2 sf +(drawable) 96988 0.00 -1 s +3 sf +(.) 97694 0.00 -1 s +4 sf +52832.0 136302.0 m +(gcontext) 62392 0.00 -1 s +3 sf +( \037 The graphics context used to display the image.) 120069 -36.00 32 s +4 sf +52832.0 141089.0 m +(data) 57849 0.00 -1 s +3 sf +( \037 A sequence of integers.) 88415 -31.00 32 s +2 sf +52832.0 145875.0 m +(:start) 59411 0.00 -1 s +3 sf +( \037 The index) 74946 -21.00 32 s +( of the first element of ) 100678 -21.50 32 s +4 sf +(data) 105695 0.00 -1 s +3 sf +( displayed.) 117901 -22.00 32 s +2 sf +52832.0 150662.0 m +(:depth) 60670 0.00 -1 s +( ) 61349 -27.00 32 s +3 sf +(\037 The number of bits per pixel displayed. This argument is required.) 139508 -26.82 32 s +2 sf +52832.0 155448.0 m +(:x) 55182 0.00 -1 s +3 sf +(,) 55888 0.00 -1 s +( ) 56419 -175.00 32 s +2 sf +(:y) 58769 0.00 -1 s +3 sf +( \037 The position in the ) 83902 -175.00 32 s +4 sf +(drawable) 94563 0.00 -1 s +3 sf +( where the image region is displayed. These) 142869 -175.00 32 s +( argu\036) 149352 -176.00 32 s +57912.0 158609.0 m +(ments) 64653 0.00 -1 s +( are) 68767 -37.00 32 s +( required.) 79542 -38.00 32 s +2 sf +52832.0 163395.0 m +(:width) 60669 0.00 -1 s +3 sf +(,) 61375 0.00 -1 s +( ) 61819 -262.00 32 s +2 sf +(:height) 70283 0.00 -1 s +3 sf +( \037 ) 73993 -262.00 32 s +2 sf +(card16) 82301 0.00 -1 s +3 sf +( values defining the size of) 111321 -262.00 32 s +( the image region displayed. These) 149352 -262.60 32 s +57912.0 166556.0 m +(arguments) 69667 0.00 -1 s +( are required.) 84531 -50.00 32 s +2 sf +52832.0 171343.0 m +(:left\036pad) 63174 0.00 -1 s +3 sf +( \037 A ) 70211 20.00 32 s +2 sf +(card8) 77108 0.00 -1 s +3 sf +( specifying the number of leading bits to discard for each image) 149352 20.18 32 s +57912.0 174504.0 m +(scanline.) 67865 0.00 -1 s +2 sf +52832.0 179290.0 m +(:format) 62074 0.00 -1 s +3 sf +( \037 One of ) 74664 -26.75 32 s +2 sf +(:bitmap) 84225 0.00 -1 s +3 sf +(, ) 85610 -27.00 32 s +2 sf +(:xy\036pixmap) 99404 0.00 -1 s +3 sf +(, or ) 103819 -26.50 32 s +2 sf +(:z\036pixmap) 116044 0.00 -1 s +3 sf +(.) 116750 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s08.ps +++ cmucl-20a-20090928/own-work/clx/s08.ps @@ -0,0 +1,4426 @@ +%!PS-Adobe-2.0 +%%Title: s08.ps +%%Pages: 10 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 8 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 8 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(8\03689) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 6 declareFont +6 sf +20410.0 39376.0 m +49941.0 39466.0 m +(FONTS AND CHARACTERS) 115846 -61.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +143641 39315 av +137253 39315 as +137253 39315 as +138622 36265 as +138622 36265 as +142273 36265 as +142273 32833 as +138622 32833 as +138622 32833 as +138622 29401 as +138622 29401 as +142273 29401 as +142273 26351 as +138622 26351 as +138622 26351 as +137253 23300 as +137253 23300 as +143641 23300 as +146379 25588 as +146379 29020 as +144098 30926 as +146379 32833 as +146379 37028 as +143641 39315 as +fp +newpath +143641 39315 av +137253 39315 as +[] 0 setdash +dp +newpath +0.0 sw +137253 39315 av +138622 36265 as +newpath +270.0 sw +138622 36265 av +142273 36265 as +142273 32833 as +138622 32833 as +[] 0 setdash +dp +newpath +0.0 sw +138622 32833 av +138622 29401 as +newpath +270.0 sw +138622 29401 av +142273 29401 as +142273 26351 as +138622 26351 as +[] 0 setdash +dp +newpath +0.0 sw +138622 26351 av +137253 23300 as +newpath +270.0 sw +137253 23300 av +143641 23300 as +146379 25588 as +146379 29020 as +144098 30926 as +146379 32833 as +146379 37028 as +143641 39315 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0.0 sw +/drawmode PL_REPLACE def +newpath +270.0 sw +/drawmode PL_SET def +137253 39315 av +134515 37028 as +134515 32833 as +136797 30926 as +134515 29020 as +134515 25588 as +137253 23300 as +137253 23300 as +138622 26351 as +138622 26351 as +138622 29401 as +138622 29401 as +138622 32833 as +138622 32833 as +138622 36265 as +138622 36265 as +137253 39315 as +fp +newpath +137253 39315 av +134515 37028 as +134515 32833 as +136797 30926 as +134515 29020 as +134515 25588 as +137253 23300 as +[] 0 setdash +dp +newpath +0.0 sw +137253 23300 av +138622 26351 as +newpath +270.0 sw +138622 26351 av +138622 29401 as +[] 0 setdash +dp +newpath +0.0 sw +138622 29401 av +138622 32833 as +newpath +270.0 sw +138622 32833 av +138622 36265 as +[] 0 setdash +dp +newpath +0.0 sw +138622 36265 av +137253 39315 as +newpath +133146 23300 av +133146 23300 as +newpath +133146 43891 av +133146 43891 as +newpath +147748 43891 av +147748 43891 as +newpath +147748 23300 av +147748 23300 as +149351.0 39376.0 m +6 sf +/timsps10 3 declareFont +3 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 5 declareFont +5 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(8.1) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +3 sf +(An) 62158 0.00 -1 s +( X server maintains a set of fonts used in the) 110258 -206.00 32 s +( text operations requested by client) 149352 -172.17 32 s +52832.0 50032.0 m +(programs.) 64195 0.00 -1 s +( An X font is an array of character bit maps \(or ) 119059 92.33 32 s +/timsps10i 4 declareFont +4 sf +(glyphs) 126427 0.00 -1 s +3 sf +(\) indexed by integer) 149352 92.33 32 s +52832.0 53193.0 m +(codes.) 59964 0.00 -1 s +( In fact, font glyphs can also represent cursor shapes or other images and are) 145127 -79.86 32 s +( not) 149352 -87.00 32 s +52832.0 56354.0 m +(limited) 60827 0.00 -1 s +( to character images. X supports both linear and matrix encoding of font) 139600 -258.46 32 s +( indexes.) 149352 -281.00 32 s +52832.0 59515.0 m +(With) 58475 0.00 -1 s +( linear encoding, a font index is interpreted as a single 16\036bit integer index into a) 149352 -12.87 32 s +52832.0 62676.0 m +(one\036dimensional) 71641 0.00 -1 s +( array of glyphs. With matrix encoding, a font index is interpreted as a) 149352 -129.23 32 s +52832.0 65837.0 m +(pair) 57219 0.00 -1 s +( of 8\036bit integer indexes into a two\036dimensional array of glyphs. The type of index) 149352 -52.79 32 s +52832.0 68998.0 m +(encoding) 63177 0.00 -1 s +( used is font\036dependent.) 89950 -62.67 32 s +52832.0 75274.0 m +(In) 55182 0.00 -1 s +( order to access or use a font, a client program must first) 117443 -108.00 32 s +( open it using the ) 137753 -90.50 32 s +2 sf +(open\036font) 149352 0.00 -1 s +3 sf +52832.0 78435.0 m +(function,) 62942 0.00 -1 s +( sending a font name string as an identifier. ) 111491 -109.33 32 s +2 sf +(open\036font) 123090 0.00 -1 s +3 sf +( creates a CLX ) 140151 -123.00 32 s +2 sf +(font) 145009 0.00 -1 s +3 sf +( ob\036) 149352 -124.00 32 s +52832.0 81596.0 m +(ject) 56906 0.00 -1 s +( used to refer to the font in subsequent functions. Afterward, calling ) 132210 -164.08 32 s +2 sf +(open\036font) 143809 0.00 -1 s +3 sf +( with) 149352 -179.00 32 s +52832.0 84757.0 m +(the) 56280 0.00 -1 s +( same font name returns the same ) 93003 -251.00 32 s +2 sf +(font) 97861 0.00 -1 s +3 sf +( object. When a font is no longer in use, a client ) 149352 -268.17 32 s +52832.0 87918.0 m +(program) 62391 0.00 -1 s +( can call ) 72417 -27.67 32 s +2 sf +(close\036font) 84013 0.00 -1 s +3 sf +( to destroy the ) 100677 -27.50 32 s +2 sf +(font) 105535 0.00 -1 s +3 sf +( object.) 113815 -28.00 32 s +52832.0 94194.0 m +(A) 54869 0.00 -1 s +( font has several attributes which describe its geometry and its glyphs. CLX provides) 149352 -111.46 32 s +52832.0 97355.0 m +(functions) 63334 0.00 -1 s +( to return the attributes of a font, as well functions for accessing the attributes) 149352 -97.43 32 s +52832.0 100516.0 m +(of) 55182 0.00 -1 s +( individual font glyphs. Glyph attributes are referred) 113569 -100.29 32 s +( to as ) 119880 -117.67 32 s +4 sf +(character attributes) 142259 -117.00 32 s +3 sf +(, since) 149352 -118.00 32 s +52832.0 103677.0 m +(characters) 64268 0.00 -1 s +( are the most common type of font glyphs. A font also has a) 131868 2.77 32 s +( property list of) 149352 2.33 32 s +52832.0 106838.0 m +(values recorded) 70618 0.00 32 s +( by) 74092 -54.00 32 s +( the X server. However, the set of possible font properties and their) 149352 -50.00 32 s +52832.0 109999.0 m +(values) 60042 0.00 -1 s +( are not standardized and are implementation\036dependent.) 123682 -64.00 32 s +( Typically, CLX main\036) 149352 -64.67 32 s +52832.0 113160.0 m +(tains) 58162 0.00 -1 s +( a cache of font and character attributes, in order to minimize server requests. How\036) 149352 -225.50 32 s +52832.0 116321.0 m +(ever,) 58394 0.00 -1 s +( the font cache mechanism is implementation\036dependent and cannot be controlled) 149352 -120.60 32 s +52832.0 119482.0 m +(by) 55654 0.00 -1 s +( the client. In some cases, CLX may create a ) 104408 -218.70 32 s +4 sf +(pseudo\036font) 117732 0.00 -1 s +3 sf +( object solely for the purpose) 149352 -243.60 32 s +52832.0 122642.0 m +(of accessing) 66702 0.00 32 s +( font attributes. A) 85721 -296.00 32 s +( pseudo\036font is represented by a special type of ) 137189 -263.56 32 s +2 sf +(font) 142047 0.00 -1 s +3 sf +( object) 149352 -297.00 32 s +52832.0 125803.0 m +(that) 57064 0.00 -1 s +( cannot be used in a ) 82718 435.00 32 s +2 sf +(gcontext) 92904 0.00 -1 s +3 sf +(. If necessary, CLX can automatically convert a) 149352 373.14 32 s +52832.0 128964.0 m +(pseudo\036font) 66311 0.00 -1 s +( into a true font, if the name of the pseudo\036font is known.) 130590 -25.25 32 s +52832.0 135241.0 m +(The) 57220 0.00 -1 s +( set of available fonts is server\036dependent; that is, font names are not guaranteed to) 149352 -137.87 32 s +52832.0 138402.0 m +(be) 55496 0.00 -1 s +( portable from one server to the next. However, the public X implementation from) 149352 76.08 32 s +52832.0 141563.0 m +(MIT) 58004 0.00 -1 s +( includes a set of fonts that are typically available with) 119424 -18.00 32 s +( most X servers.) 137702 -20.67 32 s +52832.0 147839.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe) 91983 -36.00 32 s +( CLX functions to:) 113115 -36.67 32 s +/symbb8 7 declareFont +7 sf +52832.0 154387.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Open) 64024 0.00 -1 s +( and close fonts.) 82251 -38.00 32 s +7 sf +52832.0 160934.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(List) 62302 0.00 -1 s +( available fonts. ) 80896 -19.67 32 s +7 sf +52832.0 167482.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Access font) 71136 -19.00 32 s +( attributes.) 83031 -18.00 32 s +( ) 83718 -19.00 32 s +7 sf +52832.0 174030.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Access) 65904 0.00 -1 s +( character attributes.) 88801 -30.00 32 s +( ) 89476 -31.00 32 s +7 sf +52832.0 180577.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Return) 65592 0.00 -1 s +( the size of a) 79791 -16.00 32 s +( text string. ) 93224 -16.67 32 s +20320.0 187576.0 m +0.0 0.0 m +newpath +20455 185952 av +148878 185950 as +[] 0 setdash +dp +149352.0 187576.0 m +5 sf +20320.0 190963.0 m +(Opening) 32740 0.00 -1 s +( Fonts) 41679 3.00 32 s +52832.0 h +2 sf +(8.2) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +3 sf +(The) 63098 0.00 -1 s +( following paragraphs discuss the CLX functions for opening and) 140146 349.00 32 s +( closing) 149352 348.00 32 s +52832.0 194124.0 m +(fonts.) 59181 0.00 -1 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Fonts and Characters) 40143 -17.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(8\03690) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(open\036font) 46143 0.00 -1 s +( ) 46809 -40.00 32 s +/timsps10i 4 declareFont +4 sf +(display name) 61739 -40.00 32 s +/timsps10 3 declareFont +3 sf +( ) 62405 -40.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( font) 58598 -18.00 32 s +( ) 59285 -19.00 32 s +3 sf +(\037 Type ) 69281 -18.50 32 s +2 sf +(font) 74139 0.00 -1 s +3 sf +(.) 74845 0.00 -1 s +52832.0 33618.0 m +(Opens) 60042 0.00 -1 s +( the font with the given ) 86645 -60.00 32 s +4 sf +(name) 92757 0.00 -1 s +3 sf +( and returns a ) 108504 -60.00 32 s +2 sf +(font) 113362 0.00 -1 s +3 sf +( object. The name string) 141181 -48.00 32 s +( should) 149352 -61.00 32 s +52832.0 36779.0 m +(contain) 61139 0.00 -1 s +( only ISO Latin\0361 characters; case is not significant.) 119617 -27.63 32 s +4 sf +52832.0 42175.0 m +( display) 61666 -24.00 32 s +3 sf +( \037) 65170 -24.00 32 s +( A ) 68570 -24.50 32 s +2 sf +(display) 77196 0.00 -1 s +3 sf +( object.) 85479 -25.00 32 s +4 sf +52832.0 46962.0 m +( name) 59629 -21.00 32 s +3 sf +( \037 A font name string.) 85705 -20.60 32 s +2 sf +34544.0 51748.0 m +(close\036font) 46140 0.00 -1 s +( ) 46816 -30.00 32 s +4 sf +(font) 51206 0.00 -1 s +2 sf +52832.0 h +3 sf +(Function) 62866 0.00 -1 s +52832.0 56467.0 m +(Deletes) 61294 0.00 -1 s +( the association between the) 92448 -127.00 32 s +( resource ID and the ) 115396 -127.60 32 s +4 sf +(font) 119786 0.00 -1 s +3 sf +(. The ) 126037 -127.50 32 s +4 sf +(font) 130427 0.00 -1 s +3 sf +( is freed when no) 149352 -127.50 32 s +52832.0 59628.0 m +(other) 58630 0.00 -1 s +( server resource) 76066 -213.00 32 s +( references it. The ) 96289 -213.50 32 s +4 sf +(font) 100679 0.00 -1 s +3 sf +( can be unloaded by the X server if this is the) 149352 -213.55 32 s +52832.0 62789.0 m +(last) 56751 0.00 -1 s +( reference to) 70563 -144.00 32 s +( the ) 75134 -144.50 32 s +4 sf +(font ) 80085 -145.00 32 s +3 sf +(by any client. In any case, the ) 113324 -144.43 32 s +4 sf +(font) 117714 0.00 -1 s +3 sf +( should never again be refer\036) 149352 -144.60 32 s +52832.0 65950.0 m +(enced) 59413 0.00 -1 s +( because its resource ID is destroyed. This might not) 116784 -209.00 32 s +( generate a protocol request if) 149352 -209.60 32 s +52832.0 69111.0 m +(the) 56280 0.00 -1 s +( ) 56965 -21.00 32 s +4 sf +(font) 61355 0.00 -1 s +3 sf +( is reference\036counted locally or if it) 101034 -21.00 32 s +( is a pseudo\036font.) 120407 -21.67 32 s +4 sf +52832.0 74507.0 m +(font) 57222 0.00 -1 s +( ) 57908 -20.00 32 s +3 sf +(\037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 79293.0 m +(discard\036font\036info) 54920 0.00 -1 s +( ) 55585 -41.00 32 s +4 sf +(fonts) 61073 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 84012.0 m +(Discards) 62705 0.00 -1 s +( any state) 72926 -219.00 32 s +( that can be re\036obtained with ) 104523 -219.50 32 s +2 sf +(open\036font) 116122 0.00 -1 s +3 sf +(. This is simply a performance) 149352 -219.60 32 s +52832.0 87173.0 m +(hint) 57222 0.00 -1 s +( for memory\036limited systems.) 90559 -17.00 32 s +4 sf +52832.0 92569.0 m +(font) 57222 0.00 -1 s +( ) 57908 -20.00 32 s +3 sf +(\037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +20320.0 98078.0 m +0.0 0.0 m +newpath +20455 96454 av +148878 96452 as +[] 0 setdash +dp +149352.0 98078.0 m +/timsps12b 5 declareFont +5 sf +20320.0 101465.0 m +(Listing) 30481 0.00 -1 s +( Fonts) 39421 4.00 32 s +52832.0 h +2 sf +(8.3) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +3 sf +(The) 63098 0.00 -1 s +( following paragraphs) 87657 -102.00 32 s +( describe CLX functions that return fonts or font names) 149352 -102.56 32 s +52832.0 104625.0 m +(that) 57064 0.00 -1 s +( match a given pattern string. Such pattern) 104338 -76.29 32 s +( strings should contain only ISO Latin\0361) 149352 -74.67 32 s +52832.0 107786.0 m +(characters;) 65052 0.00 -1 s +( case is not significant. The following pattern characters can be used for) 149352 265.92 32 s +52832.0 110947.0 m +4 sf +(wildcard) 62866 0.00 -1 s +3 sf +( matching:) 74778 -80.00 32 s +52832.0 116343.0 m +(#\\*) 56438 0.00 -1 s +( \037 Matches any sequence of zero or more characters.) 116795 -32.67 32 s +52832.0 121943.0 m +(#\\?) 56280 0.00 -1 s +( \037 Matches any single character.) 93878 -35.00 32 s +52832.0 127542.0 m +(For) 56751 0.00 -1 s +( example, the pattern \177T?mes Roman" matches the name \177Times) 129922 -3.00 32 s +( Roman" but not ) 149352 -2.75 32 s +52832.0 130703.0 m +(the) 56280 0.00 -1 s +( name \177Thames Roman". However, the pattern \177T*mes Roman" matches both ) 149352 360.27 32 s +52832.0 133864.0 m +(names.) 60748 0.00 -1 s +2 sf +34544.0 139463.0 m +(font\036path) 45829 0.00 -1 s +( ) 46519 -16.00 32 s +4 sf +(display) 54671 0.00 -1 s +3 sf +( &key \() 63261 -15.50 32 s +2 sf +(:result\036type 'list) 82441 -16.00 32 s +3 sf +(\)) 83380 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 142624.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 145785.0 m +( paths) 60303 -28.00 32 s +3 sf +( \037 Type ) 70958 -28.00 32 s +2 sf +(sequence) 81775 0.00 -1 s +3 sf +( of either) 91905 -28.00 32 s +( ) 92582 -29.00 32 s +2 sf +(string) 99636 0.00 -1 s +3 sf +( or ) 103341 -28.50 32 s +2 sf +(pathname) 115412 0.00 -1 s +3 sf +(.) 116118 0.00 -1 s +52832.0 150503.0 m +(Returns) 61610 0.00 -1 s +( a ) 64305 15.00 32 s +2 sf +(list) 67910 0.00 -1 s +3 sf +( \(by default\) of names containing the current) 118403 15.00 32 s +( search path for fonts. With) 149352 14.40 32 s +52832.0 153664.0 m +2 sf +(setf) 57061 0.00 -1 s +3 sf +(,) 57767 0.00 -1 s +( this function sets the search path for font lookup. There is only one search path per) 149352 -158.81 32 s +52832.0 156825.0 m +(server,) 60431 0.00 -1 s +( not one per client. The interpretation of the names is server\036dependent, but they) 149352 -122.77 32 s +52832.0 159986.0 m +(are) 56277 0.00 -1 s +( intended to specify directories to be searched in the order listed.) 128874 -26.00 32 s +52832.0 165382.0 m +(Setting) 60828 0.00 -1 s +( the path to the empty list restores the default path defined for the) 130793 -291.00 32 s +( server. Note that) 149352 -291.67 32 s +52832.0 168543.0 m +(as) 55183 0.00 -1 s +( a side\036effect) 69480 -137.00 32 s +( of executing this request, the server is guaranteed to flush all cached in\036) 149352 -137.54 32 s +52832.0 171704.0 m +(formation) 63959 0.00 -1 s +( about fonts for which there are currently no explicit resource IDs allocated.) 149284 -27.00 32 s +4 sf +52832.0 177100.0 m +(display) 60984 0.00 -1 s +3 sf +( \037 A ) 67875 -28.67 32 s +2 sf +(display) 76501 0.00 -1 s +3 sf +( object.) 84780 -29.00 32 s +2 sf +52832.0 181887.0 m +(:result\036type) 66778 0.00 -1 s +3 sf +( \037 Specifies the type of resulting sequence.) 116253 -30.57 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129190.0 7925.0 m +(Fonts and Characters) 149013 -17.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(8\03691) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(list\036font\036names) 52566 0.00 -1 s +( ) 53257 -15.00 32 s +/timsps10i 4 declareFont +4 sf +(display pattern) 70252 -15.00 32 s +( ) 70942 -16.00 32 s +/timsps10 3 declareFont +3 sf +(&key \() 78842 -15.00 32 s +2 sf +(:max\036fonts) 91848 0.00 -1 s +3 sf +( 65535\) \() 102162 -15.50 32 s +2 sf +(:result\036type) 116108 0.00 -1 s +3 sf +( ) 116798 -16.00 32 s +2 sf +('list) 121342 0.00 -1 s +3 sf +(\)) 122281 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( font\036name) 65625 -30.00 32 s +3 sf +( \037 Type ) 76274 -30.00 32 s +2 sf +(sequence) 87091 0.00 -1 s +3 sf +( of) 90117 -30.00 32 s +( ) 90792 -31.00 32 s +2 sf +(string) 97846 0.00 -1 s +3 sf +(.) 98552 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( a sequence of) 78214 180.00 32 s +( strings containing the font names that match the ) 135221 159.56 32 s +4 sf +(pattern) 143373 0.00 -1 s +3 sf +(. The) 149352 179.00 32 s +52832.0 36779.0 m +(fonts) 58475 0.00 -1 s +( available are determined by the font search path; see ) 119169 4.00 32 s +2 sf +(font\036path) 130454 0.00 -1 s +3 sf +(\). The maximum) 149352 4.50 32 s +52832.0 39940.0 m +(number) 61452 0.00 -1 s +( of font names returned is determined by ) 108479 -25.67 32 s +2 sf +(:max\036fonts) 121485 0.00 -1 s +3 sf +(.) 122191 0.00 -1 s +4 sf +52832.0 46217.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +4 sf +52832.0 51003.0 m +(pattern) 60984 0.00 -1 s +( \037 ) 64331 -287.00 32 s +3 sf +(A string used to match font names. Only font names that match the pattern are) 149352 -267.47 32 s +57912.0 54164.0 m +(returned.) 68019 0.00 -1 s +2 sf +52832.0 58951.0 m +(:max\036fonts) 65838 0.00 -1 s +4 sf +( \037 ) 69700 -29.50 32 s +3 sf +(The maximum number of font names returned. Default is 65535.) 142556 -29.56 32 s +2 sf +52832.0 63737.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 ) 70659 -20.00 32 s +3 sf +(The type of sequence to return. Default is ') 119009 -19.75 32 s +2 sf +(list) 122614 0.00 -1 s +3 sf +(.) 123320 0.00 -1 s +2 sf +34544.0 68524.0 m +(list\036fonts) 45044 0.00 -1 s +( ) 45738 -12.00 32 s +4 sf +(display pattern) 62736 -12.00 32 s +3 sf +( &key \() 71334 -11.50 32 s +2 sf +(:max\036fonts) 84340 0.00 -1 s +3 sf +( 65535\) \() 94662 -11.50 32 s +2 sf +(:result\036type) 108608 0.00 -1 s +3 sf +( ) 109302 -12.00 32 s +2 sf +('list) 113846 0.00 -1 s +3 sf +(\)) 114785 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 71684.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 74845.0 m +( font ) 59265 -25.00 32 s +3 sf +(\037 Type ) 69248 -25.00 32 s +2 sf +(sequence) 80065 0.00 -1 s +3 sf +( of) 83096 -25.00 32 s +( ) 83776 -26.00 32 s +2 sf +(font) 88634 0.00 -1 s +3 sf +(.) 89340 0.00 -1 s +52832.0 79564.0 m +(Returns) 61610 0.00 -1 s +( a sequence of pseudo\036fonts corresponding to the available fonts whose) 141554 -106.36 32 s +( names) 149352 -118.00 32 s +52832.0 82725.0 m +(match) 59728 0.00 -1 s +( the ) 64204 -192.00 32 s +4 sf +(pattern) 72356 0.00 -1 s +3 sf +(. The) 77964 -192.00 32 s +( fonts available are determined by the font search path; see ) 143555 -176.50 32 s +2 sf +(font\036) 149352 0.00 -1 s +52832.0 85886.0 m +(path) 58320 0.00 -1 s +3 sf +(\).) 59965 0.00 -1 s +( The maximum number of) 89471 -30.00 32 s +( ) 90146 -31.00 32 s +2 sf +(font) 95004 0.00 -1 s +3 sf +( objects returned is determined by ) 134556 -26.14 32 s +2 sf +(:max\036fonts) 147562 0.00 -1 s +3 sf +(.) 148268 0.00 -1 s +4 sf +52832.0 92162.0 m +(display \037 ) 64845 -30.00 32 s +3 sf +(A) 66882 0.00 -1 s +( ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +4 sf +52832.0 96949.0 m +(pattern) 60984 0.00 -1 s +( \037 ) 64597 -154.00 32 s +3 sf +(A string used) 79338 -154.00 32 s +( to match font names. Only fonts whose name matches the pat\036) 149352 -141.67 32 s +57912.0 100110.0 m +(tern) 62299 0.00 -1 s +( are returned.) 77193 -35.00 32 s +2 sf +52832.0 104896.0 m +(:max\036fonts) 65838 0.00 -1 s +4 sf +( \037 ) 69703 -28.00 32 s +3 sf +(The maximum number of fonts returned. Default is 65535.) 135783 -28.00 32 s +2 sf +52832.0 109683.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 ) 70659 -20.00 32 s +3 sf +(The type of sequence to return. Default is ) 118070 -19.75 32 s +2 sf +('list) 122614 0.00 -1 s +3 sf +(.) 123320 0.00 -1 s +20320.0 115192.0 m +0.0 0.0 m +newpath +20455 113568 av +148878 113566 as +[] 0 setdash +dp +149352.0 115192.0 m +/timsps12b 5 declareFont +5 sf +20320.0 118578.0 m +(Font) 27092 0.00 -1 s +( Attributes) 42807 12.00 32 s +52832.0 h +2 sf +(8.4) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +3 sf +(The) 63098 0.00 -1 s +( following paragraphs) 87885 12.00 32 s +( describe the CLX functions used to access font attrib\036) 149352 11.44 32 s +52832.0 121739.0 m +(utes.) 58084 0.00 -1 s +2 sf +34544.0 128016.0 m +(font\036all\036chars\036exist\036p) 59775 0.00 -1 s +( ) 60453 -28.00 32 s +4 sf +(font) 64843 0.00 -1 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 131177.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 134338.0 m +( exists\036p ) 63489 -27.00 32 s +3 sf +(\037 Type ) 73469 -26.50 32 s +2 sf +(boolean) 82877 0.00 -1 s +3 sf +(.) 83583 0.00 -1 s +52832.0 139057.0 m +(Returns) 61610 0.00 -1 s +( true if glyphs) 77157 -69.00 32 s +( exist for all indexes in the range returned by ) 127716 -69.50 32 s +2 sf +(font\036min\036char) 144641 0.00 -1 s +3 sf +( and) 149352 -70.00 32 s +52832.0 142217.0 m +2 sf +(font\036max\036char) 70226 0.00 -1 s +3 sf +(.) 70932 0.00 -1 s +( Returns ) 81054 -34.00 32 s +2 sf +(nil) 84191 0.00 -1 s +3 sf +( if an index in) 99731 -34.00 32 s +( the range corresponds to empty glyph.) 143527 -28.83 32 s +4 sf +52832.0 148494.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 153281.0 m +(font\036ascent) 47864 0.00 -1 s +( ) 48532 -38.00 32 s +4 sf +(font) 52922 0.00 -1 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 156441.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 159602.0 m +( ascent ) 62085 -25.00 32 s +3 sf +(\037 Type) 71387 -25.00 32 s +( ) 72067 -26.00 32 s +2 sf +(int16) 78181 0.00 -1 s +3 sf +(.) 78887 0.00 -1 s +52832.0 164321.0 m +(Returns) 61610 0.00 -1 s +( the vertical ) 75214 -141.00 32 s +4 sf +(ascent) 82424 0.00 -1 s +3 sf +( of the ) 89917 -141.00 32 s +4 sf +(font) 94307 0.00 -1 s +3 sf +( used for) 103899 -141.00 32 s +( interline spacing. The ) 129416 -106.25 32 s +4 sf +(ascent) 136626 0.00 -1 s +3 sf +( defines the) 149352 -141.50 32 s +52832.0 167482.0 m +(nominal) 62081 0.00 -1 s +( distance in pixels from the baseline to the bottom of the previous line of text.) 149352 -66.38 32 s +52832.0 170643.0 m +(Some) 59260 0.00 -1 s +( font glyphs may) 78170 -46.00 32 s +( actually extend beyond the font ) 114930 -38.83 32 s +4 sf +(ascent) 122140 0.00 -1 s +3 sf +(.) 122846 0.00 -1 s +4 sf +52832.0 176919.0 m +(font) 57222 0.00 -1 s +( \037 ) 61101 -21.00 32 s +3 sf +(A ) 63823 -21.00 32 s +2 sf +(font) 68681 0.00 -1 s +3 sf +( object.) 76968 -21.00 32 s +2 sf +34544.0 181706.0 m +(font\036default\036char) 55230 0.00 -1 s +( ) 55870 -66.00 32 s +4 sf +(font) 60260 0.00 -1 s +138673.0 h +( ) 139318 -61.00 32 s +3 sf +(Function) 149352 0.00 -1 s +2 sf +34544.0 184867.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 188028.0 m +( index ) 60951 -37.00 32 s +3 sf +(\037 Type ) 70911 -36.50 32 s +2 sf +(card16) 79219 0.00 -1 s +3 sf +(.) 79925 0.00 -1 s +52832.0 192746.0 m +(Returns) 61610 0.00 -1 s +( the ) 66016 -227.00 32 s +4 sf +(index) 72128 0.00 -1 s +3 sf +( of the glyph drawn when an invalid or empty glyph index is specified.) 149352 -209.31 32 s +52832.0 195907.0 m +(If) 54710 0.00 -1 s +( the default index specifies an invalid or empty glyph, an invalid or empty index has no) 149352 -242.50 32 s +52832.0 199068.0 m +(effect.) 59959 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Fonts and Characters) 40143 -17.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(8\03692) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 4 declareFont +4 sf +52832.0 22578.0 m +(font) 57222 0.00 -1 s +/timsps10 3 declareFont +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 27364.0 m +(font\036descent) 49275 0.00 -1 s +( ) 49954 -27.00 32 s +4 sf +(font) 54344 0.00 -1 s +( ) 55022 -28.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 30525.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 33686.0 m +( descent) 62653 -27.00 32 s +( ) 63331 -28.00 32 s +3 sf +(\037 Type ) 73309 -27.50 32 s +2 sf +(int16) 79423 0.00 -1 s +3 sf +(.) 80129 0.00 -1 s +52832.0 38405.0 m +(Returns) 61610 0.00 -1 s +( the vertical ) 75589 -16.00 32 s +4 sf +(descent) 84052 0.00 -1 s +3 sf +( of the ) 91921 -15.67 32 s +4 sf +(font) 96311 0.00 -1 s +3 sf +( used for interline spacing. The ) 132050 -12.83 32 s +4 sf +(descent) 140513 0.00 -1 s +3 sf +( defines) 149352 -16.00 32 s +52832.0 41566.0 m +(the) 56280 0.00 -1 s +( nominal distance in pixels) 85808 -182.00 32 s +( from the baseline to the top of the next line of text. Some) 149352 -169.50 32 s +52832.0 44727.0 m +(font) 57377 0.00 -1 s +( glyphs may actually extend beyond) 97864 -38.40 32 s +( the font ) 107829 -48.67 32 s +4 sf +(descent) 116292 0.00 -1 s +3 sf +(.) 116998 0.00 -1 s +4 sf +52832.0 51003.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 55790.0 m +(font\036direction) 51156 0.00 -1 s +( ) 51806 -56.00 32 s +4 sf +(font) 56196 0.00 -1 s +138673.0 h +( ) 139318 -61.00 32 s +3 sf +(Function) 149352 0.00 -1 s +2 sf +34544.0 58951.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 62111.0 m +( direction) 64361 -36.00 32 s +( ) 65030 -37.00 32 s +3 sf +(\037 Type ) 74990 -36.50 32 s +2 sf +(draw\036direction) 93014 0.00 -1 s +3 sf +(.) 93720 0.00 -1 s +52832.0 66830.0 m +(Returns) 61610 0.00 -1 s +( the nominal drawing ) 85673 -176.00 32 s +4 sf +(direction) 95862 0.00 -1 s +3 sf +( for the ) 104189 -176.00 32 s +4 sf +(font) 108579 0.00 -1 s +3 sf +(.) 109285 0.00 -1 s +( The font drawing direction is only a) 149352 -176.57 32 s +52832.0 69991.0 m +(hint) 57222 0.00 -1 s +( that indicates whether the ) 86537 -202.80 32 s +4 sf +(char\036width) 98921 0.00 -1 s +3 sf +( of most font glyphs is positive \() 134314 -173.57 32 s +2 sf +(:left\036to\036right) 149352 0.00 -1 s +3 sf +52832.0 73152.0 m +(direction\)) 63801 0.00 -1 s +( or negative \() 79056 96.00 32 s +2 sf +(:right\036to\036left) 94094 0.00 -1 s +3 sf +( direction\). Note that X does not provide any di\036) 149352 96.33 32 s +52832.0 76313.0 m +(rect support) 66232 0.00 32 s +( for vertical text.) 84960 -26.00 32 s +4 sf +52832.0 82590.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 87376.0 m +(font\036display) 48967 0.00 -1 s +3 sf +( ) 49639 -34.00 32 s +4 sf +(font) 54029 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 90537.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 93698.0 m +( display ) 63036 -22.00 32 s +3 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +3 sf +(. ) 83041 -22.00 32 s +52832.0 98417.0 m +(Returns) 61610 0.00 -1 s +( the ) 66416 -27.00 32 s +2 sf +(display) 75042 0.00 -1 s +3 sf +( object associated with the) 104716 -27.00 32 s +( specified ) 116259 -27.50 32 s +4 sf +(font) 120649 0.00 -1 s +3 sf +(. ) 122033 -28.00 32 s +4 sf +52832.0 104693.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 109480.0 m +(font\036equal) 46927 0.00 -1 s +( ) 47599 -34.00 32 s +4 sf +(font\0361) 54339 0.00 -1 s +( font\0362) 61750 -35.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 114198.0 m +(Returns) 61610 0.00 -1 s +( true if the two arguments refer to the same server) 115553 -232.00 32 s +( resource and ) 130605 -232.67 32 s +2 sf +(nil) 133742 0.00 -1 s +3 sf +( if they do not.) 149352 -232.50 32 s +4 sf +52832.0 120475.0 m +(font\0361) 59572 0.00 -1 s +3 sf +(,) 60278 0.00 -1 s +4 sf +( font\0362 ) 68380 -25.00 32 s +3 sf +(\037 The ) 76953 -24.50 32 s +2 sf +(font) 81811 0.00 -1 s +3 sf +( objects.) 91192 -25.00 32 s +2 sf +34544.0 125262.0 m +(font\036id) 42694 0.00 -1 s +( ) 43385 -15.00 32 s +4 sf +(font) 47775 0.00 -1 s +2 sf +52832.0 h +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 128422.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 131583.0 m +( id ) 57055 -30.00 32 s +3 sf +(\037 Type ) 67029 -29.50 32 s +2 sf +(resource\036id) 80664 0.00 -1 s +3 sf +(.) 81370 0.00 -1 s +52832.0 136302.0 m +(Returns the unique resource ID assigned to the) 105373 -29.00 32 s +( specified) 116237 -28.00 32 s +( ) 116914 -29.00 32 s +4 sf +(font) 121304 0.00 -1 s +3 sf +(.) 122010 0.00 -1 s +4 sf +52832.0 142579.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 147365.0 m +(font\036max\036byte1) 53035 0.00 -1 s +( ) 53708 -33.00 32 s +4 sf +(font) 58098 0.00 -1 s +( ) 58770 -34.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +4 sf +2 sf +34544.0 150526.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 153687.0 m +( max\036byte1 \037 ) 69762 -38.75 32 s +3 sf +(Type) 75561 0.00 -1 s +4 sf +( ) 76228 -39.00 32 s +2 sf +(card8) 83125 0.00 -1 s +4 sf +(.) 83831 0.00 -1 s +3 sf +52832.0 158406.0 m +(Returns) 61610 0.00 -1 s +( zero if the ) 74473 3.00 32 s +4 sf +(font) 78863 0.00 -1 s +3 sf +( uses linear index encoding. Otherwise, if the ) 131319 2.67 32 s +4 sf +(font) 135709 0.00 -1 s +3 sf +( uses) 141278 3.00 32 s +( matrix) 149352 2.00 32 s +52832.0 161567.0 m +(index) 59102 0.00 -1 s +( encoding, a value between 1 and 255 is returned that specifies the maximum value) 149352 -284.60 32 s +52832.0 164727.0 m +(for) 56121 0.00 -1 s +( the most significant byte of font indexes.) 102842 -21.43 32 s +4 sf +52832.0 171004.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 175791.0 m +(font\036max\036byte2) 53035 0.00 -1 s +( ) 53680 -61.00 32 s +4 sf +(font) 58070 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 178951.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +4 sf +( ) 63082 -18.00 32 s +52832.0 182112.0 m +( max\036byte2 \037 ) 69762 -38.75 32 s +3 sf +(Type) 75561 0.00 -1 s +4 sf +( ) 76228 -39.00 32 s +2 sf +(card8) 83125 0.00 -1 s +4 sf +(.) 83831 0.00 -1 s +3 sf +52832.0 186831.0 m +(Returns) 61610 0.00 -1 s +( zero if the ) 74473 3.00 32 s +4 sf +(font) 78863 0.00 -1 s +3 sf +( uses linear index encoding. Otherwise, if the ) 131319 2.67 32 s +4 sf +(font) 135709 0.00 -1 s +3 sf +( uses) 141278 3.00 32 s +( matrix) 149352 2.00 32 s +52832.0 189992.0 m +(index) 59102 0.00 -1 s +( encoding, a value between 1 and 255 is returned that specifies the maximum) 142809 -252.92 32 s +( value) 149352 -275.00 32 s +52832.0 193153.0 m +(for) 56121 0.00 -1 s +( the least significant byte) 84954 -17.60 32 s +( of font indexes.) 103226 -22.67 32 s +4 sf +52832.0 199430.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129190.0 7925.0 m +(Fonts and Characters) 149013 -17.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(8\03693) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(font\036max\036char) 51938 0.00 -1 s +( ) 52606 -38.00 32 s +/timsps10i 4 declareFont +4 sf +(font ) 57664 -38.00 32 s +2 sf +139373.0 h +/timsps10 3 declareFont +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( index ) 60951 -37.00 32 s +3 sf +(\037 Type ) 70911 -36.50 32 s +2 sf +(card16) 79219 0.00 -1 s +3 sf +(.) 79925 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the maximum valid value used for linear encoded indexes. This function is not) 149352 -165.29 32 s +52832.0 36779.0 m +(meaningful) 65684 0.00 -1 s +( for fonts that use matrix index encoding.) 112008 -33.00 32 s +4 sf +52832.0 43056.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 47842.0 m +(font\036min\036byte1) 52566 0.00 -1 s +( ) 53228 -44.00 32 s +4 sf +(font) 57618 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 51003.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 54164.0 m +( min\036byte1 ) 66129 -34.67 32 s +3 sf +(\037 Type ) 76093 -34.50 32 s +2 sf +(card8) 82990 0.00 -1 s +3 sf +(.) 83696 0.00 -1 s +52832.0 58883.0 m +(Returns) 61610 0.00 -1 s +( zero if the ) 74473 3.00 32 s +4 sf +(font) 78863 0.00 -1 s +3 sf +( uses linear index encoding. Otherwise, if the ) 131319 2.67 32 s +4 sf +(font) 135709 0.00 -1 s +3 sf +( uses) 141278 3.00 32 s +( matrix) 149352 2.00 32 s +52832.0 62044.0 m +(index) 59102 0.00 -1 s +( encoding, a value between 1 and 255 is returned that specifies the minimum value) 149352 -221.00 32 s +52832.0 65205.0 m +(for) 56121 0.00 -1 s +( the most significant byte ) 85270 -17.60 32 s +( of font indexes.) 103542 -22.67 32 s +4 sf +52832.0 71481.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 76268.0 m +(font\036min\036byte2) 52566 0.00 -1 s +( ) 53228 -44.00 32 s +4 sf +(font) 57618 0.00 -1 s +138673.0 h +( ) 139318 -61.00 32 s +3 sf +(Function) 149352 0.00 -1 s +2 sf +34544.0 79429.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 82590.0 m +( min\036byte2 ) 66129 -34.67 32 s +3 sf +(\037 Type ) 76093 -34.50 32 s +2 sf +(card8) 82990 0.00 -1 s +3 sf +(.) 83696 0.00 -1 s +52832.0 87308.0 m +(Returns) 61610 0.00 -1 s +( zero if the ) 74473 3.00 32 s +4 sf +(font) 78863 0.00 -1 s +3 sf +( uses linear index encoding. Otherwise, if the ) 131319 2.67 32 s +4 sf +(font) 135709 0.00 -1 s +3 sf +( uses) 141278 3.00 32 s +( matrix) 149352 2.00 32 s +52832.0 90469.0 m +(index) 59102 0.00 -1 s +( encoding, a value) 78823 -271.00 32 s +( between 1 and 255 is returned that specifies the minimum value) 149352 -248.92 32 s +52832.0 93630.0 m +(for) 56121 0.00 -1 s +( the least significant byte) 84954 -17.60 32 s +( of font indexes.) 103226 -22.67 32 s +4 sf +52832.0 99907.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 104693.0 m +(font\036min\036char) 51469 0.00 -1 s +( ) 52122 -53.00 32 s +4 sf +(font) 56512 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 107854.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 111015.0 m +( index ) 60951 -37.00 32 s +3 sf +(\037 Type ) 70911 -36.50 32 s +2 sf +(card16) 79219 0.00 -1 s +3 sf +(.) 79925 0.00 -1 s +52832.0 115734.0 m +(Returns) 61610 0.00 -1 s +( the minimum valid value used for linear encoded indexes. This function is not) 149352 -131.79 32 s +52832.0 118895.0 m +(meaningful) 65684 0.00 -1 s +( for fonts that use matrix index encoding.) 112008 -33.00 32 s +4 sf +52832.0 125171.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 129958.0 m +(font\036name) 46924 0.00 -1 s +( ) 47584 -46.00 32 s +4 sf +(font) 51974 0.00 -1 s +2 sf +52832.0 h +3 sf +(Function) 62866 0.00 -1 s +2 sf +34544.0 133119.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 136279.0 m +( name) 60314 -21.00 32 s +( ) 60998 -22.00 32 s +3 sf +(\037 Type ) 70988 -21.50 32 s +2 sf +(string) 78042 0.00 -1 s +3 sf +( or ) 81761 -21.50 32 s +2 sf +(null) 86467 0.00 -1 s +3 sf +(.) 87173 0.00 -1 s +52832.0 140998.0 m +(Returns) 61610 0.00 -1 s +( the name of the ) 80405 -18.60 32 s +4 sf +(font) 84795 0.00 -1 s +3 sf +(, or ) 89226 -18.50 32 s +2 sf +(nil) 92363 0.00 -1 s +3 sf +( if ) 95461 -18.50 32 s +4 sf +(font) 99851 0.00 -1 s +3 sf +( is a pseudo\036font.) 119233 -18.67 32 s +4 sf +52832.0 147275.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 152061.0 m +(font\036p) 41910 0.00 -1 s +( ) 42594 -22.00 32 s +4 sf +(font) 46984 0.00 -1 s +2 sf +52832.0 h +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 155222.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 158383.0 m +( font\036p ) 61600 -30.00 32 s +3 sf +(\037 Type) 70897 -30.00 32 s +( ) 71572 -31.00 32 s +2 sf +(boolean) 80980 0.00 -1 s +3 sf +(.) 81686 0.00 -1 s +52832.0 163102.0 m +(Returns) 61610 0.00 -1 s +( true if the argument is a ) 89755 -21.00 32 s +2 sf +(font) 94613 0.00 -1 s +3 sf +( object and ) 107641 -20.33 32 s +2 sf +(nil) 110778 0.00 -1 s +3 sf +( otherwise.) 123139 -21.00 32 s +2 sf +34544.0 169378.0 m +(font\036plist) 45515 0.00 -1 s +( ) 46229 8.00 32 s +4 sf +(font) 50619 0.00 -1 s +2 sf +52832.0 h +3 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 172539.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 175700.0 m +( plist) 59093 -6.00 32 s +( ) 59792 -7.00 32 s +3 sf +(\037 Type ) 69812 -6.50 32 s +2 sf +(list) 73417 0.00 -1 s +3 sf +(.) 74123 0.00 -1 s +52832.0 180419.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73935 59.00 32 s +2 sf +(setf) 78164 0.00 -1 s +3 sf +(\) sets the property list for the specified ) 122839 59.38 32 s +4 sf +(font) 127229 0.00 -1 s +3 sf +(. This function pro\036) 149352 59.33 32 s +52832.0 183580.0 m +(vides) 58789 0.00 -1 s +( a hook where extensions can add data.) 102548 -40.86 32 s +4 sf +52832.0 189857.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Fonts and Characters) 40143 -17.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(8\03694) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(font\036properties) 52723 0.00 -1 s +( ) 53364 -65.00 32 s +/timsps10i 4 declareFont +4 sf +(font) 57754 0.00 -1 s +/timsps10 3 declareFont +3 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( properties) 65819 -13.00 32 s +( ) 66511 -14.00 32 s +3 sf +(\037 Type ) 76517 -13.50 32 s +2 sf +(list) 80122 0.00 -1 s +3 sf +(.) 80828 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the list of font ) 78529 -80.80 32 s +4 sf +(properties) 90130 0.00 -1 s +3 sf +( recorded by the X server. The returned list is a prop\036) 149352 -73.18 32 s +52832.0 36779.0 m +(erty) 57219 0.00 -1 s +( list of keyword/value pairs. The set of possible font property keywords is imple\036) 149352 3.07 32 s +52832.0 39940.0 m +(mentation\036dependent.) 77361 0.00 -1 s +4 sf +52832.0 46217.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 51003.0 m +(font\036property) 50999 0.00 -1 s +( ) 51643 -62.00 32 s +4 sf +(font name) 62789 -62.00 32 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 54164.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 57325.0 m +( property ) 64603 -22.00 32 s +3 sf +(\037 Type ) 74592 -22.00 32 s +2 sf +(int32) 80706 0.00 -1 s +3 sf +( or ) 84425 -21.50 32 s +2 sf +(null) 89131 0.00 -1 s +3 sf +(.) 89837 0.00 -1 s +52832.0 62044.0 m +(Returns) 61610 0.00 -1 s +( the value of the font ) 86673 154.00 32 s +4 sf +(property) 96392 0.00 -1 s +3 sf +( specified by the ) 116288 154.00 32 s +4 sf +(name) 122400 0.00 -1 s +3 sf +( keyword. The property) 149352 102.67 32 s +52832.0 65205.0 m +(value,) 59650 0.00 -1 s +( if it exists, is returned as an) 91168 -21.00 32 s +( uninterpreted 32\036bit integer.) 123546 -21.67 32 s +4 sf +52832.0 71481.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +4 sf +52832.0 76268.0 m +(name) 58944 0.00 -1 s +3 sf +( \037 A font property keyword.) 91846 -34.00 32 s +2 sf +34544.0 81054.0 m +(max\036char\036ascent) 54603 0.00 -1 s +( ) 55215 -94.00 32 s +4 sf +(font) 59605 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 84215.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 87376.0 m +( ascent ) 62085 -25.00 32 s +3 sf +(\037 Type) 71387 -25.00 32 s +( ) 72067 -26.00 32 s +2 sf +(int16) 78181 0.00 -1 s +3 sf +(.) 78887 0.00 -1 s +52832.0 92095.0 m +(Returns) 61610 0.00 -1 s +( the maximum ) 78527 -31.00 32 s +2 sf +(char\036ascent) 92475 0.00 -1 s +3 sf +( value for all characters in ) 122378 -31.00 32 s +4 sf +(font) 126768 0.00 -1 s +3 sf +(.) 127474 0.00 -1 s +4 sf +52832.0 98371.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 103158.0 m +(max\036char\036attributes) 58834 0.00 -1 s +( ) 59497 -43.00 32 s +4 sf +(font) 63887 0.00 -1 s +3 sf +( ) 64550 -43.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 106319.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 109480.0 m +( attributes ) 65708 -20.00 32 s +3 sf +(\037 Type ) 75702 -19.50 32 s +2 sf +(int16) 81816 0.00 -1 s +3 sf +(.) 82522 0.00 -1 s +52832.0 114198.0 m +(Returns) 61610 0.00 -1 s +( the maximum) 77856 -29.00 32 s +( ) 78532 -30.00 32 s +2 sf +(char\036attributes) 96711 0.00 -1 s +3 sf +( value for all characters in ) 126623 -29.50 32 s +4 sf +(font) 131013 0.00 -1 s +3 sf +(.) 131719 0.00 -1 s +4 sf +52832.0 120475.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 125262.0 m +(max\036char\036descent) 56014 0.00 -1 s +( ) 56615 -105.00 32 s +4 sf +(font) 61005 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 128422.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 131583.0 m +( descent) 62653 -27.00 32 s +( ) 63331 -28.00 32 s +3 sf +(\037 Type ) 73309 -27.50 32 s +2 sf +(int16) 79423 0.00 -1 s +3 sf +(.) 80129 0.00 -1 s +52832.0 136302.0 m +(Returns) 61610 0.00 -1 s +( the maximum ) 78524 -32.00 32 s +2 sf +(char\036descent) 93883 0.00 -1 s +3 sf +( value for all) 108127 -32.00 32 s +( characters in ) 123778 -32.67 32 s +4 sf +(font) 128168 0.00 -1 s +3 sf +(.) 128874 0.00 -1 s +4 sf +52832.0 142579.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 147365.0 m +(max\036char\036left\036bearing) 61184 0.00 -1 s +( ) 61785 -105.00 32 s +4 sf +(font) 66175 0.00 -1 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 150526.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 153687.0 m +( left\036bearing ) 68201 -24.00 32 s +3 sf +(\037 Type) 77504 -24.00 32 s +( ) 78185 -25.00 32 s +2 sf +(int16) 84299 0.00 -1 s +3 sf +(.) 85005 0.00 -1 s +52832.0 158406.0 m +(Returns) 61610 0.00 -1 s +( the maximum ) 78524 -32.00 32 s +2 sf +(char\036left\036bearing) 99053 0.00 -1 s +3 sf +( value for all) 113297 -32.00 32 s +( characters in ) 128948 -32.67 32 s +4 sf +(font) 133338 0.00 -1 s +3 sf +(.) 134044 0.00 -1 s +4 sf +52832.0 164682.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 169469.0 m +(max\036char\036right\036bearing) 63225 0.00 -1 s +( ) 63795 -136.00 32 s +4 sf +(font) 68185 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 172630.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 175791.0 m +( right\036bearing ) 70078 -26.00 32 s +3 sf +(\037 Type ) 80059 -26.00 32 s +2 sf +(int16) 86173 0.00 -1 s +3 sf +(.) 86879 0.00 -1 s +52832.0 180509.0 m +(Returns) 61610 0.00 -1 s +( the maximum ) 78512 -36.00 32 s +2 sf +(char\036right\036bearing) 101082 0.00 -1 s +3 sf +( value for all characters in ) 130958 -35.50 32 s +4 sf +(font) 135348 0.00 -1 s +3 sf +(.) 136054 0.00 -1 s +4 sf +52832.0 186786.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 191572.0 m +(max\036char\036width) 53978 0.00 -1 s +( ) 54606 -78.00 32 s +4 sf +(font) 58996 0.00 -1 s +138673.0 h +( ) 139318 -61.00 32 s +3 sf +(Function) 149352 0.00 -1 s +2 sf +34544.0 194733.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 197894.0 m +( width ) 61153 -23.00 32 s +3 sf +(\037 Type ) 71141 -22.50 32 s +2 sf +(int16) 77255 0.00 -1 s +3 sf +(.) 77961 0.00 -1 s +52832.0 202613.0 m +(Returns) 61610 0.00 -1 s +( the maximum ) 78533 -29.00 32 s +2 sf +(char\036width ) 92533 -29.00 32 s +3 sf +(value for all) 106109 -29.00 32 s +( characters in ) 121769 -29.67 32 s +4 sf +(font) 126159 0.00 -1 s +3 sf +(.) 126865 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129190.0 7925.0 m +(Fonts and Characters) 149013 -17.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(8\03695) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 4 declareFont +4 sf +52832.0 22578.0 m +(font) 57222 0.00 -1 s +/timsps10 3 declareFont +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 27364.0 m +(min\036char\036ascent) 54134 0.00 -1 s +( ) 54764 -76.00 32 s +4 sf +(font) 59154 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 30525.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 33686.0 m +( ascent ) 62085 -25.00 32 s +3 sf +(\037 Type) 71387 -25.00 32 s +( ) 72067 -26.00 32 s +2 sf +(int16) 78181 0.00 -1 s +3 sf +(.) 78887 0.00 -1 s +52832.0 38405.0 m +(Returns) 61610 0.00 -1 s +( the minimum ) 78070 -27.00 32 s +2 sf +(char\036ascent ) 92697 -27.00 32 s +3 sf +(for all characters in) 114475 -27.00 32 s +( ) 115153 -28.00 32 s +4 sf +(font) 119543 0.00 -1 s +3 sf +(.) 120249 0.00 -1 s +4 sf +52832.0 44681.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 49468.0 m +(min\036char\036attributes) 58365 0.00 -1 s +( ) 59008 -63.00 32 s +4 sf +(font) 63398 0.00 -1 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 52629.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 55790.0 m +( attributes ) 65708 -20.00 32 s +3 sf +(\037 Type ) 75702 -19.50 32 s +2 sf +(int16) 81816 0.00 -1 s +3 sf +(.) 82522 0.00 -1 s +52832.0 60508.0 m +(Returns) 61610 0.00 -1 s +( the minimum ) 78082 -23.00 32 s +2 sf +(char\036attributes ) 96944 -23.00 32 s +3 sf +(for all characters) 115856 -23.00 32 s +( in ) 119416 -23.50 32 s +4 sf +(font) 123806 0.00 -1 s +3 sf +(. ) 125194 -24.00 32 s +4 sf +52832.0 66785.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 71572.0 m +(min\036char\036descent) 55545 0.00 -1 s +( ) 56205 -46.00 32 s +4 sf +(font) 60595 0.00 -1 s +( ) 61254 -47.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 74732.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 77893.0 m +( descent) 62653 -27.00 32 s +( ) 63331 -28.00 32 s +3 sf +(\037 Type ) 73309 -27.50 32 s +2 sf +(int16) 79423 0.00 -1 s +3 sf +(.) 80129 0.00 -1 s +52832.0 82612.0 m +(Returns) 61610 0.00 -1 s +( the minimum ) 78073 -26.00 32 s +2 sf +(char\036descent ) 94112 -26.00 32 s +3 sf +(for all characters in ) 116573 -26.00 32 s +4 sf +(font) 120963 0.00 -1 s +3 sf +(. ) 122349 -26.00 32 s +4 sf +52832.0 88889.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 93675.0 m +(min\036char\036left\036bearing) 60715 0.00 -1 s +( ) 61334 -87.00 32 s +4 sf +(font) 65724 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 96836.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 99997.0 m +( left\036bearing ) 68201 -24.00 32 s +3 sf +(\037 Type) 77504 -24.00 32 s +( ) 78185 -25.00 32 s +2 sf +(int16) 84299 0.00 -1 s +3 sf +(.) 85005 0.00 -1 s +52832.0 104716.0 m +(Returns) 61610 0.00 -1 s +( the) 65736 -28.00 32 s +( minimum ) 78066 -28.50 32 s +2 sf +(char\036left\036bearing ) 99272 -29.00 32 s +3 sf +(for all characters in ) 121723 -28.50 32 s +4 sf +(font) 126113 0.00 -1 s +3 sf +(.) 126819 0.00 -1 s +4 sf +52832.0 110992.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 115779.0 m +(min\036char\036right\036bearing) 62756 0.00 -1 s +( ) 63343 -119.00 32 s +4 sf +(font) 67733 0.00 -1 s +3 sf +138673.0 h +( Function) 149352 -61.00 32 s +2 sf +34544.0 118940.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 122101.0 m +( right\036bearing ) 70078 -26.00 32 s +3 sf +(\037 Type ) 80059 -26.00 32 s +2 sf +(int16) 86173 0.00 -1 s +3 sf +(.) 86879 0.00 -1 s +52832.0 126819.0 m +(Returns) 61610 0.00 -1 s +( the minimum ) 78055 -32.00 32 s +2 sf +(char\036right\036bearing) 100625 0.00 -1 s +( ) 101298 -33.00 32 s +3 sf +(for all characters in ) 123733 -32.50 32 s +4 sf +(font) 128123 0.00 -1 s +3 sf +(.) 128829 0.00 -1 s +4 sf +52832.0 133096.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +2 sf +34544.0 137882.0 m +(min\036char\036width) 53509 0.00 -1 s +( ) 54154 -61.00 32 s +4 sf +(font) 58544 0.00 -1 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 141043.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 144204.0 m +( width ) 61153 -23.00 32 s +3 sf +(\037 Type ) 71141 -22.50 32 s +2 sf +(int16) 77255 0.00 -1 s +3 sf +(.) 77961 0.00 -1 s +52832.0 148923.0 m +(Returns) 61610 0.00 -1 s +( the minimum ) 78076 -25.00 32 s +2 sf +(char\036width ) 92080 -25.00 32 s +3 sf +(for all characters in) 113864 -25.00 32 s +( ) 114544 -26.00 32 s +4 sf +(font) 118934 0.00 -1 s +3 sf +(.) 119640 0.00 -1 s +4 sf +52832.0 155200.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Fonts and Characters) 40143 -17.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(8\03696) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 5 declareFont +5 sf +20320.0 26687.0 m +(Character) 35173 0.00 -1 s +( ) 36057 37.00 32 s +49378.0 h +52832.0 h +2 sf +(8.5) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +3 sf +(The) 63098 0.00 -1 s +( following paragraphs describe the CLX functions used to access ) 136731 -34.90 32 s +5 sf +20320.0 30074.0 m +(Attributes) 35176 0.00 -1 s +2 sf +49378.0 h +52832.0 h +3 sf +(the attributes of individual font glyphs.) 96746 -27.20 32 s +2 sf +34544.0 36350.0 m +(char\036ascent) 48492 0.00 -1 s +( ) 49137 -61.00 32 s +/timsps10i 4 declareFont +4 sf +(font) 53527 0.00 -1 s +( index) 60283 -62.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 39511.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 42672.0 m +( ascent) 61412 -21.00 32 s +( ) 62096 -22.00 32 s +3 sf +(\037 Type ) 72086 -21.50 32 s +2 sf +(int16) 78200 0.00 -1 s +3 sf +( or ) 81919 -21.50 32 s +2 sf +(null) 86625 0.00 -1 s +3 sf +(.) 87331 0.00 -1 s +52832.0 47391.0 m +(Returns) 61610 0.00 -1 s +( the vertical distance in pixels) 96312 216.00 32 s +( from the baseline to the top of the given font) 149352 193.90 32 s +52832.0 50552.0 m +(glyph.) 59966 0.00 -1 s +( Returns ) 70095 -30.50 32 s +2 sf +(nil) 73232 0.00 -1 s +3 sf +( if the index is invalid or specifies an empty glyph, or if the ) 140476 -28.36 32 s +4 sf +(font) 144866 0.00 -1 s +3 sf +( is a) 149352 -30.50 32 s +52832.0 53713.0 m +(pseudo\036font.) 67017 0.00 -1 s +4 sf +52832.0 59989.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +4 sf +52832.0 64776.0 m +(index) 58944 0.00 -1 s +3 sf +( \037 An ) 67239 -31.00 32 s +2 sf +(int16) 73353 0.00 -1 s +3 sf +( font index.) 86225 -30.50 32 s +2 sf +34544.0 69562.0 m +(char\036attributes) 52723 0.00 -1 s +( ) 53374 -55.00 32 s +4 sf +(font index) 64527 -55.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 72723.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 75884.0 m +( attributes ) 65715 -17.67 32 s +3 sf +(\037 Type ) 75713 -17.50 32 s +2 sf +(int16) 81827 0.00 -1 s +3 sf +( or ) 85554 -17.50 32 s +2 sf +(null) 90260 0.00 -1 s +3 sf +(.) 90966 0.00 -1 s +52832.0 80603.0 m +(Returns) 61610 0.00 -1 s +( font\036specific ) 76805 -238.00 32 s +4 sf +(attributes) 87623 0.00 -1 s +3 sf +( of the) 94357 -238.00 32 s +( given glyph. The interpretation of such attributes) 149352 -208.75 32 s +52832.0 83764.0 m +(is) 54714 0.00 -1 s +( server\036dependent. Returns ) 85284 -154.00 32 s +2 sf +(nil) 88421 0.00 -1 s +3 sf +( if the ) 95248 -154.00 32 s +4 sf +(index) 101360 0.00 -1 s +3 sf +( is invalid or specifies an empty glyph, or if) 149352 -136.67 32 s +52832.0 86924.0 m +(the) 56280 0.00 -1 s +( ) 56962 -24.00 32 s +4 sf +(font) 61352 0.00 -1 s +3 sf +( is a pseudo\036font.) 80716 -24.67 32 s +4 sf +52832.0 93201.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +4 sf +52832.0 97988.0 m +(index) 58944 0.00 -1 s +3 sf +( \037 An ) 67239 -31.00 32 s +2 sf +(int16) 73353 0.00 -1 s +3 sf +( font index.) 86225 -30.50 32 s +2 sf +34544.0 102774.0 m +(char\036descent) 49903 0.00 -1 s +( ) 50542 -67.00 32 s +4 sf +(font) 54932 0.00 -1 s +( index) 61682 -68.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 105935.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 109096.0 m +( descent ) 63344 -23.00 32 s +3 sf +(\037 Type ) 73331 -23.00 32 s +2 sf +(int16) 79445 0.00 -1 s +3 sf +( or ) 83161 -23.00 32 s +2 sf +(null) 87867 0.00 -1 s +3 sf +(.) 88573 0.00 -1 s +52832.0 113815.0 m +(Returns) 61610 0.00 -1 s +( the vertical) 74655 -138.00 32 s +( distance in pixels from the baseline to the bottom of the given font) 149352 -128.64 32 s +52832.0 116975.0 m +(glyph.) 59966 0.00 -1 s +( Returns ) 70114 -21.00 32 s +2 sf +(nil) 73251 0.00 -1 s +3 sf +( if the ) 80477 -21.00 32 s +4 sf +(index) 86589 0.00 -1 s +3 sf +( is invalid or specifies an empty) 122381 -17.50 32 s +( glyph, or if the ) 140458 -21.60 32 s +4 sf +(font) 144848 0.00 -1 s +3 sf +( is a) 149352 -21.50 32 s +52832.0 120136.0 m +(pseudo\036font.) 67017 0.00 -1 s +4 sf +52832.0 126413.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +4 sf +52832.0 131199.0 m +(index) 58944 0.00 -1 s +3 sf +( \037 An ) 67239 -31.00 32 s +2 sf +(int16) 73353 0.00 -1 s +3 sf +( font index.) 86225 -30.50 32 s +2 sf +34544.0 135986.0 m +(char\036left\036bearing) 55073 0.00 -1 s +( ) 55712 -67.00 32 s +4 sf +(font index) 66853 -67.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 139147.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 142308.0 m +( left\036bearing ) 68210 -21.00 32 s +3 sf +(\037 Type ) 78202 -20.50 32 s +2 sf +(int16) 84316 0.00 -1 s +3 sf +( or ) 88037 -20.50 32 s +2 sf +(null) 92743 0.00 -1 s +3 sf +(.) 93449 0.00 -1 s +52832.0 147026.0 m +(Returns) 61610 0.00 -1 s +( the left side bearing of the given font glyph. If ) 113832 -125.91 32 s +2 sf +(draw\036glyph) 127785 0.00 -1 s +3 sf +( is called with hori\036) 149352 -94.25 32 s +52832.0 150187.0 m +(zontal) 59728 0.00 -1 s +( position ) 70068 -83.00 32 s +4 sf +(x) 71321 0.00 -1 s +3 sf +(, the leftmost pixel of the glyph is drawn at the position \(+ ) 136820 -76.38 32 s +4 sf +(x left\036bear\036) 149352 -83.00 32 s +52832.0 153348.0 m +(ing) 56438 0.00 -1 s +3 sf +(\).) 58083 0.00 -1 s +( Returns ) 68369 48.00 32 s +2 sf +(nil) 71506 0.00 -1 s +3 sf +( if the ) 78891 32.00 32 s +4 sf +(index) 85003 0.00 -1 s +3 sf +( is invalid or specifies an empty glyph, or if the ) 139613 48.00 32 s +4 sf +(font) 144003 0.00 -1 s +3 sf +( is a ) 149352 32.00 32 s +52832.0 156509.0 m +(pseudo\036font.) 67017 0.00 -1 s +4 sf +52832.0 162786.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +4 sf +52832.0 167572.0 m +(index) 58944 0.00 -1 s +3 sf +( \037 An ) 67239 -31.00 32 s +2 sf +(int16) 73353 0.00 -1 s +3 sf +( font index.) 86225 -30.50 32 s +2 sf +34544.0 172359.0 m +(char\036right\036bearing) 57114 0.00 -1 s +( ) 57737 -83.00 32 s +4 sf +(font index) 68862 -83.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 175520.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 178681.0 m +( right\036bearing ) 70090 -22.00 32 s +3 sf +(\037 Type ) 80079 -22.00 32 s +2 sf +(int16) 86193 0.00 -1 s +3 sf +( or ) 89911 -22.00 32 s +2 sf +(null) 94617 0.00 -1 s +3 sf +(.) 95323 0.00 -1 s +52832.0 183399.0 m +(Returns) 61610 0.00 -1 s +( the right side bearing of the given font glyph. If ) 114168 -238.00 32 s +2 sf +(draw\036glyph) 128121 0.00 -1 s +3 sf +( is called with hori\036) 149352 -178.25 32 s +52832.0 186560.0 m +(zontal) 59728 0.00 -1 s +( position ) 70424 95.00 32 s +4 sf +(x) 71677 0.00 -1 s +3 sf +(,) 72383 0.00 -1 s +( the rightmost pixel of the glyph is drawn at the position \(+ ) 140872 87.23 32 s +4 sf +(x right\036) 149352 94.00 32 s +52832.0 189721.0 m +(bearing) 61611 0.00 -1 s +3 sf +(\).) 63256 0.00 -1 s +( Returns ) 72884 -281.00 32 s +2 sf +(nil) 76021 0.00 -1 s +3 sf +( if the ) 83173 -210.75 32 s +4 sf +(index) 89285 0.00 -1 s +3 sf +( is invalid or specifies) 112928 -281.00 32 s +( an empty glyph, or if the ) 140272 -281.57 32 s +4 sf +(font) 144662 0.00 -1 s +3 sf +( is a ) 149352 -187.67 32 s +52832.0 192882.0 m +(pseudo\036font.) 67017 0.00 -1 s +4 sf +52832.0 199159.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64134 -21.67 32 s +4 sf +(font) 68524 0.00 -1 s +3 sf +( object.) 76810 -22.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129190.0 7925.0 m +(Fonts and Characters) 149013 -17.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(8\03697) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 4 declareFont +4 sf +52832.0 22578.0 m +(index) 58944 0.00 -1 s +/timsps10 3 declareFont +3 sf +( \037 An ) 67239 -31.00 32 s +2 sf +(int16) 73353 0.00 -1 s +3 sf +( font index.) 86225 -30.50 32 s +2 sf +34544.0 27364.0 m +(char\036width) 47867 0.00 -1 s +( ) 48519 -54.00 32 s +4 sf +(font index) 59673 -54.00 32 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 30525.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 33686.0 m +( width ) 61162 -20.00 32 s +3 sf +(\037 Type ) 71156 -19.50 32 s +2 sf +(int16) 77270 0.00 -1 s +3 sf +( or ) 80993 -19.50 32 s +2 sf +(null) 85699 0.00 -1 s +3 sf +(.) 86405 0.00 -1 s +52832.0 38405.0 m +(Returns) 61610 0.00 -1 s +( the ) 66308 -81.00 32 s +4 sf +(width) 72580 0.00 -1 s +3 sf +( of the given font glyph. The ) 105090 -81.00 32 s +4 sf +(width) 111362 0.00 -1 s +3 sf +( is defined to) 125776 -81.00 32 s +( be equal to \(- ) 142925 -68.00 32 s +4 sf +(right\036) 149352 0.00 -1 s +52832.0 41566.0 m +(bearing) 61611 0.00 -1 s +( left\036bearing) 75363 -277.00 32 s +3 sf +(\). Returns ) 86644 -277.00 32 s +2 sf +(nil) 89781 0.00 -1 s +3 sf +( if the) 95810 -277.00 32 s +( ) 96238 -278.00 32 s +4 sf +(index) 102350 0.00 -1 s +3 sf +( is invalid or specifies an empty glyph, or if) 149352 -246.67 32 s +52832.0 44727.0 m +(the) 56280 0.00 -1 s +( ) 56962 -24.00 32 s +4 sf +(font) 61352 0.00 -1 s +3 sf +( is a pseudo\036font.) 80716 -24.67 32 s +4 sf +52832.0 51003.0 m +(font) 57222 0.00 -1 s +3 sf +( \037 A ) 64139 -20.00 32 s +2 sf +(font) 68997 0.00 -1 s +3 sf +( object.) 77284 -21.00 32 s +4 sf +52832.0 55790.0 m +(index) 58944 0.00 -1 s +3 sf +( \037 An ) 67239 -31.00 32 s +2 sf +(int16) 73353 0.00 -1 s +3 sf +( font index.) 86225 -30.50 32 s +20320.0 61299.0 m +0.0 0.0 m +newpath +20455 59675 av +148878 59673 as +[] 0 setdash +dp +149352.0 61299.0 m +/timsps12b 5 declareFont +5 sf +20320.0 64685.0 m +(Querying) 34053 0.00 -1 s +52832.0 h +2 sf +(8.6) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(CLX) 64198 0.00 -1 s +( defines functions to return the size of text drawn in a specified) 149352 1166.33 32 s +5 sf +20320.0 68072.0 m +(Text) 26902 0.00 -1 s +( Size) 33618 39.00 32 s +52832.0 h +3 sf +(font.) 58083 0.00 -1 s +( See paragraph 6.7, Drawing Text, for a description of the ) 122121 -177.00 32 s +2 sf +(:translate) 133717 0.00 -1 s +3 sf +( function used) 149352 -177.00 32 s +52832.0 71233.0 m +(by) 55654 0.00 -1 s +( the functions in the following paragraphs.) 103338 -33.67 32 s +2 sf +34544.0 77510.0 m +(text\036extents) 48487 0.00 -1 s +3 sf +( ) 49166 -27.00 32 s +4 sf +(font sequence) 64578 -27.00 32 s +3 sf +( &key \() 73145 -27.00 32 s +2 sf +(:start) 79724 0.00 -1 s +3 sf +( 0\) ) 83432 -27.00 32 s +2 sf +(:end) 88762 0.00 -1 s +( :translate) 101036 -28.00 32 s +3 sf +139373.0 h +(Function) 149407 0.00 -1 s +2 sf +34544.0 80670.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 83831.0 m +54864.0 h +4 sf +(width) 61136 0.00 -1 s +3 sf +( \037 Type ) 71773 -34.00 32 s +2 sf +(int32) 77887 0.00 -1 s +3 sf +(.) 78593 0.00 -1 s +52832.0 86992.0 m +54864.0 h +4 sf +(ascent) 62074 0.00 -1 s +3 sf +( \037 Type ) 72699 -38.00 32 s +2 sf +(int16) 78813 0.00 -1 s +3 sf +(.) 79519 0.00 -1 s +52832.0 90153.0 m +54864.0 h +4 sf +(descent) 63327 0.00 -1 s +3 sf +( \037 Type ) 73941 -41.67 32 s +2 sf +(int16) 80055 0.00 -1 s +3 sf +(.) 80761 0.00 -1 s +52832.0 93314.0 m +54864.0 h +4 sf +(left) 58469 0.00 -1 s +3 sf +( \037 Type) 68452 -25.00 32 s +( ) 69132 -26.00 32 s +2 sf +(int32) 75246 0.00 -1 s +3 sf +(.) 75952 0.00 -1 s +52832.0 96475.0 m +54864.0 h +4 sf +(right) 60352 0.00 -1 s +3 sf +( \037 Type) 70329 -28.00 32 s +( ) 71006 -29.00 32 s +2 sf +(int32) 77120 0.00 -1 s +3 sf +(.) 77826 0.00 -1 s +52832.0 99636.0 m +54864.0 h +4 sf +(font\036ascent) 67403 0.00 -1 s +3 sf +( \037 Type) 77360 -38.00 32 s +( ) 78027 -39.00 32 s +2 sf +(int16) 84141 0.00 -1 s +3 sf +(.) 84847 0.00 -1 s +52832.0 102797.0 m +54864.0 h +4 sf +(direction) 65053 0.00 -1 s +3 sf +( \037 Type) 74974 -56.00 32 s +( ) 75623 -57.00 32 s +2 sf +(draw\036direction) 93647 0.00 -1 s +3 sf +(.) 94353 0.00 -1 s +52832.0 105958.0 m +54864.0 h +4 sf +(first\036not\036done) 70382 0.00 -1 s +3 sf +( \037 Type) 80343 -36.00 32 s +( ) 81012 -37.00 32 s +2 sf +(array\036index) 95276 0.00 -1 s +3 sf +( or ) 98965 -36.50 32 s +2 sf +(null) 103671 0.00 -1 s +3 sf +(.) 104377 0.00 -1 s +52832.0 110676.0 m +(Returns) 61610 0.00 -1 s +( the complete geometry of the given ) 101151 -274.00 32 s +4 sf +(sequence) 111494 0.00 -1 s +3 sf +( when drawn in the given ) 139436 -228.33 32 s +4 sf +(fon) 143042 0.00 -1 s +3 sf +(t. The) 149352 -274.00 32 s +52832.0 113837.0 m +4 sf +(font) 57222 0.00 -1 s +3 sf +( can be a ) 67600 -70.00 32 s +2 sf +(gcontext) 77786 0.00 -1 s +3 sf +(, in which case the font attribute of) 116708 -60.00 32 s +( the given graphics context is) 149352 -70.60 32 s +52832.0 116998.0 m +(used.) 58711 0.00 -1 s +( ) 59382 -35.00 32 s +2 sf +(:start) 65961 0.00 -1 s +3 sf +( and ) 71378 -35.00 32 s +2 sf +(:end) 76708 0.00 -1 s +3 sf +( define the elements of) 102307 -26.25 32 s +( the ) 107096 -35.50 32 s +4 sf +(sequence) 117439 0.00 -1 s +3 sf +( which are used.) 135670 -35.67 32 s +52832.0 123275.0 m +(The) 57220 0.00 -1 s +( returned ) 67800 -116.50 32 s +4 sf +(width) 74072 0.00 -1 s +3 sf +( is the total pixel width of the translated character sequence. The re\036) 149352 -106.83 32 s +52832.0 126436.0 m +(turned) 60041 0.00 -1 s +( ) 60480 -267.00 32 s +4 sf +(ascent) 67690 0.00 -1 s +3 sf +( and ) 72643 -267.00 32 s +4 sf +(descent) 81106 0.00 -1 s +3 sf +( give the vertical ascent and descent for characters in the trans\036) 149352 -242.73 32 s +52832.0 129596.0 m +(lated) 58317 0.00 -1 s +( ) 59124 101.00 32 s +4 sf +(sequence) 69467 0.00 -1 s +3 sf +(. The returned ) 86383 101.00 32 s +4 sf +(left) 89988 0.00 -1 s +3 sf +( gives the) 101007 101.00 32 s +( left bearing of the leftmost character. The) 149352 100.43 32 s +52832.0 132757.0 m +(returned) 62233 0.00 -1 s +( ) 62851 -88.00 32 s +4 sf +(right) 68339 0.00 -1 s +3 sf +( gives the right bearing of the rightmost character. The returned ) 140575 -73.33 32 s +4 sf +(font\036as\036) 149352 0.00 -1 s +52832.0 135918.0 m +(cent) 57533 0.00 -1 s +3 sf +( and ) 62558 -231.00 32 s +4 sf +(font\036descent) 76350 0.00 -1 s +3 sf +( give the maximum vertical ascent and descent for all characters in) 149352 -209.73 32 s +52832.0 139079.0 m +(the) 56280 0.00 -1 s +( ) 56807 -179.00 32 s +4 sf +(fon) 60413 0.00 -1 s +3 sf +(t. If ) 64835 -179.00 32 s +2 sf +(:translate) 76431 0.00 -1 s +3 sf +( causes font changes, then ) 105811 -143.20 32 s +4 sf +(font\036ascent) 118350 0.00 -1 s +3 sf +( and ) 123479 -179.00 32 s +4 sf +(font\036descent) 137271 0.00 -1 s +3 sf +( will be) 145378 -179.00 32 s +( the) 149352 -180.00 32 s +52832.0 142240.0 m +(maximums) 65374 0.00 -1 s +( over all fonts used. The ) 94205 20.57 32 s +4 sf +(direction) 104394 0.00 -1 s +3 sf +( returns the preferred draw direction) 145334 24.00 32 s +( for) 149352 23.00 32 s +52832.0 145401.0 m +(the font.) 62237 0.00 32 s +( If ) 65351 -88.00 32 s +2 sf +(:translate) 76947 0.00 -1 s +3 sf +( causes font changes, then the ) 110669 -88.00 32 s +4 sf +(direction) 120858 0.00 -1 s +3 sf +( will be ) 129853 -58.67 32 s +2 sf +(nil) 132990 0.00 -1 s +3 sf +(. The ) 139320 -88.00 32 s +4 sf +(first\036not\036) 149352 0.00 -1 s +52832.0 148562.0 m +(done) 58318 0.00 -1 s +3 sf +( value returned is ) 78397 -35.00 32 s +2 sf +(nil) 81534 0.00 -1 s +3 sf +( if all elements of the ) 105968 -29.17 32 s +4 sf +(sequence) 116311 0.00 -1 s +3 sf +( were successfully) 136928 -35.00 32 s +( translated;) 149352 -36.00 32 s +52832.0 151723.0 m +(otherwise) 63802 0.00 -1 s +( the index of the first untranslated) 101760 -21.67 32 s +( element is returned.) 124720 -26.67 32 s +4 sf +52832.0 157999.0 m +(font) 57222 0.00 -1 s +3 sf +( \037) 60750 0.00 32 s +( The font \(or ) 75681 -28.75 32 s +2 sf +(gcontext) 85867 0.00 -1 s +3 sf +(\) used for measuring characters.) 121875 -28.50 32 s +4 sf +52832.0 162786.0 m +(sequence) 63175 0.00 -1 s +3 sf +( \037 A sequence of characters or other objects to be translated) 129601 -209.00 32 s +( into font indexes.) 149352 -209.67 32 s +2 sf +52832.0 167572.0 m +(:start) 59411 0.00 -1 s +3 sf +(,) 60117 0.00 -1 s +( ) 60796 -27.00 32 s +2 sf +(:end ) 66805 -27.00 32 s +3 sf +(\037 Start and) 80389 -27.00 32 s +( end indexes defining the elements to draw.) 129258 -27.57 32 s +2 sf +52832.0 172359.0 m +(:translate) 64428 0.00 -1 s +3 sf +( \037 A function to) 84470 190.00 32 s +( translate text to font indexes. Default is ) 131645 165.75 32 s +2 sf +(#'translate\036de\036) 149352 0.00 -1 s +57912.0 175520.0 m +(fault) 63554 0.00 -1 s +3 sf +(.) 64260 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Fonts and Characters) 40143 -17.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(8\03698) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(text\036width) 46923 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 47603 -26.00 32 s +/timsps10i 4 declareFont +4 sf +(font sequence) 63016 -26.00 32 s +3 sf +( &key \() 71585 -26.00 32 s +2 sf +(:start) 78164 0.00 -1 s +3 sf +( 0\) ) 81873 -26.50 32 s +2 sf +(:end :translate) 99478 -27.00 32 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 28900.0 m +( ) 54198 -23.00 32 s +4 sf +(width) 60470 0.00 -1 s +3 sf +( \037 Type ) 71141 -22.67 32 s +2 sf +(int32) 77255 0.00 -1 s +3 sf +(.) 77961 0.00 -1 s +52832.0 32060.0 m +( ) 54188 -28.00 32 s +4 sf +(first\036not\036done) 69706 0.00 -1 s +3 sf +( \037 Type ) 80362 -27.67 32 s +2 sf +(array\036index) 94626 0.00 -1 s +3 sf +( or ) 98333 -27.50 32 s +2 sf +(null) 103039 0.00 -1 s +3 sf +(.) 103745 0.00 -1 s +52832.0 36779.0 m +(Returns) 61610 0.00 -1 s +( the total pixel width of the given ) 99660 -25.00 32 s +4 sf +(sequence) 110003 0.00 -1 s +3 sf +( when) 116796 -25.00 32 s +( drawn in the given ) 139188 -20.40 32 s +4 sf +(font) 143578 0.00 -1 s +3 sf +(. The) 149352 -26.00 32 s +52832.0 39940.0 m +4 sf +(font) 57222 0.00 -1 s +3 sf +( can be a ) 67600 -70.00 32 s +2 sf +(gcontext) 77786 0.00 -1 s +3 sf +(, in which case the font attribute of) 116708 -60.00 32 s +( the given graphics context is) 149352 -70.60 32 s +52832.0 43101.0 m +(used.) 58711 0.00 -1 s +( ) 59393 -24.00 32 s +2 sf +(:start) 65972 0.00 -1 s +3 sf +( and ) 71410 -24.50 32 s +2 sf +(:end) 76740 0.00 -1 s +3 sf +( define the elements of the ) 107157 -24.50 32 s +4 sf +(sequence) 117500 0.00 -1 s +3 sf +( which are used. The second) 149352 -24.60 32 s +52832.0 46262.0 m +(value) 58944 0.00 -1 s +( returned is ) 72041 -101.33 32 s +2 sf +(nil) 75178 0.00 -1 s +3 sf +( if all elements of the ) 98875 -152.00 32 s +4 sf +(sequence) 109218 0.00 -1 s +3 sf +( were successfully translated; other\036) 149352 -114.00 32 s +52832.0 49423.0 m +(wise) 58004 0.00 -1 s +( the index of the) 76260 -21.00 32 s +( first untranslated element is returned.) 118940 -21.60 32 s +4 sf +52832.0 55699.0 m +(font ) 57928 0.00 32 s +3 sf +( \037 The font \(or ) 76372 -26.00 32 s +2 sf +(gcontext) 86558 0.00 -1 s +3 sf +(\) used for measuring) 109754 -26.00 32 s +( characters.) 122575 -27.00 32 s +4 sf +52832.0 60486.0 m +(sequence) 63175 0.00 -1 s +3 sf +( \037 A sequence of characters or other objects to be translated) 129601 -209.00 32 s +( into font indexes.) 149352 -209.67 32 s +2 sf +52832.0 65272.0 m +(:start) 59411 0.00 -1 s +3 sf +(,) 60117 0.00 -1 s +( ) 60796 -27.00 32 s +2 sf +(:end) 66126 0.00 -1 s +3 sf +( \037 Start and) 80389 -27.00 32 s +( end indexes defining the elements to draw.) 129258 -27.57 32 s +2 sf +52832.0 70059.0 m +(:translate) 64428 0.00 -1 s +3 sf +( \037 A function to) 84470 190.00 32 s +( translate text to font indexes. Default is ) 131645 165.75 32 s +2 sf +(#'translate\036de\036) 149352 0.00 -1 s +57912.0 73220.0 m +(fault) 63554 0.00 -1 s +3 sf +(.) 64260 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s12.ps +++ cmucl-20a-20090928/own-work/clx/s12.ps @@ -0,0 +1,15704 @@ +%!PS-Adobe-2.0 +%%Title: s12.ps +%%Pages: 42 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036119) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 8 declareFont +8 sf +20410.0 39376.0 m +66265.0 39466.0 m +(EVENTS AND) 98817 -41.00 32 s +( INPUT) 115846 -42.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +146554 39315 av +146554 36265 as +141046 36265 as +146554 30545 as +146554 25588 as +144351 23300 as +139210 23300 as +137007 25588 as +137007 27876 as +140312 27876 as +140312 26351 as +143249 26351 as +143249 29783 as +137007 36265 as +137007 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +136640 43891 av +136640 43891 as +newpath +136640 23300 av +136640 23300 as +newpath +147288 23300 av +147288 23300 as +newpath +147288 43891 av +147288 43891 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +134900 39315 av +134900 23300 as +131963 23300 as +129025 26351 as +129025 27876 as +131596 27876 as +131596 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +128658 23300 av +128658 23300 as +newpath +128658 43891 av +128658 43891 as +newpath +136369 43891 av +136369 43891 as +newpath +136369 23300 av +136369 23300 as +149351.0 39376.0 m +8 sf +/timsps10 5 declareFont +5 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 7 declareFont +7 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(12.1) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(A) 62003 0.00 -1 s +( client application uses CLX functions to send) 114539 59.00 32 s +( ) 115303 58.00 32 s +/timsps10i 6 declareFont +6 sf +(requests) 124709 0.00 -1 s +5 sf +( to an X server over a) 149352 58.50 32 s +52832.0 50032.0 m +(display) 60984 0.00 -1 s +( connection returned by the ) 91702 -173.00 32 s +2 sf +(open\036display) 107069 0.00 -1 s +5 sf +( function. In return, the X server sends) 149352 -173.00 32 s +52832.0 53193.0 m +(back) 58160 0.00 -1 s +( ) 58805 -61.00 32 s +6 sf +(replies) 66486 0.00 -1 s +5 sf +( and ) 71851 -61.00 32 s +6 sf +(events) 78903 0.00 -1 s +5 sf +(. Replies are synchronized with specific requests and return re\036) 149352 -60.89 32 s +52832.0 56354.0 m +(quested) 61453 0.00 -1 s +( server information. Events typically) 102638 -29.00 32 s +( occur asynchronously. Device events are) 149352 -29.60 32 s +52832.0 59515.0 m +(generated) 63800 0.00 -1 s +( by user input from both the keyboard and pointer devices. Other events) 145180 22.00 32 s +( are) 149352 21.00 32 s +52832.0 62676.0 m +(side\036effects) 65836 0.00 -1 s +( of the requests sent by CLX functions. The types of events returned) 140346 -211.00 32 s +( by an X) 149352 -211.67 32 s +52832.0 65837.0 m +(server) 59725 0.00 -1 s +( are summarized below.) 86563 -39.67 32 s +2 sf +52832.0 68998.0 m +99568.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 68173 av +149352 68173 as +149352 68408 as +52832 68408 as +closepath +fp +/drawmode PL_SET def +52832.0 72159.0 m +(Device) 60823 0.00 -1 s +( Events) 69607 -74.00 32 s +99568.0 h +(Events) 107720 0.00 -1 s +( Returned) 119775 -93.00 32 s +52832.0 75319.0 m +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 74494 av +149352 74494 as +149352 74729 as +52832 74729 as +closepath +fp +/drawmode PL_SET def +5 sf +52832.0 78480.0 m +(Keyboard) 63958 0.00 -1 s +99568.0 h +2 sf +(:key\036press) 111950 0.00 -1 s +5 sf +52832.0 81641.0 m +99568.0 h +2 sf +(:key\036release) 113984 0.00 -1 s +5 sf +52832.0 85615.0 m +(Pointer) 60983 0.00 -1 s +99568.0 h +2 sf +(:button\036press) 115713 0.00 -1 s +52832.0 88776.0 m +99568.0 h +(:button\036release) 117747 0.00 -1 s +52832.0 91937.0 m +99568.0 h +(:enter\036notify) 114766 0.00 -1 s +52832.0 95098.0 m +99568.0 h +(:leave\036notify) 114611 0.00 -1 s +52832.0 98258.0 m +99568.0 h +(:motion\036notify) 116963 0.00 -1 s +5 sf +52832.0 101419.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 100594 av +149352 100594 as +149352 100712 as +52832 100712 as +closepath +fp +/drawmode PL_SET def +2 sf +52832.0 104580.0 m +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 103755 av +149352 103755 as +149352 103990 as +52832 103990 as +closepath +fp +/drawmode PL_SET def +52832.0 107741.0 m +(Side\036Effect) 66151 0.00 -1 s +( Events) 74958 -51.00 32 s +99568.0 h +(Events) 107720 0.00 -1 s +( Returned) 119775 -93.00 32 s +52832.0 110902.0 m +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 110077 av +149352 110077 as +149352 110312 as +52832 110312 as +closepath +fp +/drawmode PL_SET def +5 sf +52832.0 114063.0 m +(Client) 59730 0.00 -1 s +( communication) 77893 -99.00 32 s +99568.0 h +2 sf +(:client\036message) 117902 0.00 -1 s +52832.0 117224.0 m +99568.0 h +(:property\036notify) 119157 0.00 -1 s +52832.0 120385.0 m +99568.0 h +(:selection\036clear) 117744 0.00 -1 s +52832.0 123546.0 m +99568.0 h +(:selection\036notify) 118843 0.00 -1 s +5 sf +52832.0 126706.0 m +99568.0 h +2 sf +(:selection\036request) 120724 0.00 -1 s +5 sf +52832.0 130680.0 m +(Color) 59259 0.00 -1 s +( map state) 70646 -28.00 32 s +99568.0 h +2 sf +(:colormap\036notify) 119941 0.00 -1 s +5 sf +52832.0 134857.0 m +(Exposure) 63490 0.00 -1 s +99568.0 h +2 sf +(:exposure) 111324 0.00 -1 s +5 sf +52832.0 138018.0 m +99568.0 h +2 sf +(:graphics\036exposure) 122611 0.00 -1 s +52832.0 141179.0 m +99568.0 h +(:no\036exposure) 115243 0.00 -1 s +5 sf +52832.0 145153.0 m +(Input) 58788 0.00 -1 s +( focus) 65566 -40.00 32 s +99568.0 h +2 sf +(:focus\036in) 110069 0.00 -1 s +52832.0 148313.0 m +99568.0 h +(:focus\036out) 111635 0.00 -1 s +5 sf +52832.0 152287.0 m +(Keyboard) 63958 0.00 -1 s +( and pointer) 77346 -46.00 32 s +( state) 83177 -47.00 32 s +99568.0 h +2 sf +(:keymap\036notify) 118062 0.00 -1 s +52832.0 155448.0 m +99568.0 h +(:mapping\036notify) 119162 0.00 -1 s +5 sf +52832.0 159422.0 m +(Structure) 63175 0.00 -1 s +( control) 71820 -54.00 32 s +99568.0 h +2 sf +(:circulate\036request) 120879 0.00 -1 s +52832.0 162583.0 m +99568.0 h +(:configure\036request) 121822 0.00 -1 s +52832.0 165743.0 m +99568.0 h +(:map\036request) 115710 0.00 -1 s +5 sf +52832.0 169717.0 m +99568.0 h +2 sf +(:resize\036request) 117274 0.00 -1 s +52832.0 172878.0 m +5 sf +(Window) 62550 0.00 -1 s +( state) 68388 -40.00 32 s +99568.0 h +2 sf +(:circulate\036notify) 118998 0.00 -1 s +52832.0 176039.0 m +99568.0 h +(:configure\036notify) 119941 0.00 -1 s +52832.0 179200.0 m +99568.0 h +(:create\036notify) 115861 0.00 -1 s +52832.0 182361.0 m +99568.0 h +(:destroy\036notify) 117433 0.00 -1 s +52832.0 185522.0 m +99568.0 h +(:gravity\036notify) 117119 0.00 -1 s +52832.0 188682.0 m +99568.0 h +(:map\036notify) 113829 0.00 -1 s +52832.0 191843.0 m +99568.0 h +(:reparent\036notify) 118999 0.00 -1 s +52832.0 195004.0 m +99568.0 h +(:unmap\036notify) 116967 0.00 -1 s +52832.0 198165.0 m +99568.0 h +(:visibility\036notify) 118847 0.00 -1 s +5 sf +52832.0 201326.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 200501 av +149352 200501 as +149352 200619 as +52832 200619 as +closepath +fp +/drawmode PL_SET def +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036120) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(Client) 59730 0.00 -1 s +( programs can override the server's normal distribution of events by) 134361 -216.90 32 s +/timsps10i 6 declareFont +6 sf +( grabbing) 145415 0.00 32 s +5 sf +( the) 149352 -217.00 32 s +52832.0 25739.0 m +(pointer) 60825 0.00 -1 s +( or the keyboard. Grabbing causes events from) 112193 -185.00 32 s +( the pointer or keyboard device to) 149352 -154.67 32 s +52832.0 28900.0 m +(be) 55496 0.00 -1 s +( reported to a single specified window, rather than to their ordinary destinations. It can) 149352 -270.86 32 s +52832.0 32060.0 m +(also) 57378 0.00 -1 s +( cause the server to ) 78584 -225.60 32 s +6 sf +(freeze) 85323 0.00 -1 s +5 sf +( the grabbed device, sending queued events only when ex\036) 149352 -200.44 32 s +52832.0 35221.0 m +(plicitly) 60827 0.00 -1 s +( requested by the grabbing client. Two kinds of grabs are possible:) 135602 -28.00 32 s +/symbb8 4 declareFont +4 sf +52832.0 41769.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Active) 65434 0.00 -1 s +( \037 Events) 77269 -40.00 32 s +( are immediately grabbed.) 106612 -40.67 32 s +4 sf +52832.0 48316.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Passive) 66378 0.00 -1 s +( \037 Events) 78233 -30.00 32 s +( are grabbed later, as soon as a specified device event occurs.) 146936 -30.55 32 s +52832.0 54593.0 m +(Grabbing) 63489 0.00 -1 s +( an input device is performed rarely and usually only by special clients, such as) 149352 -254.43 32 s +52832.0 57754.0 m +(window) 61923 0.00 -1 s +( managers.) 74055 -93.00 32 s +52832.0 64031.0 m +(This) 57849 0.00 -1 s +( section describes the CLX functions used) 105189 -26.00 32 s +( to:) 108847 -27.00 32 s +4 sf +52832.0 70578.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Select) 64808 0.00 -1 s +( events) 72655 -69.00 32 s +4 sf +52832.0 77126.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Process) 66533 0.00 -1 s +( an) 69862 -41.00 32 s +( event on the event queue) 98417 -41.60 32 s +4 sf +52832.0 83673.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Manage) 67002 0.00 -1 s +( the event queue) 85231 -62.67 32 s +4 sf +52832.0 90221.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Send) 63556 0.00 -1 s +( events to other applications) 95052 -42.00 32 s +4 sf +52832.0 96768.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Read) 63711 0.00 -1 s +( and change the pointer position) 99613 -46.00 32 s +4 sf +52832.0 103316.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Manage) 67002 0.00 -1 s +( the) 71105 -51.00 32 s +( keyboard input focus) 95481 -51.67 32 s +4 sf +52832.0 109863.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Grab) 63552 0.00 -1 s +( pointer) 72202 -49.00 32 s +( and keyboard events) 95956 -49.67 32 s +4 sf +52832.0 116411.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Release) 66688 0.00 -1 s +( queued events) 83312 -74.00 32 s +52832.0 122688.0 m +(This) 57849 0.00 -1 s +( section also contains a detailed description) 106587 -28.00 32 s +( of the content of each type of event. ) 148336 -28.56 32 s +20320.0 129687.0 m +0.0 0.0 m +newpath +20455 128063 av +148878 128061 as +[] 0 setdash +dp +149352.0 129687.0 m +/timsps12b 7 declareFont +7 sf +20320.0 133073.0 m +(Selecting) 33297 0.00 -1 s +( Events) 43959 33.00 32 s +52832.0 h +2 sf +(12.2) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(A) 62003 0.00 -1 s +( client ) 69908 112.00 32 s +6 sf +(selects) 77431 0.00 -1 s +5 sf +( which types of events it receives from a specific window. The) 149352 112.09 32 s +52832.0 136234.0 m +(window) 61923 0.00 -1 s +( event\036mask attribute, set by the client, determines which event types are) 145242 115.00 32 s +( se\036) 149352 114.00 32 s +52832.0 139395.0 m +(lected) 59570 0.00 -1 s +( \(see ) 65439 -43.00 32 s +2 sf +(window\036event\036mask) 89577 0.00 -1 s +5 sf +( in paragraph 4.3, Window Attributes\). Most types of) 149352 -42.50 32 s +52832.0 142556.0 m +(events) 60042 0.00 -1 s +( are received by a client only if they are selected) 114301 -28.00 32 s +( for some window.) 135376 -28.67 32 s +52832.0 148833.0 m +(In) 55182 0.00 -1 s +( the X protocol, an event\036mask is represented as a bit string. CLX also allows an event) 149352 -208.00 32 s +52832.0 151994.0 m +(mask) 58789 0.00 -1 s +( to be defined) 73496 -244.00 32 s +( by a list of ) 85678 -244.60 32 s +2 sf +(event\036mask\036class) 106053 0.00 -1 s +5 sf +( keywords. The functions ) 134466 -244.50 32 s +2 sf +(make\036event\036) 149352 0.00 -1 s +52832.0 155154.0 m +(keys) 58163 0.00 -1 s +5 sf +( and ) 64140 245.00 32 s +2 sf +(make\036event\036mask) 85454 0.00 -1 s +5 sf +( can be used to convert between) 122973 245.00 32 s +( these two forms of an) 149352 244.40 32 s +52832.0 158315.0 m +(event\036mask.) 66546 0.00 -1 s +( In general, including an ) 96790 406.00 32 s +2 sf +(event\036mask\036class) 117165 0.00 -1 s +5 sf +( keyword in an) 135233 406.00 32 s +( event\036mask) 149352 405.00 32 s +52832.0 161476.0 m +(causes) 60198 0.00 -1 s +( one or more related event types to) 98233 -153.00 32 s +( be selected. The following table describes the) 149352 -153.57 32 s +52832.0 164637.0 m +(event) 58944 0.00 -1 s +( types selected by each ) 85273 -47.80 32 s +2 sf +(event\036mask\036class) 105648 0.00 -1 s +5 sf +( keyword.) 116885 -48.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036121) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +95504.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 5 declareFont +5 17 fillpatset +newpath +52832 21753 av +149352 21753 as +149352 21988 as +52832 21988 as +closepath +fp +/drawmode PL_SET def +52832.0 25739.0 m +(Event) 59886 0.00 -1 s +( Mask Keyword) 79045 -62.00 32 s +95504.0 h +(Event) 102558 0.00 -1 s +( Types) 110413 -64.00 32 s +( Selected) 120927 -65.00 32 s +52832.0 28900.0 m +95504.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 28075 av +149352 28075 as +149352 28310 as +52832 28310 as +closepath +fp +/drawmode PL_SET def +52832.0 32060.0 m +(:button\0361\036motion) 73520 0.00 -1 s +95504.0 h +(:motion\036notify) 112899 0.00 -1 s +5 sf +( when ) 120365 -29.00 32 s +2 sf +(:button\0361) 131650 0.00 -1 s +5 sf +( is down) 141156 -29.00 32 s +2 sf +52832.0 35221.0 m +(:button\0362\036motion) 73520 0.00 -1 s +95504.0 h +(:motion\036notify ) 113576 -29.00 32 s +5 sf +(when) 119688 0.00 -1 s +2 sf +( :button\0362) 131650 -29.00 32 s +5 sf +( is down) 141156 -29.00 32 s +2 sf +52832.0 38382.0 m +(:button\0363\036motion) 73520 0.00 -1 s +95504.0 h +(:motion\036notify ) 113576 -29.00 32 s +5 sf +(when) 119688 0.00 -1 s +2 sf +( :button\0363) 131650 -29.00 32 s +5 sf +( is down) 141156 -29.00 32 s +2 sf +52832.0 41543.0 m +(:button\0364\036motion) 73520 0.00 -1 s +95504.0 h +(:motion\036notify ) 113576 -29.00 32 s +5 sf +(when) 119688 0.00 -1 s +2 sf +( :button\0364 ) 132327 -29.00 32 s +5 sf +(is down) 141156 -29.00 32 s +2 sf +52832.0 44704.0 m +(:button\0365\036motion) 73520 0.00 -1 s +95504.0 h +(:motion\036notify ) 113576 -29.00 32 s +5 sf +(when) 119688 0.00 -1 s +2 sf +( :button\0365) 131650 -29.00 32 s +5 sf +( is down) 141156 -29.00 32 s +2 sf +52832.0 47865.0 m +(:button\036motion) 71170 0.00 -1 s +95504.0 h +(:motion\036notify) 112899 0.00 -1 s +5 sf +( when any) 124416 -41.00 32 s +( pointer) 133073 -42.00 32 s +52832.0 51026.0 m +95504.0 h +() 95504 0.00 -1 s +97699.0 h +(button) 104911 0.00 -1 s +( is) 107463 -36.00 32 s +( down) 114402 -37.00 32 s +2 sf +52832.0 54187.0 m +(:button\036press) 68977 0.00 -1 s +95504.0 h +(:button\036press) 111649 0.00 -1 s +52832.0 57348.0 m +(:button\036release) 71011 0.00 -1 s +95504.0 h +(:button\036release) 113683 0.00 -1 s +( ) 114334 -55.00 32 s +52832.0 60508.0 m +(:colormap\036change) 74618 0.00 -1 s +95504.0 h +(:colormap\036notify) 115877 0.00 -1 s +52832.0 63669.0 m +(:enter\036window) 70384 0.00 -1 s +95504.0 h +(:enter\036notify) 110702 0.00 -1 s +52832.0 66830.0 m +(:exposure) 64588 0.00 -1 s +95504.0 h +(:exposure) 107260 0.00 -1 s +52832.0 69991.0 m +(:focus\036change) 69446 0.00 -1 s +95504.0 h +(:focus\036in,) 106711 0.00 -1 s +( :focus\036out) 119459 -25.00 32 s +52832.0 73152.0 m +(:key\036press) 65214 0.00 -1 s +95504.0 h +(:key\036press) 107886 0.00 -1 s +( ) 108554 -38.00 32 s +52832.0 76313.0 m +(:key\036release) 67248 0.00 -1 s +95504.0 h +(:key\036release) 109920 0.00 -1 s +( ) 110563 -63.00 32 s +52832.0 79474.0 m +(:keymap\036state) 69913 0.00 -1 s +95504.0 h +(:keymap\036notify) 113998 0.00 -1 s +52832.0 82635.0 m +(:leave\036window) 70229 0.00 -1 s +95504.0 h +(:leave\036notify) 110547 0.00 -1 s +52832.0 85796.0 m +(:owner\036grab\036button) 76812 0.00 -1 s +95504.0 h +5 sf +(Pointer) 103655 0.00 -1 s +( events while button is grabbed) 138673 -34.80 32 s +2 sf +52832.0 88956.0 m +(:pointer\036motion) 71952 0.00 -1 s +95504.0 h +(:motion\036notify) 112899 0.00 -1 s +52832.0 92117.0 m +(:pointer\036motion\036hint) 77752 0.00 -1 s +( ) 78413 -45.00 32 s +95504.0 h +5 sf +(Single) 102716 0.00 -1 s +( ) 103381 -41.00 32 s +2 sf +(:motion\036notify) 120776 0.00 -1 s +5 sf +( only) 126458 -41.00 32 s +2 sf +52832.0 95278.0 m +(:property\036change) 73834 0.00 -1 s +95504.0 h +(:property\036notify) 115093 0.00 -1 s +52832.0 98439.0 m +(:resize\036redirect) 71161 0.00 -1 s +95504.0 h +(:resize\036request) 113210 0.00 -1 s +52832.0 101600.0 m +(:structure\036notify) 72889 0.00 -1 s +95504.0 h +(:circulate\036notify,) 115640 0.00 -1 s +( :configure\036notify,) 137318 -107.00 32 s +52832.0 104761.0 m +95504.0 h +( :destroy\036notify, : gravity\036notify,) 135060 -24.00 32 s +52832.0 107922.0 m +95504.0 h +( :map\036notify, :reparent\036notify,) 132622 -34.67 32 s +52832.0 111083.0 m +95504.0 h +( ) 96186 -24.00 32 s +( :unmap\036notify) 114266 -25.00 32 s +52832.0 114244.0 m +(:substructure\036redirect) 79629 0.00 -1 s +95504.0 h +(:circulate\036request,) 117521 0.00 -1 s +( :configure\036request,) 141021 -166.00 32 s +52832.0 117404.0 m +95504.0 h +( :map\036request) 113002 -28.00 32 s +52832.0 120565.0 m +(:visibility\036change) 73524 0.00 -1 s +95504.0 h +(:visibility\036notify) 114783 0.00 -1 s +5 sf +52832.0 123726.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 122901 av +149352 122901 as +149352 123019 as +52832 123019 as +closepath +fp +/drawmode PL_SET def +52832.0 129935.0 m +(Some) 59260 0.00 -1 s +( types of events do not have to be selected to be received and therefore are not rep\036) 149352 -199.82 32 s +52832.0 133096.0 m +(resented) 62234 0.00 -1 s +( in an event\036mask. For example, the ) 101613 -252.71 32 s +2 sf +(copy\036plane) 114782 0.00 -1 s +5 sf +( and ) 119764 -252.50 32 s +2 sf +(copy\036area) 131675 0.00 -1 s +5 sf +( functions cause) 149352 -252.50 32 s +52832.0 136257.0 m +2 sf +(:graphics\036exposure) 75875 0.00 -1 s +5 sf +( and ) 82120 379.00 32 s +2 sf +(:no\036exposure) 97795 0.00 -1 s +5 sf +( events to be reported, unless exposures are) 149352 379.14 32 s +52832.0 139418.0 m +(turned) 60041 0.00 -1 s +( ) 60888 141.00 32 s +2 sf +(:off) 65116 0.00 -1 s +5 sf +( in the graphics context \(see ) 98251 141.00 32 s +2 sf +(copy\036area) 110162 0.00 -1 s +5 sf +( and ) 115931 141.00 32 s +2 sf +(copy\036plane) 129100 0.00 -1 s +5 sf +( in paragraph 6.2,) 149352 141.33 32 s +52832.0 142579.0 m +(Area) 58314 0.00 -1 s +( and Plane Operations, and ) 89856 101.00 32 s +2 sf +(gcontext\036exposures) 112896 0.00 -1 s +5 sf +( in paragraph 5.4.6, Exposures\).) 149352 101.00 32 s +52832.0 145740.0 m +(Also,) 58868 0.00 -1 s +( ) 60479 905.00 32 s +2 sf +(:selection\036clear) 78655 0.00 -1 s +5 sf +(, ) 80972 905.00 32 s +2 sf +(:selection\036request) 102128 0.00 -1 s +5 sf +(, ) 104445 905.00 32 s +2 sf +(:selection\036notify) 123720 0.00 -1 s +5 sf +( and ) 131018 905.50 32 s +2 sf +(:client\036message) 149352 0.00 -1 s +5 sf +52832.0 148900.0 m +(events) 60042 0.00 -1 s +( can be received at any time, but they are generally sent only to clients using selec\036) 149352 -261.69 32 s +52832.0 152061.0 m +(tions) 58320 0.00 -1 s +( \(see paragraph 12.12.7, Client Communications Events\). ) 123549 -31.00 32 s +2 sf +(:mapping\036notify ) 143819 -30.00 32 s +5 sf +(is al\036) 149352 -31.00 32 s +52832.0 155222.0 m +(ways) 58631 0.00 -1 s +( sent to clients when the keyboard mapping is changed.) 120678 -38.00 32 s +52832.0 161499.0 m +(Any) 57691 0.00 -1 s +( client can select events for any window. A window maintains a separate event\036) 149352 142.46 32 s +52832.0 164660.0 m +(mask) 58789 0.00 -1 s +( for each interested client. In general, multiple clients can select for the same events) 149352 -281.86 32 s +52832.0 167821.0 m +(on) 55654 0.00 -1 s +( a window. After the X server generates an event, it sends it to all clients which) 145345 12.00 32 s +( se\036) 149352 11.00 32 s +52832.0 170982.0 m +(lected) 59570 0.00 -1 s +( it. However, the following restrictions apply to sharing window events among) 149352 89.36 32 s +52832.0 174142.0 m +(multiple) 62238 0.00 -1 s +( clients. For a given) 84457 -30.00 32 s +( window:) 95007 -31.00 32 s +/symbb8 4 declareFont +4 sf +52832.0 180690.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Only) 63555 0.00 -1 s +( one client at a time can include ) 99821 -32.00 32 s +2 sf +(:substructure\036redirect) 126618 0.00 -1 s +5 sf +( in its event\036mask) 146507 -32.67 32 s +4 sf +52832.0 187238.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Only) 63555 0.00 -1 s +( one) 68309 -27.00 32 s +( client at a time can can include ) 104453 -27.50 32 s +2 sf +(:button\036press) 120598 0.00 -1 s +5 sf +( in its event\036mask) 140502 -27.67 32 s +4 sf +52832.0 193785.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Only) 63555 0.00 -1 s +( one client at a time can include ) 99837 -30.00 32 s +2 sf +(:resize\036redirect) 118166 0.00 -1 s +5 sf +( in its event\036mask) 138063 -30.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036122) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 7 declareFont +7 sf +20320.0 26687.0 m +(Processing) 35742 0.00 -1 s +52832.0 h +2 sf +(12.3) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(Events) 67647 0.00 -1 s +( received) 79129 1219.00 32 s +( by a CLX client are stored in an ) 127636 1218.44 32 s +/timsps10i 6 declareFont +6 sf +(event queue) 142254 1219.00 32 s +5 sf +( until) 149352 1218.00 32 s +7 sf +20320.0 30074.0 m +(Events) 30102 0.00 -1 s +52832.0 h +5 sf +(they) 57691 0.00 -1 s +( are read and processed. Events are processed by ) 112981 -38.67 32 s +6 sf +(handler functions) 132774 -39.00 32 s +5 sf +(.) 133480 0.00 -1 s +2 sf +34544.0 35876.0 m +(handler\036function) 54924 0.00 -1 s +( ) 55590 -40.00 32 s +5 sf +(&rest ) 62526 -39.00 32 s +6 sf +(event\036slots ) 75260 -40.00 32 s +5 sf +(&key ) 82197 -39.00 32 s +2 sf +(:display :event\036key :send\036event\036p ) 122597 -39.67 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 39037.0 m +(&allow\036other\036keys) 74145 0.00 -1 s +( ) 74800 -51.00 32 s +2 sf +34544.0 42198.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +6 sf +52832.0 45359.0 m +( handled\036p) 65616 -35.00 32 s +5 sf +( \037 Type ) 76252 -34.33 32 s +2 sf +(boolean) 85660 0.00 -1 s +5 sf +(.) 86366 0.00 -1 s +2 sf +( ) 87037 -35.00 32 s +5 sf +52832.0 50078.0 m +(The) 57220 0.00 -1 s +( arguments to a handler function are keyword\036value pairs that describe the contents) 149352 -145.83 32 s +52832.0 53238.0 m +(of) 55182 0.00 -1 s +( an event. The actual ) 77935 -277.00 32 s +6 sf +(event\036slots) 90003 0.00 -1 s +5 sf +( passed depend on the event type, except that) 138653 -277.00 32 s +( ) 139081 -278.00 32 s +2 sf +(:display) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 56399.0 m +2 sf +(:event\036key) 65368 0.00 -1 s +5 sf +(,) 66074 0.00 -1 s +( and ) 71059 -251.00 32 s +2 sf +(:send\036event\036p) 87359 0.00 -1 s +5 sf +( are given for all event types. The keyword symbols used) 149352 -250.90 32 s +52832.0 59560.0 m +(for) 56121 0.00 -1 s +( each event type are event slot names defined by the ) 113118 -226.00 32 s +2 sf +(declare\036event) 129258 0.00 -1 s +5 sf +( macro and are de\036) 149352 -226.00 32 s +52832.0 62721.0 m +(scribed) 60981 0.00 -1 s +( in paragraph 12.12.8, Declaring Event Types.) 112866 -51.83 32 s +52832.0 68320.0 m +(If) 54710 0.00 -1 s +( a handler returns non\036) 79464 -198.00 32 s +2 sf +(nil) 82601 0.00 -1 s +5 sf +(, the event is considered ) 109513 -198.00 32 s +6 sf +(processed) 120799 0.00 -1 s +5 sf +( and can be removed from) 149352 -198.00 32 s +52832.0 71481.0 m +(the) 56280 0.00 -1 s +( event queue. Otherwise, if a handler function returns ) 115460 -190.00 32 s +2 sf +(nil) 118597 0.00 -1 s +5 sf +(, the event can) 134328 -190.00 32 s +( remain in the) 149352 -190.67 32 s +52832.0 74642.0 m +(event) 58944 0.00 -1 s +( queue for later) 75989 -38.00 32 s +( processing.) 89431 -39.00 32 s +2 sf +52832.0 80241.0 m +(:display) 62397 0.00 -1 s +5 sf +( \037 A ) 69287 -29.00 32 s +2 sf +(display) 77913 0.00 -1 s +5 sf +( for the connection that) 103972 -29.00 32 s +( returned the event.) 125668 -29.67 32 s +2 sf +52832.0 86518.0 m +(:event\036key) 65368 0.00 -1 s +5 sf +( \037 An ) 73624 -44.00 32 s +2 sf +(event\036key) 85221 0.00 -1 s +5 sf +( keyword specifying the event type.) 125284 -44.00 32 s +2 sf +52832.0 92795.0 m +(:send\036event\036p) 69132 0.00 -1 s +( ) 69859 21.00 32 s +5 sf +(\037 If true, the event was sent from another application using the ) 142924 21.50 32 s +2 sf +(send\036) 149352 0.00 -1 s +57912.0 95956.0 m +(event) 64337 0.00 -1 s +5 sf +( function.) 75071 -82.00 32 s +2 sf +34544.0 102232.0 m +(process\036event) 50843 0.00 -1 s +( ) 51507 -42.00 32 s +6 sf +(display) 59659 0.00 -1 s +2 sf +( ) 60323 -42.00 32 s +5 sf +(&key) 66593 0.00 -1 s +2 sf +( :handler :timeout :peek\036p :discard\036p) 111255 -42.00 32 s +( ) 111918 -43.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +52832.0 105393.0 m +(\(:force\036output\036p) 72262 0.00 -1 s +( t\)) 74832 -14.00 32 s +( ) 75523 -15.00 32 s +34544.0 108554.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 111715.0 m +2 sf +( ) 54164 -40.00 32 s +6 sf +(handled\036p) 65606 0.00 -1 s +2 sf +( ) 66271 -41.00 32 s +5 sf +(\037 Type ) 76223 -40.50 32 s +2 sf +(boolean) 85631 0.00 -1 s +5 sf +(.) 86337 0.00 -1 s +52832.0 116434.0 m +(Invokes) 61766 0.00 -1 s +( ) 62917 445.00 32 s +2 sf +(:handler) 73264 0.00 -1 s +5 sf +( on each queued event until ) 107598 445.00 32 s +2 sf +(:handler) 117945 0.00 -1 s +5 sf +( returns non\036) 133254 445.00 32 s +2 sf +(nil) 136391 0.00 -1 s +5 sf +(. Then, the) 149352 445.00 32 s +52832.0 119594.0 m +(non\036) 58004 0.00 -1 s +2 sf +(nil) 61141 0.00 -1 s +5 sf +( ) 61890 43.00 32 s +2 sf +(:handler) 72237 0.00 -1 s +5 sf +( value is returned by ) 96199 43.00 32 s +2 sf +(process\036event) 112498 0.00 -1 s +5 sf +(. If ) 116580 43.00 32 s +2 sf +(:handler) 126927 0.00 -1 s +5 sf +( returns) 135511 43.00 32 s +( ) 136259 42.00 32 s +2 sf +(nil) 139396 0.00 -1 s +5 sf +( for each) 149352 42.50 32 s +52832.0 122755.0 m +(event) 58944 0.00 -1 s +( in the event queue, ) 81439 -47.00 32 s +2 sf +(process\036event) 97738 0.00 -1 s +5 sf +( waits for another event to arrive. If timeout is) 149352 -46.78 32 s +52832.0 125916.0 m +(non\036) 58004 0.00 -1 s +2 sf +(nil) 61141 0.00 -1 s +5 sf +( and no event arrives within the specified timeout interval \(given in) 137985 82.00 32 s +( seconds\),) 149352 81.00 32 s +52832.0 129077.0 m +2 sf +(process\036event) 69131 0.00 -1 s +5 sf +( returns ) 77940 -219.00 32 s +2 sf +(nil) 81077 0.00 -1 s +5 sf +(; if timeout is ) 96036 -219.00 32 s +2 sf +(nil) 99173 0.00 -1 s +5 sf +(, ) 100366 -219.00 32 s +2 sf +(process\036event) 116665 0.00 -1 s +5 sf +( will not return until) 138519 -219.00 32 s +( ) 139005 -220.00 32 s +2 sf +(:handler) 149352 0.00 -1 s +5 sf +52832.0 132238.0 m +(returns) 60667 0.00 -1 s +( non\036) 66891 346.00 32 s +2 sf +(nil) 70028 0.00 -1 s +5 sf +(. ) 71787 347.00 32 s +2 sf +(process\036event) 88086 0.00 -1 s +5 sf +( may wait only once on network data, and therefore) 149352 346.44 32 s +52832.0 135399.0 m +(timeout) 61454 0.00 -1 s +( prematurely.) 76426 -73.00 32 s +52832.0 140998.0 m +(If) 54710 0.00 -1 s +( ) 55552 136.00 32 s +2 sf +(:force\036output\036p) 74043 0.00 -1 s +5 sf +( is true, ) 83544 136.00 32 s +2 sf +(process\036event) 99843 0.00 -1 s +5 sf +( first invokes ) 115692 136.00 32 s +2 sf +(display\036force\036output) 140301 0.00 -1 s +5 sf +( to) 143338 136.00 32 s +( send) 149352 135.00 32 s +52832.0 144159.0 m +(any) 56907 0.00 -1 s +( buffered requests. If ) 81782 166.00 32 s +2 sf +(:peek\036p) 90873 0.00 -1 s +5 sf +( is true, a processed event is not removed from) 145033 166.00 32 s +( the) 149352 165.00 32 s +52832.0 147320.0 m +(queue.) 60277 0.00 -1 s +( If ) 63027 -270.00 32 s +2 sf +(:discard\036p) 75411 0.00 -1 s +5 sf +( is true, unprocessed events are removed from) 125399 -270.00 32 s +( the queue; otherwise,) 149352 -270.67 32 s +52832.0 150481.0 m +(unprocessed) 66781 0.00 -1 s +( events are) 78778 -35.00 32 s +( left in place.) 93404 -35.67 32 s +52832.0 156080.0 m +(If) 54710 0.00 -1 s +( ) 55179 -237.00 32 s +2 sf +(:handler) 65526 0.00 -1 s +5 sf +( is a sequence, it is) 85505 -237.00 32 s +( expected to contain handler functions for each event type.) 149352 -237.56 32 s +52832.0 159241.0 m +(The) 57220 0.00 -1 s +( sequence index of the handler function for a particular event type is given by \() 143551 -184.87 32 s +2 sf +(posi\036) 149352 0.00 -1 s +52832.0 162402.0 m +(tion) 57535 0.00 -1 s +( event\036key) 69741 -97.00 32 s +( *event\036key\036vector*) 93227 -98.00 32 s +5 sf +(\).) 94872 0.00 -1 s +6 sf +52832.0 168001.0 m +(display) 60984 0.00 -1 s +( \037 ) 64852 -26.50 32 s +5 sf +(A ) 67568 -27.00 32 s +2 sf +(display) 76194 0.00 -1 s +5 sf +(.) 76900 0.00 -1 s +2 sf +52832.0 172788.0 m +(:handler) 63179 0.00 -1 s +5 sf +( \037) 66672 -35.00 32 s +2 sf +( ) 67343 -35.00 32 s +5 sf +(A handler function or a sequence of handler functions.) 128580 -35.00 32 s +2 sf +52832.0 179064.0 m +(:timeout) 63016 0.00 -1 s +( ) 63694 -28.00 32 s +5 sf +(\037 Specifies the timeout delay in seconds.) 110947 -27.83 32 s +2 sf +52832.0 185341.0 m +(:peek\036p ) 62601 -28.00 32 s +5 sf +(\037 If ) 68657 -28.00 32 s +2 sf +(nil) 71794 0.00 -1 s +5 sf +(, events are removed from) 101224 -28.00 32 s +( the event queue after processing.) 138853 -28.60 32 s +2 sf +52832.0 191618.0 m +(:discard\036p) 65216 0.00 -1 s +( ) 65890 -32.00 32 s +5 sf +(\037 If) 71264 -32.00 32 s +( true, unprocessed events are discarded.) 115847 -32.60 32 s +2 sf +52832.0 197894.0 m +(:force\036output\036p) 71323 0.00 -1 s +( ) 72006 -23.00 32 s +5 sf +(\037) 74828 0.00 -1 s +( If true, buffered output requests are sent.) 121288 -23.57 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036123) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(event\036case) 46923 0.00 -1 s +( ) 47594 -35.00 32 s +/timsps10i 6 declareFont +6 sf +(display ) 56417 -35.00 32 s +/timsps10 5 declareFont +5 sf +(&key ) 63358 -35.00 32 s +2 sf +(:timeout :peek\036p) 83304 -35.00 32 s +( :discard\036p \(:force\036output\036p t\)) 119007 -35.67 32 s +142014.0 h +5 sf +(Macro) 149379 0.00 -1 s +52832.0 25739.0 m +(&body) 60671 0.00 -1 s +( ) 61299 -78.00 32 s +6 sf +(clauses) 69607 0.00 -1 s +2 sf +34544.0 28900.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +6 sf +52832.0 32060.0 m +( handled\036p) 65606 -40.00 32 s +5 sf +( \037 Type ) 76223 -40.67 32 s +2 sf +(boolean) 85631 0.00 -1 s +5 sf +(.) 86337 0.00 -1 s +52832.0 36779.0 m +(Executes) 63019 0.00 -1 s +( the matching clause for each queued event until a clause returns non\036) 140514 -98.83 32 s +2 sf +(nil) 143651 0.00 -1 s +5 sf +(. The) 149352 -99.00 32 s +52832.0 39940.0 m +(non\036) 58004 0.00 -1 s +2 sf +(nil) 61141 0.00 -1 s +5 sf +( clause value is then returned. Each of the clauses is a list of the form) 140714 101.00 32 s +( \() 142459 100.00 32 s +6 sf +(event\036) 149352 0.00 -1 s +52832.0 43101.0 m +(match) 59728 0.00 -1 s +5 sf +( [) 61359 -14.00 32 s +6 sf +(event\036slots) 73427 0.00 -1 s +5 sf +(] &rest ) 82020 -13.50 32 s +6 sf +(forms) 88448 0.00 -1 s +5 sf +(\), where:) 98462 -14.00 32 s +6 sf +52832.0 49378.0 m +(event\036match) 66621 0.00 -1 s +2 sf +( ) 67051 -276.00 32 s +5 sf +(\037 Either an ) 80722 -276.00 32 s +2 sf +(event\036key) 92319 0.00 -1 s +5 sf +(, a list of ) 101798 -276.00 32 s +2 sf +(event\036keys) 114493 0.00 -1 s +5 sf +(, otherwise, or ) 130516 -275.67 32 s +2 sf +(t) 131455 0.00 -1 s +5 sf +(. It is an error for) 149352 -275.60 32 s +57912.0 52538.0 m +(the) 61360 0.00 -1 s +( same key to appear in more than one clause.) 111692 -32.89 32 s +6 sf +52832.0 57325.0 m +(event\036slots) 64900 0.00 -1 s +( ) 65419 -187.00 32 s +5 sf +(\037 If given, a list of \(non\036keyword\) event slot symbols defined for the speci\036) 149352 -187.00 32 s +57912.0 60486.0 m +(fied) 62299 0.00 -1 s +( event type\(s\). See paragraph 12.12.8, Declaring Event Types.) 132057 -47.88 32 s +6 sf +52832.0 65272.0 m +(forms) 59260 0.00 -1 s +( ) 59988 22.00 32 s +5 sf +(\037 A list of forms that process the specified event type\(s\). The value of the last) 149352 22.27 32 s +57912.0 68433.0 m +(form) 63396 0.00 -1 s +( is the value returned by the clause.) 103022 -26.71 32 s +52832.0 73220.0 m +(A) 54869 0.00 -1 s +( clause matches an event if the ) 87979 -296.86 32 s +2 sf +(event\036key) 99576 0.00 -1 s +5 sf +( is equal to or a member of the ) 132098 -296.44 32 s +6 sf +(event\036match) 145887 0.00 -1 s +5 sf +(, or) 149352 -297.00 32 s +52832.0 76381.0 m +(if) 54555 0.00 -1 s +( the ) 59117 -149.00 32 s +6 sf +(event\036match) 72906 0.00 -1 s +5 sf +( is ) 75903 -148.50 32 s +2 sf +(t) 76842 0.00 -1 s +5 sf +( or ) 80307 -148.50 32 s +2 sf +(otherwise) 91904 0.00 -1 s +5 sf +(. If no ) 98983 -148.33 32 s +2 sf +(t) 99922 0.00 -1 s +5 sf +( or ) 103387 -148.50 32 s +2 sf +(otherwise) 114984 0.00 -1 s +5 sf +( clause appears, it is equivalent) 149352 -148.60 32 s +52832.0 79542.0 m +(to) 55027 0.00 -1 s +( having a final clause that returns ) 92332 -123.00 32 s +2 sf +(nil) 95469 0.00 -1 s +5 sf +(. If ) 99219 -123.00 32 s +6 sf +(event\036slots) 111287 0.00 -1 s +5 sf +( is given, these symbols are bound) 149352 -122.67 32 s +52832.0 82702.0 m +(to) 55027 0.00 -1 s +( the value of the corresponding event slot in the clause forms. Each element of ) 142459 -117.00 32 s +6 sf +(event\036) 149352 0.00 -1 s +52832.0 85863.0 m +(slots) 58007 0.00 -1 s +5 sf +( can also be a list of the form \() 90792 -180.00 32 s +6 sf +(event\036slot\036keyword variable) 122194 -179.00 32 s +5 sf +(\), in which case the ) 143867 -179.60 32 s +6 sf +(vari\036) 149352 0.00 -1 s +52832.0 89024.0 m +(able) 57691 0.00 -1 s +5 sf +( symbol is bound to the value of the event slot specified by the ) 127176 -131.71 32 s +6 sf +(event\036slot\036keyword) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 95301.0 m +(If) 54710 0.00 -1 s +( every clause returns ) 77596 -273.00 32 s +2 sf +(nil) 80733 0.00 -1 s +5 sf +( for each event in the event queue, ) 117968 -273.00 32 s +2 sf +(event\036case) 130347 0.00 -1 s +5 sf +( waits for) 140458 -273.00 32 s +( another) 149352 -274.00 32 s +52832.0 98462.0 m +(event) 58944 0.00 -1 s +( to arrive. If ) 72738 -97.00 32 s +2 sf +(:timeout) 82922 0.00 -1 s +5 sf +( is non\036) 91194 -97.00 32 s +2 sf +(nil) 94331 0.00 -1 s +5 sf +( and) 99015 -97.00 32 s +( no event arrives within the specified timeout) 149352 -97.57 32 s +52832.0 101623.0 m +(interval) 61451 0.00 -1 s +( \(given in seconds\), ) 83211 -262.00 32 s +2 sf +(event\036case) 95590 0.00 -1 s +5 sf +( returns ) 104314 -261.50 32 s +2 sf +(nil) 107451 0.00 -1 s +5 sf +(; if ) 110847 -261.50 32 s +2 sf +(:timeout) 121031 0.00 -1 s +5 sf +( is ) 123802 -261.50 32 s +2 sf +(nil) 126939 0.00 -1 s +5 sf +(, ) 128089 -262.00 32 s +2 sf +(event\036case) 140468 0.00 -1 s +5 sf +( will not) 149352 -261.50 32 s +52832.0 104783.0 m +(return) 59569 0.00 -1 s +( until a clause returns non\036) 88260 -265.00 32 s +2 sf +(nil) 91397 0.00 -1 s +5 sf +(.) 92103 0.00 -1 s +( ) 92543 -266.00 32 s +2 sf +(event\036case) 104922 0.00 -1 s +5 sf +( may wait only once on network data and) 149352 -265.50 32 s +52832.0 107944.0 m +(therefore) 63014 0.00 -1 s +( timeout) 72292 -50.00 32 s +( prematurely.) 87286 -51.00 32 s +52832.0 114221.0 m +(If) 54710 0.00 -1 s +( ) 55452 36.00 32 s +2 sf +(:force\036output\036p) 73943 0.00 -1 s +5 sf +( is true, ) 83144 36.00 32 s +2 sf +(event\036case) 95523 0.00 -1 s +5 sf +( first invokes ) 111073 36.33 32 s +2 sf +(display\036force\036output) 135682 0.00 -1 s +5 sf +( to send any) 149352 36.33 32 s +52832.0 117382.0 m +(buffered) 62388 0.00 -1 s +( requests. If ) 75611 -242.00 32 s +2 sf +(:peek\036p) 84702 0.00 -1 s +5 sf +( is true, a processed event is not removed from the queue.) 147011 -242.00 32 s +( If) 149352 -243.00 32 s +52832.0 120543.0 m +2 sf +(:discard\036p) 65216 0.00 -1 s +5 sf +( is true, unprocessed events are removed from the queue; otherwise, unproc\036) 149352 -180.73 32 s +52832.0 123704.0 m +(essed) 58945 0.00 -1 s +( events are left in place.) 85615 -26.00 32 s +6 sf +52832.0 129980.0 m +(display ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 134767.0 m +(:handler) 63179 0.00 -1 s +5 sf +( \037 A handler function or a sequence of handler functions.) 128580 -35.00 32 s +2 sf +52832.0 141043.0 m +(:timeout) 63016 0.00 -1 s +5 sf +( \037 Specifies the timeout delay, in seconds.) 111647 -28.71 32 s +2 sf +52832.0 147320.0 m +(:peek\036p) 61923 0.00 -1 s +5 sf +( \037 If ) 68657 -28.00 32 s +2 sf +(nil) 71794 0.00 -1 s +5 sf +(, events are removed from the event queue after processing.) 138853 -28.33 32 s +2 sf +52832.0 153597.0 m +(:discard\036p) 65216 0.00 -1 s +5 sf +( \037 If) 71264 -32.00 32 s +( true, unprocessed events are discarded.) 115847 -32.60 32 s +2 sf +52832.0 159873.0 m +(:force\036output\036p) 71323 0.00 -1 s +5 sf +( \037) 74828 -23.00 32 s +( If true, buffered output requests are sent.) 121288 -23.57 32 s +6 sf +52832.0 166150.0 m +(clauses) 61140 0.00 -1 s +2 sf +( ) 61815 -31.00 32 s +5 sf +(\037 Code) 71269 -31.00 32 s +( to process specified event types.) 108260 -31.60 32 s +2 sf +34544.0 170936.0 m +(event\036cond) 47710 0.00 -1 s +( ) 48378 -38.00 32 s +6 sf +(display ) 57198 -38.00 32 s +5 sf +(&key ) 64136 -38.00 32 s +2 sf +(:timeout :peek\036p :discard\036p \(:force\036output\036p t\)) 119775 -38.00 32 s +142014.0 h +5 sf +(Macro) 149379 0.00 -1 s +52832.0 174097.0 m +(&body) 60671 0.00 -1 s +( ) 61299 -78.00 32 s +6 sf +(clauses) 69607 0.00 -1 s +2 sf +34544.0 177258.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +6 sf +52832.0 180419.0 m +( handled\036p) 65606 -40.00 32 s +5 sf +( \037 Type ) 76223 -40.67 32 s +2 sf +(boolean) 85631 0.00 -1 s +5 sf +(.) 86337 0.00 -1 s +52832.0 185138.0 m +(Similar) 61140 0.00 -1 s +( to ) 64713 -17.00 32 s +2 sf +(event\036case) 77092 0.00 -1 s +5 sf +( except that each of the clauses is a list of the form \() 135563 -17.54 32 s +6 sf +(event\036match) 149352 0.00 -1 s +5 sf +52832.0 188299.0 m +([) 53771 0.00 -1 s +6 sf +(event\036slots) 65839 0.00 -1 s +5 sf +(]) 66778 0.00 -1 s +( ) 67495 11.00 32 s +6 sf +(test\036form) 77683 0.00 -1 s +5 sf +( &rest ) 85387 11.50 32 s +6 sf +(forms) 91815 0.00 -1 s +5 sf +(\). Executes the ) 109248 11.67 32 s +6 sf +(test\036form) 119436 0.00 -1 s +5 sf +( of the clause that matches) 149352 11.40 32 s +52832.0 191460.0 m +(each) 58002 0.00 -1 s +( queued event until a ) 82571 70.00 32 s +6 sf +(test\036form) 92759 0.00 -1 s +5 sf +( returns non\036) 107319 70.50 32 s +2 sf +(nil) 110456 0.00 -1 s +5 sf +(. The body ) 123523 70.33 32 s +6 sf +(forms) 129951 0.00 -1 s +5 sf +( of the clause are) 149352 70.50 32 s +52832.0 194620.0 m +(then) 57691 0.00 -1 s +( executed. The values returned by the last clause body form are then returned) 145743 82.00 32 s +( by) 149352 81.00 32 s +52832.0 197781.0 m +2 sf +(event\036cond) 65998 0.00 -1 s +5 sf +(.) 66704 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036124) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(When) 59571 0.00 -1 s +( a ) 61692 -272.00 32 s +/timsps10i 6 declareFont +6 sf +(test\036form) 71880 0.00 -1 s +5 sf +( returns true and ) 89913 -272.00 32 s +2 sf +(:peek\036p) 99004 0.00 -1 s +5 sf +( is ) 101754 -272.00 32 s +2 sf +(nil) 104891 0.00 -1 s +5 sf +(, or when a ) 117050 -271.50 32 s +6 sf +(test\036form) 127238 0.00 -1 s +5 sf +( returns ) 135942 -271.50 32 s +2 sf +(nil) 139079 0.00 -1 s +5 sf +( and ) 144023 -271.50 32 s +2 sf +(:dis\036) 149352 0.00 -1 s +52832.0 25739.0 m +(card\036p) 60826 0.00 -1 s +5 sf +( is true, the matching event is removed from the event queue before the body) 149352 126.36 32 s +52832.0 28900.0 m +6 sf +(forms) 59260 0.00 -1 s +5 sf +( are) 63363 -48.00 32 s +( executed.) 74755 -49.00 32 s +6 sf +52832.0 35176.0 m +(display) 60984 0.00 -1 s +( \037 ) 64852 -26.50 32 s +5 sf +(A ) 67568 -27.00 32 s +2 sf +(display) 76194 0.00 -1 s +5 sf +(.) 76900 0.00 -1 s +2 sf +52832.0 39963.0 m +(:handler) 63179 0.00 -1 s +5 sf +( \037 A handler function or a sequence of handler functions.) 128580 -35.00 32 s +2 sf +52832.0 46239.0 m +(:timeout) 63016 0.00 -1 s +5 sf +( \037 Specifies the timeout delay in seconds.) 110947 -27.86 32 s +2 sf +52832.0 52516.0 m +(:peek\036p) 61923 0.00 -1 s +5 sf +( \037 If ) 68657 -28.00 32 s +2 sf +(nil) 71794 0.00 -1 s +5 sf +(, events are removed from) 101224 -28.00 32 s +( the event queue after processing.) 138853 -28.60 32 s +2 sf +52832.0 58793.0 m +(:discard\036p) 65216 0.00 -1 s +5 sf +( \037 If) 71264 -32.00 32 s +( true, unprocessed events are discarded.) 115847 -32.60 32 s +2 sf +52832.0 65069.0 m +(:force\036output\036p) 71323 0.00 -1 s +5 sf +( \037) 74828 -23.00 32 s +( If true, buffered output requests are sent.) 121288 -23.57 32 s +6 sf +52832.0 71346.0 m +(clauses) 61140 0.00 -1 s +2 sf +( ) 61815 -31.00 32 s +5 sf +(\037 Code) 71269 -31.00 32 s +( to process specified event types.) 108260 -31.60 32 s +20320.0 76855.0 m +0.0 0.0 m +newpath +20455 75231 av +148878 75229 as +[] 0 setdash +dp +149352.0 76855.0 m +/timsps12b 7 declareFont +7 sf +20320.0 80241.0 m +(Managing) 34995 0.00 -1 s +( the) 40369 14.00 32 s +52832.0 h +2 sf +(12.4) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( following paragraphs describe CLX functions and macros used) 135977 -40.00 32 s +( to:) 139621 -41.00 32 s +7 sf +20320.0 83628.0 m +(Event) 28785 0.00 -1 s +( Queue) 39060 22.00 32 s +52832.0 h +2 sf +() 52832 0.00 -1 s +55182.0 h +() 55182 0.00 -1 s +/symbb8 4 declareFont +4 sf +52832.0 87060.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Put) 61676 0.00 -1 s +( a new) 68966 -38.00 32 s +( event on the event queue) 97536 -38.60 32 s +4 sf +52832.0 93607.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Discard) 66687 0.00 -1 s +( the current event) 86247 -36.00 32 s +4 sf +52832.0 100155.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return the current length of the event queue) 107425 -35.71 32 s +4 sf +52832.0 106703.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Gain) 63397 0.00 -1 s +( exclusive access to the event queue for a client process) 125781 -31.00 32 s +2 sf +34544.0 112979.0 m +(queue\036event) 49121 0.00 -1 s +( ) 49782 -45.00 32 s +6 sf +(display) 57934 0.00 -1 s +2 sf +( ) 58595 -45.00 32 s +6 sf +(event\036key ) 69908 -45.00 32 s +5 sf +(&rest ) 76838 -45.00 32 s +6 sf +(event\036slots) 88906 0.00 -1 s +5 sf +( &key ) 96499 -44.50 32 s +2 sf +(:append\036p ) 109547 -45.00 32 s +5 sf +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 116140.0 m +(&allow\036other\036keys) 74145 0.00 -1 s +( ) 74800 -51.00 32 s +52832.0 120859.0 m +(Places) 60042 0.00 -1 s +( an event of the type given by ) 92689 -190.75 32 s +6 sf +(event\036key) 103341 0.00 -1 s +5 sf +( into the event queue. When ) 134568 -190.50 32 s +2 sf +(:append\036p) 146955 0.00 -1 s +5 sf +( is) 149352 -191.00 32 s +52832.0 124020.0 m +(true,) 57925 0.00 -1 s +( the event is placed at the tail of the queue; otherwise, the event is placed at the head) 149352 -210.83 32 s +52832.0 127181.0 m +(of) 55182 0.00 -1 s +( the queue. The actual ) 79543 -237.60 32 s +6 sf +(event\036slots) 91611 0.00 -1 s +5 sf +( passed depend on the event type. The keyword sym\036) 149352 -237.56 32 s +52832.0 130342.0 m +(bols) 57536 0.00 -1 s +( used for each event type are event slot names defined by the ) 125558 -102.69 32 s +2 sf +(declare\036event) 141698 0.00 -1 s +5 sf +( macro) 149352 -103.00 32 s +52832.0 133502.0 m +(and) 56907 0.00 -1 s +( are described in paragraph 12.12.8, Declaring Event Types.) 124381 -49.00 32 s +6 sf +52832.0 139779.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +6 sf +52832.0 144566.0 m +(event\036key) 63484 0.00 -1 s +2 sf +( ) 64153 -37.00 32 s +5 sf +(\037 Specifies the type of event placed in the queue.) 120565 -36.67 32 s +6 sf +52832.0 149352.0 m +(event\036slots) 64900 0.00 -1 s +2 sf +( ) 65575 -31.00 32 s +5 sf +(\037 Keyword\036value pairs that describe the contents of an event.) 135828 -30.78 32 s +2 sf +52832.0 154138.0 m +(:append\036p) 65219 0.00 -1 s +5 sf +( \037 If true, the event is placed at the tail of the queue; otherwise, the event is) 149352 -117.53 32 s +57912.0 157299.0 m +(placed) 65277 0.00 -1 s +( at the head of the queue.) 93337 -38.67 32 s +2 sf +34544.0 163576.0 m +(discard\036current\036event) 60873 0.00 -1 s +( ) 61433 -146.00 32 s +6 sf +(display) 69585 0.00 -1 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 166737.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 169898.0 m +( ) 54170 -37.00 32 s +6 sf +(discarded\036p) 67650 0.00 -1 s +2 sf +( ) 68319 -37.00 32 s +5 sf +(\037 Type ) 78278 -37.00 32 s +2 sf +(boolean) 87686 0.00 -1 s +5 sf +(.) 88392 0.00 -1 s +52832.0 174617.0 m +(Discards) 62705 0.00 -1 s +( the current event for the ) 91044 -30.67 32 s +6 sf +(display) 99196 0.00 -1 s +5 sf +(. Returns ) 110031 -30.50 32 s +2 sf +(nil) 113168 0.00 -1 s +5 sf +( when the event queue is empty;) 149352 -30.50 32 s +52832.0 177777.0 m +(otherwise,) 64508 0.00 -1 s +( returns ) 73397 -179.00 32 s +2 sf +(t) 74336 0.00 -1 s +5 sf +(. This function provides extra flexibility for discarding) 134683 -179.00 32 s +( events, but it) 149352 -179.67 32 s +52832.0 180938.0 m +(should) 60358 0.00 -1 s +( be used carefully; use ) 86083 -43.00 32 s +2 sf +(event\036cond) 99249 0.00 -1 s +5 sf +( instead, if) 110998 -43.00 32 s +( possible. Typically, ) 134462 -43.67 32 s +2 sf +(discard\036cur\036) 149352 0.00 -1 s +52832.0 184099.0 m +(rent\036event) 65210 0.00 -1 s +5 sf +( is called inside a handler function or a clause of an ) 123497 -27.83 32 s +2 sf +(event\036case) 135876 0.00 -1 s +5 sf +( form and is) 149352 -27.67 32 s +52832.0 187260.0 m +(followed) 62862 0.00 -1 s +( by another call) 80203 -45.00 32 s +( to ) 83719 -45.50 32 s +2 sf +(process\036event) 100018 0.00 -1 s +5 sf +(, ) 101384 -46.00 32 s +2 sf +(event\036case) 113763 0.00 -1 s +5 sf +(, or ) 118140 -45.50 32 s +2 sf +(event\036cond) 131306 0.00 -1 s +5 sf +(.) 132012 0.00 -1 s +6 sf +52832.0 193537.0 m +(display) 60984 0.00 -1 s +( \037 ) 64852 -26.50 32 s +5 sf +(A ) 67568 -27.00 32 s +2 sf +(display) 76194 0.00 -1 s +5 sf +(.) 76900 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036125) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(event\036listen) 48335 0.00 -1 s +( ) 49013 -28.00 32 s +/timsps10i 6 declareFont +6 sf +(display) 57165 0.00 -1 s +2 sf +( ) 57843 -28.00 32 s +/timsps10 5 declareFont +5 sf +(&optional) 69287 0.00 -1 s +2 sf +( ) 69965 -28.00 32 s +5 sf +(\() 70904 0.00 -1 s +2 sf +(timeout ) 80827 -28.00 32 s +5 sf +(0\)) 83177 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +2 sf +52832.0 28900.0 m +( ) 54184 -30.00 32 s +6 sf +(event\036count ) 68023 -30.00 32 s +5 sf +(\037 Type) 77320 -30.00 32 s +( ) 77995 -31.00 32 s +2 sf +(\(or null integer\)) 97056 -30.50 32 s +5 sf +(.) 97762 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the number of events queued locally. If the event queue is empty,) 134949 -93.00 32 s +( ) 135561 -94.00 32 s +2 sf +(event\036listen) 149352 0.00 -1 s +5 sf +52832.0 36779.0 m +(waits) 58788 0.00 -1 s +( for an event to arrive. If timeout is non\036) 101712 -281.00 32 s +2 sf +(nil) 104849 0.00 -1 s +5 sf +( and no) 112596 -281.00 32 s +( event arrives within the specified) 149352 -281.60 32 s +52832.0 39940.0 m +(timeout) 61454 0.00 -1 s +( interval \(given in seconds\), ) 92852 -147.00 32 s +2 sf +(event\036listen) 106643 0.00 -1 s +5 sf +( returns ) 115596 -147.00 32 s +2 sf +(nil) 118733 0.00 -1 s +5 sf +(; if timeout is ) 133981 -146.75 32 s +2 sf +(nil) 137118 0.00 -1 s +5 sf +(, ) 138383 -147.00 32 s +2 sf +(event\036lis\036) 149352 0.00 -1 s +52832.0 43101.0 m +(ten) 56593 0.00 -1 s +5 sf +( will not return until an event arrives.) 98462 -19.71 32 s +6 sf +52832.0 49378.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +6 sf +52832.0 54164.0 m +(timeout ) 61977 -25.00 32 s +5 sf +(\037 The number of seconds to wait) 100231 -25.00 32 s +( for) 104202 -24.00 32 s +( events.) 112799 -25.00 32 s +2 sf +34544.0 58951.0 m +(with\036event\036queue) 55389 0.00 -1 s +( ) 56025 -70.00 32 s +6 sf +(display) 64177 0.00 -1 s +2 sf +( ) 64813 -70.00 32 s +5 sf +(&body) 72652 0.00 -1 s +6 sf +( body) 78774 -70.00 32 s +2 sf +142014.0 h +5 sf +(Macro) 149379 0.00 -1 s +52832.0 63669.0 m +(Executes) 63019 0.00 -1 s +( the ) 67359 -260.00 32 s +6 sf +(body) 72845 0.00 -1 s +5 sf +( in a critical region in which the executing client process has exclusive) 149352 -259.83 32 s +52832.0 66830.0 m +(access) 60040 0.00 -1 s +( to the event queue. ) 82590 -36.00 32 s +6 sf +52832.0 73107.0 m +(display) 60984 0.00 -1 s +( \037) 64172 -27.00 32 s +5 sf +( A ) 67568 -26.50 32 s +2 sf +(display) 76194 0.00 -1 s +5 sf +(.) 76900 0.00 -1 s +6 sf +52832.0 77893.0 m +(body) 58318 0.00 -1 s +( ) 58986 -38.00 32 s +5 sf +(\037 Forms to execute.) 82544 -37.67 32 s +20320.0 83402.0 m +0.0 0.0 m +newpath +20455 81778 av +148878 81776 as +[] 0 setdash +dp +149352.0 83402.0 m +/timsps12b 7 declareFont +7 sf +20320.0 86789.0 m +(Sending) 31989 0.00 -1 s +( Events) 42604 -14.00 32 s +52832.0 h +2 sf +(12.5) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(A) 62003 0.00 -1 s +( client can send an event to a window. Clients selecting this window event) 144373 -115.00 32 s +( will) 149352 -116.00 32 s +52832.0 89950.0 m +(receive) 60978 0.00 -1 s +( it just like any other event sent by the X server.) 114808 -22.73 32 s +2 sf +34544.0 96226.0 m +(send\036event) 47397 0.00 -1 s +( ) 48061 -42.00 32 s +6 sf +(window) 56842 0.00 -1 s +2 sf +( ) 57507 -41.00 32 s +6 sf +(event\036key event\036mask ) 82180 -41.50 32 s +5 sf +(&rest ) 89113 -42.00 32 s +6 sf +(event\036slots) 101181 0.00 -1 s +5 sf +( &key ) 108780 -41.50 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 99387.0 m +2 sf +(:propagate\036p) 68506 0.00 -1 s +( :display ) 79339 -72.00 32 s +5 sf +(&allow\036other\036keys) 100652 0.00 -1 s +52832.0 104106.0 m +(Sends) 59574 0.00 -1 s +( an event specified by the ) 88700 -57.00 32 s +6 sf +(event\036key) 99352 0.00 -1 s +5 sf +( and ) 104725 -57.00 32 s +6 sf +(event\036slots) 116793 0.00 -1 s +5 sf +( to the given destination ) 144336 -56.80 32 s +6 sf +(win\036) 149352 0.00 -1 s +52832.0 107267.0 m +(dow) 57536 0.00 -1 s +5 sf +(.) 58242 0.00 -1 s +( Any active grabs are ignored. The ) 96192 -265.71 32 s +6 sf +(event\036slots) 108260 0.00 -1 s +5 sf +( passed depend on the event type. The) 149352 -265.57 32 s +52832.0 110428.0 m +(keyword) 62705 0.00 -1 s +( symbols used for each event) 94482 -181.00 32 s +( type are event slot names defined by the ) 139637 -181.56 32 s +2 sf +(declare\036) 149352 0.00 -1 s +52832.0 113589.0 m +(event) 59257 0.00 -1 s +5 sf +( macro and are described in paragraph 12.12.8, Declaring Event Types.) 139192 -46.90 32 s +52832.0 119865.0 m +(If) 54710 0.00 -1 s +( the ) 59184 -193.00 32 s +6 sf +(window) 67965 0.00 -1 s +5 sf +( is ) 70873 -193.00 32 s +2 sf +(:pointer\036window) 90936 0.00 -1 s +5 sf +(, the destination ) 109013 -193.00 32 s +6 sf +(window) 117794 0.00 -1 s +5 sf +( is replaced with the) 139749 -193.00 32 s +( window) 149352 -194.00 32 s +52832.0 123026.0 m +(containing) 64745 0.00 -1 s +( the pointer. If the ) 84358 -278.00 32 s +6 sf +(window) 93139 0.00 -1 s +5 sf +( is ) 95877 -278.00 32 s +2 sf +(:input\036focus) 110455 0.00 -1 s +5 sf +(, the destination ) 128277 -278.00 32 s +6 sf +(window) 137058 0.00 -1 s +5 sf +( is) 139368 -278.00 32 s +( replaced) 149352 -279.00 32 s +52832.0 126187.0 m +(with) 57848 0.00 -1 s +( the descendant of the focus window that contains the pointer or \(if no such) 140214 -185.00 32 s +( descen\036) 149352 -186.00 32 s +52832.0 129348.0 m +(dant) 57691 0.00 -1 s +( exists\) the focus window. The ) 92649 -65.00 32 s +2 sf +(:display) 102214 0.00 -1 s +5 sf +( keyword is only required if the ) 138048 -64.57 32 s +6 sf +(window) 146829 0.00 -1 s +5 sf +( is) 149352 -65.00 32 s +52832.0 132509.0 m +2 sf +(:pointer\036window) 72895 0.00 -1 s +5 sf +( or) 75904 -47.00 32 s +( ) 76562 -48.00 32 s +2 sf +(:input\036focus) 91140 0.00 -1 s +5 sf +(.) 91846 0.00 -1 s +52832.0 138786.0 m +(The) 57220 0.00 -1 s +( ) 57823 -103.00 32 s +6 sf +(event\036key) 68475 0.00 -1 s +5 sf +( must be one of the core events, or one of the events defined by an exten\036) 149352 -103.00 32 s +52832.0 141946.0 m +(sion,) 58242 0.00 -1 s +( so the server can send the event with the correct byte\036order. The contents of the) 149352 45.07 32 s +52832.0 145107.0 m +(event) 58944 0.00 -1 s +( are otherwise unaltered and unchecked by the server, except that the ) 133991 -282.92 32 s +2 sf +(send\036event\036p) 149352 0.00 -1 s +5 sf +52832.0 148268.0 m +(event) 58944 0.00 -1 s +( slot is set to true.) 78796 -12.00 32 s +52832.0 154545.0 m +(If) 54710 0.00 -1 s +( the ) 59144 -213.00 32 s +6 sf +(event\036mask) 71836 0.00 -1 s +5 sf +( is ) 74704 -213.00 32 s +2 sf +(nil) 77841 0.00 -1 s +5 sf +(, the event is sent to the client that created) 123262 -213.00 32 s +( the destination ) 140571 -213.67 32 s +6 sf +(window) 149352 0.00 -1 s +5 sf +52832.0 157706.0 m +(with) 57848 0.00 -1 s +( an ) 61812 -56.00 32 s +6 sf +(event\036mask) 74504 0.00 -1 s +5 sf +( of 0; if that client no longer) 105854 -56.00 32 s +( exists, no event is sent. Otherwise, the) 149352 -56.57 32 s +52832.0 160867.0 m +(event) 58944 0.00 -1 s +( is sent to every) 76170 -122.00 32 s +( client selecting any of the event types specified by ) 133255 -122.50 32 s +6 sf +(event\036mask) 145947 0.00 -1 s +5 sf +( on) 149352 -123.00 32 s +52832.0 164028.0 m +(the) 56280 0.00 -1 s +( destination ) 69964 -56.00 32 s +6 sf +(window) 78745 0.00 -1 s +5 sf +(.) 79451 0.00 -1 s +52832.0 170304.0 m +(If) 54710 0.00 -1 s +( ) 55189 -227.00 32 s +2 sf +(:propagate\036p) 70863 0.00 -1 s +5 sf +( is true and no clients have selected any of the event types in ) 136660 -226.71 32 s +6 sf +(event\036mask) 149352 0.00 -1 s +5 sf +52832.0 173465.0 m +(on) 55654 0.00 -1 s +( the destination ) 73376 -76.00 32 s +6 sf +(window) 82157 0.00 -1 s +5 sf +(, the destination is replaced with the closest ancestor of ) 144336 -75.50 32 s +6 sf +(win\036) 149352 0.00 -1 s +52832.0 176626.0 m +(dow) 57536 0.00 -1 s +5 sf +( for which some client has) 86109 -226.00 32 s +( selected a type in ) 105902 -226.60 32 s +6 sf +(event\036mask) 118594 0.00 -1 s +5 sf +( and no intervening window) 149352 -226.50 32 s +52832.0 179787.0 m +(has) 56594 0.00 -1 s +( that type in its do\036not\036propagate mask. If no such window exists,) 128536 -179.00 32 s +( or if the ) 138163 -179.50 32 s +6 sf +(window) 146944 0.00 -1 s +5 sf +( is) 149352 -180.00 32 s +52832.0 182948.0 m +(an) 55496 0.00 -1 s +( ancestor of the focus window and ) 93845 -153.00 32 s +2 sf +(:input\036focus) 108423 0.00 -1 s +5 sf +( was) 113364 -153.00 32 s +( originally specified as the desti\036) 149352 -153.60 32 s +52832.0 186109.0 m +(nation,) 60592 0.00 -1 s +( the event is not sent to any clients. Otherwise, the event is reported to every client) 149352 -271.81 32 s +52832.0 189270.0 m +(selecting) 62863 0.00 -1 s +( on the final destination any of the types specified in ) 122340 -29.55 32 s +6 sf +(event\036mask) 135032 0.00 -1 s +5 sf +(.) 135738 0.00 -1 s +6 sf +52832.0 195546.0 m +(window) 61613 0.00 -1 s +( ) 62285 -34.00 32 s +5 sf +(\037 The) 70167 -34.00 32 s +( destination ) 83894 -34.50 32 s +2 sf +(window) 93301 0.00 -1 s +5 sf +( for the event.) 108870 -34.67 32 s +6 sf +52832.0 200333.0 m +(event\036key ) 64155 -35.00 32 s +5 sf +(\037 An ) 71767 -35.00 32 s +2 sf +(event\036key) 83364 0.00 -1 s +5 sf +( defining the type of event to send.) 122304 -35.57 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036126) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +52832.0 22578.0 m +(event\036mask) 65524 0.00 -1 s +( ) 66201 -29.00 32 s +/timsps10 5 declareFont +5 sf +(\037 Specifies the event types that receiving) 113677 -29.00 32 s +( clients must select.) 135692 -29.67 32 s +6 sf +52832.0 27364.0 m +(event\036slots) 64900 0.00 -1 s +5 sf +( \037 Keyword\036value pairs that describe the contents of an event.) 135828 -30.80 32 s +2 sf +52832.0 32151.0 m +(:propagate\036p) 68506 0.00 -1 s +( ) 68958 -254.00 32 s +5 sf +(\037 If true, the event can be propagated to ancestors of the destination) 143730 -254.00 32 s +( win\036) 149352 -255.00 32 s +57912.0 35312.0 m +(dow.) 63477 0.00 -1 s +2 sf +52832.0 41588.0 m +(:display) 62397 0.00 -1 s +( ) 63080 -23.00 32 s +5 sf +(\037 A ) 69306 -22.50 32 s +2 sf +(display) 77932 0.00 -1 s +5 sf +(.) 78638 0.00 -1 s +20320.0 48587.0 m +0.0 0.0 m +newpath +20455 46963 av +148878 46961 as +[] 0 setdash +dp +149352.0 48587.0 m +/timsps12b 7 declareFont +7 sf +20320.0 51974.0 m +(Pointer) 31039 0.00 -1 s +( Position) 43598 48.00 32 s +52832.0 h +2 sf +(12.6) 57771 0.00 -1 s +60121.0 h +() 60121 0.00 -1 s +5 sf +(The) 64509 0.00 -1 s +( CLX functions) 81548 -259.00 32 s +( affecting pointer position are discussed in the following para\036) 149352 -259.56 32 s +52832.0 55135.0 m +(graphs.) 61061 0.00 -1 s +2 sf +34544.0 61412.0 m +(query\036pointer) 51316 0.00 -1 s +6 sf +( window) 60666 -137.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 64572.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +6 sf +52832.0 67733.0 m +54864.0 h +(x) 56117 0.00 -1 s +2 sf +( ) 56791 -32.00 32 s +5 sf +(\037 Type) 66087 -31.00 32 s +2 sf +( int16) 72875 -32.00 32 s +5 sf +(.) 73581 0.00 -1 s +2 sf +52832.0 70894.0 m +54864.0 h +6 sf +(y) 56117 0.00 -1 s +5 sf +( \037 Type ) 66761 -31.67 32 s +2 sf +(int16) 72875 0.00 -1 s +5 sf +(.) 73581 0.00 -1 s +2 sf +52832.0 74055.0 m +6 sf +54864.0 h +(same\036screen\036p) 71318 0.00 -1 s +( ) 71968 -56.00 32 s +5 sf +(\037 Type ) 81890 -55.50 32 s +2 sf +(boolean) 91298 0.00 -1 s +5 sf +(.) 92004 0.00 -1 s +2 sf +52832.0 77216.0 m +54864.0 h +6 sf +(child) 60507 0.00 -1 s +( ) 61183 -30.00 32 s +5 sf +(\037 Type ) 71157 -29.50 32 s +2 sf +(window) 80564 0.00 -1 s +5 sf +( or ) 84267 -29.50 32 s +2 sf +(null) 88973 0.00 -1 s +5 sf +(.) 89679 0.00 -1 s +2 sf +52832.0 80377.0 m +54864.0 h +6 sf +(state\036mask) 66932 0.00 -1 s +5 sf +( \037 Type ) 77527 -48.00 32 s +2 sf +(card16) 85835 0.00 -1 s +5 sf +(.) 86541 0.00 -1 s +2 sf +52832.0 83538.0 m +54864.0 h +6 sf +(root\036x) 61760 0.00 -1 s +( ) 62435 -31.00 32 s +5 sf +(\037 Type) 71731 -31.00 32 s +2 sf +( int16) 78519 -32.00 32 s +5 sf +(.) 79225 0.00 -1 s +52832.0 86699.0 m +54864.0 h +6 sf +(root\036y) 61760 0.00 -1 s +5 sf +( \037 Type ) 72405 -31.33 32 s +2 sf +(int16) 78519 0.00 -1 s +5 sf +(.) 79225 0.00 -1 s +52832.0 89860.0 m +54864.0 h +6 sf +(root) 59568 0.00 -1 s +5 sf +( \037 Type ) 70196 -37.00 32 s +2 sf +(window) 79603 0.00 -1 s +5 sf +(.) 80309 0.00 -1 s +52832.0 94578.0 m +(Returns) 61610 0.00 -1 s +( the current pointer coordinates relative to the given ) 119980 -88.56 32 s +6 sf +(window) 128761 0.00 -1 s +5 sf +(. If ) 132580 -88.50 32 s +2 sf +(query\036pointer) 149352 0.00 -1 s +5 sf +52832.0 97739.0 m +(returns) 60667 0.00 -1 s +( ) 61116 -257.00 32 s +2 sf +(nil) 64253 0.00 -1 s +5 sf +( for ) 68440 -257.00 32 s +6 sf +(same\036screen\036p) 84894 0.00 -1 s +5 sf +(, the pointer is not on the same screen) 125397 -257.00 32 s +( as the ) 132541 -257.67 32 s +6 sf +(window) 141322 0.00 -1 s +5 sf +(. In this) 149352 -257.50 32 s +52832.0 100900.0 m +(case,) 58395 0.00 -1 s +( ) 59143 42.00 32 s +2 sf +(query\036pointer) 75915 0.00 -1 s +5 sf +( returns a value of ) 97205 42.00 32 s +2 sf +(nil) 100342 0.00 -1 s +5 sf +( for ) 105127 42.00 32 s +6 sf +(child) 110770 0.00 -1 s +5 sf +( and a value of zero for ) 137942 42.14 32 s +6 sf +(x) 139195 0.00 -1 s +5 sf +( and ) 144767 42.50 32 s +6 sf +(y) 146020 0.00 -1 s +5 sf +(. If) 149352 42.00 32 s +52832.0 104061.0 m +2 sf +(query\036pointer) 69604 0.00 -1 s +5 sf +( returns true for ) 88223 71.00 32 s +6 sf +(same\036screen\036p) 104677 0.00 -1 s +5 sf +(, the returned ) 120563 71.00 32 s +6 sf +(x) 121816 0.00 -1 s +5 sf +( and) 126668 71.00 32 s +( ) 127444 70.00 32 s +6 sf +(y) 128697 0.00 -1 s +5 sf +( are relative to the) 149352 70.50 32 s +52832.0 107222.0 m +(origin) 59572 0.00 -1 s +( of window. The ) 77803 -282.00 32 s +6 sf +(child) 83446 0.00 -1 s +5 sf +( is the child of the window containing the pointer, if any. The) 149352 -281.67 32 s +52832.0 110383.0 m +6 sf +(state\036mask) 64900 0.00 -1 s +5 sf +( returned gives) 81232 -219.00 32 s +( the current state of the modifier keys and pointer buttons. The) 149352 -219.55 32 s +52832.0 113544.0 m +(returned) 62233 0.00 -1 s +( ) 62943 4.00 32 s +6 sf +(root) 67647 0.00 -1 s +5 sf +( is the root window currently containing the pointer. The returned) 141747 4.00 32 s +( ) 142456 3.00 32 s +6 sf +(root\036x) 149352 0.00 -1 s +5 sf +52832.0 116705.0 m +(and) 56907 0.00 -1 s +( ) 57584 -29.00 32 s +6 sf +(root\036y) 64480 0.00 -1 s +5 sf +( specify the pointer coordinates relative to ) 112469 -29.57 32 s +6 sf +(root) 117173 0.00 -1 s +5 sf +(.) 117879 0.00 -1 s +6 sf +52832.0 122981.0 m +(window ) 62289 -30.00 32 s +5 sf +(\037 A ) 68500 -30.00 32 s +2 sf +(window) 77907 0.00 -1 s +5 sf +( specifying the coordinate system for the returned) 133729 -30.00 32 s +( position.) 144204 -31.00 32 s +2 sf +34544.0 127768.0 m +(global\036pointer\036position) 62135 0.00 -1 s +( ) 62742 -99.00 32 s +6 sf +(display) 70894 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +6 sf +34544.0 130929.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 134089.0 m +6 sf +54864.0 h +(root\036x) 61760 0.00 -1 s +( \037) 64943 -32.00 32 s +5 sf +( Type) 71416 -32.00 32 s +( ) 72089 -33.00 32 s +2 sf +(int16) 78203 0.00 -1 s +5 sf +(.) 78909 0.00 -1 s +2 sf +52832.0 137250.0 m +6 sf +54864.0 h +(root\036y) 61760 0.00 -1 s +5 sf +( \037 Type) 71731 -31.00 32 s +2 sf +( int16) 78519 -32.00 32 s +5 sf +(.) 79225 0.00 -1 s +2 sf +52832.0 140411.0 m +6 sf +54864.0 h +(root) 59568 0.00 -1 s +( ) 60237 -37.00 32 s +5 sf +(\037 Type ) 70196 -37.00 32 s +2 sf +(window) 79603 0.00 -1 s +5 sf +(.) 80309 0.00 -1 s +52832.0 145130.0 m +(Returns) 61610 0.00 -1 s +( the ) 66334 -68.00 32 s +6 sf +(root) 71038 0.00 -1 s +5 sf +( window currently containing) 104141 -68.00 32 s +( the ) 108864 -68.50 32 s +6 sf +(display) 117016 0.00 -1 s +5 sf +( pointer and the current posi\036) 149352 -68.60 32 s +52832.0 148291.0 m +(tion) 57222 0.00 -1 s +( of the pointer relative to the ) 89913 -20.86 32 s +6 sf +(root) 94617 0.00 -1 s +5 sf +(.) 95323 0.00 -1 s +6 sf +52832.0 154567.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 159354.0 m +(pointer\036position) 53826 0.00 -1 s +( ) 54437 -95.00 32 s +6 sf +(window) 63218 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 162515.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 165676.0 m +54864.0 h +6 sf +(x) 56117 0.00 -1 s +( ) 56791 -32.00 32 s +5 sf +(\037 Type) 66087 -31.00 32 s +2 sf +( int16) 72875 -32.00 32 s +5 sf +(.) 73581 0.00 -1 s +2 sf +52832.0 168837.0 m +54864.0 h +6 sf +(y) 56117 0.00 -1 s +5 sf +( \037 Type ) 66761 -31.67 32 s +2 sf +(int16) 72875 0.00 -1 s +5 sf +(.) 73581 0.00 -1 s +52832.0 171998.0 m +54864.0 h +6 sf +(same\036screen\036p) 71318 0.00 -1 s +( ) 71968 -56.00 32 s +5 sf +(\037 Type ) 81890 -55.50 32 s +2 sf +(boolean) 91298 0.00 -1 s +5 sf +(.) 92004 0.00 -1 s +52832.0 175158.0 m +6 sf +54864.0 h +(child) 60507 0.00 -1 s +( ) 61183 -30.00 32 s +5 sf +(\037 Type ) 71157 -29.50 32 s +2 sf +(window) 80564 0.00 -1 s +5 sf +( or ) 84267 -29.50 32 s +2 sf +(null) 88973 0.00 -1 s +5 sf +(.) 89679 0.00 -1 s +52832.0 179877.0 m +(Returns) 61610 0.00 -1 s +( the current pointer coordinates relative to the given ) 121006 25.44 32 s +6 sf +(window) 129787 0.00 -1 s +5 sf +(. If ) 133834 25.50 32 s +2 sf +(pointer\036posi\036) 149352 0.00 -1 s +52832.0 183038.0 m +(tion) 57535 0.00 -1 s +5 sf +( returns ) 66558 -112.00 32 s +2 sf +(nil) 69695 0.00 -1 s +5 sf +( for ) 74172 -112.00 32 s +6 sf +(same\036screen\036p) 90626 0.00 -1 s +5 sf +(, the pointer) 103961 -112.00 32 s +( is not on the same screen as the ) 139865 -112.56 32 s +6 sf +(window) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 186199.0 m +(In) 55182 0.00 -1 s +( this case, ) 66217 -241.00 32 s +2 sf +(pointer\036position) 85499 0.00 -1 s +5 sf +( returns a value of ) 105374 -241.00 32 s +2 sf +(nil) 108511 0.00 -1 s +5 sf +( for ) 112730 -241.00 32 s +6 sf +(child) 118373 0.00 -1 s +5 sf +( and) 122913 -241.00 32 s +( a value of zero for ) 143560 -241.50 32 s +6 sf +(x) 144813 0.00 -1 s +5 sf +( and) 149352 -242.00 32 s +52832.0 189360.0 m +6 sf +(y) 54085 0.00 -1 s +5 sf +(.) 54791 0.00 -1 s +( If ) 57697 -192.00 32 s +2 sf +(pointer\036position) 76979 0.00 -1 s +5 sf +( returns true for ) 94546 -192.00 32 s +6 sf +(same\036screen\036p) 111000 0.00 -1 s +5 sf +(, the returned ) 126098 -191.67 32 s +6 sf +(x) 127351 0.00 -1 s +5 sf +( and ) 132455 -191.50 32 s +6 sf +(y) 133708 0.00 -1 s +5 sf +( are relative to) 149352 -191.67 32 s +52832.0 192521.0 m +(the) 56280 0.00 -1 s +( origin of ) 67390 -32.67 32 s +6 sf +(window) 76171 0.00 -1 s +5 sf +(.) 76877 0.00 -1 s +6 sf +52832.0 198797.0 m +(window) 61613 0.00 -1 s +( ) 62289 -30.00 32 s +5 sf +(\037 A ) 68500 -30.00 32 s +2 sf +(window) 77907 0.00 -1 s +5 sf +( specifying the coordinate system for the returned) 133729 -30.00 32 s +( position.) 144204 -31.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036127) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(motion\036events) 51470 0.00 -1 s +/timsps10i 6 declareFont +6 sf +( ) 52161 -15.00 32 s +/timsps10 5 declareFont +5 sf +(w) 54198 0.00 -1 s +6 sf +(indow) 61097 0.00 -1 s +2 sf +( ) 61787 -16.00 32 s +5 sf +(&key) 68057 0.00 -1 s +2 sf +( :start :stop ) 82664 -15.33 32 s +5 sf +(\() 83603 0.00 -1 s +2 sf +(:result\036type 'list) 102783 -16.00 32 s +5 sf +(\)) 103722 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +2 sf +( ) 63082 -18.00 32 s +52832.0 28900.0 m +6 sf +( motion\036events) 70031 -21.00 32 s +2 sf +( ) 70716 -21.00 32 s +5 sf +(\037 Type) 80022 -21.00 32 s +2 sf +( \(repeat\036seq \(int16 x\) \(int16 y\) \(timestamp) 130048 -20.67 32 s +52832.0 32060.0 m +75184.0 h +( time\)\)) 89402 -4.60 32 s +5 sf +(.) 90108 0.00 -1 s +52832.0 36779.0 m +(Many) 59416 0.00 -1 s +( X server implementations maintain a more precise history of) 127887 -81.00 32 s +( pointer motion be\036) 149352 -81.67 32 s +52832.0 39940.0 m +(tween) 59570 0.00 -1 s +( event notifications. The pointer position at each pointer hardware interrupt can be) 149352 -256.92 32 s +52832.0 43101.0 m +(stored) 59728 0.00 -1 s +( into a buffer for later retrieval.This is called the ) 115466 65.00 32 s +6 sf +(motion history) 131914 65.00 32 s +( buffer) 139425 64.00 32 s +5 sf +(. A paint) 149352 64.50 32 s +52832.0 46262.0 m +(program,) 63097 0.00 -1 s +( for) 66906 -186.00 32 s +( example, may want to have a precise history of where the pointer traveled,) 149352 -186.54 32 s +52832.0 49423.0 m +(even) 58160 0.00 -1 s +( though for most other applications this amount of detail is grossly) 132886 -26.00 32 s +( excessive.) 145085 -27.00 32 s +52832.0 55699.0 m +(The) 57220 0.00 -1 s +( ) 57833 -93.00 32 s +2 sf +(motion\036events) 74759 0.00 -1 s +5 sf +( function returns all events in the motion history buffer that fall be\036) 149352 -92.75 32 s +52832.0 58860.0 m +(tween) 59570 0.00 -1 s +( the specified ) 74491 -277.00 32 s +2 sf +(:start) 81070 0.00 -1 s +5 sf +( and ) 86004 -276.50 32 s +2 sf +(:stop) 91960 0.00 -1 s +5 sf +( timestamps \(inclusive\) and have coordinates that lie) 149352 -276.57 32 s +52832.0 62021.0 m +(within) 60043 0.00 -1 s +( the specified ) 75885 30.00 32 s +6 sf +(window) 84666 0.00 -1 s +5 sf +( \(including borders\) at its present placement. If the ) 142773 30.22 32 s +2 sf +(:start) 149352 0.00 -1 s +5 sf +52832.0 65182.0 m +(time) 57848 0.00 -1 s +( is later than the ) 76901 64.20 32 s +2 sf +(:stop) 82857 0.00 -1 s +5 sf +( time or if the ) 99247 64.60 32 s +2 sf +(:start) 105826 0.00 -1 s +5 sf +( time is in the future, no events are re\036) 149352 64.44 32 s +52832.0 68343.0 m +(turned.) 60747 0.00 -1 s +6 sf +52832.0 74620.0 m +(window) 61613 0.00 -1 s +( ) 62278 -41.00 32 s +5 sf +(\037 The ) 70818 -41.00 32 s +2 sf +(window) 80225 0.00 -1 s +5 sf +( containing the returned motion) 115643 -41.00 32 s +( events.) 124223 -42.00 32 s +2 sf +52832.0 79406.0 m +(:start,) 60117 0.00 -1 s +( :stop ) 67449 -18.00 32 s +5 sf +(\037 ) 70960 -17.00 32 s +2 sf +(timestamp) 83653 0.00 -1 s +5 sf +( values for the time interval for returned motion events.) 146033 -17.56 32 s +2 sf +52832.0 85683.0 m +(:result\036type) 66778 0.00 -1 s +6 sf +( ) 67459 -25.00 32 s +5 sf +(\037) 70281 0.00 -1 s +( The form of the returned motion events.) 116027 -25.57 32 s +2 sf +34544.0 90469.0 m +(warp\036pointer) 50531 0.00 -1 s +( ) 51172 -65.00 32 s +6 sf +(destination) 63714 0.00 -1 s +2 sf +( ) 64356 -64.00 32 s +6 sf +(destination\036x destination\036y) 94465 -65.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 95188.0 m +(Moves) 60514 0.00 -1 s +( the pointer to the given coordinates relative to the ) 118333 29.30 32 s +6 sf +(destination) 130875 0.00 -1 s +5 sf +( window. ) 142143 29.50 32 s +2 sf +(warp\036) 149352 0.00 -1 s +52832.0 98349.0 m +(pointer) 61610 0.00 -1 s +5 sf +( should be rarely be used since the user should normally be in control of) 145050 149.00 32 s +( the) 149352 148.00 32 s +52832.0 101510.0 m +(pointer) 60825 0.00 -1 s +( position. ) 71887 -75.00 32 s +2 sf +(warp\036pointer) 87874 0.00 -1 s +5 sf +( generates events just as if the user had instantaneously) 149352 -74.78 32 s +52832.0 104671.0 m +(moved) 60513 0.00 -1 s +( the pointer from one position to) 96840 -33.00 32 s +( another.) 106680 -34.00 32 s +2 sf +52832.0 110947.0 m +(warp\036pointer) 68819 0.00 -1 s +5 sf +( cannot move the pointer) 98149 318.00 32 s +( outside the confine\036to window of an active) 149352 317.43 32 s +52832.0 114108.0 m +(pointer) 60825 0.00 -1 s +( grab;) 67188 -141.00 32 s +( an attempt to do so only moves the pointer as far as the closest edge of the) 149352 -141.53 32 s +52832.0 117269.0 m +(confine\036to) 64428 0.00 -1 s +( window.) 74845 -86.00 32 s +6 sf +52832.0 123546.0 m +(destination) 65374 0.00 -1 s +( ) 66049 -31.00 32 s +5 sf +(\037 The ) 74609 -31.00 32 s +2 sf +(window) 84016 0.00 -1 s +5 sf +( into which the pointer is moved.) 121062 -31.00 32 s +6 sf +52832.0 128332.0 m +(destination\036x,) 68272 0.00 -1 s +( destination\036y ) 84424 3.00 32 s +5 sf +(\037) 87246 0.00 -1 s +6 sf +( ) 87956 4.00 32 s +5 sf +(The new position of the pointer relative to the destina\036) 149352 3.44 32 s +57912.0 131493.0 m +(tion.) 63008 0.00 -1 s +2 sf +34544.0 136279.0 m +(warp\036pointer\036relative) 60558 0.00 -1 s +( ) 61220 -44.00 32 s +6 sf +(display x\036offset y\036offset) 87308 -44.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 140998.0 m +(Moves) 60514 0.00 -1 s +( the pointer by the given offsets. This function should rarely be used since the user) 149352 -284.80 32 s +52832.0 144159.0 m +(should) 60358 0.00 -1 s +( normally be in control of the pointer position. ) 112114 -136.56 32 s +2 sf +(warp\036pointer\036relative) 138128 0.00 -1 s +5 sf +( generates) 149352 -137.00 32 s +52832.0 147320.0 m +(events) 60042 0.00 -1 s +( just as if the user had instantaneously moved the pointer from one position to an\036) 149352 -185.67 32 s +52832.0 150481.0 m +(other.) 59336 0.00 -1 s +2 sf +52832.0 156758.0 m +(warp\036pointer\036relative) 78846 0.00 -1 s +5 sf +( cannot move the pointer outside the confine\036to window of an ac\036) 149352 -294.55 32 s +52832.0 159918.0 m +(tive) 57064 0.00 -1 s +( pointer grab; an attempt to do so only moves the pointer as far as the closest edge) 146482 -185.00 32 s +( of) 149352 -186.00 32 s +52832.0 163079.0 m +(the) 56280 0.00 -1 s +( confine\036to window.) 78977 -54.00 32 s +6 sf +52832.0 169356.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +6 sf +52832.0 174142.0 m +(x\036offset,) 61844 0.00 -1 s +( y\036offset ) 71526 -18.00 32 s +5 sf +(\037 The offsets used to adjust the pointer position.) 127113 -17.88 32 s +2 sf +34544.0 178929.0 m +(warp\036pointer\036if\036inside) 61189 0.00 -1 s +( ) 61851 -44.00 32 s +6 sf +(destination) 74393 0.00 -1 s +( destination\036x destination\036y ) 105845 -44.67 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +52832.0 182090.0 m +6 sf +(source) 60356 0.00 -1 s +( source\036x source\036y ) 81807 -33.00 32 s +5 sf +(&optional \() 94863 -33.00 32 s +6 sf +(source\036width) 109598 0.00 -1 s +5 sf +( 0\) ) 113295 -32.50 32 s +52832.0 185251.0 m +(\() 53771 0.00 -1 s +6 sf +(source\036height) 69288 0.00 -1 s +5 sf +( 0\)) 72294 -50.00 32 s +52832.0 189969.0 m +(Moves) 60514 0.00 -1 s +( the pointer to the given position relative to the ) 111260 -286.60 32 s +6 sf +(destination) 123802 0.00 -1 s +5 sf +( window. However, the) 149352 -286.67 32 s +52832.0 193130.0 m +(move) 59102 0.00 -1 s +( can only take place if the pointer is currently contained in a visible portion of the) 149352 -109.94 32 s +52832.0 196291.0 m +(specified) 63018 0.00 -1 s +( rectangle of the ) 81033 -237.00 32 s +6 sf +(source) 88557 0.00 -1 s +5 sf +( window. If ) 101639 -237.00 32 s +6 sf +(source\036height) 117156 0.00 -1 s +5 sf +( is zero, it is) 129926 -237.00 32 s +( replaced with the) 149352 -237.67 32 s +52832.0 199452.0 m +(current) 60822 0.00 -1 s +( height of ) 72101 -81.00 32 s +6 sf +(source ) 80250 -81.00 32 s +5 sf +(window minus ) 97490 -81.00 32 s +6 sf +(source\036y) 107206 0.00 -1 s +5 sf +(. If ) 111040 -81.00 32 s +6 sf +(source\036width) 125775 0.00 -1 s +5 sf +( is zero, it is replaced) 149352 -80.80 32 s +52832.0 202613.0 m +(with) 57848 0.00 -1 s +( the) 61975 -27.00 32 s +( current width of ) 81456 -27.50 32 s +6 sf +(source ) 89658 -28.00 32 s +5 sf +(window minus ) 107005 -27.50 32 s +6 sf +(source\036x) 116721 0.00 -1 s +5 sf +(.) 117427 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036128) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(warp\036pointer\036if\036inside) 79477 0.00 -1 s +/timsps10 5 declareFont +5 sf +( generates events just as if) 108693 -66.00 32 s +( the user had instantaneously moved) 149352 -66.60 32 s +52832.0 25739.0 m +(the) 56280 0.00 -1 s +( pointer from one position to) 90711 412.00 32 s +( another. ) 102114 411.50 32 s +2 sf +(warp\036pointer\036if\036inside) 128759 0.00 -1 s +5 sf +( cannot move the) 149352 411.33 32 s +52832.0 28900.0 m +(pointer) 60825 0.00 -1 s +( outside the confine\036to window of an active pointer grab; an attempt to do so only) 149352 -237.60 32 s +52832.0 32060.0 m +(moves) 60200 0.00 -1 s +( the pointer as far as) 82879 -25.00 32 s +( the closest edge of the confine\036to window.) 131290 -25.57 32 s +/timsps10i 6 declareFont +6 sf +52832.0 38337.0 m +(destination) 65374 0.00 -1 s +( ) 66049 -31.00 32 s +5 sf +(\037 The ) 74609 -31.00 32 s +2 sf +(window) 84016 0.00 -1 s +5 sf +( into which the pointer is moved.) 121062 -31.00 32 s +6 sf +52832.0 43124.0 m +(destination\036x,) 68272 0.00 -1 s +( destination\036y ) 84398 -10.00 32 s +5 sf +(\037) 87220 0.00 -1 s +6 sf +( ) 87916 -10.00 32 s +5 sf +(The new position of the pointer relative to the ) 140261 -9.67 32 s +6 sf +(destina\036) 149352 0.00 -1 s +57912.0 46284.0 m +(tion) 62302 0.00 -1 s +5 sf +(.) 63008 0.00 -1 s +6 sf +52832.0 51071.0 m +(source) 60356 0.00 -1 s +5 sf +( \037 The ) 69591 -31.00 32 s +2 sf +(window) 78998 0.00 -1 s +5 sf +( that must currently contain the pointer.) 123410 -30.50 32 s +6 sf +52832.0 55857.0 m +(source\036x,) 63254 0.00 -1 s +( source\036y, source\036width,) 90349 -90.00 32 s +( source\036height ) 107097 -90.50 32 s +5 sf +(\037The source rectangle that must cur\036) 149352 -90.60 32 s +57912.0 59018.0 m +(rently) 64494 0.00 -1 s +( contain the pointer.) 86973 -31.00 32 s +6 sf +( ) 87647 -32.00 32 s +2 sf +34544.0 63805.0 m +(warp\036pointer\036relative\036if\036inside) 71216 0.00 -1 s +( ) 71885 -37.00 32 s +6 sf +(x\036offset y\036offset) 89166 -37.00 32 s +( source source\036x source\036y) 118127 -37.67 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +52832.0 66966.0 m +5 sf +(&optional) 64276 0.00 -1 s +( \() 65886 -35.00 32 s +6 sf +(source\036width) 80621 0.00 -1 s +5 sf +( 0\) \() 85252 -35.00 32 s +6 sf +(source\036height) 100769 0.00 -1 s +5 sf +( 0\)) 103790 -35.00 32 s +52832.0 71684.0 m +(Moves) 60514 0.00 -1 s +( the pointer by the given offsets. However, the move can only take place if the) 149352 34.27 32 s +52832.0 74845.0 m +(pointer) 60825 0.00 -1 s +( is currently contained in a visible portion of the specified rectangle) 134592 -226.00 32 s +( of the ) 141828 -226.67 32 s +6 sf +(source) 149352 0.00 -1 s +5 sf +52832.0 78006.0 m +(window.) 62629 0.00 -1 s +( If ) 65395 -262.00 32 s +6 sf +(source\036height) 80912 0.00 -1 s +5 sf +( is zero, it is replaced with the current height of ) 132108 -261.73 32 s +6 sf +(source\036window) 149352 0.00 -1 s +5 sf +52832.0 81167.0 m +(minus) 59731 0.00 -1 s +( ) 60334 -103.00 32 s +6 sf +(source\036y) 70050 0.00 -1 s +5 sf +(. If ) 73840 -103.00 32 s +6 sf +(source\036width) 88575 0.00 -1 s +5 sf +( is zero, it is replaced with the current width of) 140287 -103.00 32 s +( ) 140889 -104.00 32 s +6 sf +(source\036) 149352 0.00 -1 s +52832.0 84328.0 m +(window) 61613 0.00 -1 s +5 sf +( minus) 69166 -52.00 32 s +( ) 69819 -53.00 32 s +6 sf +(source\036x) 79535 0.00 -1 s +5 sf +(.) 80241 0.00 -1 s +2 sf +52832.0 90605.0 m +(warp\036pointer\036relative\036if\036inside) 89504 0.00 -1 s +5 sf +( generates events just as if the user had instantaneously) 149352 -255.89 32 s +52832.0 93766.0 m +(moved) 60513 0.00 -1 s +( the pointer from one position to another. ) 107174 -55.50 32 s +2 sf +(warp\036pointer\036relative\036if\036inside) 143846 0.00 -1 s +5 sf +( can\036) 149352 -56.00 32 s +52832.0 96926.0 m +(not) 56438 0.00 -1 s +( move the pointer outside the confine\036to window of an active pointer grab; an attempt) 149352 -259.93 32 s +52832.0 100087.0 m +(to) 55027 0.00 -1 s +( do so only moves the pointer as far as the closest edge of) 119690 -24.00 32 s +( the confine\036to window.) 146575 -24.67 32 s +6 sf +52832.0 106364.0 m +(x\036offset,) 61844 0.00 -1 s +( y\036offset ) 71526 -18.00 32 s +5 sf +(\037 The offsets used to adjust the pointer position.) 127113 -17.88 32 s +6 sf +52832.0 111150.0 m +(source) 60356 0.00 -1 s +5 sf +( \037 The ) 69591 -31.00 32 s +2 sf +(window) 78998 0.00 -1 s +5 sf +( that must currently contain the pointer.) 123410 -30.50 32 s +6 sf +52832.0 115937.0 m +(source\036x,) 63254 0.00 -1 s +( source\036y, source\036width, source\036height ) 106850 -152.00 32 s +5 sf +(\037 The source rectangle that must cur\036) 149352 -152.00 32 s +57912.0 119098.0 m +(rently) 64494 0.00 -1 s +( contain the pointer.) 86973 -31.00 32 s +6 sf +( ) 87647 -32.00 32 s +5 sf +20320.0 124607.0 m +0.0 0.0 m +newpath +20455 122983 av +148878 122981 as +[] 0 setdash +dp +149352.0 124607.0 m +/timsps12b 7 declareFont +7 sf +20320.0 127993.0 m +(Managing) 34995 0.00 -1 s +( Input) 43914 -21.00 32 s +52832.0 h +2 sf +(12.7) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(CLX) 65609 0.00 -1 s +( provides the ) 85961 1689.33 32 s +2 sf +(set\036focus\036input) 103829 0.00 -1 s +5 sf +( and ) 112695 1689.50 32 s +2 sf +(focus\036input) 126334 0.00 -1 s +5 sf +( functions to set) 149352 1689.33 32 s +2 sf +7 sf +20320.0 131380.0 m +(Focus) 28785 0.00 -1 s +52832.0 h +5 sf +(and) 56907 0.00 -1 s +( get the keyboard input focus window.) 99997 -42.00 32 s +2 sf +34544.0 137657.0 m +(set\036input\036focus) 52412 0.00 -1 s +( ) 53091 -27.00 32 s +6 sf +(display) 61243 0.00 -1 s +2 sf +( ) 61922 -27.00 32 s +6 sf +(focus revert\036to) 78431 -27.00 32 s +2 sf +( ) 79110 -27.00 32 s +5 sf +(&optional) 90554 0.00 -1 s +2 sf +( ) 91233 -27.00 32 s +6 sf +(time) 96091 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 142375.0 m +(Changes) 62551 0.00 -1 s +( the keyboard input focus and the last\036focus\036change time. The function has no) 149352 -87.83 32 s +52832.0 145536.0 m +(effect) 59253 0.00 -1 s +( if the specified ) 77563 32.25 32 s +6 sf +(time) 82421 0.00 -1 s +5 sf +( is earlier than the current last\036focus\036change time or is later) 149352 32.50 32 s +52832.0 148697.0 m +(than) 57691 0.00 -1 s +( the current server time; otherwise, the last\036focus\036change time is set to the specified) 149352 -195.00 32 s +52832.0 151858.0 m +6 sf +(time) 57690 0.00 -1 s +5 sf +(.) 58396 0.00 -1 s +( The ) 63630 -283.00 32 s +2 sf +(set\036input\036focus) 81498 0.00 -1 s +5 sf +( function causes the X server to generate ) 125782 -283.00 32 s +2 sf +(:focus\036in) 136283 0.00 -1 s +5 sf +( and ) 141204 -283.00 32 s +2 sf +(:focus\036) 149352 0.00 -1 s +52832.0 155019.0 m +(out) 56751 0.00 -1 s +( ) 57402 -55.00 32 s +5 sf +(events.) 65318 0.00 -1 s +52832.0 161296.0 m +(If) 54710 0.00 -1 s +( ) 55466 50.00 32 s +2 sf +(:none) 62207 0.00 -1 s +5 sf +( is specified as the ) 83854 50.00 32 s +6 sf +(focus) 89811 0.00 -1 s +5 sf +(, all keyboard events are discarded until a new focus) 149352 50.22 32 s +52832.0 164457.0 m +(window) 61923 0.00 -1 s +( is set. In this case, the ) 87879 -21.00 32 s +6 sf +(revert\036to) 97752 0.00 -1 s +5 sf +( argument is ignored.) 121672 -21.00 32 s +52832.0 170733.0 m +(If) 54710 0.00 -1 s +( a) 56376 -293.00 32 s +( window is specified as the ) 85809 -293.50 32 s +6 sf +(focus) 91766 0.00 -1 s +5 sf +( argument, it becomes the keyboard's focus window.) 149352 -293.57 32 s +52832.0 173894.0 m +(If) 54710 0.00 -1 s +( a generated) 68225 -59.00 32 s +( keyboard event would normally be reported to this window or one of its) 149352 -59.54 32 s +52832.0 177055.0 m +(inferiors,) 63096 0.00 -1 s +( the event is reported normally; otherwise, the event is reported with respect) 146641 -189.00 32 s +( to) 149352 -190.00 32 s +52832.0 180216.0 m +(the) 56280 0.00 -1 s +( focus window.) 73513 -44.00 32 s +52832.0 186492.0 m +(If) 54710 0.00 -1 s +( ) 55288 -128.00 32 s +2 sf +(:pointer\036root) 70958 0.00 -1 s +5 sf +( is specified as the ) 91715 -128.00 32 s +6 sf +(focus) 97672 0.00 -1 s +5 sf +( argument, the input focus window is set to the) 149352 -127.67 32 s +52832.0 189653.0 m +(root) 57377 0.00 -1 s +( window of) 70082 -74.00 32 s +( the screen containing the pointer when each keyboard event occurs. In) 149352 -74.55 32 s +52832.0 192814.0 m +(this) 56909 0.00 -1 s +( case,) 63152 -26.00 32 s +( the ) 67959 -26.50 32 s +6 sf +(revert\036to) 77832 0.00 -1 s +5 sf +( argument is ignored.) 101735 -26.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036129) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( specified) 67841 -271.00 32 s +( ) 68275 -272.00 32 s +/timsps10i 6 declareFont +6 sf +(focus) 74232 0.00 -1 s +5 sf +( window must be viewable at the time of the request. If the ) 137790 -271.46 32 s +6 sf +(focus) 143747 0.00 -1 s +5 sf +( win\036) 149352 -272.00 32 s +52832.0 25739.0 m +(dow) 57691 0.00 -1 s +( later becomes not viewable, the new focus window depends on the ) 132943 -122.92 32 s +6 sf +(revert\036to) 142816 0.00 -1 s +5 sf +( argu\036) 149352 -123.00 32 s +52832.0 28900.0 m +(ment.) 59181 0.00 -1 s +( If ) 62415 -28.00 32 s +6 sf +(revert\036to) 72288 0.00 -1 s +5 sf +( is specified as ) 89419 -28.00 32 s +2 sf +(:parent) 98352 0.00 -1 s +5 sf +(, the ) 103862 -28.00 32 s +6 sf +(focus) 109819 0.00 -1 s +5 sf +( reverts to the parent) 132902 -28.00 32 s +( \(or the closest) 149352 -28.67 32 s +52832.0 32060.0 m +(viewable) 63018 0.00 -1 s +( ancestor\) and the new ) 91033 384.00 32 s +6 sf +(revert\036to) 100906 0.00 -1 s +5 sf +( value is take to be ) 125001 384.17 32 s +2 sf +(:none) 131742 0.00 -1 s +5 sf +(. If ) 136507 384.50 32 s +6 sf +(revert\036to) 146380 0.00 -1 s +5 sf +( is) 149352 384.00 32 s +52832.0 35221.0 m +2 sf +(:pointer\036root) 68502 0.00 -1 s +5 sf +( or ) 71728 -268.00 32 s +2 sf +(:none) 78469 0.00 -1 s +5 sf +(, the ) 83499 -268.00 32 s +6 sf +(focus) 89456 0.00 -1 s +5 sf +( reverts to that value. When the ) 123634 -267.57 32 s +6 sf +(focus) 129591 0.00 -1 s +5 sf +( reverts, ) 138851 -267.50 32 s +2 sf +(:focus\036in) 149352 0.00 -1 s +52832.0 38382.0 m +5 sf +(and) 56907 0.00 -1 s +( ) 57581 -32.00 32 s +2 sf +(:focus\036out) 69648 0.00 -1 s +5 sf +( events are generated, but the last\036focus\036change time) 128666 -32.00 32 s +( is not affected.) 145965 -32.67 32 s +6 sf +52832.0 44659.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +6 sf +52832.0 49445.0 m +(focus) 58789 0.00 -1 s +( ) 59463 -32.00 32 s +5 sf +(\037 The new) 72722 -32.00 32 s +( input focus ) 86655 -32.67 32 s +2 sf +(window) 96062 0.00 -1 s +5 sf +(.) 96768 0.00 -1 s +6 sf +52832.0 54232.0 m +(revert\036to) 62705 0.00 -1 s +( ) 63381 -30.00 32 s +5 sf +(\037 The focus ) 78731 -30.00 32 s +2 sf +(window) 88138 0.00 -1 s +5 sf +( when focus is no longer viewable.) 127226 -29.50 32 s +6 sf +52832.0 59018.0 m +(time) 57690 0.00 -1 s +( ) 58384 -12.00 32 s +5 sf +(\037 A) 63937 -12.00 32 s +( ) 64630 -13.00 32 s +2 sf +(timestamp) 77323 0.00 -1 s +5 sf +(.) 78029 0.00 -1 s +2 sf +34544.0 63805.0 m +(input\036focus) 48183 0.00 -1 s +( ) 48834 -55.00 32 s +6 sf +(display) 56986 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 66966.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 70127.0 m +( ) 53508 -30.00 32 s +6 sf +( focus) 60141 -30.00 32 s +( ) 60816 -31.00 32 s +5 sf +(\037 Type) 70113 -30.00 32 s +2 sf +( ) 70788 -31.00 32 s +5 sf +(\() 71727 0.00 -1 s +2 sf +(or window ) 85149 -30.50 32 s +5 sf +(\() 86088 0.00 -1 s +2 sf +(member :none :pointer\036root) 119878 -30.50 32 s +5 sf +(\)\).) 122462 0.00 -1 s +2 sf +52832.0 73287.0 m +( ) 53508 -30.00 32 s +6 sf +( revert\036to ) 64732 -30.50 32 s +5 sf +(\037 Type \() 75643 -30.50 32 s +2 sf +(or window ) 89065 -30.50 32 s +5 sf +(\() 90004 0.00 -1 s +2 sf +(member :none :pointer\036root :parent) 133402 -30.67 32 s +5 sf +(\)\).) 135986 0.00 -1 s +52832.0 78006.0 m +(Returns) 61610 0.00 -1 s +( the ) 65886 -292.00 32 s +6 sf +(focus) 71843 0.00 -1 s +5 sf +( window, ) 82468 -292.00 32 s +2 sf +(:pointer\036root) 98138 0.00 -1 s +5 sf +(, or ) 102022 -292.00 32 s +2 sf +(:none) 108763 0.00 -1 s +5 sf +(, depending on the current state of) 145491 -292.00 32 s +( the) 149352 -293.00 32 s +52832.0 81167.0 m +(focus) 58944 0.00 -1 s +( window.) 69425 -22.00 32 s +( ) 70108 -23.00 32 s +6 sf +(revert\036to) 79981 0.00 -1 s +5 sf +( returns the current focus revert\036to state.) 125058 -22.50 32 s +6 sf +52832.0 87444.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036130) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 7 declareFont +7 sf +20320.0 26687.0 m +(Grabbing) 34433 0.00 -1 s +52832.0 h +2 sf +(12.8) 57771 0.00 -1 s +60121.0 h +() 60121 0.00 -1 s +5 sf +(CLX) 65764 0.00 -1 s +( provides the ) 86943 1965.00 32 s +2 sf +(grab\036pointer) 102304 0.00 -1 s +5 sf +( and ) 111721 1965.00 32 s +2 sf +(ungrab\036pointer) 130220 0.00 -1 s +5 sf +( functions) 143393 1965.00 32 s +( for) 149352 1964.00 32 s +7 sf +20320.0 30074.0 m +(the) 24833 0.00 -1 s +( Pointer) 36441 42.00 32 s +52832.0 h +5 sf +(grabbing) 62863 0.00 -1 s +( and releasing pointer control.) 96504 -34.00 32 s +7 sf +( ) 97310 -41.00 32 s +2 sf +34544.0 36350.0 m +(grab\036pointer) 49905 0.00 -1 s +( ) 50555 -56.00 32 s +/timsps10i 6 declareFont +6 sf +(window event\036mask ) 73329 -55.50 32 s +5 sf +(&key ) 80249 -56.00 32 s +2 sf +(:owner\036p :sync\036pointer\036p ) 111015 -55.50 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 39511.0 m +2 sf +(:sync\036keyboard\036p :confine\036to :cursor :time) 103993 -55.67 32 s +34544.0 42672.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +6 sf +52832.0 45833.0 m +( grab\036status \037 ) 70897 -31.00 32 s +5 sf +(One of ) 79298 -31.00 32 s +2 sf +(:already\036grabbed) 100303 0.00 -1 s +5 sf +(, ) 101684 -31.00 32 s +2 sf +(:frozen) 110301 0.00 -1 s +5 sf +(, ) 111683 -30.00 32 s +2 sf +(:invalid\036time) 127199 0.00 -1 s +5 sf +(, ) 128580 -31.00 32 s +149352.0 h +52832.0 48994.0 m +( ) 58408 -9.00 32 s +( ) 65373 -9.50 32 s +2 sf +( :not\036viewable) 82368 -10.00 32 s +5 sf +(, or ) 86817 -9.50 32 s +2 sf +(:success) 96378 0.00 -1 s +5 sf +(.) 97084 0.00 -1 s +52832.0 53713.0 m +(Actively) 62549 0.00 -1 s +( grabs control of the pointer. Further pointer events are only reported to the) 149352 154.46 32 s +52832.0 56873.0 m +(grabbing) 62863 0.00 -1 s +( client. The request overrides any active pointer grab by this client.) 137973 -32.82 32 s +52832.0 63150.0 m +(If) 54710 0.00 -1 s +( ) 55235 -181.00 32 s +2 sf +(:owner\036p) 66205 0.00 -1 s +5 sf +( is ) 69137 -181.00 32 s +2 sf +(nil) 72274 0.00 -1 s +5 sf +(, all generated) 87819 -181.00 32 s +( pointer events are reported with respect to ) 135266 -181.50 32 s +6 sf +(window) 144047 0.00 -1 s +5 sf +(, and) 149352 -182.00 32 s +52832.0 66311.0 m +(are) 56277 0.00 -1 s +( only) 62279 279.00 32 s +( reported if selected by ) 90236 278.40 32 s +6 sf +(event\036mask) 102928 0.00 -1 s +5 sf +(. If ) 107481 278.50 32 s +2 sf +(:owner\036p) 118451 0.00 -1 s +5 sf +( is true, and if a generated) 149352 278.50 32 s +52832.0 69472.0 m +(pointer) 60825 0.00 -1 s +( event would normally be reported to this client, it is reported normally; other\036) 149352 9.46 32 s +52832.0 72633.0 m +(wise) 58004 0.00 -1 s +( the event is reported with respect to the ) 102199 -183.56 32 s +6 sf +(window) 110980 0.00 -1 s +5 sf +(, and is only reported if selected by) 149352 -183.57 32 s +52832.0 75794.0 m +6 sf +(event\036mask) 65524 0.00 -1 s +5 sf +(.) 66230 0.00 -1 s +( For either value of ) 88375 -38.00 32 s +2 sf +(:owner\036p) 99345 0.00 -1 s +5 sf +(, unreported events) 120820 -38.00 32 s +( are simply discarded.) 145469 -38.67 32 s +52832.0 82070.0 m +(If) 54710 0.00 -1 s +( ) 57616 2200.00 32 s +2 sf +(:sync\036pointer\036p) 76111 0.00 -1 s +5 sf +( is ) 83804 2199.50 32 s +2 sf +(nil) 86941 0.00 -1 s +5 sf +(, pointer event processing continues normally) 149352 2199.40 32 s +52832.0 85231.0 m +(\(asynchronously\);) 73207 0.00 -1 s +( if the pointer is currently) 102838 174.00 32 s +( frozen by this client, then processing of) 149352 173.43 32 s +52832.0 88392.0 m +(pointer) 60825 0.00 -1 s +( events is) 71053 -138.00 32 s +( resumed. If ) 84899 -138.67 32 s +2 sf +(:sync\036pointer\036p) 103394 0.00 -1 s +5 sf +( is true) 110798 -138.50 32 s +2 sf +( ) 111366 -138.00 32 s +5 sf +(\(indicating a synchronous action\),) 149352 -138.67 32 s +52832.0 91553.0 m +(the) 56280 0.00 -1 s +( pointer \(as seen via the protocol\) appears to freeze, and no further pointer events are) 149352 -179.00 32 s +52832.0 94714.0 m +(generated) 63800 0.00 -1 s +( by the server until the grabbing client issues a) 114038 -244.00 32 s +( releasing ) 125147 -244.50 32 s +2 sf +(allow\036events) 140036 0.00 -1 s +5 sf +( request.) 149352 -245.00 32 s +52832.0 97875.0 m +(Actual) 60354 0.00 -1 s +( pointer changes are not lost while the) 102818 -58.00 32 s +( pointer is frozen; they are simply queued) 149352 -58.57 32 s +52832.0 101036.0 m +(for) 56121 0.00 -1 s +( later) 61817 -23.00 32 s +( processing.) 75274 -24.00 32 s +52832.0 107312.0 m +(If) 54710 0.00 -1 s +( ) 55171 -245.00 32 s +2 sf +(:sync\036keyboard\036p) 76334 0.00 -1 s +5 sf +( is ) 79138 -245.00 32 s +2 sf +(nil) 82275 0.00 -1 s +5 sf +(, keyboard event processing is unaffected by activation of the) 149352 -244.56 32 s +52832.0 110473.0 m +(grab.) 58552 0.00 -1 s +( If ) 62042 100.00 32 s +2 sf +(:sync\036keyboard\036p) 83205 0.00 -1 s +5 sf +( is true, the keyboard \(as seen via the protocol\) appears to) 149352 100.09 32 s +52832.0 113634.0 m +(freeze,) 60428 0.00 -1 s +( and no further keyboard events are generated by the server until the grabbing cli\036) 149352 -230.86 32 s +52832.0 116795.0 m +(ent) 56280 0.00 -1 s +( issues a releasing ) 76673 -153.00 32 s +2 sf +(allow\036events) 91562 0.00 -1 s +5 sf +( request. Actual keyboard changes are not lost while) 149352 -152.75 32 s +52832.0 119956.0 m +(the) 56280 0.00 -1 s +( keyboard is frozen; they are simply queued for later processing.) 128626 -30.00 32 s +52832.0 126232.0 m +(If) 54710 0.00 -1 s +( ) 55168 -248.00 32 s +2 sf +(:cursor) 63944 0.00 -1 s +5 sf +( is specified, it is displayed regardless of what window the pointer is in. Other\036) 149352 -247.71 32 s +52832.0 129393.0 m +(wise,) 58710 0.00 -1 s +( the normal cursor for the ) 88031 -24.00 32 s +6 sf +(window) 96812 0.00 -1 s +5 sf +( is) 99376 -24.00 32 s +( displayed.) 111579 -25.00 32 s +52832.0 135670.0 m +(If) 54710 0.00 -1 s +( a ) 56923 -226.00 32 s +2 sf +(:confine\036to) 69929 0.00 -1 s +5 sf +( window is specified, the pointer) 105635 -226.00 32 s +( is restricted to stay within that window.) 149352 -226.57 32 s +52832.0 138831.0 m +(The) 57220 0.00 -1 s +( :) 58769 59.00 32 s +2 sf +(confine\036to) 70836 0.00 -1 s +5 sf +( window does not need to have) 106147 59.00 32 s +( any relationship to the ) 133010 58.40 32 s +6 sf +(window) 141791 0.00 -1 s +5 sf +(. If the) 149352 58.50 32 s +52832.0 141992.0 m +(pointer) 60825 0.00 -1 s +( is not initially in the ) 83981 -165.00 32 s +2 sf +(:confine\036to) 96987 0.00 -1 s +5 sf +( window, it is warped automatically) 136603 -165.00 32 s +( to the clos\036) 149352 -165.67 32 s +52832.0 145153.0 m +(est) 55967 0.00 -1 s +( edge \(with ) 69104 -88.00 32 s +2 sf +(:enter) 76310 0.00 -1 s +5 sf +(/) 77094 0.00 -1 s +2 sf +(:leave\036events) 92607 0.00 -1 s +5 sf +( generated normally\) just before the grab activates.) 149352 -88.00 32 s +52832.0 148313.0 m +(If) 54710 0.00 -1 s +( the ) 59052 -259.00 32 s +2 sf +(:confine\036to) 72058 0.00 -1 s +5 sf +( window is subsequently reconfigured, the pointer is warped automati\036) 149352 -259.00 32 s +52832.0 151474.0 m +(cally) 58317 0.00 -1 s +( as necessary to keep it contained in the window.) 113205 -32.00 32 s +2 sf +52832.0 157751.0 m +(grab\036pointer) 68193 0.00 -1 s +5 sf +( generates ) 80156 -52.00 32 s +2 sf +(:enter\036notify) 95354 0.00 -1 s +5 sf +( and ) 100737 -52.00 32 s +2 sf +(:leave\036notify) 115780 0.00 -1 s +5 sf +( events. ) 125005 -51.50 32 s +2 sf +(grab\036pointer) 140366 0.00 -1 s +5 sf +( can fail) 149352 -51.50 32 s +52832.0 160912.0 m +(with) 57848 0.00 -1 s +( a status) 66927 -7.00 32 s +( of:) 70759 -8.00 32 s +/symbb8 4 declareFont +4 sf +52832.0 167459.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:already\036grabbed) 78917 0.00 -1 s +5 sf +( if the pointer is actively grabbed by some other client) 139531 -36.00 32 s +4 sf +52832.0 174007.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:frozen) 66529 0.00 -1 s +5 sf +( if the pointer) 81736 -25.00 32 s +( is frozen by an active grab of another client) 131267 -25.56 32 s +4 sf +52832.0 180554.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:not\036viewable) 74211 0.00 -1 s +5 sf +( if the) 80828 17.00 32 s +( ) 81550 16.00 32 s +6 sf +(window) 90331 0.00 -1 s +5 sf +( or the ) 98297 16.67 32 s +2 sf +(:confine\036to) 111303 0.00 -1 s +5 sf +( window is not viewable, or if the) 149352 16.43 32 s +57912.0 183715.0 m +2 sf +(:confine\036to) 70918 0.00 -1 s +5 sf +( window lies completely outside the boundaries of the root window.) 147320 -32.90 32 s +4 sf +52832.0 190263.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:invalid\036time) 73428 0.00 -1 s +5 sf +( if the specified time is earlier than the last\036pointer\036grab time or later) 149352 -124.83 32 s +57912.0 193424.0 m +(than) 62771 0.00 -1 s +( the current server time. Otherwise, the) 105142 -278.00 32 s +( last\036pointer\036grab time is set to the speci\036) 149352 -278.57 32 s +57912.0 196585.0 m +(fied) 62299 0.00 -1 s +( time, with current\036time) 88344 -252.00 32 s +( replaced by the current server time, and a value of ) 143554 -252.55 32 s +2 sf +(:suc\036) 149352 0.00 -1 s +57912.0 199746.0 m +(cess) 62614 0.00 -1 s +5 sf +( is returned by ) 79392 -37.75 32 s +2 sf +(grab\036pointer) 94753 0.00 -1 s +5 sf +(.) 95459 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 13 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036131) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +52832.0 22578.0 m +(window) 61613 0.00 -1 s +( ) 62278 -41.00 32 s +/timsps10 5 declareFont +5 sf +(\037 The ) 70819 -40.50 32 s +2 sf +(window) 80226 0.00 -1 s +5 sf +( grabbing the pointer.) 104400 -40.67 32 s +6 sf +52832.0 27364.0 m +(event\036mask) 65524 0.00 -1 s +( ) 66180 -50.00 32 s +5 sf +(\037 A) 71695 -50.00 32 s +( ) 72350 -51.00 32 s +2 sf +(pointer\036event\036mask) 95859 0.00 -1 s +5 sf +(.) 96565 0.00 -1 s +2 sf +52832.0 32151.0 m +(:owner\036p) 63802 0.00 -1 s +( ) 64481 -27.00 32 s +5 sf +(\037 If true, all client windows receive pointer events normally.) 133909 -26.78 32 s +2 sf +52832.0 38427.0 m +(:sync\036pointer\036p) 71327 0.00 -1 s +( ) 72155 122.00 32 s +5 sf +(\037 Indicates whether the pointer is in) 114737 122.00 32 s +( synchronous or asynchronous) 149352 121.33 32 s +57912.0 41588.0 m +(mode.) 64888 0.00 -1 s +( ) 65543 -51.00 32 s +2 sf +52832.0 47865.0 m +(:sync\036keyboard\036p) 73995 0.00 -1 s +( ) 74745 44.00 32 s +5 sf +(\037) 77567 0.00 -1 s +( Indicates whether the keyboard is in synchronous or asynchro\036) 149352 43.44 32 s +57912.0 51026.0 m +(nous) 63243 0.00 -1 s +( mode. ) 71549 -41.00 32 s +2 sf +52832.0 57302.0 m +(:confine\036to) 65838 0.00 -1 s +( ) 66517 -27.00 32 s +5 sf +(\037 A ) 72734 -27.00 32 s +2 sf +(window) 82141 0.00 -1 s +5 sf +( to which the pointer is confined.) 119211 -26.50 32 s +2 sf +52832.0 63579.0 m +(:cursor) 61608 0.00 -1 s +( ) 62276 -38.00 32 s +5 sf +(\037 A) 67803 -38.00 32 s +( ) 68470 -39.00 32 s +2 sf +(cursor) 76307 0.00 -1 s +5 sf +(.) 77013 0.00 -1 s +2 sf +52832.0 69856.0 m +(:time) 59097 0.00 -1 s +( ) 59786 -17.00 32 s +5 sf +(\037 A ) 66023 -17.00 32 s +2 sf +(timestamp) 78716 0.00 -1 s +5 sf +(. A ) 82837 -17.00 32 s +2 sf +(nil) 85974 0.00 -1 s +5 sf +( value means the current server time is used.) 135918 -16.75 32 s +2 sf +34544.0 76132.0 m +(ungrab\036pointer) 53043 0.00 -1 s +( ) 53693 -56.00 32 s +6 sf +(display) 61845 0.00 -1 s +5 sf +( &key ) 69416 -55.50 32 s +2 sf +(:time) 75681 0.00 -1 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 80851.0 m +(Releases) 62706 0.00 -1 s +( the pointer if this client has it actively grabbed) 117722 200.00 32 s +( \(from either ) 133285 199.33 32 s +2 sf +(grab\036pointer) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 84012.0 m +2 sf +(grab\036button) 67411 0.00 -1 s +5 sf +(,) 68117 0.00 -1 s +( or from a normal button press\), and releases any queued events. The re\036) 149352 -26.54 32 s +52832.0 87173.0 m +(quest) 58789 0.00 -1 s +( has no effect if the specified ) 92045 -6.86 32 s +2 sf +(:time) 98310 0.00 -1 s +5 sf +( is earlier than the last\036pointer\036grab time or is) 149352 -6.50 32 s +52832.0 90334.0 m +(later) 57845 0.00 -1 s +( than the current) 75999 -87.00 32 s +( server time. An ) 94536 -87.50 32 s +2 sf +(ungrabpointer) 112096 0.00 -1 s +5 sf +( is performed automatically if the) 149352 -87.60 32 s +52832.0 93495.0 m +(event) 58944 0.00 -1 s +( window or ) 71954 -183.00 32 s +2 sf +(:confine\036to) 84960 0.00 -1 s +5 sf +( window for an active pointer grab becomes not viewable. ) 149352 -182.90 32 s +52832.0 99771.0 m +(This) 57849 0.00 -1 s +( request generates ) 78657 -38.00 32 s +2 sf +(:enter\036notify) 93855 0.00 -1 s +5 sf +( and ) 99265 -38.50 32 s +2 sf +(:leave\036notify) 114308 0.00 -1 s +5 sf +( events.) 122891 -39.00 32 s +6 sf +52832.0 106048.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 110834.0 m +(:time) 59097 0.00 -1 s +( ) 59796 -7.00 32 s +5 sf +(\037 A) 65354 -7.00 32 s +( ) 66052 -8.00 32 s +2 sf +(timestamp) 78745 0.00 -1 s +5 sf +(.) 79451 0.00 -1 s +2 sf +34544.0 117111.0 m +(change\036active\036pointer\036grab) 67300 0.00 -1 s +( ) 67944 -62.00 32 s +6 sf +(display event\036mask ) 90076 -62.00 32 s +5 sf +(&optional) 101520 0.00 -1 s +6 sf +( cursor) 109533 -62.00 32 s +( time) 115034 -63.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 121830.0 m +(Changes) 62551 0.00 -1 s +( the specified dynamic parameters if the pointer is actively grabbed by the client) 149352 -285.69 32 s +52832.0 124991.0 m +(and) 56907 0.00 -1 s +( the specified ) 72482 -59.00 32 s +6 sf +(time) 77340 0.00 -1 s +5 sf +( is no earlier) 91190 -59.00 32 s +( than the last\036pointer\036grab time and no later than the) 149352 -59.56 32 s +52832.0 128151.0 m +(current) 60822 0.00 -1 s +( server time. The interpretation of ) 98268 -224.00 32 s +6 sf +(event\036mask) 110960 0.00 -1 s +5 sf +( and ) 115999 -224.00 32 s +6 sf +(cursor) 123368 0.00 -1 s +5 sf +( are) 127295 -224.00 32 s +( as in ) 133285 -224.67 32 s +2 sf +(grab\036pointer) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 131312.0 m +2 sf +(change\036active\036pointer\036grab) 85588 0.00 -1 s +5 sf +( has) 89842 -214.00 32 s +( no effect on the passive parameters of a ) 134067 -214.56 32 s +2 sf +(grab\036button) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +6 sf +52832.0 137589.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +6 sf +52832.0 142375.0 m +(event\036mask) 65524 0.00 -1 s +( ) 66180 -50.00 32 s +5 sf +(\037 A) 71695 -50.00 32 s +( ) 72350 -51.00 32 s +2 sf +(pointer\036event\036mask) 95859 0.00 -1 s +5 sf +(.) 96565 0.00 -1 s +6 sf +52832.0 147162.0 m +(cursor) 60201 0.00 -1 s +( ) 60887 -20.00 32 s +5 sf +(\037 A ) 67119 -19.50 32 s +2 sf +(cursor) 74956 0.00 -1 s +5 sf +( or ) 78679 -19.50 32 s +2 sf +(nil) 81816 0.00 -1 s +5 sf +(.) 82522 0.00 -1 s +6 sf +52832.0 151948.0 m +(time) 57690 0.00 -1 s +( ) 58384 -12.00 32 s +5 sf +(\037 A) 63937 -12.00 32 s +( ) 64630 -13.00 32 s +2 sf +(timestamp) 77323 0.00 -1 s +5 sf +(.) 78029 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 14 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036132) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 7 declareFont +7 sf +20320.0 26687.0 m +(Grabbing) 34433 0.00 -1 s +52832.0 h +2 sf +(12.9) 57771 0.00 -1 s +60121.0 h +() 60121 0.00 -1 s +5 sf +(CLX) 65764 0.00 -1 s +( provides the ) 87612 2188.00 32 s +2 sf +(grab\036button) 102191 0.00 -1 s +5 sf +( and ) 112055 2188.50 32 s +2 sf +(ungrab\036button) 129772 0.00 -1 s +5 sf +( functions for) 149352 2188.50 32 s +7 sf +20320.0 30074.0 m +(a) 22013 0.00 -1 s +( Button) 32828 -4.00 32 s +52832.0 h +5 sf +(passively) 63335 0.00 -1 s +( grabbing and releasing pointer control.) 107675 -34.80 32 s +109870.0 h +() 109870 0.00 -1 s +7 sf +( ) 110676 -41.00 32 s +2 sf +34544.0 36350.0 m +(grab\036button) 49123 0.00 -1 s +( ) 49790 -39.00 32 s +/timsps10i 6 declareFont +6 sf +(window button event\036mask) 79809 -39.00 32 s +( ) 80475 -40.00 32 s +5 sf +(&key \() 88351 -39.00 32 s +2 sf +(:modifiers) 100731 0.00 -1 s +5 sf +( 0\) ) 104414 -39.50 32 s +2 sf +(:owner\036p ) 116050 -40.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 39511.0 m +2 sf +(:sync\036pointer\036p) 71327 0.00 -1 s +( :sync\036keyboard\036p) 93120 -76.00 32 s +5 sf +( ) 93751 -75.00 32 s +2 sf +(:confine\036to :cursor) 116163 -76.00 32 s +5 sf +52832.0 44230.0 m +(This) 57849 0.00 -1 s +( request establishes a passive grab. If the specified ) 113185 -243.00 32 s +6 sf +(button) 120397 0.00 -1 s +5 sf +( is pressed when the speci\036) 149352 -243.60 32 s +52832.0 47391.0 m +(fied) 57219 0.00 -1 s +( modifier keys are down \(and no other buttons or modifier keys are down\), and:) 146733 -26.86 32 s +/symbb8 4 declareFont +4 sf +52832.0 53938.0 m +(\267) 53872 0.00 -1 s +57912.0 h +6 sf +(window) 66693 0.00 -1 s +5 sf +( contains the) 80868 -45.00 32 s +( pointer) 89521 -46.00 32 s +4 sf +52832.0 60486.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( ) 62979 -27.00 32 s +2 sf +(:confine\036to) 75985 0.00 -1 s +5 sf +( window \(if any\) is viewable) 108215 -27.00 32 s +4 sf +52832.0 67033.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(These) 64651 0.00 -1 s +( constraints are not satisfied for any ancestor of ) 118580 -24.67 32 s +6 sf +(window) 127361 0.00 -1 s +5 sf +52832.0 73310.0 m +(then:) 58475 0.00 -1 s +4 sf +52832.0 79858.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( pointer is actively grabbed as described with ) 113716 -38.63 32 s +2 sf +(grab\036pointer) 129077 0.00 -1 s +4 sf +52832.0 86405.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( last\036pointer\036grab time is) 89361 -253.00 32 s +( set to the time that the button was pressed \(as transmit\036) 149352 -253.55 32 s +57912.0 89566.0 m +(ted) 61360 0.00 -1 s +( in the ) 69035 -28.67 32 s +2 sf +(:button\036press) 85180 0.00 -1 s +5 sf +( event\)) 92908 -29.00 32 s +4 sf +52832.0 96114.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( ) 62972 -34.00 32 s +2 sf +(:button\036press) 79117 0.00 -1 s +5 sf +( event is reported) 98529 -33.67 32 s +52832.0 102390.0 m +(The) 57220 0.00 -1 s +( interpretation of the remaining arguments is the same as) 121636 43.00 32 s +( with ) 128149 42.50 32 s +2 sf +(grab\036pointer) 143510 0.00 -1 s +5 sf +(. The) 149352 42.00 32 s +52832.0 105551.0 m +(active) 59570 0.00 -1 s +( grab is terminated automatically when all buttons are released \(independent of the) 149352 -289.58 32 s +52832.0 108712.0 m +(state) 58004 0.00 -1 s +( of modifier) 71448 -17.00 32 s +( keys\).) 78954 -18.00 32 s +52832.0 114989.0 m +(A) 54869 0.00 -1 s +( zero ) 61047 -45.00 32 s +6 sf +(modifier) 70609 0.00 -1 s +5 sf +( mask is equivalent to issuing the request for all possible) 133962 -45.00 32 s +( modifier\036key) 149352 -46.00 32 s +52832.0 118150.0 m +(combinations) 68038 0.00 -1 s +( \(including the combination of no modifiers\). It is not required that all) 149352 199.25 32 s +52832.0 121310.0 m +(specified) 63018 0.00 -1 s +( modifiers have currently assigned keycodes.) 112906 -179.00 32 s +( A ) 115996 -179.50 32 s +6 sf +(button) 123208 0.00 -1 s +5 sf +( of ) 126611 -179.50 32 s +2 sf +(:any) 131941 0.00 -1 s +5 sf +( is equivalent to) 149352 -179.67 32 s +52832.0 124471.0 m +(issuing) 60829 0.00 -1 s +( the request for all possible buttons. Otherwise, it is not required that the specified) 149352 -282.79 32 s +52832.0 127632.0 m +6 sf +(button) 60044 0.00 -1 s +5 sf +( currently be assigned to a physical button.) 108080 -35.00 32 s +6 sf +52832.0 133909.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +6 sf +52832.0 138695.0 m +(button) 60044 0.00 -1 s +( ) 60718 -32.00 32 s +5 sf +(\037 The button) 76488 -32.00 32 s +( \(type ) 83633 -32.50 32 s +2 sf +(card8) 90530 0.00 -1 s +5 sf +(\) pressed or ) 104302 -32.67 32 s +2 sf +(:any) 109632 0.00 -1 s +5 sf +(.) 110338 0.00 -1 s +6 sf +52832.0 143482.0 m +(event\036mask) 65524 0.00 -1 s +( ) 66180 -50.00 32 s +5 sf +(\037 A) 71695 -50.00 32 s +( ) 72350 -51.00 32 s +2 sf +(pointer\036event\036mask) 95859 0.00 -1 s +5 sf +(.) 96565 0.00 -1 s +2 sf +52832.0 148268.0 m +(:modifiers) 65212 0.00 -1 s +( ) 65895 -23.00 32 s +5 sf +(\037 A ) 72121 -22.50 32 s +2 sf +(modifier\036mask) 89831 0.00 -1 s +5 sf +(.) 90537 0.00 -1 s +2 sf +52832.0 154545.0 m +(:owner\036p) 63802 0.00 -1 s +( ) 64481 -27.00 32 s +5 sf +(\037 If true, all client windows receive pointer events normally.) 133909 -26.78 32 s +2 sf +52832.0 160822.0 m +(:sync\036pointer\036p) 71327 0.00 -1 s +( ) 71952 -81.00 32 s +5 sf +(\037 Indicates whether the pointer is handled) 120055 -81.00 32 s +( in a synchronous or asyn\036) 149352 -81.60 32 s +57912.0 163982.0 m +(chronous) 68257 0.00 -1 s +( fashion.) 77932 -44.00 32 s +( ) 78593 -45.00 32 s +2 sf +52832.0 170259.0 m +(:sync\036keyboard\036p) 73995 0.00 -1 s +( ) 74745 44.00 32 s +5 sf +(\037) 77567 0.00 -1 s +( Indicates whether the keyboard is in synchronous or asynchro\036) 149352 43.44 32 s +57912.0 173420.0 m +(nous) 63243 0.00 -1 s +( mode. ) 71549 -41.00 32 s +2 sf +52832.0 179697.0 m +(:confine\036to) 65838 0.00 -1 s +( ) 66519 -25.00 32 s +5 sf +(\037 A ) 72741 -24.50 32 s +2 sf +(window) 82148 0.00 -1 s +5 sf +( to which the pointer is confined. ) 119911 -24.57 32 s +2 sf +52832.0 185973.0 m +(:cursor) 61608 0.00 -1 s +( ) 62276 -38.00 32 s +5 sf +(\037 A) 67803 -38.00 32 s +( ) 68470 -39.00 32 s +2 sf +(cursor) 76307 0.00 -1 s +5 sf +(.) 77013 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 15 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036133) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(ungrab\036button) 52261 0.00 -1 s +( ) 52921 -46.00 32 s +/timsps10i 6 declareFont +6 sf +(window button ) 70235 -45.50 32 s +/timsps10 5 declareFont +5 sf +(&key \() 78105 -45.00 32 s +2 sf +(:modifiers) 90485 0.00 -1 s +5 sf +( 0\)) 93495 -46.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Releases) 62706 0.00 -1 s +( the passive button/key combination on the specified ) 121569 -147.00 32 s +6 sf +(window) 130350 0.00 -1 s +5 sf +( if) 132632 -147.00 32 s +( it was grabbed) 149352 -147.67 32 s +52832.0 30457.0 m +(by) 55654 0.00 -1 s +( this client. A zero ) 76749 -76.00 32 s +6 sf +(modifier) 86311 0.00 -1 s +5 sf +( mask is equivalent to issuing the request) 132104 -76.00 32 s +( for all possible) 149352 -76.67 32 s +52832.0 33618.0 m +(modifier) 62548 0.00 -1 s +( combinations including the) 93833 -49.00 32 s +( combination of no modifiers. A ) 130609 -49.50 32 s +6 sf +(button) 137821 0.00 -1 s +5 sf +( of ) 141484 -49.50 32 s +2 sf +(:any) 146814 0.00 -1 s +5 sf +( is) 149352 -50.00 32 s +52832.0 36779.0 m +(equivalent) 64587 0.00 -1 s +( to issuing the request for all possible buttons. This has no effect on an) 142058 -149.00 32 s +( active) 149352 -150.00 32 s +52832.0 39940.0 m +(grab.) 58552 0.00 -1 s +6 sf +52832.0 46217.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +6 sf +52832.0 51003.0 m +(button) 60044 0.00 -1 s +( ) 60722 -28.00 32 s +5 sf +(\037 The button \(type ) 83654 -28.00 32 s +2 sf +(card8) 90551 0.00 -1 s +5 sf +(\) that is released or ) 112588 -28.00 32 s +2 sf +(:any) 117918 0.00 -1 s +5 sf +(.) 118624 0.00 -1 s +2 sf +52832.0 55790.0 m +(:modifiers) 65212 0.00 -1 s +( ) 65895 -23.00 32 s +5 sf +(\037 A ) 72121 -22.50 32 s +2 sf +(modifier\036mask) 89831 0.00 -1 s +5 sf +(.) 90537 0.00 -1 s +20320.0 62789.0 m +0.0 0.0 m +newpath +20455 61165 av +148878 61163 as +[] 0 setdash +dp +149352.0 62789.0 m +/timsps12b 7 declareFont +7 sf +20320.0 66175.0 m +(Grabbing) 34433 0.00 -1 s +52832.0 h +2 sf +(12.10) 59182 0.00 -1 s +61532.0 h +() 61532 0.00 -1 s +5 sf +(CLX) 67175 0.00 -1 s +( provides the) 85421 1834.00 32 s +2 sf +( grab\036keyboard) 105990 1834.00 32 s +5 sf +( and ) 115144 1833.50 32 s +2 sf +(ungrab\036keyboard) 136311 0.00 -1 s +5 sf +( functions) 149352 1833.00 32 s +2 sf +7 sf +20320.0 69562.0 m +(the) 24833 0.00 -1 s +( Keyboard) 40188 23.00 32 s +52832.0 h +5 sf +(for) 56121 0.00 -1 s +( actively grabbing and releasing control of the keyboard.) 119735 -32.00 32 s +7 sf +( ) 120543 -39.00 32 s +2 sf +34544.0 75839.0 m +(grab\036keyboard) 52573 0.00 -1 s +( ) 53207 -72.00 32 s +6 sf +(window ) 62622 -72.00 32 s +5 sf +(&key ) 69526 -72.00 32 s +2 sf +(:owner\036p :sync\036pointer\036p :sync\036keyboard\036p) 121422 -72.00 32 s +( ) 122055 -73.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 79000.0 m +2 sf +(:time) 59097 0.00 -1 s +34544.0 82161.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +6 sf +52832.0 85321.0 m +( grab\036status \037 ) 70897 -31.00 32 s +5 sf +(One of ) 79298 -31.00 32 s +2 sf +(:already\036grabbed) 100303 0.00 -1 s +5 sf +(, ) 101684 -31.00 32 s +2 sf +(:frozen) 110301 0.00 -1 s +5 sf +(, ) 111683 -30.00 32 s +2 sf +(:invalid\036time) 127199 0.00 -1 s +5 sf +(, ) 128580 -31.00 32 s +149352.0 h +52832.0 88482.0 m +( ) 58408 -9.00 32 s +( ) 65373 -9.50 32 s +2 sf +( :not\036viewable) 82368 -10.00 32 s +5 sf +(, or ) 86817 -9.50 32 s +2 sf +(:success) 96378 0.00 -1 s +5 sf +(.) 97084 0.00 -1 s +52832.0 93201.0 m +(Actively) 62549 0.00 -1 s +( grabs control of) 80429 -231.00 32 s +( the keyboard. Further key events are reported only to the grab\036) 149352 -231.55 32 s +52832.0 96362.0 m +(bing) 57849 0.00 -1 s +( client. The request overrides any) 95910 89.00 32 s +( active keyboard grab by this client. ) 137597 88.43 32 s +2 sf +(grab\036key\036) 149352 0.00 -1 s +52832.0 99523.0 m +(board) 60045 0.00 -1 s +5 sf +( generates ) 72028 -42.00 32 s +2 sf +(:focus\036in) 82529 0.00 -1 s +5 sf +( and ) 87931 -42.50 32 s +2 sf +(:focus\036out) 99998 0.00 -1 s +5 sf +( events.) 108577 -43.00 32 s +52832.0 105799.0 m +(If) 54710 0.00 -1 s +( ) 55671 255.00 32 s +2 sf +(:owner\036p) 66641 0.00 -1 s +5 sf +( is ) 70446 255.50 32 s +2 sf +(nil) 73583 0.00 -1 s +5 sf +(, all generated key events are reported with respect to ) 137026 255.50 32 s +6 sf +(window) 145807 0.00 -1 s +5 sf +(. If) 149352 255.00 32 s +52832.0 108960.0 m +2 sf +(:owner\036p) 63802 0.00 -1 s +5 sf +( is true, then a generated key event that would normally) 124678 -190.00 32 s +( be reported to this cli\036) 149352 -190.60 32 s +52832.0 112121.0 m +(ent) 56280 0.00 -1 s +( is reported normally; otherwise the event is reported with respect to the) 139030 130.00 32 s +( ) 139865 129.00 32 s +6 sf +(window) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 115282.0 m +(Both) 58320 0.00 -1 s +( ) 58796 -230.00 32 s +2 sf +(:key\036press) 71178 0.00 -1 s +5 sf +( and) 75729 -230.00 32 s +( ) 76204 -231.00 32 s +2 sf +(:key\036release) 90620 0.00 -1 s +5 sf +( events are always reported, independent of any event) 149352 -230.50 32 s +52832.0 118443.0 m +(selection) 62863 0.00 -1 s +( made by the client.) 84892 -38.00 32 s +52832.0 124720.0 m +(If) 54710 0.00 -1 s +( ) 56969 1553.00 32 s +2 sf +(:sync\036keyboard\036p) 78132 0.00 -1 s +5 sf +( is ) 84532 1553.00 32 s +2 sf +(nil) 87669 0.00 -1 s +5 sf +(,) 88375 0.00 -1 s +( keyboard event processing continues normally) 149352 1552.40 32 s +52832.0 127881.0 m +(\(asynchronously\);) 73207 0.00 -1 s +( if the keyboard is currently frozen by) 115670 -35.00 32 s +( this client, then processing of) 149352 -35.60 32 s +52832.0 131041.0 m +(keyboard) 63332 0.00 -1 s +( events is resumed. If ) 87453 -129.00 32 s +2 sf +(:sync\036keyboard\036p) 108616 0.00 -1 s +5 sf +( is) 111075 -129.00 32 s +( true, the keyboard \(as seen via the) 149352 -129.57 32 s +52832.0 134202.0 m +(protocol\)) 63175 0.00 -1 s +( appears to freeze, and no further keyboard events are generated by the server) 149352 -97.62 32 s +52832.0 137363.0 m +(until) 58006 0.00 -1 s +( the grabbing client issues a releasing ) 104090 459.00 32 s +2 sf +(allow\036events) 118979 0.00 -1 s +5 sf +( request. Actual keyboard) 149352 459.33 32 s +52832.0 140524.0 m +(changes) 61922 0.00 -1 s +( are not lost while the keyboard is frozen; they are simply queued for later proc\036) 149352 -184.60 32 s +52832.0 143685.0 m +(essing.) 60593 0.00 -1 s +52832.0 149962.0 m +(If) 54710 0.00 -1 s +( ) 55603 187.00 32 s +2 sf +(:sync\036pointer\036p) 74098 0.00 -1 s +5 sf +( is ) 77766 187.00 32 s +2 sf +(nil) 80903 0.00 -1 s +5 sf +(,) 81609 0.00 -1 s +( pointer event processing is unaffected by activation of the) 149352 186.44 32 s +52832.0 153122.0 m +(grab.) 58552 0.00 -1 s +( If ) 61582 -130.00 32 s +2 sf +(:sync\036pointer\036p) 80077 0.00 -1 s +5 sf +( is) 82535 -130.00 32 s +( true, the pointer \(as seen via the protocol\) appears to freeze,) 149352 -130.55 32 s +52832.0 156283.0 m +(and) 56907 0.00 -1 s +( no further pointer events are generated by the) 106627 -289.00 32 s +( server until the grabbing client issues a) 149352 -289.57 32 s +52832.0 159444.0 m +(releasing) 63018 0.00 -1 s +( ) 63623 -101.00 32 s +2 sf +(allow\036events) 78512 0.00 -1 s +5 sf +( request. Actual pointer changes are not lost while the pointer is) 149352 -100.55 32 s +52832.0 162605.0 m +(frozen;) 60822 0.00 -1 s +( they are simply queued for later) 97317 -30.00 32 s +( processing.) 110767 -31.00 32 s +52832.0 168882.0 m +(The) 57220 0.00 -1 s +( grab can fail with a status of:) 90559 -17.86 32 s +/symbb8 4 declareFont +4 sf +52832.0 175429.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:already\036grabbed) 78917 0.00 -1 s +5 sf +( if the keyboard is actively grabbed by some other client) 141992 -40.60 32 s +4 sf +52832.0 181977.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:frozen) 66529 0.00 -1 s +5 sf +( if the keyboard is frozen by an active grab from another client) 136866 -28.92 32 s +4 sf +52832.0 188524.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:not\036viewable) 74211 0.00 -1 s +5 sf +( if ) 77286 -30.00 32 s +6 sf +(window) 86067 0.00 -1 s +5 sf +( is not viewable) 103767 -30.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 16 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036134) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/symbb8 4 declareFont +4 sf +52832.0 22849.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:invalid\036time) 73428 0.00 -1 s +/timsps10 5 declareFont +5 sf +( if the specified time is earlier than the) 118091 156.00 32 s +( last\036keyboard\036grab time or) 149352 155.33 32 s +57912.0 26010.0 m +(later) 62925 0.00 -1 s +( than the current server time. Otherwise, ) 110068 141.00 32 s +2 sf +(grab\036keyboard) 128097 0.00 -1 s +5 sf +( returns a status of) 149352 141.25 32 s +57912.0 29170.0 m +2 sf +(:success) 67473 0.00 -1 s +5 sf +( and last\036keyboard\036grab time is set to) 108333 -165.00 32 s +( the specified time, with current\036time) 149352 -165.60 32 s +57912.0 32331.0 m +(replaced) 67469 0.00 -1 s +( by current server time.) 93585 -33.75 32 s +/timsps10i 6 declareFont +6 sf +52832.0 38608.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +52832.0 43394.0 m +(:owner\036p) 63802 0.00 -1 s +( ) 64478 -30.00 32 s +5 sf +(\037) 67300 0.00 -1 s +( If true, all client windows receive keyboard input normally.) 134970 -30.56 32 s +2 sf +52832.0 49671.0 m +(:sync\036pointer\036p) 71327 0.00 -1 s +( ) 72155 122.00 32 s +5 sf +(\037 Indicates whether the pointer is in) 114737 122.00 32 s +( synchronous or asynchronous) 149352 121.33 32 s +57912.0 52832.0 m +(mode.) 64888 0.00 -1 s +( ) 65543 -51.00 32 s +2 sf +52832.0 59109.0 m +(:sync\036keyboard\036p) 73995 0.00 -1 s +( ) 74745 44.00 32 s +5 sf +(\037) 77567 0.00 -1 s +( Indicates whether the keyboard is in synchronous or asynchro\036) 149352 43.44 32 s +57912.0 62270.0 m +(nous) 63243 0.00 -1 s +( mode. ) 71549 -41.00 32 s +2 sf +52832.0 68546.0 m +(:time) 59097 0.00 -1 s +( ) 59796 -7.00 32 s +5 sf +(\037 A ) 66053 -7.00 32 s +2 sf +(timestamp) 78746 0.00 -1 s +5 sf +(. ) 80151 -7.00 32 s +2 sf +34544.0 74823.0 m +(ungrab\036keyboard) 55711 0.00 -1 s +( ) 56345 -72.00 32 s +6 sf +(display ) 65131 -72.00 32 s +5 sf +(&key ) 72035 -72.00 32 s +2 sf +(:time) 78300 0.00 -1 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 79542.0 m +(Releases) 62706 0.00 -1 s +( the keyboard if this client has it actively grabbed \(from either ) 131323 -172.58 32 s +2 sf +(grab\036keyboard) 149352 0.00 -1 s +5 sf +52832.0 82702.0 m +(or) 55182 0.00 -1 s +( ) 55729 -159.00 32 s +2 sf +(grab\036key) 66545 0.00 -1 s +5 sf +(\), and releases any queued events. The request has no effect if the specified) 149352 -158.62 32 s +52832.0 85863.0 m +(time) 57848 0.00 -1 s +( is earlier than) 73858 -18.00 32 s +( the last\036keyboard\036grab time or is later than the current server time.) 149352 -18.55 32 s +52832.0 89024.0 m +(An) 56280 0.00 -1 s +( ) 56683 -303.00 32 s +2 sf +(ungrab\036keyboard) 77850 0.00 -1 s +5 sf +( is performed automatically if the event) 120544 -303.00 32 s +( window for an active key\036) 149352 -303.60 32 s +52832.0 92185.0 m +(board) 59257 0.00 -1 s +( grab becomes not viewable.) 91259 -52.00 32 s +6 sf +52832.0 98462.0 m +(display) 60984 0.00 -1 s +( ) 61669 -21.00 32 s +5 sf +(\037 A ) 67899 -20.50 32 s +2 sf +(display) 76525 0.00 -1 s +5 sf +(. ) 77916 -21.00 32 s +2 sf +52832.0 103248.0 m +(:time) 59097 0.00 -1 s +( ) 59796 -7.00 32 s +5 sf +(\037 A) 65354 -7.00 32 s +( ) 66052 -8.00 32 s +2 sf +(timestamp) 78745 0.00 -1 s +5 sf +(.) 79451 0.00 -1 s +20320.0 110247.0 m +0.0 0.0 m +newpath +20455 108623 av +148878 108621 as +[] 0 setdash +dp +149352.0 110247.0 m +/timsps12b 7 declareFont +7 sf +20320.0 113634.0 m +(Grabbing) 34433 0.00 -1 s +( a Key) 43688 19.00 32 s +52832.0 h +2 sf +(12.11) 59182 0.00 -1 s +61532.0 h +() 61532 0.00 -1 s +5 sf +(The) 65920 0.00 -1 s +( following paragraphs describe the functions used for passively grabbing) 149352 153.22 32 s +52832.0 116795.0 m +(and) 56907 0.00 -1 s +( releasing the) 71841 -56.00 32 s +( keyboard.) 83696 -57.00 32 s +2 sf +34544.0 123071.0 m +(grab\036key) 45360 0.00 -1 s +( ) 46025 -41.00 32 s +6 sf +(window key ) 59896 -40.50 32 s +5 sf +(&key \() 67770 -41.00 32 s +2 sf +(:modifiers) 80150 0.00 -1 s +5 sf +( 0\) ) 83831 -40.50 32 s +2 sf +(:owner\036p :sync\036pointer\036p ) 114627 -40.50 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 126232.0 m +2 sf +(:sync\036keyboard\036p) 73995 0.00 -1 s +( :time) 80874 -92.00 32 s +5 sf +52832.0 130951.0 m +(This) 57849 0.00 -1 s +( request establishes a passive grab on the keyboard. If the specified ) 132690 -130.83 32 s +6 sf +(key) 136449 0.00 -1 s +5 sf +( \(which can) 149352 -130.50 32 s +52832.0 134112.0 m +(also) 57378 0.00 -1 s +( be a modifier key\)) 77757 -273.00 32 s +( is pressed \(whether or not any specified modifier keys are down\),) 149352 -273.55 32 s +52832.0 137273.0 m +(and) 56907 0.00 -1 s +( either of the following is true:) 91282 -18.00 32 s +4 sf +52832.0 143820.0 m +(\267) 53872 0.00 -1 s +57912.0 h +6 sf +(window) 66693 0.00 -1 s +5 sf +( is an ancestor of \(or is\) the focus window) 113927 -19.89 32 s +4 sf +52832.0 150368.0 m +(\267) 53872 0.00 -1 s +57912.0 h +6 sf +(window) 66693 0.00 -1 s +5 sf +( is a descendant of the focus window and contains the pointer) 135692 -32.91 32 s +4 sf +52832.0 156916.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(These) 64651 0.00 -1 s +( constraints are not satisfied for any ancestor of ) 118551 -27.89 32 s +6 sf +(window) 127332 0.00 -1 s +5 sf +(, then the following) 149352 -27.67 32 s +57912.0 160076.0 m +(occurs:) 66061 0.00 -1 s +4 sf +57912.0 166624.0 m +(\267) 58952 0.00 -1 s +62992.0 h +5 sf +(The) 67380 0.00 -1 s +( keyboard is actively grabbed as described in ) 118386 -50.63 32 s +2 sf +(grab\036keyboard) 136415 0.00 -1 s +4 sf +57912.0 173172.0 m +(\267) 58952 0.00 -1 s +62992.0 h +5 sf +(The) 67380 0.00 -1 s +( last\036keyboard\036grab time is set to the time that the ) 121323 -280.00 32 s +6 sf +(key) 125082 0.00 -1 s +5 sf +( was pressed \(as trans\036) 149352 -279.75 32 s +62992.0 176332.0 m +(mitted) 70203 0.00 -1 s +( in the ) 77878 -28.67 32 s +2 sf +(:key\036press) 90260 0.00 -1 s +5 sf +( event\)) 97988 -29.00 32 s +4 sf +57912.0 182880.0 m +(\267) 58952 0.00 -1 s +62992.0 h +5 sf +(The) 67380 0.00 -1 s +( ) 68051 -35.00 32 s +2 sf +(:key\036press) 80433 0.00 -1 s +5 sf +( event is reported) 99839 -35.67 32 s +52832.0 189157.0 m +(The) 57220 0.00 -1 s +( interpretation of the remaining arguments) 103725 -244.00 32 s +( is as for ) 113093 -244.50 32 s +2 sf +(grab\036keyboard) 131122 0.00 -1 s +5 sf +(. The active grab) 149352 -244.67 32 s +52832.0 192318.0 m +(is) 54714 0.00 -1 s +( terminated automatically when the specified ) 104425 -283.00 32 s +6 sf +(key) 108184 0.00 -1 s +5 sf +( has been released, independent of) 145482 -283.00 32 s +( the) 149352 -284.00 32 s +52832.0 195478.0 m +(state) 58004 0.00 -1 s +( of the modifier keys.) 82138 -20.75 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 17 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036135) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(A) 54869 0.00 -1 s +( zero modifier mask is equivalent to issuing) 103056 -159.00 32 s +( the request for all possible modifier com\036) 149352 -159.57 32 s +52832.0 25739.0 m +(binations) 63179 0.00 -1 s +( \(including the combination of no modifiers\). It is not required) 130837 -280.00 32 s +( that all specified) 149352 -280.67 32 s +52832.0 28900.0 m +(modifiers) 63646 0.00 -1 s +( have currently assigned keycodes. A ) 106052 -51.00 32 s +/timsps10i 6 declareFont +6 sf +(key) 109811 0.00 -1 s +5 sf +( of ) 113471 -51.00 32 s +2 sf +(:any) 118801 0.00 -1 s +5 sf +( is equivalent to issuing) 145250 -51.00 32 s +( the) 149352 -52.00 32 s +52832.0 32060.0 m +(request) 60981 0.00 -1 s +( for all possible keycodes. Otherwise, the ) 107911 -47.00 32 s +6 sf +(key) 111670 0.00 -1 s +5 sf +( must be in the range specified) 145872 -47.00 32 s +( by) 149352 -48.00 32 s +52832.0 35221.0 m +2 sf +(display\036min\036keycode) 77758 0.00 -1 s +5 sf +( and ) 83115 -65.00 32 s +2 sf +(display\036max\036keycode) 108510 0.00 -1 s +5 sf +( in) 111346 -65.00 32 s +( the connection setup.) 135760 -65.67 32 s +6 sf +52832.0 41498.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +6 sf +52832.0 46284.0 m +(key) 56591 0.00 -1 s +( ) 57263 -34.00 32 s +5 sf +(\037 The key \(type ) 77034 -34.00 32 s +2 sf +(card8) 83931 0.00 -1 s +5 sf +(\) to be grabbed or) 103856 -34.00 32 s +( ) 104527 -35.00 32 s +2 sf +(:any) 109857 0.00 -1 s +5 sf +(.) 110563 0.00 -1 s +2 sf +52832.0 51071.0 m +(:modifiers) 65212 0.00 -1 s +( ) 65895 -23.00 32 s +5 sf +(\037 A ) 72121 -22.50 32 s +2 sf +(modifier\036mask) 89831 0.00 -1 s +5 sf +(.) 90537 0.00 -1 s +2 sf +52832.0 57348.0 m +(:owner\036p) 63802 0.00 -1 s +( ) 64478 -30.00 32 s +5 sf +(\037) 67300 0.00 -1 s +( If true, all client windows receive keyboard input normally.) 134970 -30.56 32 s +2 sf +52832.0 63624.0 m +(:sync\036pointer\036p) 71327 0.00 -1 s +( ) 72155 122.00 32 s +5 sf +(\037 Indicates whether the pointer is in) 114737 122.00 32 s +( synchronous or asynchronous) 149352 121.33 32 s +57912.0 66785.0 m +(mode.) 64888 0.00 -1 s +( ) 65543 -51.00 32 s +2 sf +52832.0 73062.0 m +(:sync\036keyboard\036p) 73995 0.00 -1 s +( ) 74745 44.00 32 s +5 sf +(\037) 77567 0.00 -1 s +( Indicates whether the keyboard is in synchronous or asynchro\036) 149352 43.44 32 s +57912.0 76223.0 m +(nous) 63243 0.00 -1 s +( mode. ) 71549 -41.00 32 s +2 sf +52832.0 82499.0 m +(:time) 59097 0.00 -1 s +( ) 59796 -7.00 32 s +5 sf +(\037 A ) 66053 -7.00 32 s +2 sf +(timestamp) 78746 0.00 -1 s +5 sf +(. ) 80151 -7.00 32 s +2 sf +34544.0 88776.0 m +(ungrab\036key) 48498 0.00 -1 s +( ) 49157 -47.00 32 s +6 sf +(window key) 62356 -47.00 32 s +( ) 63014 -48.00 32 s +5 sf +(&key \() 70882 -47.00 32 s +2 sf +(:modifiers) 83262 0.00 -1 s +5 sf +( 0\)) 86270 -48.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 93495.0 m +(Releases) 62706 0.00 -1 s +( the ) 67142 -212.00 32 s +6 sf +(key) 70901 0.00 -1 s +5 sf +( combination on the specified ) 103936 -211.80 32 s +6 sf +(window) 112717 0.00 -1 s +5 sf +( if it was grabbed by this client. A) 149352 -211.50 32 s +52832.0 96655.0 m +(zero) 57688 0.00 -1 s +( modifier mask of ) 77943 -148.00 32 s +2 sf +(:any ) 83831 -148.00 32 s +5 sf +(is equivalent to issuing the) 113340 -148.00 32 s +( request for all possible modifier) 149352 -148.60 32 s +52832.0 99816.0 m +(combinations) 68038 0.00 -1 s +( \(including the combination of no modifiers\). A ) 121805 -88.00 32 s +6 sf +(key) 125564 0.00 -1 s +5 sf +( of ) 129150 -88.00 32 s +2 sf +(:any) 134480 0.00 -1 s +5 sf +( is) 136980 -88.00 32 s +( equivalent) 149352 -89.00 32 s +52832.0 102977.0 m +(to) 55027 0.00 -1 s +( issuing) 63666 -64.00 32 s +( the request for all possible keycodes. ) 106320 -64.57 32 s +2 sf +(ungrab\036key) 120274 0.00 -1 s +5 sf +( has no effect on an active) 149352 -64.50 32 s +52832.0 106138.0 m +(grab.) 58552 0.00 -1 s +6 sf +52832.0 112415.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +6 sf +52832.0 117201.0 m +(key) 56591 0.00 -1 s +( ) 57266 -31.00 32 s +5 sf +(\037) 60088 0.00 -1 s +( The key \(type ) 77047 -31.50 32 s +2 sf +(card8) 83944 0.00 -1 s +5 sf +(\) to be released or ) 104708 -31.60 32 s +2 sf +(:any) 110038 0.00 -1 s +5 sf +(.) 110744 0.00 -1 s +2 sf +52832.0 121988.0 m +(:modifiers) 65212 0.00 -1 s +( ) 65895 -23.00 32 s +5 sf +(\037 A ) 72121 -22.50 32 s +2 sf +(modifier\036mask) 89831 0.00 -1 s +5 sf +(.) 90537 0.00 -1 s +20320.0 128987.0 m +0.0 0.0 m +newpath +20455 127363 av +148878 127361 as +[] 0 setdash +dp +149352.0 128987.0 m +/timsps12b 7 declareFont +7 sf +20320.0 132374.0 m +(Event) 28785 0.00 -1 s +( Types) 38292 5.00 32 s +52832.0 h +2 sf +(12.12) 59182 0.00 -1 s +5 sf +() 59182 0.00 -1 s +61377.0 h +(The) 65765 0.00 -1 s +( following paragraphs contain) 99415 -42.00 32 s +( detailed descriptions of the contents of each) 149352 -42.57 32 s +52832.0 135534.0 m +(event) 58944 0.00 -1 s +( type. In CLX, events are not actually) 100350 -142.00 32 s +( represented by structures, but rather by lists) 149352 -142.57 32 s +52832.0 138695.0 m +(of) 55182 0.00 -1 s +( keyword values passed to handler functions or by values bound to symbols within) 145426 -227.00 32 s +( the) 149352 -228.00 32 s +52832.0 141856.0 m +(clauses) 60982 0.00 -1 s +( of ) 64496 -124.00 32 s +2 sf +(event\036case) 76875 0.00 -1 s +5 sf +( and ) 82114 -124.00 32 s +2 sf +(event\036cond) 95280 0.00 -1 s +5 sf +( forms. Nevertheless, it is convenient to describe) 149352 -123.86 32 s +52832.0 145017.0 m +(event) 58944 0.00 -1 s +( contents in terms of slots and to identify the components of events with slot name) 149352 -164.93 32 s +52832.0 148178.0 m +(symbols.) 62946 0.00 -1 s +( In fact, CLX uses the ) 87124 -215.67 32 s +2 sf +(declare\036event) 103264 0.00 -1 s +5 sf +( macro to define event slot symbols and to) 149352 -215.50 32 s +52832.0 151339.0 m +(map) 57691 0.00 -1 s +( these symbols to specific event data items returned by the X) 124894 -125.00 32 s +( server \(see paragraph) 149352 -125.67 32 s +52832.0 154500.0 m +(12.12.8,) 62005 0.00 -1 s +( Declaring Event Types\). ) 90876 -50.75 32 s +52832.0 160099.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe each event type, listing its ) 121204 -188.00 32 s +2 sf +(event\036key) 132801 0.00 -1 s +5 sf +( keyword) 143192 -188.00 32 s +( sym\036) 149352 -189.00 32 s +52832.0 163260.0 m +(bol) 56438 0.00 -1 s +( and its slot name symbols. An event keyword symbol identifies a specific event) 143365 -283.00 32 s +( type.) 149352 -284.00 32 s +52832.0 166421.0 m +(An) 56280 0.00 -1 s +( event keyword symbol can be given as an argument to ) 116017 -276.55 32 s +2 sf +(send\036event) 128870 0.00 -1 s +5 sf +( or to an event han\036) 149352 -276.60 32 s +52832.0 169582.0 m +(dler) 57219 0.00 -1 s +( function; it can also appear in the ) 96817 71.00 32 s +6 sf +(event\036match) 110606 0.00 -1 s +5 sf +( form of an ) 124212 71.00 32 s +2 sf +(event\036case) 136591 0.00 -1 s +5 sf +( clause. An) 149352 71.50 32 s +52832.0 172743.0 m +(event) 58944 0.00 -1 s +( slot name symbol identifies a specific event data item. Event slot names appear as) 149352 -198.57 32 s +52832.0 175903.0 m +(keywords) 63803 0.00 -1 s +( with associated values among the arguments passed to ) 127025 49.00 32 s +2 sf +(send\036event) 139878 0.00 -1 s +5 sf +( or to an) 149352 49.00 32 s +52832.0 179064.0 m +(event) 58944 0.00 -1 s +( handler function; as non\036keyword symbols, they can also be in the ) 137284 173.25 32 s +6 sf +(event\036slots) 149352 0.00 -1 s +5 sf +52832.0 182225.0 m +(form) 58316 0.00 -1 s +( of) 61339 -33.00 32 s +( an ) 65348 -33.50 32 s +2 sf +(event\036case) 77727 0.00 -1 s +5 sf +( clause.) 86157 -34.00 32 s +52832.0 187825.0 m +(In) 55182 0.00 -1 s +( certain cases, more than one name symbol is defined for the same event slot. For ex\036) 149352 -119.69 32 s +52832.0 190985.0 m +(ample,) 60434 0.00 -1 s +( in ) 64139 49.00 32 s +2 sf +(:key\036press) 76521 0.00 -1 s +5 sf +( events, the symbols) 99558 49.00 32 s +( ) 100312 48.00 32 s +6 sf +(window) 109093 0.00 -1 s +5 sf +( and ) 114677 48.50 32 s +6 sf +(event\036window) 130351 0.00 -1 s +5 sf +( both refer to the) 149352 48.50 32 s +52832.0 194146.0 m +(same) 58631 0.00 -1 s +( event data item.) 77171 -37.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 18 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036136) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +32173.0 h +2 sf +(Keyboard) 44245 0.00 -1 s +( and) 49378 -122.00 32 s +52832.0 h +(12.12.1) 61299 0.00 -1 s +63649.0 h +() 63649 0.00 -1 s +5 sf +(The) 68037 0.00 -1 s +( keyboard and pointer events are: ) 118414 2022.33 32 s +2 sf +(:key\036press, :key\036release,) 149352 2022.00 32 s +20320.0 29216.0 m +( ) 21020 -6.00 32 s +31654.0 h +(Pointer) 40587 0.00 -1 s +( Events) 49378 -67.00 32 s +5 sf +52832.0 h +2 sf +(:button\036press,) 69683 0.00 -1 s +( :button\036release) 88521 -47.00 32 s +5 sf +(, ) 89887 -46.00 32 s +2 sf +(:motion\036notify) 107282 0.00 -1 s +5 sf +(, ) 108647 -47.00 32 s +2 sf +(:enter\036notify) 123845 0.00 -1 s +5 sf +(, and) 129286 -46.00 32 s +2 sf +( :leave\036notify.) 145694 -47.00 32 s +34544.0 35492.0 m +(:key\036press,) 47632 0.00 -1 s +( :key\036release, :button\036press,) 80885 -66.00 32 s +( :button\036release) 99703 -67.00 32 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +/timsps10i 6 declareFont +6 sf +52832.0 40211.0 m +(Selected) 62234 0.00 -1 s +( by) 65566 -38.00 32 s +5 sf +(:) 66350 0.00 -1 s +( \037) 69839 -39.00 32 s +2 sf +( :key\036press) 82889 -38.00 32 s +5 sf +(, ) 84262 -39.00 32 s +2 sf +(:key\036release) 98678 0.00 -1 s +5 sf +(,) 99384 0.00 -1 s +2 sf +( :button\036press) 116197 -38.00 32 s +5 sf +(, or ) 120588 -38.50 32 s +2 sf +(:button\036release) 138767 0.00 -1 s +5 sf +(.) 139473 0.00 -1 s +2 sf +( ) 140140 -39.00 32 s +52832.0 44998.0 m +(:key\036press) 65214 0.00 -1 s +5 sf +(,) 65920 0.00 -1 s +( and) 70431 -270.00 32 s +2 sf +( :key\036release) 85283 -270.00 32 s +5 sf +( events are generated when a key or pointer button changes) 149352 -269.90 32 s +52832.0 48158.0 m +(state.) 58710 0.00 -1 s +( Note that) 70487 324.00 32 s +2 sf +( :key\036press ) 84930 324.50 32 s +5 sf +(and ) 90036 325.00 32 s +2 sf +(:key\036release) 104452 0.00 -1 s +5 sf +( are generated for all keys, even those) 149352 324.43 32 s +52832.0 51319.0 m +(mapped) 61766 0.00 -1 s +( to) 64452 -215.00 32 s +( modifiers. All of these event types have the same slots. The window contain\036) 149352 -215.54 32 s +52832.0 54480.0 m +(ing) 56438 0.00 -1 s +( the pointer at the time of the event is referred to as the ) 119466 35.00 32 s +6 sf +(source) 126990 0.00 -1 s +5 sf +( window. The ) 143398 35.00 32 s +6 sf +(event) 149352 0.00 -1 s +52832.0 57641.0 m +(window) 61613 0.00 -1 s +5 sf +( is the window) 78665 171.00 32 s +( to which the event is actually reported. The event window is) 149352 170.45 32 s +52832.0 60802.0 m +(found) 59415 0.00 -1 s +( by starting with the source window and looking up the hierarchy for the first win\036) 149352 -195.53 32 s +52832.0 63963.0 m +(dow) 57691 0.00 -1 s +( on which any client has selected interest in the event \(provided) 127036 -215.00 32 s +( no intervening win\036) 149352 -215.67 32 s +52832.0 67124.0 m +(dow) 57691 0.00 -1 s +( prohibits event generation by including the event type in its) 149352 2378.40 32 s +52832.0 70285.0 m +(do\036not\036propagate\036mask\).) 80805 0.00 -1 s +( The actual window used for reporting can be modified by) 145318 -116.00 32 s +( ac\036) 149352 -117.00 32 s +52832.0 73446.0 m +(tive) 57064 0.00 -1 s +( grabs and, in the case of keyboard events, can be modified by the focus window.) 148268 -32.87 32 s +52832.0 79722.0 m +(A) 54869 0.00 -1 s +( ) 55452 -123.00 32 s +2 sf +(:button\036press) 71597 0.00 -1 s +5 sf +( event has the effect of a temporary ) 111203 -123.00 32 s +2 sf +(grab\036button) 125782 0.00 -1 s +5 sf +(. When a pointer but\036) 149352 -122.50 32 s +52832.0 82883.0 m +(ton) 56438 0.00 -1 s +( is pressed and no active pointer grab is in progress, the ancestors of the source win\036) 149352 -124.63 32 s +52832.0 86044.0 m +(dow) 57691 0.00 -1 s +( are searched from the ) 84894 285.00 32 s +6 sf +(root) 89598 0.00 -1 s +5 sf +( down, looking for a passive grab to activate. If no) 149352 285.50 32 s +52832.0 89205.0 m +(matching) 63334 0.00 -1 s +( passive grab) 77894 -87.00 32 s +( on the button exists, then an active grab is started automatically) 149352 -87.55 32 s +52832.0 92366.0 m +(for the client receiving the ) 82880 -87.00 32 s +2 sf +(:button\036press) 99025 0.00 -1 s +5 sf +( event, and the last\036pointer\036grab) 134646 -87.00 32 s +( time) 140282 -86.00 32 s +( is set to) 149352 -86.67 32 s +52832.0 95527.0 m +(the) 56280 0.00 -1 s +( current server time. The effect is essentially equivalent to calling ) 129204 -152.82 32 s +2 sf +(grab\036button) 143783 0.00 -1 s +5 sf +( with) 149352 -153.00 32 s +52832.0 98687.0 m +(the) 56280 0.00 -1 s +( following) 67918 -40.00 32 s +( arguments:) 81122 -41.00 32 s +2 sf +52832.0 103474.0 m +85344.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 102649 av +149352 102649 as +149352 102884 as +52832 102884 as +closepath +fp +/drawmode PL_SET def +52832.0 106635.0 m +(Argument) 65213 0.00 -1 s +85344.0 h +(Description) 99294 0.00 -1 s +52832.0 109796.0 m +85344.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 108971 av +149352 108971 as +149352 109206 as +52832 109206 as +closepath +fp +/drawmode PL_SET def +6 sf +52832.0 112957.0 m +(window) 61613 0.00 -1 s +5 sf +85344.0 h +(The) 89732 0.00 -1 s +( event) 96488 -62.00 32 s +( window.) 106928 -63.00 32 s +52832.0 116118.0 m +6 sf +(button) 60044 0.00 -1 s +5 sf +85344.0 h +(The) 89732 0.00 -1 s +( button) 97618 -32.00 32 s +( that was pressed.) 117427 -32.67 32 s +6 sf +52832.0 119278.0 m +(event\036mask) 65524 0.00 -1 s +5 sf +85344.0 h +(The) 89732 0.00 -1 s +( client's selected pointer events on) 128532 -30.00 32 s +( the event ) 140118 -30.67 32 s +149352.0 h +52832.0 122439.0 m +85344.0 h +( window.) 95798 -49.00 32 s +2 sf +52832.0 125600.0 m +(:modifiers) 65212 0.00 -1 s +85344.0 h +5 sf +(0) 86755 0.00 -1 s +2 sf +52832.0 128761.0 m +(:owner\036p) 63802 0.00 -1 s +85344.0 h +(t) 86283 0.00 -1 s +5 sf +( if the client has) 104201 -27.00 32 s +( ) 104879 -28.00 32 s +2 sf +(:owner\036grab\036button) 128859 0.00 -1 s +5 sf +( selected ) 139305 -27.50 32 s +149352.0 h +52832.0 131922.0 m +85344.0 h +( on the event window; otherwise) 121961 -28.00 32 s +6 sf +( ) 122638 -29.00 32 s +2 sf +(nil) 125775 0.00 -1 s +5 sf +(.) 126481 0.00 -1 s +2 sf +52832.0 135083.0 m +(:sync\036pointer\036p) 71327 0.00 -1 s +85344.0 h +(nil) 88481 0.00 -1 s +52832.0 138244.0 m +(:sync\036keyboard\036p) 73995 0.00 -1 s +85344.0 h +(nil) 88481 0.00 -1 s +52832.0 141405.0 m +(:confine\036to) 65838 0.00 -1 s +85344.0 h +(nil) 88481 0.00 -1 s +52832.0 144566.0 m +(:cursor) 61608 0.00 -1 s +85344.0 h +(nil) 88481 0.00 -1 s +5 sf +52832.0 147726.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 146901 av +149352 146901 as +149352 147019 as +52832 147019 as +closepath +fp +/drawmode PL_SET def +52832.0 152513.0 m +(The) 57220 0.00 -1 s +( ) 57823 -103.00 32 s +2 sf +(:button\036press) 73968 0.00 -1 s +5 sf +( grab is terminated automatically when all buttons are released. The) 149352 -102.50 32 s +52832.0 155674.0 m +(functions) 63334 0.00 -1 s +( ) 63731 -309.00 32 s +2 sf +(ungrab\036pointer) 82230 0.00 -1 s +5 sf +( and ) 87099 -309.00 32 s +2 sf +(change\036active\036pointer\036grab) 119855 0.00 -1 s +5 sf +( can both be) 132644 -309.00 32 s +( used to modify) 149352 -309.67 32 s +52832.0 158835.0 m +(the) 56280 0.00 -1 s +( ) 56945 -41.00 32 s +2 sf +(:button\036press) 73090 0.00 -1 s +5 sf +( grab.) 79474 -42.00 32 s +6 sf +57912.0 165111.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +5 sf +( \037 Type ) 94287 -57.67 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 169898.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 176174.0 m +(code) 63240 0.00 -1 s +2 sf +( ) 63890 -56.00 32 s +5 sf +(\037 Type ) 73812 -55.50 32 s +2 sf +(card8) 80709 0.00 -1 s +5 sf +(.) 81415 0.00 -1 s +62992.0 180961.0 m +(The) 67380 0.00 -1 s +( ) 68214 128.00 32 s +6 sf +(code) 73542 0.00 -1 s +5 sf +( argument varies with the event type. For ) 121670 128.13 32 s +2 sf +(:key\036press) 134052 0.00 -1 s +5 sf +( and ) 139796 128.50 32 s +2 sf +(:key\036re\036) 149352 0.00 -1 s +62992.0 184122.0 m +(lease) 68791 0.00 -1 s +5 sf +(,) 69497 0.00 -1 s +( ) 70469 266.00 32 s +6 sf +(code) 75797 0.00 -1 s +5 sf +( is the keycode \(see paragraph 14.4, Keyboard Encodings\). For) 149352 266.11 32 s +62992.0 187283.0 m +2 sf +(:button\036press) 79137 0.00 -1 s +5 sf +( and ) 84546 -39.00 32 s +2 sf +(:button\036release) 102725 0.00 -1 s +5 sf +(, ) 104098 -39.00 32 s +6 sf +(code) 109426 0.00 -1 s +5 sf +( is the pointer button number.) 142624 -38.60 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 19 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036137) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(x) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +/timsps10 5 declareFont +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 27364.0 m +(If) 64870 0.00 -1 s +( ) 65356 -220.00 32 s +6 sf +(event\036window) 81030 0.00 -1 s +5 sf +( is on) 86706 -220.00 32 s +( the same screen as root, then ) 119019 -220.57 32 s +6 sf +(x) 120272 0.00 -1 s +5 sf +( and ) 125318 -220.50 32 s +6 sf +(y) 126571 0.00 -1 s +5 sf +( are the pointer coor\036) 149352 -220.50 32 s +62992.0 30525.0 m +(dinates) 70986 0.00 -1 s +( relative to the ) 87790 -31.00 32 s +6 sf +(event\036window) 103464 0.00 -1 s +5 sf +(; otherwise ) 116568 -31.00 32 s +6 sf +(x) 117821 0.00 -1 s +5 sf +( and ) 123246 -31.00 32 s +6 sf +(y) 124499 0.00 -1 s +5 sf +( are zero.) 134857 -30.50 32 s +6 sf +57912.0 36802.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 41588.0 m +(If) 64870 0.00 -1 s +( ) 65356 -220.00 32 s +6 sf +(event\036window) 81030 0.00 -1 s +5 sf +( is on) 86706 -220.00 32 s +( the same screen as root, then ) 119019 -220.57 32 s +6 sf +(x) 120272 0.00 -1 s +5 sf +( and ) 125318 -220.50 32 s +6 sf +(y) 126571 0.00 -1 s +5 sf +( are the pointer coor\036) 149352 -220.50 32 s +62992.0 44749.0 m +(dinates) 70986 0.00 -1 s +( relative to the ) 87790 -31.00 32 s +6 sf +(event\036window) 103464 0.00 -1 s +5 sf +(; otherwise ) 116568 -31.00 32 s +6 sf +(x) 117821 0.00 -1 s +5 sf +( and ) 123246 -31.00 32 s +6 sf +(y) 124499 0.00 -1 s +5 sf +( are zero.) 134857 -30.50 32 s +6 sf +57912.0 51026.0 m +(state) 63242 0.00 -1 s +2 sf +( ) 63903 -45.00 32 s +5 sf +(\037 Type ) 73846 -45.00 32 s +2 sf +(card16) 82154 0.00 -1 s +5 sf +(.) 82860 0.00 -1 s +62992.0 55812.0 m +(A) 65029 0.00 -1 s +( mask that gives) 83695 134.00 32 s +( the state of the buttons and modifier keys just before the) 149352 133.45 32 s +62992.0 58973.0 m +(event.) 69810 0.00 -1 s +6 sf +57912.0 65250.0 m +(time) 62770 0.00 -1 s +2 sf +( ) 63430 -46.00 32 s +5 sf +(\037 Type ) 73372 -45.50 32 s +2 sf +(card32) 81680 0.00 -1 s +5 sf +(.) 82386 0.00 -1 s +62992.0 70036.0 m +(A) 65029 0.00 -1 s +( timestamp for the moment when the event occurred.) 124404 -33.00 32 s +6 sf +57912.0 76313.0 m +(root) 62616 0.00 -1 s +2 sf +( ) 63285 -37.00 32 s +5 sf +(\037 Type ) 73244 -37.00 32 s +2 sf +(window) 82651 0.00 -1 s +5 sf +(.) 83357 0.00 -1 s +62992.0 81099.0 m +(The) 67380 0.00 -1 s +( root window of) 85385 -33.00 32 s +( the source window.) 108012 -33.67 32 s +6 sf +57912.0 87376.0 m +(root\036x) 64808 0.00 -1 s +2 sf +( ) 65483 -31.00 32 s +5 sf +(\037 Type) 74779 -31.00 32 s +( ) 75453 -32.00 32 s +2 sf +(int16) 81567 0.00 -1 s +5 sf +(.) 82273 0.00 -1 s +62992.0 92162.0 m +(The) 67380 0.00 -1 s +( x coordinate) 81695 -209.00 32 s +( of the pointer position relative to root at the time of the event.) 149352 -209.54 32 s +6 sf +57912.0 98439.0 m +(root\036y) 64808 0.00 -1 s +5 sf +( \037) 68305 -31.00 32 s +6 sf +( ) 68980 -31.00 32 s +5 sf +(Type) 74779 0.00 -1 s +( ) 75453 -32.00 32 s +2 sf +(int16) 81567 0.00 -1 s +5 sf +(.) 82273 0.00 -1 s +62992.0 103226.0 m +(The) 67380 0.00 -1 s +( y coordinate) 81695 -209.00 32 s +( of the pointer position relative to root at the time of the event) 148646 -209.54 32 s +6 sf +(.) 149352 0.00 -1 s +57912.0 109502.0 m +(child) 63555 0.00 -1 s +( ) 64231 -30.00 32 s +5 sf +(\037 Type \() 75143 -30.00 32 s +2 sf +(or null window) 93272 -30.00 32 s +5 sf +(\).) 94917 0.00 -1 s +62992.0 114289.0 m +(If) 64870 0.00 -1 s +( the source) 76677 -209.00 32 s +( window is an inferior of the ) 108047 -209.57 32 s +6 sf +(event\036window) 123721 0.00 -1 s +5 sf +(, ) 124924 -209.00 32 s +6 sf +(child) 130567 0.00 -1 s +5 sf +( is set to the child) 149352 -209.60 32 s +62992.0 117450.0 m +(of) 65342 0.00 -1 s +( ) 65762 -286.00 32 s +6 sf +(event\036window) 81436 0.00 -1 s +5 sf +( that is an ancestor of \(or is\) the source window; otherwise, it is) 149352 -285.85 32 s +62992.0 120610.0 m +(set) 66127 0.00 -1 s +( to) 69019 -9.00 32 s +6 sf +( ) 69715 -10.00 32 s +2 sf +(nil) 72852 0.00 -1 s +6 sf +(.) 73558 0.00 -1 s +57912.0 126887.0 m +(same\036screen\036p) 74366 0.00 -1 s +( ) 75016 -56.00 32 s +5 sf +(\037 Type ) 84938 -55.50 32 s +2 sf +(boolean) 94346 0.00 -1 s +5 sf +(.) 95052 0.00 -1 s +62992.0 131674.0 m +(True) 68319 0.00 -1 s +( if ) 71392 -31.00 32 s +6 sf +(event\036window) 87066 0.00 -1 s +5 sf +( and root are on the same screen.) 123839 -30.86 32 s +2 sf +34544.0 137950.0 m +(:motion\036notify) 51939 0.00 -1 s +52832.0 h +5 sf +(Event) 59415 0.00 -1 s +( Type) 65837 -83.00 32 s +6 sf +52832.0 142669.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67167 -41.00 32 s +5 sf +(\037 ) 70654 -41.00 32 s +2 sf +(:button\0361\036motion) 91342 0.00 -1 s +5 sf +(,) 92048 0.00 -1 s +2 sf +( :button\0362\036motion) 113402 -40.00 32 s +5 sf +(,) 114108 0.00 -1 s +2 sf +( :button\0363\036motion) 135461 -41.00 32 s +5 sf +(,) 136167 0.00 -1 s +57912.0 145830.0 m +2 sf +(:button\0364\036motion) 78600 0.00 -1 s +5 sf +(,) 79306 0.00 -1 s +2 sf +( :button\0365\036motion) 100656 -44.00 32 s +5 sf +(,) 101362 0.00 -1 s +( ) 102023 -45.00 32 s +2 sf +(:button\036motion) 120361 0.00 -1 s +5 sf +(, or) 124079 -44.00 32 s +2 sf +( :pointer\036motion) 143860 -45.00 32 s +5 sf +(.) 144566 0.00 -1 s +52832.0 150616.0 m +(The) 57220 0.00 -1 s +( ) 57639 -287.00 32 s +2 sf +(:motion\036notify) 75034 0.00 -1 s +5 sf +( event) 81565 -287.00 32 s +( is generated when the pointer moves. A ) 125427 -287.50 32 s +2 sf +(:motion\036notify) 142822 0.00 -1 s +5 sf +( event) 149352 -288.00 32 s +52832.0 153777.0 m +(has) 56594 0.00 -1 s +( the same slots as ) 78183 257.20 32 s +2 sf +(:button\036press,) 95034 0.00 -1 s +5 sf +( ) 95998 258.00 32 s +2 sf +(:button\036release) 114177 0.00 -1 s +5 sf +(, ) 115846 257.00 32 s +2 sf +(:key\036press) 128228 0.00 -1 s +5 sf +(, and ) 134936 257.50 32 s +2 sf +(:key\036release) 149352 0.00 -1 s +52832.0 156938.0 m +5 sf +(events,) 60748 0.00 -1 s +( with the exception that the ) 91200 -149.83 32 s +6 sf +(code) 96528 0.00 -1 s +5 sf +( slot is replaced by the ) 121653 -149.50 32 s +6 sf +(hint\036p) 128393 0.00 -1 s +5 sf +( slot. As with these) 149352 -149.50 32 s +52832.0 160099.0 m +(other) 58630 0.00 -1 s +( events, the event window for ) 92128 -99.00 32 s +2 sf +(:motion\036notify) 109523 0.00 -1 s +5 sf +( is found by starting with the source) 149352 -99.00 32 s +52832.0 163260.0 m +(window) 61923 0.00 -1 s +( and looking up the hierarchy for the first window on which any client has se\036) 149352 -17.93 32 s +52832.0 166421.0 m +(lected) 59570 0.00 -1 s +( interest in the event \(provided no intervening window prohibits event generation) 149352 -166.82 32 s +52832.0 169582.0 m +(by) 55654 0.00 -1 s +( including ) 67232 -247.00 32 s +2 sf +(:motion\036notify) 84627 0.00 -1 s +5 sf +( in its do\036not\036propagate\036mask\).The actual window used) 145605 -247.00 32 s +( for) 149352 -248.00 32 s +52832.0 172743.0 m +(reporting) 63175 0.00 -1 s +( can be modified by active grabs.) 100336 -37.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 20 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036138) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:motion\036notify) 70227 0.00 -1 s +/timsps10 5 declareFont +5 sf +( events are generated only when the motion begins and ends) 136809 -129.00 32 s +( in the win\036) 149352 -129.67 32 s +52832.0 25739.0 m +(dow.) 58397 0.00 -1 s +( The) 63433 -58.00 32 s +( granularity of motion events is not guaranteed, but a client selecting for mo\036) 149352 -58.54 32 s +52832.0 28900.0 m +(tion) 57222 0.00 -1 s +( events is guaranteed to get at least one event when the pointer moves and comes to) 149352 -129.81 32 s +52832.0 32060.0 m +(rest.) 57612 0.00 -1 s +( Selecting ) 69102 -212.00 32 s +2 sf +(:pointer\036motion) 88222 0.00 -1 s +5 sf +( generates ) 99866 -211.50 32 s +2 sf +(:motion\036notify) 117261 0.00 -1 s +5 sf +( events regardless of the state) 149352 -211.60 32 s +52832.0 35221.0 m +(of) 55182 0.00 -1 s +( the pointer buttons. By selecting some subset of ) 109815 -96.00 32 s +2 sf +(:button[1\0365]\036motion) 133792 0.00 -1 s +5 sf +( instead, ) 143713 -95.50 32 s +2 sf +(:mo\036) 149352 0.00 -1 s +52832.0 38382.0 m +(tion\036notify) 65527 0.00 -1 s +5 sf +( events are only received when one or more of the specified buttons are) 149352 257.23 32 s +52832.0 41543.0 m +(pressed.) 62001 0.00 -1 s +( By selecting ) 76588 -285.00 32 s +2 sf +(:button\036motion) 94926 0.00 -1 s +5 sf +(, ) 96053 -285.00 32 s +2 sf +(:motion\036notify) 113448 0.00 -1 s +5 sf +( events are only received when at) 149352 -285.00 32 s +52832.0 44704.0 m +(least) 58004 0.00 -1 s +( one button is pressed. If ) 85299 -192.83 32 s +2 sf +(:pointer\036motion\036hint) 110219 0.00 -1 s +5 sf +( is also selected, the server is free to) 149352 -192.50 32 s +52832.0 47865.0 m +(send) 58005 0.00 -1 s +( only one ) 69188 -9.00 32 s +2 sf +(:motion\036notify) 86583 0.00 -1 s +5 sf +(, until either the key or button state changes, the pointer) 149352 -8.90 32 s +52832.0 51026.0 m +(leaves) 59884 0.00 -1 s +( the event window, or the client calls ) 101842 -35.75 32 s +2 sf +(query\036pointer) 118614 0.00 -1 s +5 sf +( or ) 122305 -35.50 32 s +2 sf +(motion\036events) 139231 0.00 -1 s +5 sf +(.) 139937 0.00 -1 s +/timsps10i 6 declareFont +6 sf +57912.0 57302.0 m +(hint\036p) 64652 0.00 -1 s +2 sf +( ) 65312 -46.00 32 s +5 sf +(\037 Type ) 75253 -46.00 32 s +2 sf +(boolean) 84661 0.00 -1 s +5 sf +(.) 85367 0.00 -1 s +62992.0 62089.0 m +(True) 68319 0.00 -1 s +( if the event is a hint generated by selecting ) 117720 -28.80 32 s +2 sf +(:pointer\036motion\036hint) 142640 0.00 -1 s +5 sf +(.) 143346 0.00 -1 s +2 sf +34544.0 68366.0 m +(:enter\036notify,) 50448 0.00 -1 s +( :leave\036notify) 66130 -67.00 32 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +6 sf +52832.0 73084.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67162 -43.50 32 s +5 sf +(\037) 69984 0.00 -1 s +6 sf +( ) 70646 -44.00 32 s +2 sf +(:enter\036window) 88198 0.00 -1 s +6 sf +( ) 88861 -43.00 32 s +5 sf +(or) 91211 0.00 -1 s +6 sf +( ) 91873 -44.00 32 s +2 sf +(:leave\036window) 109270 0.00 -1 s +5 sf +(.) 109976 0.00 -1 s +52832.0 77871.0 m +(If) 54710 0.00 -1 s +( pointer motion or a window hierarchy change causes the pointer to be in a different) 149352 -6.93 32 s +52832.0 81032.0 m +(window) 61923 0.00 -1 s +( than before, ) 76636 -58.67 32 s +2 sf +(:enter\036notify) 91834 0.00 -1 s +5 sf +( and ) 97204 -58.50 32 s +2 sf +(:leave\036notify) 112247 0.00 -1 s +5 sf +( events are generated instead of a) 149352 -58.50 32 s +52832.0 84193.0 m +2 sf +(:motion\036notify) 70227 0.00 -1 s +5 sf +( event. All ) 82081 -229.00 32 s +2 sf +(:enter\036notify) 97279 0.00 -1 s +5 sf +( and ) 102308 -229.00 32 s +2 sf +(:leave\036notify) 117351 0.00 -1 s +5 sf +( events caused) 133194 -229.00 32 s +( by a hierarchy) 149352 -229.67 32 s +52832.0 87353.0 m +(change) 60824 0.00 -1 s +( are generated after any hierarchy event \() 105958 -167.00 32 s +2 sf +(:unmap\036notify) 123357 0.00 -1 s +5 sf +(,) 124063 0.00 -1 s +2 sf +( :map\036notify) 138863 -167.00 32 s +5 sf +(,) 139569 0.00 -1 s +( ) 140107 -168.00 32 s +2 sf +(:config\036) 149352 0.00 -1 s +52832.0 90514.0 m +(ure\036notify) 64899 0.00 -1 s +5 sf +(, ) 66144 -167.00 32 s +2 sf +(:gravity\036notify) 83695 0.00 -1 s +5 sf +(,) 84401 0.00 -1 s +6 sf +( ) 84940 -167.00 32 s +5 sf +(or) 87290 0.00 -1 s +( ) 87830 -166.00 32 s +2 sf +(:circulate\036notify) 107260 0.00 -1 s +5 sf +(\)) 108199 0.00 -1 s +( caused by that change, but the order\036) 149352 -166.57 32 s +52832.0 93675.0 m +(ing) 56438 0.00 -1 s +( of ) 63468 1634.00 32 s +2 sf +(:enter\036notify) 78666 0.00 -1 s +5 sf +( and ) 87422 1634.50 32 s +2 sf +(:leave\036notify) 102465 0.00 -1 s +5 sf +( events with respect to ) 136579 1634.40 32 s +2 sf +(:focus\036out) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 96836.0 m +2 sf +(:visibility\036notify) 72111 0.00 -1 s +5 sf +(,) 72817 0.00 -1 s +( and ) 77724 -290.00 32 s +2 sf +(:exposure) 89480 0.00 -1 s +5 sf +( events is not) 103426 -290.00 32 s +( constrained by the X protocol. An ) 141207 -290.57 32 s +2 sf +(:enter\036) 149352 0.00 -1 s +52832.0 99997.0 m +(notify) 59885 0.00 -1 s +5 sf +( or) 63279 338.00 32 s +( ) 64322 337.00 32 s +2 sf +(:leave\036notify ) 80409 338.00 32 s +5 sf +(event can also be generated when a client application calls) 149352 337.44 32 s +52832.0 103158.0 m +2 sf +(change\036active\036pointer\036grab) 85588 0.00 -1 s +5 sf +(,) 86294 0.00 -1 s +2 sf +( grab\036pointer) 102239 -122.00 32 s +5 sf +(, or ) 106463 -122.00 32 s +2 sf +(ungrab\036pointer) 124962 0.00 -1 s +5 sf +(.) 125668 0.00 -1 s +6 sf +57912.0 109434.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 114221.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 120498.0 m +(x) 59165 0.00 -1 s +( ) 59839 -32.00 32 s +5 sf +(\037) 62661 0.00 -1 s +6 sf +( ) 63336 -31.00 32 s +5 sf +(Type ) 69809 -32.00 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 125284.0 m +(The) 67380 0.00 -1 s +( final pointer position. If ) 94572 -236.00 32 s +6 sf +(event\036window) 110246 0.00 -1 s +5 sf +( is on the same screen as root, then ) 148099 -235.56 32 s +6 sf +(x) 149352 0.00 -1 s +5 sf +62992.0 128445.0 m +(and) 67067 0.00 -1 s +( ) 67590 -183.00 32 s +6 sf +(y) 68843 0.00 -1 s +5 sf +( are the pointer coordinates relative to the ) 115026 -182.88 32 s +6 sf +(event\036window) 130700 0.00 -1 s +5 sf +(; otherwise ) 143501 -182.50 32 s +6 sf +(x) 144754 0.00 -1 s +5 sf +( and) 149352 -183.00 32 s +62992.0 131606.0 m +6 sf +(y) 64245 0.00 -1 s +5 sf +( are) 68363 -33.00 32 s +( zero.) 74597 -34.00 32 s +6 sf +57912.0 137882.0 m +(y) 59165 0.00 -1 s +5 sf +( \037 Type ) 69809 -31.67 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 142669.0 m +(The) 67380 0.00 -1 s +( final pointer position. If ) 94572 -236.00 32 s +6 sf +(event\036window) 110246 0.00 -1 s +5 sf +( is on the same screen as root, then ) 148099 -235.56 32 s +6 sf +(x) 149352 0.00 -1 s +5 sf +62992.0 145830.0 m +(and) 67067 0.00 -1 s +( ) 67590 -183.00 32 s +6 sf +(y) 68843 0.00 -1 s +5 sf +( are the pointer coordinates relative to the ) 115026 -182.88 32 s +6 sf +(event\036window) 130700 0.00 -1 s +5 sf +(; otherwise ) 143501 -182.50 32 s +6 sf +(x) 144754 0.00 -1 s +5 sf +( and) 149352 -183.00 32 s +62992.0 148991.0 m +6 sf +(y) 64245 0.00 -1 s +5 sf +( are) 68363 -33.00 32 s +( zero.) 74597 -34.00 32 s +6 sf +57912.0 155267.0 m +(mode) 64024 0.00 -1 s +( ) 64684 -46.00 32 s +5 sf +(\037) 67506 0.00 -1 s +2 sf +( ) 68166 -46.00 32 s +5 sf +(Type \() 75564 -46.00 32 s +2 sf +(member :normal :grab) 103212 -46.00 32 s +( :ungrab) 113592 -47.00 32 s +5 sf +(\).) 115237 0.00 -1 s +62992.0 160054.0 m +(Events) 70673 0.00 -1 s +( caused when the pointer is actively grabbed have mode ) 133748 -71.90 32 s +2 sf +(:grab) 140331 0.00 -1 s +5 sf +(. Events) 149352 -72.00 32 s +62992.0 163215.0 m +(caused) 70671 0.00 -1 s +( when an active pointer grab deactivates have mode ) 131859 242.00 32 s +2 sf +(:ungrab) 141580 0.00 -1 s +5 sf +(. In) 145584 242.00 32 s +( all) 149352 241.00 32 s +62992.0 166376.0 m +(other) 68790 0.00 -1 s +( cases, mode is ) 86300 -31.75 32 s +2 sf +(:normal) 96017 0.00 -1 s +5 sf +(.) 96723 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 21 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036139) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(kind) 62771 0.00 -1 s +2 sf +( ) 63407 -70.00 32 s +/timsps10 5 declareFont +5 sf +(\037 Type \() 74239 -70.00 32 s +2 sf +(member :ancestor :virtual :inferior :nonlinear ) 143746 -70.00 32 s +( ) 149465 -70.56 32 s +57912.0 25739.0 m +(:nonlinear\036virtual) 79544 0.00 -1 s +5 sf +(\).) 81189 0.00 -1 s +62992.0 30525.0 m +(When) 69731 0.00 -1 s +( the pointer) 82354 -115.00 32 s +( moves from window A to window B, and A is an inferior of) 149352 -115.54 32 s +62992.0 33686.0 m +(B:) 65658 0.00 -1 s +/symbb8 4 declareFont +4 sf +62992.0 40234.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:leave\036notify) 83115 0.00 -1 s +5 sf +( with ) 89481 -31.00 32 s +6 sf +(kind) 94340 0.00 -1 s +5 sf +( ) 95015 -31.00 32 s +2 sf +(:ancestor) 106141 0.00 -1 s +5 sf +( is) 108698 -31.00 32 s +( generated on A) 126548 -31.67 32 s +4 sf +62992.0 46781.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:leave\036notify) 83115 0.00 -1 s +5 sf +( with ) 89311 -116.00 32 s +6 sf +(kind) 94170 0.00 -1 s +5 sf +( ) 94760 -116.00 32 s +2 sf +(:virtual ) 104440 -116.00 32 s +5 sf +(is generated on each window between A) 149352 -116.00 32 s +68072.0 49942.0 m +(and) 72147 0.00 -1 s +( B exclusive \(in that order\) ) 103045 -22.67 32 s +4 sf +62992.0 56490.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:enter\036notify) 83270 0.00 -1 s +( ) 83947 -29.00 32 s +5 sf +(with ) 89640 -29.00 32 s +6 sf +(kind) 94499 0.00 -1 s +5 sf +( ) 95176 -29.00 32 s +2 sf +(:inferior ) 106038 -29.00 32 s +5 sf +(is generated on B) 125623 -29.00 32 s +62992.0 62766.0 m +(When) 69731 0.00 -1 s +( the pointer moves from window A to window B, and B is) 134077 -105.00 32 s +( an inferior of) 149352 -105.67 32 s +62992.0 65927.0 m +(A:) 65813 0.00 -1 s +4 sf +62992.0 72475.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:leave\036notify) 83115 0.00 -1 s +5 sf +( with ) 89485 -29.00 32 s +6 sf +(kind) 94344 0.00 -1 s +5 sf +( ) 95021 -29.00 32 s +2 sf +(:inferior) 105206 0.00 -1 s +5 sf +( is generated on A) 125623 -29.00 32 s +4 sf +62992.0 79022.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:enter\036notify) 83270 0.00 -1 s +5 sf +( with) 88861 -131.00 32 s +( ) 89435 -132.00 32 s +6 sf +(kind) 94294 0.00 -1 s +5 sf +( ) 94869 -131.00 32 s +2 sf +(:virtual) 103959 0.00 -1 s +5 sf +( is generated on each window between A) 149352 -131.57 32 s +68072.0 82183.0 m +(and) 72147 0.00 -1 s +( B exclusive \(in that order\)) 102345 -26.00 32 s +4 sf +62992.0 88731.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:enter\036notify) 83270 0.00 -1 s +5 sf +( with ) 89636 -31.00 32 s +6 sf +(kind) 94495 0.00 -1 s +5 sf +( ) 95170 -31.00 32 s +2 sf +(:ancestor) 106296 0.00 -1 s +5 sf +( is) 108853 -31.00 32 s +( generated on B) 126548 -31.67 32 s +62992.0 95007.0 m +(When) 69731 0.00 -1 s +( the pointer) 82414 -85.00 32 s +( moves from window A to window B, with window C being) 149352 -85.55 32 s +62992.0 98168.0 m +(their) 68163 0.00 -1 s +( least common ancestor:) 95414 -33.67 32 s +4 sf +62992.0 104716.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:leave\036notify) 83115 0.00 -1 s +5 sf +( with ) 89476 -33.50 32 s +6 sf +(kind) 94335 0.00 -1 s +5 sf +( ) 95007 -34.00 32 s +2 sf +(:nonlinear) 107549 0.00 -1 s +5 sf +( is generated on A) 127948 -33.50 32 s +4 sf +62992.0 111263.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:leave\036notify) 83115 0.00 -1 s +5 sf +( with ) 89331 -106.00 32 s +6 sf +(kind) 94190 0.00 -1 s +5 sf +( ) 94790 -106.00 32 s +2 sf +(:nonlinear\036virtual) 116422 0.00 -1 s +5 sf +( is generated on each window) 149352 -106.60 32 s +68072.0 114424.0 m +(between) 77474 0.00 -1 s +( A and C exclusive \(in that order\)) 115124 -28.86 32 s +4 sf +62992.0 120972.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:enter\036notify) 83270 0.00 -1 s +5 sf +( with ) 89446 -126.00 32 s +6 sf +(kind) 94305 0.00 -1 s +5 sf +( ) 94885 -126.00 32 s +2 sf +(:nonlinear\036virtual) 116517 0.00 -1 s +5 sf +( is generated on each window) 149352 -125.60 32 s +68072.0 124133.0 m +(between) 77474 0.00 -1 s +( C and B) 87353 -26.00 32 s +( exclusive \(in that order\) ) 115666 -26.60 32 s +4 sf +62992.0 130680.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:enter\036notify) 83270 0.00 -1 s +5 sf +( with ) 89631 -33.50 32 s +6 sf +(kind) 94490 0.00 -1 s +5 sf +( ) 95162 -34.00 32 s +2 sf +(:nonlinear) 107704 0.00 -1 s +5 sf +( is generated on B) 127948 -33.50 32 s +62992.0 136957.0 m +(When) 69731 0.00 -1 s +( the pointer moves from window A to window B, on different screens:) 148810 -26.00 32 s +4 sf +62992.0 143504.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:leave\036notify) 83115 0.00 -1 s +5 sf +( with ) 89476 -33.50 32 s +6 sf +(kind) 94335 0.00 -1 s +5 sf +( ) 95007 -34.00 32 s +2 sf +(:nonlinear) 107549 0.00 -1 s +5 sf +( is generated on A) 127948 -33.50 32 s +4 sf +62992.0 150052.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( A is not a) 81584 8.00 32 s +( root window, ) 98066 7.33 32 s +2 sf +(:leave\036notify) 113109 0.00 -1 s +5 sf +( with ) 119552 7.50 32 s +6 sf +(kind) 124411 0.00 -1 s +5 sf +( ) 125125 8.00 32 s +2 sf +(:nonlinear\036virtual) 146757 0.00 -1 s +5 sf +( is) 149352 7.00 32 s +68072.0 153213.0 m +(generated) 79040 0.00 -1 s +( on each window above A up to and including its root \(in order\)) 149352 -131.85 32 s +4 sf +62992.0 159760.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( B is not a) 81429 8.00 32 s +( root window, ) 97911 7.33 32 s +2 sf +(:enter\036notify) 113109 0.00 -1 s +5 sf +( with ) 119552 7.50 32 s +6 sf +(kind) 124411 0.00 -1 s +5 sf +( ) 125125 8.00 32 s +2 sf +(:nonlinear\036virtual) 146757 0.00 -1 s +5 sf +( is) 149352 7.00 32 s +68072.0 162921.0 m +(generated) 79040 0.00 -1 s +( on each window from B's root down to but not) 131848 -96.00 32 s +( including B \(in) 149352 -96.67 32 s +68072.0 166082.0 m +(order\)) 74964 0.00 -1 s +4 sf +62992.0 172630.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:enter\036notify) 83270 0.00 -1 s +5 sf +( with ) 89631 -33.50 32 s +6 sf +(kind) 94490 0.00 -1 s +5 sf +( ) 95162 -34.00 32 s +2 sf +(:nonlinear) 107704 0.00 -1 s +5 sf +( is generated on B) 127948 -33.50 32 s +62992.0 178906.0 m +(When) 69731 0.00 -1 s +( a pointer) 80065 -162.00 32 s +( grab activates \(but after any initial warp into a confine\036to win\036) 149352 -162.55 32 s +62992.0 182067.0 m +(dow,) 68557 0.00 -1 s +( and before generating any actual ) 106749 -8.00 32 s +2 sf +(:button\036press) 122894 0.00 -1 s +5 sf +( event that activates the) 149352 -7.75 32 s +62992.0 185228.0 m +(grab\),) 69651 0.00 -1 s +( with ) 75587 -246.00 32 s +6 sf +(G) 77624 0.00 -1 s +5 sf +( the ) 81992 -246.00 32 s +2 sf +(grab\036window) 97982 0.00 -1 s +5 sf +( for the grab and ) 116108 -246.00 32 s +6 sf +(P) 117832 0.00 -1 s +5 sf +( the) 121740 -246.00 32 s +( window the pointer is in,) 149352 -246.60 32 s +62992.0 188389.0 m +(then) 67851 0.00 -1 s +( ) 68291 -266.00 32 s +2 sf +(:enter\036notify) 83489 0.00 -1 s +5 sf +( and ) 88444 -266.00 32 s +2 sf +(:leave\036notify) 103487 0.00 -1 s +5 sf +( events with mode ) 123745 -265.50 32 s +2 sf +(:grab) 130328 0.00 -1 s +5 sf +( are generated \(as) 149352 -265.67 32 s +62992.0 191550.0 m +(for) 66281 0.00 -1 s +( ) 66763 -224.00 32 s +2 sf +(:normal) 76480 0.00 -1 s +5 sf +( above\) as if the pointer were to suddenly warp from its current po\036) 149352 -223.62 32 s +62992.0 194711.0 m +(sition) 69264 0.00 -1 s +( in ) 72639 -116.00 32 s +6 sf +(P) 74363 0.00 -1 s +5 sf +( to some position in ) 96754 -116.00 32 s +6 sf +(G) 98791 0.00 -1 s +5 sf +(. However, the pointer does not warp, and) 145315 -116.00 32 s +( the) 149352 -117.00 32 s +62992.0 197872.0 m +(pointer) 70985 0.00 -1 s +( position is used as both the ) 102752 -20.00 32 s +6 sf +(initial) 109494 0.00 -1 s +5 sf +( and ) 114941 -20.00 32 s +6 sf +(final) 120115 0.00 -1 s +5 sf +( positions for the events.) 147704 -20.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 22 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036140) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +62992.0 22578.0 m +(When) 69731 0.00 -1 s +( a pointer grab deactivates \(but after generating any actual) 135327 1.00 32 s +( ) 136033 0.00 32 s +2 sf +(:button\036re\036) 149352 0.00 -1 s +62992.0 25739.0 m +(lease) 68791 0.00 -1 s +5 sf +( event that deactivates the grab\), with ) 109624 -301.86 32 s +/timsps10i 6 declareFont +6 sf +(G) 111661 0.00 -1 s +5 sf +( the ) 115918 -301.50 32 s +2 sf +(grab\036window) 131908 0.00 -1 s +5 sf +( for the grab and) 149352 -301.50 32 s +62992.0 28900.0 m +6 sf +(P) 64716 0.00 -1 s +5 sf +( the window) 78981 157.00 32 s +( the pointer is in, then ) 105239 156.50 32 s +2 sf +(:enter\036notify) 120437 0.00 -1 s +5 sf +( and ) 126237 156.50 32 s +2 sf +(:leave\036notify) 141280 0.00 -1 s +5 sf +( events) 149352 156.00 32 s +62992.0 32060.0 m +(with) 68008 0.00 -1 s +( mode ) 75196 -247.00 32 s +2 sf +(:ungrab) 84917 0.00 -1 s +5 sf +( are generated \(as for ) 108204 -247.00 32 s +2 sf +(:normal) 117921 0.00 -1 s +5 sf +( above\) as if the pointer were) 149352 -246.67 32 s +62992.0 35221.0 m +(to) 65187 0.00 -1 s +( suddenly warp from from some position in ) 115810 116.38 32 s +6 sf +(G) 117847 0.00 -1 s +5 sf +( to its current position in ) 146922 116.50 32 s +6 sf +(P) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +62992.0 38382.0 m +(However,) 74039 0.00 -1 s +( the pointer) 86518 -187.00 32 s +( does not warp, and the current pointer position is used as) 149352 -187.55 32 s +62992.0 41543.0 m +(both) 68009 0.00 -1 s +( the ) 72825 -22.00 32 s +6 sf +(initial) 79567 0.00 -1 s +5 sf +( and ) 85010 -22.00 32 s +6 sf +(final) 90184 0.00 -1 s +5 sf +( positions for the events.) 117766 -21.75 32 s +6 sf +57912.0 47820.0 m +(focus\036p) 66219 0.00 -1 s +5 sf +( \037 Type) 76154 -49.00 32 s +( ) 76810 -50.00 32 s +2 sf +(boolean) 86218 0.00 -1 s +5 sf +(.) 86924 0.00 -1 s +62992.0 52606.0 m +(If) 64870 0.00 -1 s +( ) 65503 -73.00 32 s +6 sf +(event\036window) 81177 0.00 -1 s +5 sf +( is the focus window or an inferior of the focus window, then) 149352 -72.50 32 s +62992.0 55767.0 m +6 sf +(focus\036p) 71299 0.00 -1 s +5 sf +( is ) 74571 -11.00 32 s +2 sf +(t) 75510 0.00 -1 s +5 sf +(; otherwise, ) 89360 -11.00 32 s +6 sf +(focus\036p) 97667 0.00 -1 s +5 sf +( is ) 100940 -10.50 32 s +2 sf +(nil) 104077 0.00 -1 s +5 sf +(.) 104783 0.00 -1 s +6 sf +57912.0 62044.0 m +(state) 63242 0.00 -1 s +5 sf +( \037 Type ) 73846 -45.00 32 s +2 sf +(card16) 82154 0.00 -1 s +5 sf +(.) 82860 0.00 -1 s +62992.0 66830.0 m +(A) 65029 0.00 -1 s +( mask that gives) 83695 134.00 32 s +( the state of the buttons and modifier keys just before the) 149352 133.45 32 s +62992.0 69991.0 m +(event.) 69810 0.00 -1 s +6 sf +57912.0 76268.0 m +(time) 62770 0.00 -1 s +5 sf +( \037 Type ) 73372 -45.67 32 s +2 sf +(card32) 81680 0.00 -1 s +5 sf +(.) 82386 0.00 -1 s +62992.0 81054.0 m +(A) 65029 0.00 -1 s +( timestamp for the moment when the event occurred.) 124404 -33.00 32 s +6 sf +57912.0 87331.0 m +(root) 62616 0.00 -1 s +2 sf +( ) 63285 -37.00 32 s +5 sf +(\037 Type ) 73244 -37.00 32 s +2 sf +(window) 82651 0.00 -1 s +5 sf +(.) 83357 0.00 -1 s +62992.0 92117.0 m +(The) 67380 0.00 -1 s +( root window) 82360 -34.00 32 s +( containing the final pointer position.) 124042 -34.60 32 s +6 sf +57912.0 98394.0 m +(root\036x) 64808 0.00 -1 s +2 sf +( ) 65483 -31.00 32 s +5 sf +(\037 Type) 74779 -31.00 32 s +( ) 75453 -32.00 32 s +2 sf +(int16) 81567 0.00 -1 s +5 sf +(.) 82273 0.00 -1 s +62992.0 103180.0 m +(The) 67380 0.00 -1 s +( x coordinate) 81695 -209.00 32 s +( of the pointer position relative to root at the time of the event.) 149352 -209.54 32 s +6 sf +57912.0 109457.0 m +(root\036y) 64808 0.00 -1 s +2 sf +( ) 65483 -31.00 32 s +5 sf +(\037 Type) 74779 -31.00 32 s +( ) 75453 -32.00 32 s +2 sf +(int16) 81567 0.00 -1 s +5 sf +(.) 82273 0.00 -1 s +62992.0 114244.0 m +(The) 67380 0.00 -1 s +( y coordinate) 81695 -209.00 32 s +( of the pointer position relative to root at the time of the event.) 149352 -209.54 32 s +6 sf +57912.0 120520.0 m +(child) 63555 0.00 -1 s +2 sf +( ) 64231 -30.00 32 s +5 sf +(\037 Type \() 75143 -30.00 32 s +2 sf +(or null window) 93272 -30.00 32 s +5 sf +(\).) 94917 0.00 -1 s +62992.0 125307.0 m +(In) 65342 0.00 -1 s +( a ) 67475 -266.00 32 s +2 sf +(:leave\036notify) 82518 0.00 -1 s +5 sf +( event, if a child of the ) 106836 -265.57 32 s +6 sf +(event\036window) 122510 0.00 -1 s +5 sf +( contains the initial posi\036) 149352 -265.50 32 s +62992.0 128468.0 m +(tion) 67382 0.00 -1 s +( of the pointer, the ) 88362 -99.00 32 s +6 sf +(child) 94005 0.00 -1 s +5 sf +( slot is set to) 107722 -99.00 32 s +( that child; otherwise, the ) 136537 -99.60 32 s +6 sf +(child) 142180 0.00 -1 s +5 sf +( slot is) 149352 -99.50 32 s +62992.0 131628.0 m +2 sf +(nil) 66129 0.00 -1 s +5 sf +(.) 66835 0.00 -1 s +( For an ) 74756 -260.00 32 s +2 sf +(:enter\036notify) 89954 0.00 -1 s +5 sf +( event, if a child of the ) 114315 -259.43 32 s +6 sf +(event\036window) 129989 0.00 -1 s +5 sf +( contains the final) 149352 -259.67 32 s +62992.0 134789.0 m +(pointer) 70985 0.00 -1 s +( position, the ) 85625 -242.00 32 s +6 sf +(child) 91268 0.00 -1 s +5 sf +( slot is set to that child; otherwise, the ) 132516 -242.00 32 s +6 sf +(child) 138159 0.00 -1 s +5 sf +( slot is) 145046 -242.00 32 s +( ) 145509 -243.00 32 s +2 sf +(nil) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +6 sf +57912.0 141066.0 m +(same\036screen\036p) 74366 0.00 -1 s +2 sf +( ) 75016 -56.00 32 s +5 sf +(\037 Type ) 84938 -55.50 32 s +2 sf +(boolean) 94346 0.00 -1 s +5 sf +(.) 95052 0.00 -1 s +62992.0 145852.0 m +(True) 68319 0.00 -1 s +( if ) 71392 -31.00 32 s +6 sf +(event\036window) 87066 0.00 -1 s +5 sf +( and root are on the same screen.) 123839 -30.86 32 s +52832.0 152784.0 m +0.0 0.0 m +newpath +149013 151225 av +52967 151227 as +[] 0 setdash +dp +149352.0 152784.0 m +20320.0 155606.0 m +34928.0 h +2 sf +(Input) 41672 0.00 -1 s +( Focus) 49378 -55.00 32 s +52832.0 h +(12.12.2) 61299 0.00 -1 s +5 sf +() 61299 0.00 -1 s +63494.0 h +(The) 67882 0.00 -1 s +( input focus events are ) 93780 -40.00 32 s +2 sf +(:focus\036in) 104281 0.00 -1 s +5 sf +( and) 109022 -40.00 32 s +( ) 109687 -41.00 32 s +2 sf +(:focus\036out) 121754 0.00 -1 s +5 sf +(.) 122460 0.00 -1 s +2 sf +() 122460 0.00 -1 s +124810.0 h +() 124810 0.00 -1 s +20320.0 158767.0 m +( ) 21020 -6.00 32 s +41250.0 h +(Events) 49402 0.00 -1 s +52832.0 h +34544.0 165044.0 m +(:focus\036in,) 45751 0.00 -1 s +( :focus\036out) 58499 -25.00 32 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 168204.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +2 sf +52832.0 171365.0 m +6 sf +(Selected) 62234 0.00 -1 s +( by:) 66491 -52.00 32 s +2 sf +( ) 67145 -52.00 32 s +5 sf +(\037) 69967 0.00 -1 s +2 sf +( :focus\036change) 87234 -53.00 32 s +5 sf +(.) 87940 0.00 -1 s +2 sf +52832.0 176084.0 m +(:focus\036in) 63333 0.00 -1 s +5 sf +( and ) 68280 -270.00 32 s +2 sf +(:focus\036out) 80347 0.00 -1 s +5 sf +( events are generated when the input focus changes. All ) 141204 -270.00 32 s +2 sf +(:focus\036) 149352 0.00 -1 s +52832.0 179245.0 m +(out) 56751 0.00 -1 s +5 sf +( events) 64567 -100.00 32 s +( caused by a window ) 88439 -100.60 32 s +2 sf +(:unmap) 97846 0.00 -1 s +5 sf +( are generated after any ) 124530 -100.40 32 s +2 sf +(:unmap\036notify) 141929 0.00 -1 s +5 sf +( event,) 149352 -101.00 32 s +52832.0 182406.0 m +(but) 56438 0.00 -1 s +( the ordering of ) 74863 61.00 32 s +2 sf +(:focus\036out) 86930 0.00 -1 s +5 sf +( with) 92713 61.00 32 s +( respect to generated ) 116933 60.50 32 s +2 sf +(:enter\036notify) 132131 0.00 -1 s +5 sf +(, ) 133603 60.00 32 s +2 sf +(:leave\036notify) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 185567.0 m +2 sf +(:visibility\036notify) 72111 0.00 -1 s +5 sf +(,) 72817 0.00 -1 s +( and ) 78246 -29.00 32 s +2 sf +(:expose) 87180 0.00 -1 s +5 sf +( events) 95067 -29.00 32 s +( is not constrained.) 116298 -29.67 32 s +6 sf +57912.0 191843.0 m +(window,) 67399 0.00 -1 s +( event\036window ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 196630.0 m +(For) 66911 0.00 -1 s +( ) 67431 -186.00 32 s +2 sf +(:focus\036in) 77932 0.00 -1 s +5 sf +(, the new input) 94148 -186.00 32 s +( focus window. For) 115534 -186.67 32 s +2 sf +( :focus\036out,) 128827 -186.00 32 s +5 sf +( the previous input) 149352 -186.67 32 s +62992.0 199791.0 m +(focus) 69104 0.00 -1 s +( window.) 79542 -65.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 23 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036141) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(mode) 64024 0.00 -1 s +2 sf +( ) 64679 -51.00 32 s +/timsps10 5 declareFont +5 sf +(\037 Type ) 74610 -51.00 32 s +2 sf +(\(member :normal :while\036grabbed :grab) 122182 -51.00 32 s +( :ungrab\)) 133496 -52.00 32 s +5 sf +(.) 134202 0.00 -1 s +62992.0 27364.0 m +(Events) 70673 0.00 -1 s +( generated by ) 86581 0.00 32 s +2 sf +(set\036input\036focus) 104449 0.00 -1 s +5 sf +( when the keyboard is not grabbed have) 149352 -0.57 32 s +62992.0 30525.0 m +(mode) 69262 0.00 -1 s +( ) 70194 226.00 32 s +2 sf +(:normal) 79911 0.00 -1 s +5 sf +(. Events generated by ) 105816 226.00 32 s +2 sf +(set\036input\036focus) 123684 0.00 -1 s +5 sf +( when) 130728 226.00 32 s +( the keyboard is) 149352 225.33 32 s +62992.0 33686.0 m +(grabbed) 72081 0.00 -1 s +( have mode) 84813 -139.00 32 s +( ) 85379 -140.00 32 s +2 sf +(:while\036grabbed) 103719 0.00 -1 s +5 sf +(. Events generated when a keyboard grab) 149352 -139.50 32 s +62992.0 36847.0 m +(activates) 72865 0.00 -1 s +( have mode) 85335 -270.00 32 s +( ) 85770 -271.00 32 s +2 sf +(:grab) 92353 0.00 -1 s +5 sf +(, and events generated when a keyboard grab deacti\036) 149352 -270.50 32 s +62992.0 40008.0 m +(vates) 68791 0.00 -1 s +( have mode) 81679 -61.00 32 s +( ) 82323 -62.00 32 s +2 sf +(:ungrab) 92044 0.00 -1 s +5 sf +(.) 92750 0.00 -1 s +6 sf +57912.0 46284.0 m +(kind) 62771 0.00 -1 s +2 sf +( ) 63407 -70.00 32 s +5 sf +(\037 Type \() 74239 -70.00 32 s +2 sf +(member :ancestor :virtual :inferior :nonlinear ) 143746 -70.00 32 s +( ) 149465 -70.56 32 s +57912.0 49445.0 m +(:nonlinear\036virtual) 79544 0.00 -1 s +( :pointer :pointer\036root :none) 113592 -66.00 32 s +5 sf +(\).) 115237 0.00 -1 s +62992.0 54232.0 m +(When) 69731 0.00 -1 s +( the focus moves from window A to window B, and A is an inferior of B,) 149352 -196.56 32 s +62992.0 57393.0 m +(with) 68008 0.00 -1 s +( the pointer in window) 93463 -24.00 32 s +( P:) 96497 -25.00 32 s +/symbb8 4 declareFont +4 sf +62992.0 63940.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 86510 -28.50 32 s +6 sf +(kind) 91369 0.00 -1 s +5 sf +( ) 92046 -29.00 32 s +2 sf +(:ancestor) 103172 0.00 -1 s +5 sf +( is generated on A) 123591 -28.50 32 s +4 sf +62992.0 70488.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 86028 -269.50 32 s +6 sf +(kind) 90887 0.00 -1 s +5 sf +( ) 91323 -270.00 32 s +2 sf +(:virtual) 100413 0.00 -1 s +5 sf +( is generated on each window between A and) 149352 -269.50 32 s +68072.0 73649.0 m +(B) 69954 0.00 -1 s +( exclusive) 81296 -22.00 32 s +( \(in that order\)) 97604 -22.67 32 s +4 sf +62992.0 80196.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84949 -26.00 32 s +6 sf +(kind) 89808 0.00 -1 s +5 sf +( ) 90488 -26.00 32 s +2 sf +(:inferior) 100673 0.00 -1 s +5 sf +( is generated on B) 120949 -25.50 32 s +4 sf +62992.0 86744.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an inferior) 86397 -238.00 32 s +( of B, but P is not A or an inferior of A or an ancestor of A,) 149352 -238.53 32 s +68072.0 89905.0 m +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84717 -142.00 32 s +6 sf +(kind) 89576 0.00 -1 s +5 sf +( ) 90140 -142.00 32 s +2 sf +(:pointer) 99857 0.00 -1 s +5 sf +( is generated on each window below B down) 149352 -141.75 32 s +68072.0 93066.0 m +(to) 70267 0.00 -1 s +( and including P \(in order\)) 99997 -26.00 32 s +62992.0 99342.0 m +(When) 69731 0.00 -1 s +( the focus moves from window A to window B, and B is an inferior of A,) 149352 -196.56 32 s +62992.0 102503.0 m +(with) 68008 0.00 -1 s +( the pointer in window) 93463 -24.00 32 s +( P:) 96497 -25.00 32 s +4 sf +62992.0 109051.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an inferior of A, but P is not A or an inferior of B or an ancestor of) 146290 -231.00 32 s +( B,) 149352 -232.00 32 s +68072.0 112212.0 m +2 sf +(:focus\036out) 80139 0.00 -1 s +( ) 80774 -71.00 32 s +5 sf +(with ) 86425 -71.00 32 s +6 sf +(kind) 91284 0.00 -1 s +5 sf +( ) 91919 -71.00 32 s +2 sf +(:pointer) 101636 0.00 -1 s +5 sf +( is generated on each window from) 140863 -71.00 32 s +( P up to) 149352 -71.67 32 s +68072.0 115372.0 m +(but) 71678 0.00 -1 s +( not including A \(in order\)) 101419 -23.60 32 s +4 sf +62992.0 121920.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 86515 -26.00 32 s +6 sf +(kind) 91374 0.00 -1 s +5 sf +( ) 92053 -27.00 32 s +2 sf +(:inferior) 102238 0.00 -1 s +5 sf +( is generated on A) 122665 -26.50 32 s +4 sf +62992.0 128468.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84747 -127.00 32 s +6 sf +(kind) 89606 0.00 -1 s +5 sf +( ) 90185 -127.00 32 s +2 sf +(:virtual ) 99854 -127.00 32 s +5 sf +(is generated on each window) 132103 -127.00 32 s +( between A and) 149352 -127.67 32 s +68072.0 131628.0 m +(B) 69954 0.00 -1 s +( exclusive) 81296 -22.00 32 s +( \(in that order\)) 97604 -22.67 32 s +4 sf +62992.0 138176.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84945 -28.00 32 s +6 sf +(kind) 89804 0.00 -1 s +5 sf +( ) 90482 -28.00 32 s +2 sf +(:ancestor) 101608 0.00 -1 s +5 sf +( is generated on B) 121875 -27.75 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 24 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036142) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +62992.0 22578.0 m +(When) 69731 0.00 -1 s +( the focus moves from window A to window B, with window C being) 149352 59.23 32 s +62992.0 25739.0 m +(their) 68163 0.00 -1 s +( least common ancestor, and with the pointer in window P:) 134270 -28.00 32 s +/symbb8 4 declareFont +4 sf +62992.0 32286.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an inferior of) 89460 -189.00 32 s +( A, ) 93236 -189.50 32 s +2 sf +(:focus\036out) 105303 0.00 -1 s +5 sf +( with ) 111352 -189.50 32 s +/timsps10i 6 declareFont +6 sf +(kind) 116211 0.00 -1 s +5 sf +( ) 116727 -190.00 32 s +2 sf +(:pointer) 126444 0.00 -1 s +5 sf +( is generated on each) 149352 -189.50 32 s +68072.0 35447.0 m +(window) 77163 0.00 -1 s +( from P up to but not including A \(in) 118432 -22.00 32 s +( order\)) 126007 -23.00 32 s +4 sf +62992.0 41995.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 86505 -31.00 32 s +6 sf +(kind) 91364 0.00 -1 s +5 sf +( ) 92039 -31.00 32 s +2 sf +(:nonlinear) 104581 0.00 -1 s +5 sf +( is generated on A) 124991 -30.75 32 s +4 sf +62992.0 48542.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +( ) 80602 -243.00 32 s +5 sf +(with ) 86081 -243.00 32 s +6 sf +(kind) 90940 0.00 -1 s +5 sf +( ) 91403 -243.00 32 s +2 sf +(:nonlinear\036virtual) 113035 0.00 -1 s +5 sf +( is generated on each window be\036) 149352 -242.50 32 s +68072.0 51703.0 m +(tween) 74810 0.00 -1 s +( A and C exclusive \(in that order\)) 112482 -25.71 32 s +4 sf +62992.0 58251.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84863 -69.00 32 s +6 sf +(kind) 89722 0.00 -1 s +5 sf +( ) 90359 -69.00 32 s +2 sf +(:nonlinear\036virtual) 111991 0.00 -1 s +5 sf +( is generated on each window be\036) 149352 -68.50 32 s +68072.0 61412.0 m +(tween) 74810 0.00 -1 s +( C and B exclusive \(in that) 104753 -26.00 32 s +( order\)) 112324 -27.00 32 s +4 sf +62992.0 67959.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(:focus\036in) 78102 0.00 -1 s +( with ) 84469 -30.50 32 s +6 sf +(kind) 89328 0.00 -1 s +5 sf +( ) 90003 -31.00 32 s +2 sf +(:nonlinear) 102545 0.00 -1 s +5 sf +( is generated on B) 122801 -30.50 32 s +4 sf +62992.0 74507.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an) 77985 -66.00 32 s +( inferior of B, ) 93941 -66.50 32 s +2 sf +(:focus\036in) 104442 0.00 -1 s +5 sf +( with ) 110737 -66.50 32 s +6 sf +(kind) 115596 0.00 -1 s +5 sf +( ) 116235 -67.00 32 s +2 sf +(:pointer) 125952 0.00 -1 s +5 sf +( is generated on each) 149352 -66.50 32 s +68072.0 77668.0 m +(window) 77163 0.00 -1 s +( below B down to and including P \(in) 119252 -30.00 32 s +( order\)) 126819 -31.00 32 s +62992.0 83944.0 m +(When) 69731 0.00 -1 s +( the focus moves from window A to window B, on different screens, with) 149352 -271.77 32 s +62992.0 87105.0 m +(the) 66440 0.00 -1 s +( pointer in window P:) 90785 -27.75 32 s +4 sf +62992.0 93653.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an inferior of) 89460 -189.00 32 s +( A, ) 93236 -189.50 32 s +2 sf +(:focus\036out) 105303 0.00 -1 s +5 sf +( with ) 111352 -189.50 32 s +6 sf +(kind) 116211 0.00 -1 s +5 sf +( ) 116727 -190.00 32 s +2 sf +(:pointer) 126444 0.00 -1 s +5 sf +( is generated on each) 149352 -189.50 32 s +68072.0 96814.0 m +(window) 77163 0.00 -1 s +( from P up to but not including A \(in) 118432 -22.00 32 s +( order\)) 126007 -23.00 32 s +4 sf +62992.0 103361.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 86505 -31.00 32 s +6 sf +(kind) 91364 0.00 -1 s +5 sf +( ) 92039 -31.00 32 s +2 sf +(:nonlinear) 104581 0.00 -1 s +5 sf +( is generated on A) 124991 -30.75 32 s +4 sf +62992.0 109909.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( A is not a root window, ) 96460 -221.71 32 s +2 sf +(:focus\036out) 108527 0.00 -1 s +5 sf +( with ) 114512 -221.50 32 s +6 sf +(kind) 119371 0.00 -1 s +5 sf +( ) 119855 -222.00 32 s +2 sf +(:nonlinear\036virtual ) 141972 -221.00 32 s +5 sf +(is gen\036) 149352 -222.00 32 s +68072.0 113070.0 m +(erated) 74965 0.00 -1 s +( on each window above A up to and including its root \(in order\)) 146620 -28.54 32 s +4 sf +62992.0 119617.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( B is not a root window, ) 96030 -261.00 32 s +2 sf +(:focus\036in ) 106976 -261.00 32 s +5 sf +(with ) 112437 -261.00 32 s +6 sf +(kind) 117296 0.00 -1 s +5 sf +( ) 117741 -261.00 32 s +2 sf +(:nonlinear\036virtual) 139373 0.00 -1 s +5 sf +( is gener\036) 149352 -260.50 32 s +68072.0 122778.0 m +(ated) 72773 0.00 -1 s +( on each window from B's) 101869 -184.00 32 s +( root down to but not including B \(in order\)) 149352 -184.56 32 s +4 sf +62992.0 129326.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84941 -30.00 32 s +6 sf +(kind) 89800 0.00 -1 s +5 sf +( ) 90476 -30.00 32 s +2 sf +(:nonlinear) 103018 0.00 -1 s +5 sf +( is generated on) 120718 -30.00 32 s +( B) 123275 -31.00 32 s +4 sf +62992.0 135873.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an) 77985 -66.00 32 s +( inferior of B, ) 93941 -66.50 32 s +2 sf +(:focus\036in) 104442 0.00 -1 s +5 sf +( with ) 110737 -66.50 32 s +6 sf +(kind) 115596 0.00 -1 s +5 sf +( ) 116235 -67.00 32 s +2 sf +(:pointer) 125952 0.00 -1 s +5 sf +( is generated on each) 149352 -66.50 32 s +68072.0 139034.0 m +(window) 77163 0.00 -1 s +( below B down to and including P \(in) 119252 -30.00 32 s +( order\)) 126819 -31.00 32 s +62992.0 145311.0 m +(When) 69731 0.00 -1 s +( the focus moves from window A to ) 110850 -33.00 32 s +2 sf +(:pointer\036root) 126520 0.00 -1 s +5 sf +( \(or ) 131155 -33.00 32 s +2 sf +(:none) 137896 0.00 -1 s +5 sf +(\), with the) 149352 -32.50 32 s +62992.0 148471.0 m +(pointer) 70985 0.00 -1 s +( in window P: ) 87353 -23.75 32 s +4 sf +62992.0 155019.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P is an inferior of) 89460 -189.00 32 s +( A, ) 93236 -189.50 32 s +2 sf +(:focus\036out) 105303 0.00 -1 s +5 sf +( with ) 111352 -189.50 32 s +6 sf +(kind) 116211 0.00 -1 s +5 sf +( ) 116727 -190.00 32 s +2 sf +(:pointer) 126444 0.00 -1 s +5 sf +( is generated on each) 149352 -189.50 32 s +68072.0 158180.0 m +(window) 77163 0.00 -1 s +( from P up to but not including A \(in) 118432 -22.00 32 s +( order\)) 126007 -23.00 32 s +4 sf +62992.0 164727.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 86505 -31.00 32 s +6 sf +(kind) 91364 0.00 -1 s +5 sf +( ) 92039 -31.00 32 s +2 sf +(:nonlinear) 104581 0.00 -1 s +5 sf +( is generated on A) 124991 -30.75 32 s +4 sf +62992.0 171275.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( A is not a root window, ) 96460 -221.71 32 s +2 sf +(:focus\036out) 108527 0.00 -1 s +5 sf +( with ) 114512 -221.50 32 s +6 sf +(kind) 119371 0.00 -1 s +5 sf +( ) 119855 -222.00 32 s +2 sf +(:nonlinear\036virtual ) 141972 -221.00 32 s +5 sf +(is gen\036) 149352 -222.00 32 s +68072.0 174436.0 m +(erated) 74965 0.00 -1 s +( on each window above A up to and including its root \(in order\)) 146620 -28.54 32 s +4 sf +62992.0 180983.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84691 -155.00 32 s +6 sf +(kind) 89550 0.00 -1 s +5 sf +( ) 90100 -156.00 32 s +2 sf +(:pointer\036root ) 106321 -155.00 32 s +5 sf +(\(or ) 110160 -156.00 32 s +2 sf +(:none) 116901 0.00 -1 s +5 sf +(\) is generated on all root win\036) 149352 -155.50 32 s +68072.0 184144.0 m +(dows) 74029 0.00 -1 s +4 sf +62992.0 190692.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( the new focus is ) 89593 -6.00 32 s +2 sf +(:pointer\036root) 105263 0.00 -1 s +5 sf +(, ) 106669 -6.00 32 s +2 sf +(:focus\036in) 117170 0.00 -1 s +5 sf +( with ) 123587 -5.50 32 s +6 sf +(kind) 128446 0.00 -1 s +5 sf +( ) 129146 -6.00 32 s +2 sf +(:pointer) 138863 0.00 -1 s +5 sf +( is gener\036) 149352 -5.50 32 s +68072.0 193853.0 m +(ated) 72773 0.00 -1 s +( on each window from P's root down to and including P \(in order\)) 147117 -26.69 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 25 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036143) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +62992.0 22578.0 m +(When) 69731 0.00 -1 s +( the focus moves from ) 95508 -33.00 32 s +2 sf +(:pointer\036root ) 111851 -33.00 32 s +5 sf +(\(or ) 115813 -33.00 32 s +2 sf +(:none) 122554 0.00 -1 s +5 sf +(\) to window A, with the) 149352 -32.80 32 s +62992.0 25739.0 m +(pointer) 70985 0.00 -1 s +( in window) 83625 -29.00 32 s +( P:) 86654 -30.00 32 s +/symbb8 4 declareFont +4 sf +62992.0 32286.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( the old focus is ) 88284 -48.80 32 s +2 sf +(:pointer\036root) 103954 0.00 -1 s +5 sf +(, ) 105318 -48.00 32 s +2 sf +(:focus\036out) 117385 0.00 -1 s +5 sf +( with ) 123716 -48.50 32 s +/timsps10i 6 declareFont +6 sf +(kind) 128575 0.00 -1 s +5 sf +( ) 129232 -49.00 32 s +2 sf +(:pointer) 138949 0.00 -1 s +5 sf +( is gener\036) 149352 -48.50 32 s +68072.0 35447.0 m +(ated) 72773 0.00 -1 s +( on each window from P up to and including P's root \(in order\)) 143704 -24.00 32 s +( ) 144385 -25.00 32 s +4 sf +62992.0 41995.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 87087 260.00 32 s +6 sf +(kind) 91946 0.00 -1 s +2 sf +( :pointer\036root) 108582 260.00 32 s +5 sf +( \(or ) 113803 260.00 32 s +2 sf +(:none) 120544 0.00 -1 s +5 sf +(\) is generated on all root) 149352 260.20 32 s +68072.0 45156.0 m +(windows) 78261 0.00 -1 s +4 sf +62992.0 51703.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( A is not a root window, ) 96094 -274.00 32 s +2 sf +(:focus\036in) 106595 0.00 -1 s +5 sf +( with ) 112476 -273.50 32 s +6 sf +(kind) 117335 0.00 -1 s +5 sf +( ) 117767 -274.00 32 s +2 sf +(:nonlinear\036virtual) 139399 0.00 -1 s +5 sf +( is gener\036) 149352 -273.50 32 s +68072.0 54864.0 m +(ated) 72773 0.00 -1 s +( on) 76095 -206.00 32 s +( each window from A's root down to but not including A \(in order\)) 149352 -206.54 32 s +4 sf +62992.0 61412.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84941 -30.00 32 s +6 sf +(kind) 89800 0.00 -1 s +5 sf +( ) 90476 -30.00 32 s +2 sf +(:nonlinear) 103018 0.00 -1 s +5 sf +( is generated on A) 123433 -29.50 32 s +4 sf +62992.0 67959.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( P) 72148 -77.00 32 s +( is an inferior of A, ) 94018 -77.50 32 s +2 sf +(:focus\036in) 104519 0.00 -1 s +5 sf +( with ) 110792 -77.50 32 s +6 sf +(kind) 115651 0.00 -1 s +5 sf +( ) 116279 -78.00 32 s +2 sf +(:pointer) 125996 0.00 -1 s +5 sf +( is generated on each) 149352 -77.50 32 s +68072.0 71120.0 m +(window) 77163 0.00 -1 s +( below A down to and including P \(in order\)) 126977 -29.78 32 s +62992.0 77397.0 m +(When) 69731 0.00 -1 s +( the) 73892 7.00 32 s +( focus moves from ) 95706 6.50 32 s +2 sf +(:pointer\036root ) 112088 6.00 32 s +5 sf +(to ) 114996 7.00 32 s +2 sf +(:none) 121737 0.00 -1 s +5 sf +( \(or vice versa\), with the) 149352 6.40 32 s +62992.0 80558.0 m +(pointer) 70985 0.00 -1 s +( in window) 83625 -29.00 32 s +( P:) 86654 -30.00 32 s +4 sf +62992.0 87105.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( the old focus is ) 88284 -48.80 32 s +2 sf +(:pointer\036root) 103954 0.00 -1 s +5 sf +(, ) 105318 -48.00 32 s +2 sf +(:focus\036out) 117385 0.00 -1 s +5 sf +( with ) 123716 -48.50 32 s +6 sf +(kind) 128575 0.00 -1 s +5 sf +( ) 129232 -49.00 32 s +2 sf +(:pointer) 138949 0.00 -1 s +5 sf +( is gener\036) 149352 -48.50 32 s +68072.0 90266.0 m +(ated) 72773 0.00 -1 s +( on each) 82127 -25.00 32 s +( window from P up to and including P's root \(in order\)) 143685 -25.55 32 s +4 sf +62992.0 96814.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036out) 80139 0.00 -1 s +5 sf +( with ) 87087 260.00 32 s +6 sf +(kind) 91946 0.00 -1 s +5 sf +( ) 92912 260.00 32 s +2 sf +(:pointer\036root) 108582 0.00 -1 s +5 sf +( \(or ) 113803 260.00 32 s +2 sf +(:none) 120544 0.00 -1 s +5 sf +(\) is generated on all root) 149352 260.20 32 s +68072.0 99974.0 m +(windows) 78261 0.00 -1 s +4 sf +62992.0 106522.0 m +(\267) 64032 0.00 -1 s +68072.0 h +2 sf +(:focus\036in) 78573 0.00 -1 s +5 sf +( with ) 84691 -155.00 32 s +6 sf +(kind) 89550 0.00 -1 s +5 sf +( ) 90100 -156.00 32 s +2 sf +(:none) 96841 0.00 -1 s +5 sf +( \(or ) 101231 -155.50 32 s +2 sf +(:pointer\036root) 116901 0.00 -1 s +5 sf +(\) is generated on all root win\036) 149352 -155.50 32 s +68072.0 109683.0 m +(dows) 74029 0.00 -1 s +4 sf +62992.0 116230.0 m +(\267) 64032 0.00 -1 s +68072.0 h +5 sf +(If) 69950 0.00 -1 s +( the new focus is ) 89593 -6.00 32 s +2 sf +(:pointer\036root) 105263 0.00 -1 s +5 sf +(, ) 106669 -6.00 32 s +2 sf +(:focus\036in ) 117870 -6.00 32 s +5 sf +(with ) 123587 -5.00 32 s +6 sf +(kind) 128446 0.00 -1 s +5 sf +( ) 129146 -6.00 32 s +2 sf +(:pointer) 138863 0.00 -1 s +5 sf +( is gener\036) 149352 -5.50 32 s +68072.0 119391.0 m +(ated) 72773 0.00 -1 s +( on each window from P's root down to and including P \(in order\)) 147117 -26.69 32 s +62992.0 125668.0 m +(When) 69731 0.00 -1 s +( a) 71597 -93.00 32 s +( keyboard grab activates \(but before generating any actual ) 136970 -93.56 32 s +2 sf +(:key\036press) 149352 0.00 -1 s +5 sf +62992.0 128829.0 m +(event) 69104 0.00 -1 s +( that) 73947 -95.00 32 s +( activates the grab\), with ) 101995 -95.60 32 s +6 sf +(G) 104032 0.00 -1 s +5 sf +( the ) 108701 -95.50 32 s +2 sf +(grab\036window) 124691 0.00 -1 s +5 sf +( for the grab and ) 143570 -95.40 32 s +6 sf +(F) 145294 0.00 -1 s +5 sf +( the) 149352 -96.00 32 s +62992.0 131990.0 m +(current) 70982 0.00 -1 s +( focus, then ) 84435 -114.00 32 s +2 sf +(:focus\036in) 94936 0.00 -1 s +5 sf +( and ) 100195 -114.00 32 s +2 sf +(:focus\036out ) 112854 -114.00 32 s +5 sf +(events with mode ) 133126 -114.00 32 s +2 sf +(:grab) 139709 0.00 -1 s +5 sf +( are gen\036) 149352 -114.00 32 s +62992.0 135151.0 m +(erated) 69885 0.00 -1 s +( \(as for ) 78519 -21.00 32 s +2 sf +(:normal) 88236 0.00 -1 s +5 sf +( above\) as if the focus were to change from ) 137551 -21.00 32 s +6 sf +(F) 139275 0.00 -1 s +5 sf +( to) 142155 -21.00 32 s +( ) 142839 -22.00 32 s +6 sf +(G) 144876 0.00 -1 s +5 sf +(.) 145582 0.00 -1 s +62992.0 141427.0 m +(When) 69731 0.00 -1 s +( a) 71817 127.00 32 s +( keyboard grab deactivates \(but after generating any actual ) 139796 126.44 32 s +2 sf +(:key\036re\036) 149352 0.00 -1 s +62992.0 144588.0 m +(lease) 68791 0.00 -1 s +5 sf +( event that deactivates the grab\), with ) 109624 -301.86 32 s +6 sf +(G) 111661 0.00 -1 s +5 sf +( the ) 115918 -301.50 32 s +2 sf +(grab\036window) 131908 0.00 -1 s +5 sf +( for the grab and) 149352 -301.50 32 s +62992.0 147749.0 m +6 sf +(F) 64716 0.00 -1 s +5 sf +( the current) 77366 -100.00 32 s +( focus, then ) 90859 -100.67 32 s +2 sf +(:focus\036in) 101360 0.00 -1 s +5 sf +( and ) 106646 -100.50 32 s +2 sf +(:focus\036out) 118713 0.00 -1 s +5 sf +( events with mode ) 139631 -100.50 32 s +2 sf +(:ungrab) 149352 0.00 -1 s +5 sf +62992.0 150910.0 m +(are) 66437 0.00 -1 s +( generated \(as for ) 86372 -109.00 32 s +2 sf +(:normal ) 96686 -109.00 32 s +5 sf +(above\) as if the focus were to change from ) 144524 -109.00 32 s +6 sf +(G) 146561 0.00 -1 s +5 sf +( to) 149352 -110.00 32 s +62992.0 154071.0 m +6 sf +(F) 64716 0.00 -1 s +5 sf +(.) 65422 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 26 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036144) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +32173.0 h +2 sf +(Keyboard) 44245 0.00 -1 s +( and) 49378 -122.00 32 s +52832.0 h +(12.12.3) 61299 0.00 -1 s +63649.0 h +() 63649 0.00 -1 s +5 sf +(The) 68037 0.00 -1 s +( keyboard and pointer state events are ) 124240 1838.00 32 s +2 sf +(:keymap\036notify) 142734 0.00 -1 s +5 sf +( and) 149352 1837.00 32 s +2 sf +20320.0 29216.0 m +33686.0 h +(Pointer) 42619 0.00 -1 s +( State) 49378 -58.00 32 s +5 sf +52832.0 h +2 sf +(:mapping\036notify.) 73132 0.00 -1 s +20320.0 32377.0 m +41250.0 h +(Events) 49402 0.00 -1 s +52832.0 h +34544.0 38653.0 m +(:keymap\036notify) 53038 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 41814.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +2 sf +52832.0 44975.0 m +/timsps10i 6 declareFont +6 sf +(Selected) 62234 0.00 -1 s +( by:) 66500 -43.00 32 s +5 sf +( \037) 69985 -43.00 32 s +2 sf +( ) 70647 -44.00 32 s +5 sf +(:) 71431 0.00 -1 s +2 sf +(keymap\036state) 87573 0.00 -1 s +5 sf +(.) 88279 0.00 -1 s +52832.0 49694.0 m +(The) 57220 0.00 -1 s +( ) 57738 -188.00 32 s +2 sf +(:keymap\036notify) 76232 0.00 -1 s +5 sf +( event returns the current state of the keyboard. ) 128458 -187.67 32 s +2 sf +(:keymap\036notify) 146952 0.00 -1 s +5 sf +( is) 149352 -188.00 32 s +52832.0 52855.0 m +(generated) 63800 0.00 -1 s +( immediately after every ) 92006 -40.00 32 s +2 sf +(:enter\036notify) 107204 0.00 -1 s +5 sf +( and) 111945 -40.00 32 s +( ) 112610 -41.00 32 s +2 sf +(:focus\036in) 123111 0.00 -1 s +5 sf +(.) 123817 0.00 -1 s +6 sf +57912.0 59131.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 63918.0 m +(The) 67380 0.00 -1 s +( window receiving an ) 92314 -36.00 32 s +2 sf +(:enter\036notify) 107512 0.00 -1 s +5 sf +( or ) 111202 -36.00 32 s +2 sf +(:focus\036in) 121703 0.00 -1 s +5 sf +( event.) 129190 -37.00 32 s +6 sf +57912.0 70194.0 m +(keymap) 66530 0.00 -1 s +2 sf +( ) 67191 -45.00 32 s +5 sf +(\037 Type \() 78073 -45.00 32 s +2 sf +(bit\036vector) 89824 0.00 -1 s +( 256) 94717 -46.00 32 s +5 sf +(\).) 96362 0.00 -1 s +62992.0 74981.0 m +(A) 65029 0.00 -1 s +( bit\036vector containing the logical state of the keyboard. Each bit set to 1) 143492 -174.00 32 s +( indi\036) 149352 -175.00 32 s +62992.0 78142.0 m +(cates) 68633 0.00 -1 s +( that the corresponding key is currently pressed. The vector is represented) 149352 -227.91 32 s +62992.0 81303.0 m +(as) 65343 0.00 -1 s +( 32 bytes. For ) 81387 -46.00 32 s +6 sf +(n) 82798 0.00 -1 s +5 sf +( from 0 to 7, byte ) 102824 -46.00 32 s +6 sf +(n) 104235 0.00 -1 s +5 sf +( \(from 0\) contains the bits for keys 8) 145087 -46.50 32 s +6 sf +(n) 146498 0.00 -1 s +5 sf +( to) 149352 -47.00 32 s +62992.0 84463.0 m +(8) 64403 0.00 -1 s +6 sf +(n) 65814 0.00 -1 s +5 sf +(+7,) 69523 0.00 -1 s +( with the least significant) 97795 -25.00 32 s +( bit in the byte representing key 8) 135472 -25.57 32 s +6 sf +(n) 136883 0.00 -1 s +5 sf +(.) 137589 0.00 -1 s +2 sf +34544.0 90740.0 m +(:mapping\036notify) 54138 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 95459.0 m +(The) 57220 0.00 -1 s +( X server reports ) 76797 -3.00 32 s +2 sf +(:mapping\036notify) 96391 0.00 -1 s +5 sf +( events to all clients. There is no mechanism to) 149352 -2.67 32 s +52832.0 98620.0 m +(express) 61295 0.00 -1 s +( disinterest in this event. The X server generates this event type whenever a client) 149352 -287.64 32 s +52832.0 101781.0 m +(application) 65371 0.00 -1 s +( calls one of the following:) 95549 -30.60 32 s +/symbb8 4 declareFont +4 sf +52832.0 108328.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(set\036modifier\036mapping) 84086 0.00 -1 s +5 sf +( to indicate which keycodes to use as modifiers \(the status) 149352 -25.60 32 s +57912.0 111489.0 m +(reply) 63710 0.00 -1 s +( must be ) 73876 -34.67 32 s +2 sf +(:mapping\036success) 95039 0.00 -1 s +5 sf +(\)) 95978 0.00 -1 s +4 sf +52832.0 118037.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(change\036keyboard\036mapping) 90365 0.00 -1 s +5 sf +( to change the keyboard mapping ) 128174 -73.00 32 s +4 sf +52832.0 124584.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(s) 59010 0.00 -1 s +2 sf +(et\036pointer\036mapping) 82521 0.00 -1 s +5 sf +( to set the pointer mapping \(the status reply must be ) 142144 40.45 32 s +2 sf +(:map\036) 149352 0.00 -1 s +57912.0 127745.0 m +(ping\036success) 72806 0.00 -1 s +5 sf +(\)) 73745 0.00 -1 s +6 sf +57912.0 134022.0 m +(request) 66220 0.00 -1 s +5 sf +( \037) 69704 -44.00 32 s +2 sf +( ) 70366 -44.00 32 s +5 sf +(Type \() 77766 -44.00 32 s +2 sf +(member :modifier :keyboard :pointer) 123165 -43.67 32 s +5 sf +(\).) 124810 0.00 -1 s +62992.0 138808.0 m +(Indicates) 73178 0.00 -1 s +( the kind of change that occurred\037) 114183 173.00 32 s +2 sf +(:modifier) 125465 0.00 -1 s +5 sf +( for a successful ) 145123 173.50 32 s +2 sf +(set\036) 149352 0.00 -1 s +62992.0 141969.0 m +(modifier\036mapping) 84937 0.00 -1 s +5 sf +(,) 85643 0.00 -1 s +( ) 86048 -301.00 32 s +2 sf +(:keyboard) 98433 0.00 -1 s +5 sf +( for a successful ) 116193 -301.00 32 s +2 sf +(change\036keyboard\036mapping) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +62992.0 145130.0 m +(and) 67067 0.00 -1 s +( ) 67735 -38.00 32 s +2 sf +(:pointer) 77452 0.00 -1 s +5 sf +( for a successful ) 96266 -37.50 32 s +2 sf +(set\036pointer\036mapping) 120875 0.00 -1 s +5 sf +(.) 121581 0.00 -1 s +6 sf +57912.0 151407.0 m +(start) 63087 0.00 -1 s +( ) 63758 -35.00 32 s +5 sf +(\037 Type ) 73722 -34.50 32 s +2 sf +(card8) 80619 0.00 -1 s +5 sf +(.) 81325 0.00 -1 s +62992.0 156193.0 m +(If) 64870 0.00 -1 s +( request) 74045 320.00 32 s +( is) 76952 319.00 32 s +2 sf +( :keyboard) 90363 320.00 32 s +5 sf +(, then ) 97979 319.50 32 s +6 sf +(start) 103154 0.00 -1 s +5 sf +( and ) 109280 319.50 32 s +6 sf +(count) 115550 0.00 -1 s +5 sf +( indicate the range of altered) 149352 319.40 32 s +62992.0 159354.0 m +(keycodes.) 74199 0.00 -1 s +6 sf +57912.0 165631.0 m +(count) 64182 0.00 -1 s +2 sf +( ) 64835 -53.00 32 s +5 sf +(\037 Type) 74109 -53.00 32 s +( ) 74761 -54.00 32 s +2 sf +(card8) 81658 0.00 -1 s +5 sf +(.) 82364 0.00 -1 s +62992.0 170417.0 m +(If) 64870 0.00 -1 s +( request) 74045 320.00 32 s +( is ) 77978 319.50 32 s +2 sf +(:keyboard) 90363 0.00 -1 s +5 sf +(, then ) 97979 319.50 32 s +6 sf +(start) 103154 0.00 -1 s +5 sf +( and ) 109280 319.50 32 s +6 sf +(count) 115550 0.00 -1 s +5 sf +( indicate the range of altered) 149352 319.40 32 s +62992.0 173578.0 m +(keycodes.) 74199 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 27 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036145) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +29170.0 h +2 sf +(Exposure) 40616 0.00 -1 s +( Events) 49378 -96.00 32 s +52832.0 h +(12.12.4) 61299 0.00 -1 s +5 sf +() 61299 0.00 -1 s +63494.0 h +(The) 67882 0.00 -1 s +( X server cannot guarantee that a window's content is preserved when) 145345 -146.00 32 s +( the) 149352 -147.00 32 s +52832.0 29216.0 m +(window) 61923 0.00 -1 s +( is obscured or reconfigured. X requires) 106236 -98.00 32 s +( client applications to be capable of re\036) 149352 -98.57 32 s +52832.0 32377.0 m +(storing) 60670 0.00 -1 s +( the contents) 75157 111.00 32 s +( of a previously\036invisible window region whenever it is exposed.) 149352 110.44 32 s +52832.0 35537.0 m +(Therefore,) 64660 0.00 -1 s +( the X server sends events describing the exposed window and its exposed) 149352 69.17 32 s +52832.0 38698.0 m +(region.) 60747 0.00 -1 s +( For a simple window, a client can choose to redraw the entire content whenever) 149352 -158.79 32 s +52832.0 41859.0 m +(any) 56907 0.00 -1 s +( region is exposed. For a complex window, a client can redraw only the exposed re\036) 149352 -132.80 32 s +52832.0 45020.0 m +(gion.) 58555 0.00 -1 s +2 sf +34544.0 51297.0 m +(:exposure) 46300 0.00 -1 s +52832.0 h +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 54458.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +/timsps10i 6 declareFont +6 sf +52832.0 57618.0 m +(Selected) 62234 0.00 -1 s +( by:) 66492 -51.00 32 s +2 sf +( ) 67147 -51.00 32 s +5 sf +(\037) 69969 0.00 -1 s +2 sf +( :exposure) 82380 -51.00 32 s +5 sf +(.) 83086 0.00 -1 s +52832.0 62337.0 m +(An) 56280 0.00 -1 s +( ) 56715 -271.00 32 s +2 sf +(:exposure) 68471 0.00 -1 s +5 sf +( event is sent when redisplay is needed for) 114110 -271.00 32 s +( a window region whose content) 149352 -271.60 32 s +52832.0 65498.0 m +(has) 56594 0.00 -1 s +( been lost. Redisplay is needed when one of the following occurs:) 130387 -31.91 32 s +/symbb8 4 declareFont +4 sf +52832.0 72046.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(A) 59949 0.00 -1 s +( region is) 70230 -111.00 32 s +( exposed for a window and the X server has no backing store for the re\036) 149352 -111.53 32 s +57912.0 75207.0 m +(gion) 62929 0.00 -1 s +4 sf +52832.0 81754.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(A) 59949 0.00 -1 s +( region of) 71002 41.00 32 s +( a viewable window is obscured and the X server begins to honor the) 149352 40.46 32 s +57912.0 84915.0 m +(window's) 69040 0.00 -1 s +( backing\036store) 85069 -35.00 32 s +( attribute of ) 98833 -35.67 32 s +2 sf +(:always) 107924 0.00 -1 s +5 sf +( or ) 111615 -35.50 32 s +2 sf +(:when\036mapped) 129642 0.00 -1 s +4 sf +52832.0 91463.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( X server begins to honor an unviewable window's backing\036store attribute of) 149352 27.18 32 s +57912.0 94623.0 m +2 sf +(:always) 67003 0.00 -1 s +5 sf +( or :) 71433 -58.00 32 s +2 sf +(when\036mapped) 88521 0.00 -1 s +5 sf +(.) 89227 0.00 -1 s +52832.0 100900.0 m +(The) 57220 0.00 -1 s +( regions needing redisplay are decomposed into) 109453 -255.00 32 s +( an arbitrary set of rectangles, and an) 149352 -255.57 32 s +52832.0 104061.0 m +2 sf +(:exposure) 64588 0.00 -1 s +5 sf +( event is generated for each rectangle. For) 111399 -74.00 32 s +( a given action causing ) 137596 -74.60 32 s +2 sf +(:exposure) 149352 0.00 -1 s +5 sf +52832.0 107222.0 m +(events,) 60748 0.00 -1 s +( the set of events for a given window are guaranteed to be reported contiguously.) 149352 -192.57 32 s +2 sf +52832.0 113498.0 m +(:exposure) 64588 0.00 -1 s +5 sf +( events are never generated for ) 99746 -42.83 32 s +2 sf +(:input\036only) 113229 0.00 -1 s +5 sf +( windows.) 124787 -43.00 32 s +52832.0 119775.0 m +(All) 56437 0.00 -1 s +( ) 57207 64.00 32 s +2 sf +(:exposure) 68963 0.00 -1 s +5 sf +( events caused by a hierarchy change are generated after any) 137929 64.00 32 s +( hierarchy) 149352 63.00 32 s +52832.0 122936.0 m +(event) 58944 0.00 -1 s +( \() 60350 -239.00 32 s +2 sf +(:unmap\036notify) 77749 0.00 -1 s +5 sf +(, ) 78922 -239.00 32 s +2 sf +(:map\036notify) 93183 0.00 -1 s +5 sf +(, ) 94356 -239.00 32 s +2 sf +(:configure\036notify) 114729 0.00 -1 s +5 sf +(,) 115435 0.00 -1 s +2 sf +(:gravity\036notify) 132986 0.00 -1 s +5 sf +(, or) 136509 -239.00 32 s +( ) 136975 -240.00 32 s +2 sf +(:circulate\036) 149352 0.00 -1 s +52832.0 126097.0 m +(notify) 59885 0.00 -1 s +5 sf +(\)) 60824 0.00 -1 s +( caused by that change. All ) 91865 -38.50 32 s +2 sf +(:exposure) 103621 0.00 -1 s +5 sf +( events on a given window are generated) 149352 -38.57 32 s +52832.0 129258.0 m +(after) 58000 0.00 -1 s +( any ) 62955 -266.00 32 s +2 sf +(:visibility\036notify) 82234 0.00 -1 s +5 sf +( event on that window, but it is not required that all ) 137596 -265.75 32 s +2 sf +(:exposure) 149352 0.00 -1 s +5 sf +52832.0 132419.0 m +(events) 60042 0.00 -1 s +( on all windows be generated after all visibility events on all windows. The order\036) 149352 -220.71 32 s +52832.0 135580.0 m +(ing) 56438 0.00 -1 s +( of :) 61324 170.00 32 s +2 sf +(exposure) 72141 0.00 -1 s +5 sf +( events) 80227 170.00 32 s +( with respect to ) 98931 169.50 32 s +2 sf +(:focus\036out) 110998 0.00 -1 s +5 sf +(, ) 112579 169.00 32 s +2 sf +(:enter\036notify) 127777 0.00 -1 s +5 sf +(, and ) 134309 169.50 32 s +2 sf +(:leave\036notify) 149352 0.00 -1 s +5 sf +52832.0 138740.0 m +(events) 60042 0.00 -1 s +( is not constrained.) 81257 -35.00 32 s +6 sf +57912.0 145017.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 149804.0 m +(The) 67380 0.00 -1 s +( window needing redisplay.) 98394 -59.67 32 s +6 sf +57912.0 156080.0 m +(x) 59165 0.00 -1 s +( ) 59823 -48.00 32 s +5 sf +(\037 Type ) 69760 -48.00 32 s +2 sf +(card16) 78068 0.00 -1 s +5 sf +(.) 78774 0.00 -1 s +62992.0 160867.0 m +(The) 67380 0.00 -1 s +( position of the left edge of the region to redisplay, relative to the ) 142459 61.36 32 s +6 sf +(event\036) 149352 0.00 -1 s +62992.0 164028.0 m +(window) 71773 0.00 -1 s +5 sf +(.) 72479 0.00 -1 s +6 sf +57912.0 170304.0 m +(y) 59165 0.00 -1 s +( ) 59823 -48.00 32 s +5 sf +(\037) 62645 0.00 -1 s +2 sf +( ) 63303 -48.00 32 s +5 sf +(Type ) 69760 -48.00 32 s +2 sf +(card16) 78068 0.00 -1 s +5 sf +(.) 78774 0.00 -1 s +62992.0 175091.0 m +(The) 67380 0.00 -1 s +( position of the top edge of the region to redisplay, relative to the ) 137443 -285.93 32 s +6 sf +(event\036win\036) 149352 0.00 -1 s +62992.0 178252.0 m +(dow) 67696 0.00 -1 s +5 sf +(.) 68402 0.00 -1 s +6 sf +57912.0 184528.0 m +(width) 64184 0.00 -1 s +5 sf +( \037 Type) 74117 -50.00 32 s +( ) 74772 -51.00 32 s +2 sf +(card16) 83080 0.00 -1 s +5 sf +(.) 83786 0.00 -1 s +62992.0 189315.0 m +(The) 67380 0.00 -1 s +( width of the region to redisplay.) 104129 -27.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 28 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036146) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(height) 64966 0.00 -1 s +/timsps10 5 declareFont +5 sf +( \037 Type ) 75540 -55.00 32 s +2 sf +(card16) 83848 0.00 -1 s +5 sf +(.) 84554 0.00 -1 s +62992.0 27364.0 m +(The) 67380 0.00 -1 s +( height of the region to redisplay.) 104738 -30.67 32 s +6 sf +57912.0 33641.0 m +(count) 64182 0.00 -1 s +5 sf +( \037) 67653 -57.00 32 s +2 sf +( ) 68302 -57.00 32 s +5 sf +(Type ) 74750 -57.00 32 s +2 sf +(card16) 83058 0.00 -1 s +5 sf +(.) 83764 0.00 -1 s +62992.0 38427.0 m +(If) 64870 0.00 -1 s +( count is zero, then) 87111 211.00 32 s +( no more ) 98480 210.33 32 s +2 sf +(:exposure) 110236 0.00 -1 s +5 sf +( events for this window follow. If) 149352 210.50 32 s +62992.0 41588.0 m +(count) 69262 0.00 -1 s +( is nonzero, then at least that many more ) 115220 -49.00 32 s +2 sf +(:exposure) 126976 0.00 -1 s +5 sf +( events for this win\036) 149352 -48.75 32 s +62992.0 44749.0 m +(dow) 67851 0.00 -1 s +( follow \(and possibly more\).) 99794 -28.00 32 s +2 sf +34544.0 51026.0 m +(:graphics\036exposure) 57587 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 55745.0 m +(A) 54869 0.00 -1 s +( ) 55265 -310.00 32 s +2 sf +(:graphics\036exposure) 78308 0.00 -1 s +5 sf +( event is generated by a) 103325 -310.00 32 s +( call to ) 110780 -310.67 32 s +2 sf +(copy\036area) 122691 0.00 -1 s +5 sf +( or ) 125832 -310.50 32 s +2 sf +(copy\036plane) 139001 0.00 -1 s +5 sf +( when the) 149352 -310.50 32 s +52832.0 58905.0 m +(exposures) 64117 0.00 -1 s +( attribute of the graphics context is ) 102205 -257.71 32 s +2 sf +(:on) 106124 0.00 -1 s +5 sf +(. A ) 109764 -257.50 32 s +2 sf +(:graphics\036exposure) 132807 0.00 -1 s +5 sf +( event reports a) 149352 -257.67 32 s +52832.0 62066.0 m +(destination) 65216 0.00 -1 s +( region whose content cannot be computed because the content of the) 142046 -133.00 32 s +( corre\036) 149352 -134.00 32 s +52832.0 65227.0 m +(sponding) 63180 0.00 -1 s +( source region has been lost. For example, the) 114932 3.00 32 s +( missing source region may be) 149352 2.40 32 s +52832.0 68388.0 m +(obscured) 63019 0.00 -1 s +( or may lie outside the current source) 103483 -209.00 32 s +( drawable size. For a given action causing) 149352 -209.57 32 s +52832.0 71549.0 m +2 sf +(:graphics\036exposure) 75875 0.00 -1 s +5 sf +( events, the set of events for a given destination are guaranteed to be) 149352 -279.92 32 s +52832.0 74710.0 m +(reported) 62233 0.00 -1 s +( contiguously.) 78119 -106.00 32 s +6 sf +57912.0 80986.0 m +(drawable,) 69279 0.00 -1 s +( event\036window) 85593 -66.00 32 s +2 sf +( ) 86232 -67.00 32 s +5 sf +(\037 Type ) 96132 -66.50 32 s +2 sf +(drawable) 107419 0.00 -1 s +5 sf +(.) 108125 0.00 -1 s +62992.0 85773.0 m +(The) 67380 0.00 -1 s +( destination) 80425 -45.00 32 s +( drawable for the ) 100145 -45.50 32 s +2 sf +(copy\036area) 112056 0.00 -1 s +5 sf +( or ) 115727 -45.50 32 s +2 sf +(copy\036plane) 128896 0.00 -1 s +5 sf +( function.) 139666 -46.00 32 s +6 sf +57912.0 92050.0 m +(x) 59165 0.00 -1 s +2 sf +( ) 59823 -48.00 32 s +5 sf +(\037 Type ) 69760 -48.00 32 s +2 sf +(card16) 78068 0.00 -1 s +5 sf +(.) 78774 0.00 -1 s +62992.0 96836.0 m +(The) 67380 0.00 -1 s +( position of the left edge of the destination region, relative to the ) 137985 -211.85 32 s +6 sf +(drawable) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +6 sf +57912.0 103113.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59823 -48.00 32 s +5 sf +(\037 Type ) 69760 -48.00 32 s +2 sf +(card16) 78068 0.00 -1 s +5 sf +(.) 78774 0.00 -1 s +62992.0 107899.0 m +(The) 67380 0.00 -1 s +( position of the top edge of the destination region, relative to the ) 137985 -200.00 32 s +6 sf +(drawable) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +6 sf +57912.0 114176.0 m +(width) 64184 0.00 -1 s +2 sf +( ) 64840 -50.00 32 s +5 sf +(\037 Type) 74117 -50.00 32 s +( ) 74772 -51.00 32 s +2 sf +(card16) 83080 0.00 -1 s +5 sf +(.) 83786 0.00 -1 s +62992.0 118962.0 m +(The) 67380 0.00 -1 s +( width of the destination region.) 103271 -32.60 32 s +6 sf +57912.0 125239.0 m +(height) 64966 0.00 -1 s +2 sf +( ) 65617 -55.00 32 s +5 sf +(\037 Type ) 75540 -55.00 32 s +2 sf +(card16) 83848 0.00 -1 s +5 sf +(.) 84554 0.00 -1 s +62992.0 130025.0 m +(The) 67380 0.00 -1 s +( height of the destination) 95296 -36.00 32 s +( region.) 103880 -37.00 32 s +6 sf +57912.0 136302.0 m +(count) 64182 0.00 -1 s +2 sf +( ) 64831 -57.00 32 s +5 sf +(\037 Type ) 74750 -57.00 32 s +2 sf +(card16) 83058 0.00 -1 s +5 sf +(.) 83764 0.00 -1 s +62992.0 141089.0 m +(If) 64870 0.00 -1 s +( count is zero) 79447 -183.00 32 s +( then no more ) 95016 -183.50 32 s +2 sf +(:graphics\036exposure) 118059 0.00 -1 s +5 sf +( events for the ) 134096 -183.50 32 s +6 sf +(drawable) 144757 0.00 -1 s +5 sf +( fol\036) 149352 -184.00 32 s +62992.0 144249.0 m +(low.) 67930 0.00 -1 s +( If count is nonzero then at least that many more ) 126309 284.18 32 s +2 sf +(:graphics\036exposure) 149352 0.00 -1 s +5 sf +62992.0 147410.0 m +(events) 70202 0.00 -1 s +( for the) 78297 -27.00 32 s +( ) 78975 -28.00 32 s +6 sf +(drawable) 89636 0.00 -1 s +5 sf +( follow \(and possibly more\).) 121581 -27.50 32 s +6 sf +57912.0 153687.0 m +(major) 64653 0.00 -1 s +5 sf +( \037 Type ) 75257 -45.00 32 s +2 sf +(card8) 82154 0.00 -1 s +5 sf +(.) 82860 0.00 -1 s +62992.0 158473.0 m +(The) 67380 0.00 -1 s +( major opcode for the graphics request generating the event) 149352 1663.33 32 s +62992.0 161634.0 m +(\(62) 66753 0.00 -1 s +( for ) 71371 -41.50 32 s +2 sf +(copy\036area) 83282 0.00 -1 s +5 sf +(, 63 for ) 92092 -41.67 32 s +2 sf +(copy\036plane) 105261 0.00 -1 s +5 sf +(\).) 106906 0.00 -1 s +6 sf +57912.0 167911.0 m +(minor) 64653 0.00 -1 s +2 sf +( ) 65310 -49.00 32 s +5 sf +(\037 Type ) 75246 -48.50 32 s +2 sf +(card16) 83554 0.00 -1 s +5 sf +(.) 84260 0.00 -1 s +62992.0 172697.0 m +(The) 67380 0.00 -1 s +( minor opcode for the graphics request) 120828 1646.00 32 s +( generating the event) 149352 1645.33 32 s +62992.0 175858.0 m +(\(0) 65342 0.00 -1 s +( for both) 74966 -47.00 32 s +( ) 75624 -48.00 32 s +2 sf +(copy\036area) 87535 0.00 -1 s +5 sf +( and ) 92927 -47.50 32 s +2 sf +(copy\036plane) 106096 0.00 -1 s +5 sf +(\).) 107741 0.00 -1 s +2 sf +34544.0 182135.0 m +(:no\036exposure) 50219 0.00 -1 s +52832.0 h +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 186854.0 m +(A) 54869 0.00 -1 s +( ) 55304 -271.00 32 s +2 sf +(:no\036exposure) 70979 0.00 -1 s +5 sf +( event is generated by a call to ) 103765 -271.00 32 s +2 sf +(copy\036area) 115676 0.00 -1 s +5 sf +( or ) 118895 -271.50 32 s +2 sf +(copy\036plane) 132064 0.00 -1 s +5 sf +( when the expo\036) 149352 -271.67 32 s +52832.0 190015.0 m +(sures) 58631 0.00 -1 s +( attribute of the graphics context is ) 96564 -279.86 32 s +2 sf +(:on) 100483 0.00 -1 s +5 sf +(. If no ) 107169 -279.33 32 s +2 sf +(:graphics\036exposure) 130212 0.00 -1 s +5 sf +( events are gener\036) 149352 -279.67 32 s +52832.0 193175.0 m +(ated,) 58239 0.00 -1 s +( then a single ) 73780 -34.00 32 s +2 sf +(:no\036exposure) 89455 0.00 -1 s +5 sf +( event is) 98793 -34.00 32 s +( sent.) 104716 -35.00 32 s +6 sf +57912.0 198775.0 m +(drawable,) 69279 0.00 -1 s +( event\036window) 85593 -66.00 32 s +2 sf +( ) 86232 -67.00 32 s +5 sf +(\037 Type ) 96132 -66.50 32 s +2 sf +(drawable) 107419 0.00 -1 s +5 sf +(.) 108125 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 29 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036147) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +62992.0 22578.0 m +(The) 67380 0.00 -1 s +( destination) 80425 -45.00 32 s +( drawable for the ) 100145 -45.50 32 s +2 sf +(copy\036area) 112056 0.00 -1 s +5 sf +( or ) 115727 -45.50 32 s +2 sf +(copy\036plane) 128896 0.00 -1 s +5 sf +( function.) 139666 -46.00 32 s +/timsps10i 6 declareFont +6 sf +57912.0 28854.0 m +(major) 64653 0.00 -1 s +5 sf +( \037 Type ) 75257 -45.00 32 s +2 sf +(card8) 82154 0.00 -1 s +5 sf +(.) 82860 0.00 -1 s +62992.0 33641.0 m +(The) 67380 0.00 -1 s +( major opcode for the graphics request generating the event) 149352 1663.33 32 s +62992.0 36802.0 m +(\(62) 66753 0.00 -1 s +( for ) 71371 -41.50 32 s +2 sf +(copy\036area) 83282 0.00 -1 s +5 sf +(, 63 for ) 92092 -41.67 32 s +2 sf +(copy\036plane) 105261 0.00 -1 s +5 sf +(\).) 106906 0.00 -1 s +6 sf +57912.0 43078.0 m +(minor) 64653 0.00 -1 s +5 sf +( \037 Type ) 75246 -48.67 32 s +2 sf +(card16) 83554 0.00 -1 s +5 sf +(.) 84260 0.00 -1 s +62992.0 47865.0 m +(The) 67380 0.00 -1 s +( minor opcode for the graphics request) 120828 1646.00 32 s +( generating the event) 149352 1645.33 32 s +62992.0 51026.0 m +(\(0) 65342 0.00 -1 s +( for both) 74966 -47.00 32 s +( ) 75624 -48.00 32 s +2 sf +(copy\036area) 87535 0.00 -1 s +5 sf +( and ) 92927 -47.50 32 s +2 sf +(copy\036plane) 106096 0.00 -1 s +5 sf +(\).) 107741 0.00 -1 s +52832.0 57957.0 m +0.0 0.0 m +newpath +149013 56398 av +52967 56400 as +[] 0 setdash +dp +149352.0 57957.0 m +20320.0 60779.0 m +32422.0 h +2 sf +(Window) 42614 0.00 -1 s +( State) 49378 -53.00 32 s +52832.0 h +(12.12.5) 61299 0.00 -1 s +5 sf +() 61299 0.00 -1 s +63494.0 h +(The) 67882 0.00 -1 s +( following paragraphs describe the events that can be received) 137589 -47.56 32 s +20320.0 63940.0 m +41250.0 h +2 sf +(Events) 49402 0.00 -1 s +52832.0 h +5 sf +(when) 58944 0.00 -1 s +( a window becomes:) 81912 -50.67 32 s +/symbb8 4 declareFont +4 sf +52832.0 69810.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Created) 66687 0.00 -1 s +4 sf +52832.0 75681.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Destroyed) 69509 0.00 -1 s +4 sf +52832.0 81551.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Invisible) 67787 0.00 -1 s +4 sf +52832.0 87421.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Mapped) 67160 0.00 -1 s +4 sf +52832.0 93291.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Moved) 65907 0.00 -1 s +4 sf +52832.0 99162.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Reparented) 70762 0.00 -1 s +4 sf +52832.0 105032.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Resized) 66846 0.00 -1 s +4 sf +52832.0 110902.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Restacked) 69510 0.00 -1 s +( ) 70149 -67.00 32 s +4 sf +52832.0 116772.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Unmapped) 70294 0.00 -1 s +4 sf +52832.0 122642.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Visible) 66063 0.00 -1 s +2 sf +34544.0 128242.0 m +(:circulate\036notify) 53974 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 131403.0 m +72542.0 h +5 sf +( ) 73242 -6.00 32 s +6 sf +52832.0 134564.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67183 -33.00 32 s +5 sf +(\037 ) 70678 -33.00 32 s +2 sf +(:structure\036notify ) 91408 -33.00 32 s +5 sf +(on a window or) 108943 -33.00 32 s +2 sf +( :substructure\036notify) 133909 -33.00 32 s +52832.0 137724.0 m +72542.0 h +5 sf +(on) 75364 0.00 -1 s +( its) 78712 -24.00 32 s +( parent.) 87150 -25.00 32 s +52832.0 142443.0 m +(A) 54869 0.00 -1 s +( ) 55375 -200.00 32 s +2 sf +(:circulate\036notify) 74805 0.00 -1 s +5 sf +( event is generated whenever a) 108518 -200.00 32 s +( window is actually restacked as a re\036) 149352 -200.57 32 s +52832.0 145604.0 m +(sult) 56909 0.00 -1 s +( of a client application calling ) 90978 -43.00 32 s +2 sf +(circulate\036window\036up) 115900 0.00 -1 s +5 sf +( or ) 119576 -43.00 32 s +2 sf +(circulate\036window\036down) 147946 0.00 -1 s +5 sf +(.) 148652 0.00 -1 s +6 sf +57912.0 151203.0 m +(event\036window) 73586 0.00 -1 s +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 155990.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 162266.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 167053.0 m +(The) 67380 0.00 -1 s +( window that was restacked.) 99116 -40.00 32 s +6 sf +57912.0 173330.0 m +(place) 64024 0.00 -1 s +( ) 64698 -32.00 32 s +5 sf +(\037 Type \() 75607 -31.50 32 s +2 sf +(member :top :bottom) 101400 -31.50 32 s +5 sf +(\).) 103045 0.00 -1 s +62992.0 178116.0 m +(If) 64870 0.00 -1 s +( place is ) 74278 -182.00 32 s +2 sf +(:top) 79136 0.00 -1 s +5 sf +(, the ) 84338 -182.00 32 s +6 sf +(window) 93119 0.00 -1 s +5 sf +( is now on top of all siblings. Otherwise, it is below) 149352 -182.55 32 s +62992.0 181277.0 m +(all) 65813 0.00 -1 s +( siblings.) 75997 -9.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 30 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036148) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(:configure\036notify) 54917 0.00 -1 s +136347.0 h +/timsps10 5 declareFont +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 25739.0 m +72542.0 h +5 sf +( ) 73242 -6.00 32 s +/timsps10i 6 declareFont +6 sf +52832.0 28900.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67183 -33.00 32 s +5 sf +(\037) 70005 0.00 -1 s +6 sf +( ) 70678 -33.00 32 s +2 sf +(:structure\036notify ) 91408 -33.00 32 s +5 sf +(on a window) 105920 -33.00 32 s +2 sf +( ) 106593 -33.00 32 s +5 sf +(or) 108943 0.00 -1 s +2 sf +( :substructure\036notify) 133909 -33.00 32 s +52832.0 32060.0 m +72542.0 h +5 sf +(on) 75364 0.00 -1 s +( its) 78712 -24.00 32 s +( parent.) 87150 -25.00 32 s +52832.0 36779.0 m +(The) 57220 0.00 -1 s +( ) 57664 -262.00 32 s +2 sf +(:configure\036notify) 78037 0.00 -1 s +5 sf +( event is generated when the position or size of a window actually) 149352 -261.50 32 s +52832.0 39940.0 m +(changes) 61922 0.00 -1 s +( as a result of a client application setting) 106563 -102.00 32 s +( its ) 110436 -102.50 32 s +6 sf +(x) 111689 0.00 -1 s +5 sf +(, ) 112998 -103.00 32 s +6 sf +(y) 114251 0.00 -1 s +5 sf +(, ) 115561 -102.00 32 s +6 sf +(width) 121833 0.00 -1 s +5 sf +(, ) 123142 -103.00 32 s +6 sf +(height) 130196 0.00 -1 s +5 sf +(, or ) 134459 -102.50 32 s +6 sf +(border\036width) 149352 0.00 -1 s +5 sf +52832.0 43101.0 m +(attributes.) 64039 0.00 -1 s +( ) 64730 -15.00 32 s +6 sf +57912.0 49378.0 m +(event\036window) 73586 0.00 -1 s +2 sf +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 54164.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 60441.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 65227.0 m +(The) 67380 0.00 -1 s +( window) 77144 -33.00 32 s +( that was moved or resized.) 107854 -33.60 32 s +6 sf +57912.0 71504.0 m +(x) 59165 0.00 -1 s +5 sf +( \037 Type ) 69809 -31.67 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +6 sf +62992.0 76290.0 m +(x) 64245 0.00 -1 s +5 sf +( and ) 69486 -123.00 32 s +6 sf +(y) 70739 0.00 -1 s +5 sf +( specify) 79471 -123.00 32 s +( the new upper\036left corner position of the ) 125502 -123.50 32 s +6 sf +(window) 134283 0.00 -1 s +5 sf +( relative to its) 149352 -123.67 32 s +62992.0 79451.0 m +(parent.) 70749 0.00 -1 s +6 sf +57912.0 85728.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +6 sf +62992.0 90514.0 m +(x) 64245 0.00 -1 s +5 sf +( and ) 69486 -123.00 32 s +6 sf +(y) 70739 0.00 -1 s +5 sf +( specify) 79471 -123.00 32 s +( the new upper\036left corner position of the ) 125502 -123.50 32 s +6 sf +(window) 134283 0.00 -1 s +5 sf +( relative to its) 149352 -123.67 32 s +62992.0 93675.0 m +(parent.) 70749 0.00 -1 s +6 sf +57912.0 99952.0 m +(width) 64184 0.00 -1 s +2 sf +( ) 64840 -50.00 32 s +5 sf +(\037 Type) 74117 -50.00 32 s +( ) 74772 -51.00 32 s +2 sf +(card16) 83080 0.00 -1 s +5 sf +(.) 83786 0.00 -1 s +6 sf +62992.0 104738.0 m +(width) 69264 0.00 -1 s +5 sf +( and ) 74695 -28.00 32 s +6 sf +(height) 81749 0.00 -1 s +5 sf +( specify the new size of the ) 112979 -28.00 32 s +6 sf +(window) 121760 0.00 -1 s +5 sf +( interior.) 131448 -29.00 32 s +6 sf +57912.0 111015.0 m +(height) 64966 0.00 -1 s +2 sf +( ) 65617 -55.00 32 s +5 sf +(\037 Type ) 75540 -55.00 32 s +2 sf +(card16) 83848 0.00 -1 s +5 sf +(.) 84554 0.00 -1 s +6 sf +62992.0 115801.0 m +(width) 69264 0.00 -1 s +5 sf +( and ) 74695 -28.00 32 s +6 sf +(height) 81749 0.00 -1 s +5 sf +( specify the new size of the ) 112979 -28.00 32 s +6 sf +(window) 121760 0.00 -1 s +5 sf +( interior.) 131448 -29.00 32 s +6 sf +57912.0 122078.0 m +(border\036width) 72805 0.00 -1 s +2 sf +( ) 73454 -57.00 32 s +5 sf +(\037 Type ) 83374 -56.50 32 s +2 sf +(card16) 91682 0.00 -1 s +5 sf +(.) 92388 0.00 -1 s +62992.0 126865.0 m +(The) 67380 0.00 -1 s +( new ) 73407 -43.00 32 s +6 sf +(window) 82188 0.00 -1 s +5 sf +( border) 90215 -43.00 32 s +( width.) 98010 -44.00 32 s +6 sf +57912.0 133141.0 m +(above\036sibling) 73273 0.00 -1 s +2 sf +( ) 73943 -36.00 32 s +5 sf +(\037 Type) 83234 -36.00 32 s +( \() 84842 -37.00 32 s +2 sf +(or null window) 102958 -36.50 32 s +5 sf +(\).) 104603 0.00 -1 s +62992.0 137928.0 m +(The) 67380 0.00 -1 s +( sibling immediately below the ) 103641 119.40 32 s +6 sf +(window) 112422 0.00 -1 s +5 sf +(. If above\036sibling is ) 135551 119.50 32 s +2 sf +(nil) 138688 0.00 -1 s +5 sf +(, then the) 149352 119.50 32 s +62992.0 141089.0 m +6 sf +(window) 71773 0.00 -1 s +5 sf +( is below all of its siblings.) 102029 -13.67 32 s +6 sf +57912.0 147365.0 m +(override\036redirect\036p) 79696 0.00 -1 s +2 sf +( ) 80346 -56.00 32 s +5 sf +(\037 Type ) 90267 -56.00 32 s +2 sf +(boolean) 99675 0.00 -1 s +5 sf +(.) 100381 0.00 -1 s +6 sf +62992.0 152152.0 m +(override\036redirect\036p) 84776 0.00 -1 s +5 sf +( is true if) 95264 126.00 32 s +( the override\036redirect attribute of the ) 137858 125.50 32 s +6 sf +(window) 146639 0.00 -1 s +5 sf +( is) 149352 125.00 32 s +62992.0 155313.0 m +2 sf +(:on) 66911 0.00 -1 s +5 sf +(;) 67695 0.00 -1 s +( otherwise, it is) 84045 -298.00 32 s +( ) 84452 -299.00 32 s +2 sf +(nil) 87589 0.00 -1 s +5 sf +(. See ) 93185 -298.50 32 s +2 sf +(window\036override\036redirect) 124214 0.00 -1 s +5 sf +( in paragraph 4.3, Win\036) 149352 -298.50 32 s +62992.0 158473.0 m +(dow) 67851 0.00 -1 s +( Attributes.) 80512 -36.00 32 s +52832.0 164750.0 m +(The) 57220 0.00 -1 s +( X server can report ) 78954 -276.00 32 s +2 sf +(:create\036notify) 95247 0.00 -1 s +5 sf +( events to clients wanting information about crea\036) 149352 -275.57 32 s +52832.0 167911.0 m +(tion) 57222 0.00 -1 s +( of windows. The X server generates this event whenever a) 121360 -255.00 32 s +( client application creates) 149352 -255.67 32 s +52832.0 171072.0 m +(a) 54085 0.00 -1 s +( window) 63832 -50.00 32 s +( by calling ) 76300 -50.67 32 s +2 sf +(create\036window) 94008 0.00 -1 s +5 sf +(.) 94714 0.00 -1 s +52832.0 177348.0 m +(To) 55967 0.00 -1 s +( receive this event type in a client application, you ) 113029 -38.70 32 s +2 sf +(setf) 117258 0.00 -1 s +5 sf +( the ) 122041 -38.50 32 s +2 sf +(:substructure\036notify) 146334 0.00 -1 s +5 sf +( as) 149352 -39.00 32 s +52832.0 180509.0 m +(the) 56280 0.00 -1 s +( event\036mask in the parent window's event\036mask slot.) 115621 -31.71 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 31 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036149) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(:create\036notify) 50837 0.00 -1 s +52832.0 h +/timsps10 5 declareFont +5 sf +136347.0 h +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +/timsps10i 6 declareFont +6 sf +52832.0 28900.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67158 -45.50 32 s +2 sf +(:substructure\036notify) 91451 0.00 -1 s +5 sf +(.) 92157 0.00 -1 s +2 sf +( ) 92817 -46.00 32 s +5 sf +52832.0 33618.0 m +(The) 57220 0.00 -1 s +( ) 57699 -227.00 32 s +2 sf +(:create\036notify) 73992 0.00 -1 s +5 sf +( event is generated when a ) 103193 -227.00 32 s +6 sf +(window) 111974 0.00 -1 s +5 sf +( is created and is sent to the ) 141984 -226.50 32 s +6 sf +(parent) 149352 0.00 -1 s +5 sf +52832.0 36779.0 m +(window.) 62629 0.00 -1 s +6 sf +57912.0 43056.0 m +(parent,) 65986 0.00 -1 s +( event\036window) 82312 -54.00 32 s +2 sf +( ) 82963 -55.00 32 s +5 sf +(\037 Type ) 92887 -54.50 32 s +2 sf +(window) 102294 0.00 -1 s +5 sf +(.) 103000 0.00 -1 s +62992.0 47842.0 m +(The) 67380 0.00 -1 s +( parent window receiving the event.) 107583 -46.80 32 s +6 sf +57912.0 54119.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037 Type ) 77286 -48.50 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 58905.0 m +(The) 67380 0.00 -1 s +( new window) 82478 -53.00 32 s +( created.) 91982 -54.00 32 s +6 sf +57912.0 65182.0 m +(x) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +6 sf +62992.0 69969.0 m +(x) 64245 0.00 -1 s +5 sf +( and ) 69696 -18.00 32 s +6 sf +(y) 70949 0.00 -1 s +5 sf +( specify the) 83922 -18.00 32 s +( initial upper\036left corner position of the ) 128540 -18.57 32 s +6 sf +(window) 137321 0.00 -1 s +5 sf +( relative to) 149352 -18.50 32 s +62992.0 73129.0 m +(the) 66440 0.00 -1 s +( parent.) 74845 -58.00 32 s +6 sf +57912.0 79406.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +6 sf +62992.0 84193.0 m +(x) 64245 0.00 -1 s +5 sf +( and ) 69696 -18.00 32 s +6 sf +(y) 70949 0.00 -1 s +5 sf +( specify the) 83922 -18.00 32 s +( initial upper\036left corner position of the ) 128540 -18.57 32 s +6 sf +(window) 137321 0.00 -1 s +5 sf +( relative to) 149352 -18.50 32 s +62992.0 87353.0 m +(the) 66440 0.00 -1 s +( parent.) 74845 -58.00 32 s +6 sf +57912.0 93630.0 m +(width) 64184 0.00 -1 s +2 sf +( ) 64840 -50.00 32 s +5 sf +(\037 Type) 74117 -50.00 32 s +( ) 74772 -51.00 32 s +2 sf +(card16) 83080 0.00 -1 s +5 sf +(.) 83786 0.00 -1 s +6 sf +62992.0 98417.0 m +(width) 69264 0.00 -1 s +5 sf +( and) 74021 -24.00 32 s +( ) 74702 -25.00 32 s +6 sf +(height) 81756 0.00 -1 s +5 sf +( specify the initial size of the ) 114894 -24.43 32 s +6 sf +(window) 123675 0.00 -1 s +5 sf +( interior.) 133367 -25.00 32 s +6 sf +57912.0 104693.0 m +(height) 64966 0.00 -1 s +2 sf +( ) 65617 -55.00 32 s +5 sf +(\037 Type ) 75540 -55.00 32 s +2 sf +(card16) 83848 0.00 -1 s +5 sf +(.) 84554 0.00 -1 s +6 sf +62992.0 109480.0 m +(width) 69264 0.00 -1 s +5 sf +( and) 74021 -24.00 32 s +( ) 74702 -25.00 32 s +6 sf +(height) 81756 0.00 -1 s +5 sf +( specify the initial size of the ) 114894 -24.43 32 s +6 sf +(window) 123675 0.00 -1 s +5 sf +( interior.) 133367 -25.00 32 s +6 sf +57912.0 115756.0 m +(border\036width) 72805 0.00 -1 s +2 sf +( ) 73454 -57.00 32 s +5 sf +(\037 Type ) 83374 -56.50 32 s +2 sf +(card16) 91682 0.00 -1 s +5 sf +(.) 92388 0.00 -1 s +62992.0 120543.0 m +(The) 67380 0.00 -1 s +( initial ) 75308 -34.00 32 s +6 sf +(window) 84089 0.00 -1 s +5 sf +( border) 92125 -34.00 32 s +( width.) 99929 -35.00 32 s +6 sf +57912.0 126819.0 m +(override\036redirect\036p) 79696 0.00 -1 s +2 sf +( ) 80346 -56.00 32 s +5 sf +(\037 Type ) 90267 -56.00 32 s +2 sf +(boolean) 99675 0.00 -1 s +5 sf +(.) 100381 0.00 -1 s +6 sf +62992.0 131606.0 m +(override\036redirect\036p) 84776 0.00 -1 s +5 sf +( is true if) 95264 126.00 32 s +( the override\036redirect attribute of the ) 137858 125.50 32 s +6 sf +(window) 146639 0.00 -1 s +5 sf +( is) 149352 125.00 32 s +62992.0 134767.0 m +2 sf +(:on) 66911 0.00 -1 s +5 sf +(;) 67695 0.00 -1 s +( otherwise, it is) 84045 -298.00 32 s +( ) 84452 -299.00 32 s +2 sf +(nil) 87589 0.00 -1 s +5 sf +(. See ) 93185 -298.50 32 s +2 sf +(window\036override\036redirect) 124214 0.00 -1 s +5 sf +( in paragraph 4.3, Win\036) 149352 -298.50 32 s +62992.0 137928.0 m +(dow) 67851 0.00 -1 s +( Attributes.) 80512 -36.00 32 s +2 sf +34544.0 144204.0 m +(:destroy\036notify) 52409 0.00 -1 s +52832.0 h +5 sf +(Event) 59415 0.00 -1 s +( Type) 65837 -83.00 32 s +2 sf +34544.0 147365.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +6 sf +52832.0 150526.0 m +(Selected) 62234 0.00 -1 s +( by ) 66242 -34.00 32 s +5 sf +(\037) 69064 0.00 -1 s +6 sf +( ) 69736 -34.00 32 s +2 sf +(:structure\036notify ) 90465 -34.00 32 s +5 sf +(on a window or) 107997 -34.00 32 s +2 sf +( :substructure\036notify) 132961 -35.00 32 s +52832.0 153687.0 m +71730.0 h +5 sf +(on) 74552 0.00 -1 s +( its parent.) 86337 -25.00 32 s +52832.0 158406.0 m +(The) 57220 0.00 -1 s +( ) 57670 -256.00 32 s +2 sf +(:destroy\036notify) 75535 0.00 -1 s +5 sf +( event is generated when a ) 104564 -255.67 32 s +6 sf +(window) 113345 0.00 -1 s +5 sf +( is destroyed. The ordering of the) 149352 -255.50 32 s +52832.0 161567.0 m +2 sf +(:destroy\036notify) 70697 0.00 -1 s +5 sf +( events is) 80883 -159.00 32 s +( such that for any given window, ) 117544 -159.57 32 s +2 sf +(:destroy\036notify) 135409 0.00 -1 s +5 sf +( is generated) 149352 -159.50 32 s +52832.0 164727.0 m +(on) 55654 0.00 -1 s +( all inferiors of a window before ) 91567 -186.86 32 s +2 sf +(:destroy\036notify) 109432 0.00 -1 s +5 sf +( is generated on the ) 131149 -186.60 32 s +6 sf +(window) 139930 0.00 -1 s +5 sf +(. The or\036) 149352 -186.50 32 s +52832.0 167888.0 m +(dering) 60041 0.00 -1 s +( among siblings and across) 90326 -32.00 32 s +( subhierarchies is not otherwise constrained.) 140163 -32.60 32 s +6 sf +57912.0 174165.0 m +(event\036window) 73586 0.00 -1 s +2 sf +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 178951.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 185228.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 190015.0 m +(The) 67380 0.00 -1 s +( window that was destroyed.) 99433 -39.75 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 32 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036150) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(:gravity\036notify) 52095 0.00 -1 s +52832.0 h +/timsps10 5 declareFont +5 sf +(Event) 59415 0.00 -1 s +( Type) 65837 -83.00 32 s +2 sf +34544.0 25739.0 m +72542.0 h +5 sf +( ) 73242 -6.00 32 s +52832.0 28900.0 m +/timsps10i 6 declareFont +6 sf +(Selected) 62234 0.00 -1 s +( by: ) 67183 -33.00 32 s +5 sf +(\037) 70005 0.00 -1 s +6 sf +( ) 70678 -33.00 32 s +2 sf +(:structure\036notify ) 91408 -33.00 32 s +5 sf +(on a window or) 108943 -33.00 32 s +2 sf +( :substructure\036notify) 133909 -33.00 32 s +52832.0 32060.0 m +72542.0 h +5 sf +(on) 75364 0.00 -1 s +( its) 78712 -24.00 32 s +( parent.) 87150 -25.00 32 s +52832.0 36779.0 m +(The) 57220 0.00 -1 s +( X server can report ) 81141 161.40 32 s +2 sf +(:gravity\036notify) 98692 0.00 -1 s +5 sf +( events to clients wanting information about) 149352 161.50 32 s +52832.0 39940.0 m +(when) 58944 0.00 -1 s +( a ) 61213 -198.00 32 s +6 sf +(window) 69994 0.00 -1 s +5 sf +( is moved because of a change in the size of its parent. The X server gen\036) 149352 -197.75 32 s +52832.0 43101.0 m +(erates) 59412 0.00 -1 s +( this event whenever a client) 90436 -237.00 32 s +( application actually moves a child window as a result) 149352 -237.56 32 s +52832.0 46262.0 m +(of) 55182 0.00 -1 s +( resizing its parent by) 79394 -21.00 32 s +( calling ) 88443 -21.50 32 s +2 sf +(with\036state) 100351 0.00 -1 s +5 sf +( with the appropriate arguments set.) 140682 -21.60 32 s +6 sf +57912.0 52538.0 m +(event\036window) 73586 0.00 -1 s +2 sf +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 57325.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 63602.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 68388.0 m +(The) 67380 0.00 -1 s +( window) 77136 -41.00 32 s +( that was moved.) 96136 -41.67 32 s +6 sf +57912.0 74665.0 m +(x) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 79451.0 m +(x) 64403 0.00 -1 s +( and y specify the new upper\036left corner position of the ) 125569 -146.00 32 s +6 sf +(window) 134350 0.00 -1 s +5 sf +( relative to its) 149352 -146.00 32 s +62992.0 82612.0 m +(parent.) 70749 0.00 -1 s +6 sf +57912.0 88889.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 93675.0 m +(x) 64403 0.00 -1 s +( and y specify the new upper\036left corner position of the ) 125569 -146.00 32 s +6 sf +(window) 134350 0.00 -1 s +5 sf +( relative to its) 149352 -146.00 32 s +62992.0 96836.0 m +(parent.) 70749 0.00 -1 s +2 sf +34544.0 103113.0 m +(:map\036notify) 48805 0.00 -1 s +52832.0 h +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 106274.0 m +72542.0 h +5 sf +( ) 73242 -6.00 32 s +6 sf +52832.0 109434.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67183 -33.00 32 s +5 sf +(\037) 70005 0.00 -1 s +6 sf +( ) 70678 -33.00 32 s +2 sf +(:structure\036notify ) 91408 -33.00 32 s +5 sf +(on a window or) 108943 -33.00 32 s +2 sf +( :substructure\036notify) 133909 -33.00 32 s +52832.0 112595.0 m +72542.0 h +5 sf +(on) 75364 0.00 -1 s +( its) 78712 -24.00 32 s +( parent.) 87150 -25.00 32 s +52832.0 117314.0 m +(The) 57220 0.00 -1 s +( X server can report ) 79279 -211.00 32 s +2 sf +(:map\036notify) 93540 0.00 -1 s +5 sf +( events to clients wanting information about which) 149352 -211.57 32 s +52832.0 120475.0 m +(windows) 63021 0.00 -1 s +( are mapped. The X server generates this event type whenever a client applica\036) 149352 -194.69 32 s +52832.0 123636.0 m +(tion) 57222 0.00 -1 s +( changes the ) 71437 -147.00 32 s +6 sf +(window) 80218 0.00 -1 s +5 sf +('s state from unmapped to) 109098 -147.00 32 s +( mapped by calling ) 130768 -147.50 32 s +2 sf +(map\036window) 146444 0.00 -1 s +5 sf +( or) 149352 -148.00 32 s +52832.0 126797.0 m +2 sf +(map\036subwindow) 72744 0.00 -1 s +5 sf +(.) 73450 0.00 -1 s +52832.0 133073.0 m +(To) 55967 0.00 -1 s +( receive this event type, you ) 89118 130.33 32 s +2 sf +(setf) 93347 0.00 -1 s +5 sf +( ) 94183 130.00 32 s +2 sf +(:structure\036notify) 114240 0.00 -1 s +5 sf +( as the event\036mask on the ) 144336 130.50 32 s +6 sf +(win\036) 149352 0.00 -1 s +52832.0 136234.0 m +(dow) 57536 0.00 -1 s +5 sf +('s) 59573 0.00 -1 s +( ) 60216 -63.00 32 s +2 sf +(event\036mask) 74008 0.00 -1 s +5 sf +( slot. You can also receive this event type by) 123916 -63.00 32 s +( ) 124558 -64.00 32 s +2 sf +(setf) 128787 0.00 -1 s +5 sf +(ing the ) 137126 -63.50 32 s +2 sf +(:substruc\036) 149352 0.00 -1 s +52832.0 139395.0 m +(ture\036notify) 65838 0.00 -1 s +5 sf +( event\036mask on the parent window.) 105280 -42.80 32 s +6 sf +57912.0 145672.0 m +(event\036window) 73586 0.00 -1 s +2 sf +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 150458.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 156735.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 161521.0 m +(The) 67380 0.00 -1 s +( window that was) 87077 -44.00 32 s +( mapped.) 97378 -45.00 32 s +6 sf +57912.0 167798.0 m +(override\036redirect\036p) 79696 0.00 -1 s +2 sf +( ) 80346 -56.00 32 s +5 sf +(\037 Type ) 90267 -56.00 32 s +2 sf +(boolean) 99675 0.00 -1 s +5 sf +(.) 100381 0.00 -1 s +6 sf +62992.0 172585.0 m +(override\036redirect\036p) 84776 0.00 -1 s +5 sf +( is true if) 95264 126.00 32 s +( the override\036redirect attribute of the ) 137858 125.50 32 s +6 sf +(window) 146639 0.00 -1 s +5 sf +( is) 149352 125.00 32 s +62992.0 175745.0 m +2 sf +(:on) 66911 0.00 -1 s +5 sf +(;) 67695 0.00 -1 s +( otherwise, it is) 84045 -298.00 32 s +( ) 84452 -299.00 32 s +2 sf +(nil) 87589 0.00 -1 s +5 sf +(. See ) 93185 -298.50 32 s +2 sf +(window\036override\036redirect) 124214 0.00 -1 s +5 sf +( in paragraph 4.3, Win\036) 149352 -298.50 32 s +62992.0 178906.0 m +(dow) 67851 0.00 -1 s +( Attributes.) 80512 -36.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 33 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036151) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(:reparent\036notify) 53975 0.00 -1 s +136347.0 h +/timsps10 5 declareFont +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 25739.0 m +72542.0 h +5 sf +( ) 73242 -6.00 32 s +52832.0 28900.0 m +/timsps10i 6 declareFont +6 sf +(Selected) 62234 0.00 -1 s +( by: ) 67183 -33.00 32 s +5 sf +(\037) 70005 0.00 -1 s +6 sf +( ) 70678 -33.00 32 s +2 sf +(:structure\036notify ) 91408 -33.00 32 s +5 sf +(on a window or) 108943 -33.00 32 s +2 sf +( :substructure\036notify) 133909 -33.00 32 s +52832.0 32060.0 m +( ) 54232 -6.00 32 s +5 sf +72542.0 h +(on) 75364 0.00 -1 s +( its old) 83004 -22.00 32 s +( or new parent.) 99862 -22.67 32 s +52832.0 36779.0 m +(The) 57220 0.00 -1 s +( ) 57885 -41.00 32 s +2 sf +(:reparent\036notify) 77316 0.00 -1 s +5 sf +( event is generated when a ) 107633 -41.00 32 s +6 sf +(window) 116414 0.00 -1 s +5 sf +( is) 118961 -41.00 32 s +( reparented.) 132238 -42.00 32 s +6 sf +57912.0 43056.0 m +(event\036window) 73586 0.00 -1 s +2 sf +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 47842.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 54119.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 58905.0 m +(The) 67380 0.00 -1 s +( window) 77135 -42.00 32 s +( that was reparented.) 100358 -42.67 32 s +6 sf +57912.0 65182.0 m +(parent) 65280 0.00 -1 s +2 sf +( ) 65942 -44.00 32 s +5 sf +(\037 Type) 75225 -44.00 32 s +( ) 75886 -45.00 32 s +2 sf +(window) 85293 0.00 -1 s +5 sf +(.) 85999 0.00 -1 s +62992.0 69969.0 m +(The) 67380 0.00 -1 s +( new parent of the ) 88275 -37.00 32 s +6 sf +(window) 97056 0.00 -1 s +5 sf +(.) 97762 0.00 -1 s +6 sf +57912.0 76245.0 m +(x) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 81032.0 m +(x) 64403 0.00 -1 s +( and y specify the upper\036left corner position of the ) 120308 -146.00 32 s +6 sf +(window) 129089 0.00 -1 s +5 sf +( relative to its new) 149352 -146.00 32 s +62992.0 84193.0 m +6 sf +(parent) 70360 0.00 -1 s +5 sf +(.) 71066 0.00 -1 s +6 sf +57912.0 90469.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +62992.0 95256.0 m +(x) 64403 0.00 -1 s +( and y specify the upper\036left corner position of the ) 120308 -146.00 32 s +6 sf +(window) 129089 0.00 -1 s +5 sf +( relative to its new) 149352 -146.00 32 s +62992.0 98417.0 m +6 sf +(parent) 70360 0.00 -1 s +5 sf +(.) 71066 0.00 -1 s +6 sf +57912.0 104693.0 m +(override\036redirect\036p) 79696 0.00 -1 s +2 sf +( ) 80346 -56.00 32 s +5 sf +(\037 Type ) 90267 -56.00 32 s +2 sf +(boolean) 99675 0.00 -1 s +5 sf +(.) 100381 0.00 -1 s +6 sf +62992.0 109480.0 m +(override\036redirect\036p) 84776 0.00 -1 s +5 sf +( is true if) 95264 126.00 32 s +( the override\036redirect attribute of the ) 137858 125.50 32 s +6 sf +(window) 146639 0.00 -1 s +5 sf +( is) 149352 125.00 32 s +62992.0 112641.0 m +2 sf +(:on) 66911 0.00 -1 s +5 sf +(;) 67695 0.00 -1 s +( otherwise, it is) 84045 -298.00 32 s +( ) 84452 -299.00 32 s +2 sf +(nil) 87589 0.00 -1 s +5 sf +(. See ) 93185 -298.50 32 s +2 sf +(window\036override\036redirect) 124214 0.00 -1 s +5 sf +( in paragraph 4.3, Win\036) 149352 -298.50 32 s +62992.0 115801.0 m +(dow) 67851 0.00 -1 s +( Attributes.) 80512 -36.00 32 s +2 sf +34544.0 122078.0 m +(:unmap\036notify) 51943 0.00 -1 s +52832.0 h +5 sf +(Event) 59415 0.00 -1 s +( Type) 65837 -83.00 32 s +2 sf +34544.0 125239.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +52832.0 128400.0 m +6 sf +(Selected) 62234 0.00 -1 s +( by:) 66510 -33.00 32 s +5 sf +( \037) 70005 -33.00 32 s +6 sf +( ) 70678 -33.00 32 s +2 sf +(:structure\036notify ) 91408 -33.00 32 s +5 sf +(on a window or) 108943 -33.00 32 s +2 sf +( :substructure\036notify) 133909 -33.00 32 s +52832.0 131561.0 m +72542.0 h +5 sf +(on) 75364 0.00 -1 s +( its) 78712 -24.00 32 s +( parent.) 87150 -25.00 32 s +52832.0 136279.0 m +(The) 57220 0.00 -1 s +( ) 57882 -44.00 32 s +2 sf +(:unmap\036notify) 75281 0.00 -1 s +5 sf +( event is) 84599 -44.00 32 s +( generated when a mapped ) 115173 -44.60 32 s +6 sf +(window) 123954 0.00 -1 s +5 sf +( is unmapped.) 139621 -44.50 32 s +6 sf +57912.0 142556.0 m +(event\036window) 73586 0.00 -1 s +( ) 74233 -59.00 32 s +5 sf +(\037 Type ) 84149 -58.50 32 s +2 sf +(window) 93556 0.00 -1 s +5 sf +(.) 94262 0.00 -1 s +62992.0 147343.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 153619.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037) 70172 0.00 -1 s +( Type) 76629 -48.00 32 s +( ) 77286 -49.00 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 158406.0 m +(The) 67380 0.00 -1 s +( window that was unmapped.) 100178 -49.75 32 s +57912.0 164682.0 m +(co) 60576 0.00 -1 s +6 sf +(nfigure\036p) 71078 0.00 -1 s +( ) 71726 -58.00 32 s +5 sf +(\037 Type) 80995 -58.00 32 s +( ) 81642 -59.00 32 s +2 sf +(boolean) 91050 0.00 -1 s +5 sf +(.) 91756 0.00 -1 s +6 sf +62992.0 169469.0 m +(configure\036p) 76158 0.00 -1 s +5 sf +( is true if the ) 89678 -290.00 32 s +6 sf +(window) 98459 0.00 -1 s +5 sf +( has a win\036gravity) 117886 -290.00 32 s +( attribute of ) 130885 -290.67 32 s +2 sf +(:unmap) 140292 0.00 -1 s +5 sf +(, and the) 149352 -290.50 32 s +62992.0 172630.0 m +(event) 69104 0.00 -1 s +( was generated because ) 96044 -43.00 32 s +6 sf +(window) 104825 0.00 -1 s +5 sf +('s parent was resized.) 128987 -43.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 34 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036152) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(:visibility\036notify) 53823 0.00 -1 s +136347.0 h +/timsps10 5 declareFont +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +/timsps10i 6 declareFont +6 sf +52832.0 28900.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67166 -41.50 32 s +5 sf +(\037) 69988 0.00 -1 s +6 sf +( ) 70652 -42.00 32 s +2 sf +(:visibility\036change) 91344 0.00 -1 s +5 sf +(.) 92050 0.00 -1 s +52832.0 33618.0 m +(The) 57220 0.00 -1 s +( ) 57746 -180.00 32 s +2 sf +(:visibility\036notify) 77025 0.00 -1 s +5 sf +( event is sent when the visibility of a ) 117497 -180.00 32 s +6 sf +(window) 126278 0.00 -1 s +5 sf +( changes. ) 137126 -180.00 32 s +2 sf +(:visibility\036) 149352 0.00 -1 s +52832.0 36779.0 m +(notify) 59885 0.00 -1 s +( ) 60764 173.00 32 s +5 sf +(events are never generated on ) 95871 173.00 32 s +2 sf +(:input\036only ) 110234 174.00 32 s +5 sf +(windows. For the purposes of this) 149352 173.40 32 s +52832.0 39940.0 m +(event,) 59650 0.00 -1 s +( the visibility of the ) 82341 -24.00 32 s +6 sf +(window) 91122 0.00 -1 s +5 sf +( is not affected by its subwindows.) 130093 -23.50 32 s +52832.0 46217.0 m +(All) 56437 0.00 -1 s +2 sf +( :visibility\036notify) 76120 -302.00 32 s +5 sf +( events caused by a hierarchy change are generated after any hierar\036) 149352 -301.64 32 s +52832.0 49378.0 m +(chy) 56907 0.00 -1 s +( event caused by that change) 89144 -26.00 32 s +( \(for example, ) 105676 -26.67 32 s +2 sf +(:unmap\036notify) 123075 0.00 -1 s +5 sf +(, ) 124461 -26.00 32 s +2 sf +(:map\036notify) 138722 0.00 -1 s +5 sf +(, ) 140107 -27.00 32 s +2 sf +(:config\036) 149352 0.00 -1 s +52832.0 52538.0 m +(ure\036notify) 64899 0.00 -1 s +5 sf +(,) 65605 0.00 -1 s +( ) 66573 262.00 32 s +2 sf +(:gravity\036notify) 84124 0.00 -1 s +5 sf +(,) 84830 0.00 -1 s +( or ) 89115 261.50 32 s +2 sf +(:circulate\036notify) 108545 0.00 -1 s +5 sf +(\). Any ) 116984 261.50 32 s +2 sf +(:visibility\036notify) 136263 0.00 -1 s +5 sf +( event on a) 149352 261.33 32 s +52832.0 55699.0 m +(given) 59102 0.00 -1 s +( window) 68947 48.00 32 s +( is generated before any ) 96845 47.40 32 s +2 sf +(:exposure ) 109355 48.00 32 s +5 sf +(events on that window, but it is not) 149352 47.43 32 s +52832.0 58860.0 m +(required) 62233 0.00 -1 s +( that all ) 70927 -159.00 32 s +2 sf +(:visibility\036notify ) 90753 -159.00 32 s +5 sf +(events on all windows be generated before all ) 141830 -159.00 32 s +2 sf +(:expo\036) 149352 0.00 -1 s +52832.0 62021.0 m +(sure) 58005 0.00 -1 s +5 sf +( events on all windows. The ordering of) 100948 -292.00 32 s +2 sf +( :visibility\036notify) 120641 -292.00 32 s +5 sf +( events with respect to ) 145124 -291.80 32 s +2 sf +(:fo\036) 149352 0.00 -1 s +52832.0 65182.0 m +(cus\036out) 61610 0.00 -1 s +5 sf +(,) 62316 0.00 -1 s +( ) 62987 -35.00 32 s +2 sf +(:enter\036notify) 78185 0.00 -1 s +5 sf +(, and ) 84308 -35.00 32 s +2 sf +(:leave\036notify) 99351 0.00 -1 s +5 sf +( events) 107232 -35.00 32 s +( is not constrained.) 128445 -35.67 32 s +6 sf +57912.0 71459.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 76245.0 m +(The) 67380 0.00 -1 s +( window that changed in) 94977 -37.00 32 s +( visibility.) 106386 -38.00 32 s +6 sf +57912.0 82522.0 m +(state) 63242 0.00 -1 s +2 sf +( ) 63901 -47.00 32 s +5 sf +(\037 Type \() 74779 -47.00 32 s +2 sf +(member :unobscured :partially\036obscured ) 125036 -46.67 32 s +57912.0 85683.0 m +( :fully\036obscured) 88102 -8.94 32 s +5 sf +(\).) 89747 0.00 -1 s +62992.0 90469.0 m +(When) 69731 0.00 -1 s +( the ) 74603 6.00 32 s +6 sf +(window) 83384 0.00 -1 s +5 sf +( was either unviewable or it was viewable and) 135467 6.00 32 s +( at least par\036) 149352 5.33 32 s +62992.0 93630.0 m +(tially) 68792 0.00 -1 s +( obscured, and the ) 91689 414.25 32 s +6 sf +(window) 100470 0.00 -1 s +5 sf +( changed to viewable and completely un\036) 149352 414.50 32 s +62992.0 96791.0 m +(obscured,) 73885 0.00 -1 s +( then ) 80064 -46.00 32 s +6 sf +(state) 85394 0.00 -1 s +5 sf +( is ) 88596 -46.00 32 s +2 sf +(:unobscured) 103648 0.00 -1 s +5 sf +(.) 104354 0.00 -1 s +62992.0 103068.0 m +(When) 69731 0.00 -1 s +( the ) 74719 64.00 32 s +6 sf +(window) 83500 0.00 -1 s +5 sf +( was either) 95852 64.00 32 s +( unviewable or it was viewable and completely) 149352 63.43 32 s +62992.0 106228.0 m +(obscured,) 73885 0.00 -1 s +( and the ) 83853 109.00 32 s +6 sf +(window) 92634 0.00 -1 s +5 sf +( changed to viewable and partially obscured,) 143679 109.00 32 s +( then) 149352 108.00 32 s +62992.0 109389.0 m +6 sf +(state) 68322 0.00 -1 s +5 sf +( is) 70868 -42.00 32 s +( ) 71531 -43.00 32 s +2 sf +(:partially\036obscured) 94730 0.00 -1 s +5 sf +(.) 95436 0.00 -1 s +62992.0 115666.0 m +(When) 69731 0.00 -1 s +( the ) 74155 -218.00 32 s +6 sf +(window) 82936 0.00 -1 s +5 sf +( was either unviewable or it was at least partially visible, and) 149352 -217.64 32 s +62992.0 118827.0 m +(the) 66440 0.00 -1 s +( ) 66931 -215.00 32 s +6 sf +(window) 75712 0.00 -1 s +5 sf +( changed to viewable and completely obscured, then ) 133792 -214.75 32 s +6 sf +(state) 139122 0.00 -1 s +5 sf +( is ) 141987 -214.50 32 s +2 sf +(:fully\036) 149352 0.00 -1 s +62992.0 121988.0 m +(obscured) 73967 0.00 -1 s +5 sf +(.) 74673 0.00 -1 s +52832.0 128919.0 m +0.0 0.0 m +newpath +149013 127360 av +52967 127362 as +[] 0 setdash +dp +149352.0 128919.0 m +20320.0 131741.0 m +37840.0 h +2 sf +(Structure) 49437 0.00 -1 s +52832.0 h +(12.12.6) 61299 0.00 -1 s +5 sf +() 61299 0.00 -1 s +63494.0 h +(The) 67882 0.00 -1 s +( following paragraphs describe events used to ) 131782 1661.00 32 s +6 sf +(redirect) 140716 0.00 -1 s +5 sf +( client) 149352 1661.00 32 s +20320.0 134902.0 m +31180.0 h +2 sf +(Control) 40584 0.00 -1 s +( Events) 49378 -64.00 32 s +52832.0 h +5 sf +(requests) 62079 0.00 -1 s +( that reconfigure, restack, or map a window. Structure control events are typi\036) 149352 -34.75 32 s +52832.0 138063.0 m +(cally) 58317 0.00 -1 s +( used only by window managers and not by ordinary) 116623 -114.00 32 s +( client applications. Structure) 149352 -114.67 32 s +52832.0 141224.0 m +(control) 60825 0.00 -1 s +( events report redirected requests, allowing) 108585 -165.00 32 s +( a window manager to modify the re\036) 149352 -165.57 32 s +52832.0 144385.0 m +(quests) 59887 0.00 -1 s +( before they) 72978 -193.00 32 s +( are actually performed. However, if the override\036redirect attribute of) 149352 -193.56 32 s +52832.0 147546.0 m +(a) 54085 0.00 -1 s +( window is ) 66576 -200.00 32 s +2 sf +(:on) 70495 0.00 -1 s +5 sf +(, then no requests) 89647 -200.00 32 s +( are redirected and no structure control events are gen\036) 149352 -200.56 32 s +52832.0 150707.0 m +(erated.) 60431 0.00 -1 s +2 sf +( ) 61095 -42.00 32 s +34544.0 156983.0 m +(:circulate\036request) 55855 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 161702.0 m +(The) 57220 0.00 -1 s +( ) 58128 202.00 32 s +2 sf +(:circulate\036request) 79439 0.00 -1 s +5 sf +( event is) 89249 202.00 32 s +( generated when a client application calls ) 137914 201.43 32 s +2 sf +(circulate\036) 149352 0.00 -1 s +52832.0 164863.0 m +(window\036up) 66316 0.00 -1 s +5 sf +( or ) 70124 23.00 32 s +2 sf +(circulate\036window\036down) 98494 0.00 -1 s +5 sf +( with a) 106221 23.00 32 s +( window that has the override\036redirect) 149352 22.40 32 s +52832.0 168024.0 m +(attribute) 62235 0.00 -1 s +( ) 63030 89.00 32 s +2 sf +(:off) 67258 0.00 -1 s +5 sf +(. The ) 73942 89.00 32 s +6 sf +(window) 82723 0.00 -1 s +5 sf +( argument specifies the window to be) 125421 89.00 32 s +( restacked, and ) 143240 88.33 32 s +6 sf +(place) 149352 0.00 -1 s +5 sf +52832.0 171185.0 m +(specifies) 62705 0.00 -1 s +( what the new position in the stacking) 103960 -209.00 32 s +( order should be \(either ) 129948 -209.60 32 s +2 sf +(:top) 134806 0.00 -1 s +5 sf +( or ) 138149 -209.50 32 s +2 sf +(:bottom) 147707 0.00 -1 s +5 sf +(\).) 149352 0.00 -1 s +6 sf +57912.0 177461.0 m +(Selected) 67314 0.00 -1 s +( by: ) 72231 -49.00 32 s +5 sf +(\037) 75053 0.00 -1 s +6 sf +( ) 75710 -49.00 32 s +2 sf +(:substructure\036redirect ) 103165 -48.00 32 s +5 sf +(on ) 106644 -49.00 32 s +6 sf +(parent) 114012 0.00 -1 s +5 sf +(.) 114718 0.00 -1 s +6 sf +57912.0 182248.0 m +(parent,) 65986 0.00 -1 s +( event\036window) 82312 -54.00 32 s +2 sf +( ) 82963 -55.00 32 s +5 sf +(\037 Type ) 92887 -54.50 32 s +2 sf +(window) 102294 0.00 -1 s +5 sf +(.) 103000 0.00 -1 s +62992.0 187034.0 m +(The) 67380 0.00 -1 s +( window receiving the event. The receiving client must have selected ) 143238 -256.82 32 s +2 sf +(:sub\036) 149352 0.00 -1 s +62992.0 190195.0 m +(structure\036redirect) 84614 0.00 -1 s +5 sf +( on this) 92821 -52.00 32 s +( window.) 103271 -53.00 32 s +6 sf +57912.0 196472.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037 Type ) 77286 -48.50 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 201258.0 m +(The) 67380 0.00 -1 s +( window to be) 83322 -42.00 32 s +( restacked.) 95346 -43.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 35 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036153) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(place) 64024 0.00 -1 s +/timsps10 5 declareFont +5 sf +( \037 Type ) 74668 -31.67 32 s +2 sf +(\(member :top :bottom\)) 102339 -31.50 32 s +5 sf +(.) 103045 0.00 -1 s +62992.0 27364.0 m +(The) 67380 0.00 -1 s +( new stacking priority) 91962 -35.00 32 s +( requested for ) 108075 -35.67 32 s +6 sf +(window) 116856 0.00 -1 s +5 sf +(.) 117562 0.00 -1 s +2 sf +34544.0 33641.0 m +(:colormap\036notify) 54917 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 36802.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +6 sf +52832.0 39963.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67114 -67.50 32 s +5 sf +(\037 ) 70574 -68.00 32 s +2 sf +(:colormap\036change) 92360 0.00 -1 s +5 sf +(.) 93066 0.00 -1 s +52832.0 44681.0 m +(The) 57220 0.00 -1 s +( ) 57945 19.00 32 s +2 sf +(:colormap\036notify) 78318 0.00 -1 s +5 sf +( event is generated with ) 105921 19.00 32 s +6 sf +(new\036p) 112817 0.00 -1 s +5 sf +( ) 113541 18.00 32 s +2 sf +(t) 114480 0.00 -1 s +5 sf +( when the ) 126214 18.67 32 s +6 sf +(colormap) 137030 0.00 -1 s +5 sf +( associated) 149352 18.00 32 s +52832.0 47842.0 m +(with) 57848 0.00 -1 s +( a ) 60447 -33.00 32 s +6 sf +(window) 69228 0.00 -1 s +5 sf +( is changed, installed, or uninstalled.) 110292 -33.00 32 s +6 sf +57912.0 54119.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 58905.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 65182.0 m +(colormap) 68728 0.00 -1 s +2 sf +( ) 69394 -40.00 32 s +5 sf +(\037 Type ) 79347 -40.00 32 s +2 sf +(\(or null) 88322 -40.00 32 s +( colormap\)) 101368 -41.00 32 s +5 sf +(.) 102074 0.00 -1 s +62992.0 69969.0 m +(The) 67380 0.00 -1 s +( colormap attribute of the window.) 106386 -35.80 32 s +6 sf +57912.0 76245.0 m +(new\036p) 64808 0.00 -1 s +( ) 65461 -53.00 32 s +5 sf +(\037 Type ) 75388 -53.00 32 s +2 sf +(boolean) 84796 0.00 -1 s +5 sf +(.) 85502 0.00 -1 s +62992.0 81032.0 m +(If) 64870 0.00 -1 s +( ) 65358 -218.00 32 s +6 sf +(new\036p) 72254 0.00 -1 s +5 sf +( is true, then the ) 89977 -217.80 32 s +6 sf +(window) 98758 0.00 -1 s +5 sf +('s colormap attribute has changed to the given) 149352 -217.57 32 s +62992.0 84193.0 m +6 sf +(colormap) 73808 0.00 -1 s +5 sf +(.) 74514 0.00 -1 s +( Otherwise, the ) 92121 -87.00 32 s +6 sf +(window) 100902 0.00 -1 s +5 sf +('s) 102939 0.00 -1 s +( colormap attribute has not, but the ) 142456 -87.57 32 s +6 sf +(color\036) 149352 0.00 -1 s +62992.0 87353.0 m +(map) 67851 0.00 -1 s +5 sf +( has been installed or uninstalled.) 105303 -34.00 32 s +6 sf +57912.0 93630.0 m +(installed\036p) 69982 0.00 -1 s +2 sf +( ) 70641 -47.00 32 s +5 sf +(\037 Type ) 80581 -46.50 32 s +2 sf +(boolean) 89989 0.00 -1 s +5 sf +(.) 90695 0.00 -1 s +62992.0 98417.0 m +(If) 64870 0.00 -1 s +( ) 65558 -18.00 32 s +6 sf +(installed\036p) 77628 0.00 -1 s +5 sf +( is) 80198 -18.00 32 s +( true, then the ) 96348 -18.50 32 s +6 sf +(colormap) 107164 0.00 -1 s +5 sf +( is currently installed.) 131561 -18.67 32 s +2 sf +34544.0 104693.0 m +(:configure\036request) 56798 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 107854.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +6 sf +52832.0 111015.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67152 -48.50 32 s +5 sf +(\037) 69974 0.00 -1 s +6 sf +( ) 70631 -49.00 32 s +2 sf +(:substructure\036redirect ) 98086 -48.00 32 s +5 sf +(on parent.) 109322 -49.00 32 s +52832.0 115734.0 m +(The) 57220 0.00 -1 s +( ) 57924 -2.00 32 s +2 sf +(:configure\036request) 80178 0.00 -1 s +5 sf +( event) 86994 -2.00 32 s +( is generated when a client program sets the ) 137049 -2.56 32 s +6 sf +(x) 138302 0.00 -1 s +5 sf +(, ) 139712 -2.00 32 s +6 sf +(y) 140965 0.00 -1 s +5 sf +(, ) 142374 -3.00 32 s +6 sf +(width) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +52832.0 118895.0 m +6 sf +(heigh) 59102 0.00 -1 s +5 sf +(t,) 60592 0.00 -1 s +( ) 61054 -244.00 32 s +6 sf +(border\036width) 75947 0.00 -1 s +5 sf +( or stacking priority attributes of a) 113041 -244.00 32 s +( window that has the override\036re\036) 149352 -244.60 32 s +52832.0 122055.0 m +(direct) 59256 0.00 -1 s +( attribute ) 70047 -12.00 32 s +2 sf +(:off) 74275 0.00 -1 s +5 sf +(.) 74981 0.00 -1 s +6 sf +57912.0 128332.0 m +(parent,) 65986 0.00 -1 s +( event\036window) 82312 -54.00 32 s +2 sf +( ) 82963 -55.00 32 s +5 sf +(\037 Type ) 92887 -54.50 32 s +2 sf +(window) 102294 0.00 -1 s +5 sf +(.) 103000 0.00 -1 s +62992.0 133119.0 m +(The) 67380 0.00 -1 s +( window receiving the event. The receiving client must have selected ) 143238 -256.82 32 s +2 sf +(:sub\036) 149352 0.00 -1 s +62992.0 136279.0 m +(structure\036redirect) 84614 0.00 -1 s +5 sf +( on this) 92821 -52.00 32 s +( window.) 103271 -53.00 32 s +6 sf +57912.0 142556.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037 Type ) 77286 -48.50 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 147343.0 m +(The) 67380 0.00 -1 s +( window to be) 83313 -45.00 32 s +( reconfigured.) 99094 -46.00 32 s +6 sf +57912.0 153619.0 m +(x) 59165 0.00 -1 s +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +6 sf +62992.0 158406.0 m +(x) 64245 0.00 -1 s +5 sf +( and ) 69470 -131.00 32 s +6 sf +(y) 70723 0.00 -1 s +5 sf +( specify the requested upper\036left corner position of the ) 131535 -130.44 32 s +6 sf +(window) 140316 0.00 -1 s +5 sf +( relative) 149352 -131.00 32 s +62992.0 161567.0 m +(to) 65187 0.00 -1 s +( the parent. If either ) 87786 -87.60 32 s +6 sf +(x) 89039 0.00 -1 s +5 sf +( or ) 92626 -87.50 32 s +6 sf +(y) 93879 0.00 -1 s +5 sf +( is not specified in the value\036mask, then it is set to) 149352 -87.55 32 s +62992.0 164727.0 m +(the) 66440 0.00 -1 s +( current window position.) 95323 -38.67 32 s +6 sf +57912.0 171004.0 m +(y) 59165 0.00 -1 s +2 sf +( ) 59839 -32.00 32 s +5 sf +(\037 Type ) 69809 -31.50 32 s +2 sf +(int16) 75923 0.00 -1 s +5 sf +(.) 76629 0.00 -1 s +6 sf +62992.0 175791.0 m +(x) 64245 0.00 -1 s +5 sf +( and ) 69470 -131.00 32 s +6 sf +(y) 70723 0.00 -1 s +5 sf +( specify the requested upper\036left corner position of the ) 131535 -130.44 32 s +6 sf +(window) 140316 0.00 -1 s +5 sf +( relative) 149352 -131.00 32 s +62992.0 178951.0 m +(to) 65187 0.00 -1 s +( the ) 69855 -96.00 32 s +6 sf +(parent) 77223 0.00 -1 s +5 sf +(. If either ) 88061 -96.00 32 s +6 sf +(x) 89314 0.00 -1 s +5 sf +( or ) 92883 -96.50 32 s +6 sf +(y) 94136 0.00 -1 s +5 sf +( is not specified in the ) 119110 -96.50 32 s +6 sf +(value\036mask) 131960 0.00 -1 s +5 sf +(, then it is set to) 149352 -96.60 32 s +62992.0 182112.0 m +(the) 66440 0.00 -1 s +( current window position.) 95323 -38.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 36 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036154) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(width,) 64890 0.00 -1 s +( height) 72601 -49.00 32 s +2 sf +( ) 73258 -49.00 32 s +/timsps10 5 declareFont +5 sf +(\037 Type ) 83194 -48.50 32 s +2 sf +(card16) 91502 0.00 -1 s +5 sf +(.) 92208 0.00 -1 s +6 sf +62992.0 27364.0 m +(width) 69264 0.00 -1 s +5 sf +( and ) 75051 150.00 32 s +6 sf +(height) 82105 0.00 -1 s +5 sf +( specify the requested size of) 115533 150.00 32 s +( the ) 120692 149.50 32 s +6 sf +(window) 129473 0.00 -1 s +5 sf +( interior. If either) 149352 149.33 32 s +62992.0 30525.0 m +6 sf +(width) 69264 0.00 -1 s +5 sf +( or ) 73046 10.00 32 s +6 sf +(height) 80100 0.00 -1 s +5 sf +( is not) 87020 10.00 32 s +( specified in the ) 105711 9.50 32 s +6 sf +(value\036mask) 118561 0.00 -1 s +5 sf +(, then it is set to the current) 149352 9.43 32 s +62992.0 33686.0 m +(window) 72083 0.00 -1 s +( size.) 77826 -57.00 32 s +6 sf +57912.0 39963.0 m +(border\036width) 72805 0.00 -1 s +2 sf +( ) 73456 -55.00 32 s +5 sf +(\037 Type ) 83380 -54.50 32 s +2 sf +(card16) 91688 0.00 -1 s +5 sf +62992.0 44749.0 m +(The) 67380 0.00 -1 s +( requested ) 79973 184.00 32 s +6 sf +(window) 88754 0.00 -1 s +5 sf +( border width. If ) 108690 184.25 32 s +6 sf +(border\036width) 123583 0.00 -1 s +5 sf +( is not specified in the) 149352 184.40 32 s +62992.0 47910.0 m +6 sf +(value\036mask) 75842 0.00 -1 s +5 sf +(,) 76548 0.00 -1 s +( then it is set) 90716 -25.00 32 s +( to the current window ) 116842 -25.60 32 s +6 sf +(border\036width) 131735 0.00 -1 s +5 sf +(.) 132441 0.00 -1 s +6 sf +57912.0 54187.0 m +(stack\036mode) 70762 0.00 -1 s +2 sf +( ) 71294 -174.00 32 s +5 sf +(\037 Type ) 80979 -174.00 32 s +2 sf +(\(member :above :below) 108997 -174.00 32 s +( :top\036if :bottom\036if ) 149465 -174.51 32 s +57912.0 57348.0 m +(:opposite\)) 69824 0.00 -1 s +5 sf +(.) 70530 0.00 -1 s +6 sf +62992.0 62134.0 m +(stack\036mode) 75842 0.00 -1 s +5 sf +( and ) 81695 183.00 32 s +6 sf +(above\036sibling) 97056 0.00 -1 s +5 sf +( specify the) 110431 183.00 32 s +( requested stacking priority of the) 149352 182.40 32 s +62992.0 65295.0 m +6 sf +(window) 71773 0.00 -1 s +5 sf +(.) 72479 0.00 -1 s +( If ) 76455 343.00 32 s +6 sf +(stack\036mode) 89305 0.00 -1 s +5 sf +( is not specified in) 111370 343.00 32 s +( the ) 116915 342.50 32 s +6 sf +(value\036mask) 129765 0.00 -1 s +5 sf +(, then it is set to) 149352 342.40 32 s +62992.0 68456.0 m +2 sf +(:above) 70986 0.00 -1 s +5 sf +(.) 71692 0.00 -1 s +6 sf +57912.0 74732.0 m +(above\036sibling) 73273 0.00 -1 s +5 sf +( \037 Type) 83234 -36.00 32 s +( \() 84842 -37.00 32 s +2 sf +(or null window) 102958 -36.50 32 s +5 sf +(\).) 104603 0.00 -1 s +6 sf +62992.0 79519.0 m +(stack\036mode) 75842 0.00 -1 s +5 sf +( and ) 81695 183.00 32 s +6 sf +(above\036sibling) 97056 0.00 -1 s +5 sf +( specify the) 110431 183.00 32 s +( requested stacking priority of the) 149352 182.40 32 s +62992.0 82680.0 m +6 sf +(window) 71773 0.00 -1 s +5 sf +(.) 72479 0.00 -1 s +( If ) 75397 -186.00 32 s +6 sf +(above\036sibling) 90758 0.00 -1 s +5 sf +( is not specified in the ) 115195 -186.00 32 s +6 sf +(value\036mask) 128045 0.00 -1 s +5 sf +(, then it is set to) 144990 -186.00 32 s +( ) 145509 -187.00 32 s +2 sf +(nil) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +6 sf +57912.0 88956.0 m +(value\036mask) 70762 0.00 -1 s +( ) 71417 -51.00 32 s +5 sf +(\037) 74239 0.00 -1 s +2 sf +( ) 74895 -50.00 32 s +5 sf +(Type ) 81349 -51.00 32 s +2 sf +(mask16) 90599 0.00 -1 s +5 sf +(.) 91305 0.00 -1 s +62992.0 93743.0 m +(Specifies) 73336 0.00 -1 s +( the changed ) 88164 -47.00 32 s +6 sf +(window) 96945 0.00 -1 s +5 sf +( attributes contained in the redirected client) 145563 -47.00 32 s +( re\036) 149352 -48.00 32 s +62992.0 96904.0 m +(quest.) 69655 0.00 -1 s +( Each 1 bit specifies that the corresponding attribute was) 133221 -34.00 32 s +( changed.) 144001 -35.00 32 s +2 sf +34544.0 103180.0 m +(:map\036request) 50686 0.00 -1 s +52832.0 h +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 106341.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +6 sf +52832.0 109502.0 m +(Selected) 62234 0.00 -1 s +( by: ) 67152 -48.50 32 s +5 sf +(\037) 69974 0.00 -1 s +6 sf +( ) 70631 -49.00 32 s +2 sf +(:substructure\036redirect ) 98086 -48.00 32 s +5 sf +(on parent.) 109322 -49.00 32 s +52832.0 114221.0 m +(The) 57220 0.00 -1 s +( ) 57748 -178.00 32 s +2 sf +(:map\036request) 73890 0.00 -1 s +5 sf +( event is generated when a client application maps a ) 131520 -177.50 32 s +6 sf +(window) 140301 0.00 -1 s +5 sf +( that has) 149352 -177.50 32 s +52832.0 117382.0 m +(the) 56280 0.00 -1 s +( override\036redirect attribute) 86005 -23.00 32 s +( ) 86687 -24.00 32 s +2 sf +(:off) 90915 0.00 -1 s +5 sf +(.) 91621 0.00 -1 s +6 sf +57912.0 123658.0 m +(parent,) 65986 0.00 -1 s +( event\036window) 82312 -54.00 32 s +5 sf +( \037 Type ) 92887 -54.67 32 s +2 sf +(window) 102294 0.00 -1 s +5 sf +(.) 103000 0.00 -1 s +62992.0 128445.0 m +(The) 67380 0.00 -1 s +( window receiving the event. The receiving client must have selected ) 143238 -256.82 32 s +2 sf +(:sub\036) 149352 0.00 -1 s +62992.0 131606.0 m +(structure\036redirect) 84614 0.00 -1 s +5 sf +( on this) 92821 -52.00 32 s +( window.) 103271 -53.00 32 s +6 sf +57912.0 137882.0 m +(window) 66693 0.00 -1 s +2 sf +( ) 67350 -49.00 32 s +5 sf +(\037 Type ) 77286 -48.50 32 s +2 sf +(window) 86693 0.00 -1 s +5 sf +(.) 87399 0.00 -1 s +62992.0 142669.0 m +(The) 67380 0.00 -1 s +( window to be mapped.) 93607 -46.75 32 s +2 sf +34544.0 148946.0 m +(:resize\036request) 52250 0.00 -1 s +52832.0 h +5 sf +(Event) 59415 0.00 -1 s +( Type) 65837 -83.00 32 s +2 sf +34544.0 152106.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +52832.0 155267.0 m +6 sf +(Selected) 62234 0.00 -1 s +( by: ) 67145 -52.00 32 s +5 sf +(\037) 69967 0.00 -1 s +2 sf +( :resize\036redirect) 88950 -52.00 32 s +5 sf +(.) 89656 0.00 -1 s +52832.0 159986.0 m +(The) 57220 0.00 -1 s +( ) 57906 -20.00 32 s +2 sf +(:resize\036request) 75612 0.00 -1 s +5 sf +( event is generated when a) 105369 -20.00 32 s +( client program sets the ) 132305 -20.60 32 s +6 sf +(width) 138577 0.00 -1 s +5 sf +( or ) 142298 -20.50 32 s +6 sf +(height) 149352 0.00 -1 s +5 sf +52832.0 163147.0 m +(attributes of a ) 68991 -21.00 32 s +6 sf +(window) 77772 0.00 -1 s +5 sf +( that has the override\036redirect attribute) 120998 -21.00 32 s +( ) 121682 -22.00 32 s +2 sf +(:off) 125910 0.00 -1 s +5 sf +(.) 126616 0.00 -1 s +57912.0 169424.0 m +(wi) 60733 0.00 -1 s +6 sf +(ndow,) 67554 0.00 -1 s +( event\036window ) 84526 -57.00 32 s +5 sf +(\037 Type ) 94445 -57.00 32 s +2 sf +(window) 103852 0.00 -1 s +5 sf +(.) 104558 0.00 -1 s +62992.0 174210.0 m +(The) 67380 0.00 -1 s +( window to be resized.) 92704 -36.75 32 s +6 sf +57912.0 180487.0 m +(width,) 64890 0.00 -1 s +( height) 72601 -49.00 32 s +2 sf +( ) 73258 -49.00 32 s +5 sf +(\037 Type ) 83194 -48.50 32 s +2 sf +(card16) 91502 0.00 -1 s +5 sf +(.) 92208 0.00 -1 s +6 sf +62992.0 185273.0 m +(width) 69264 0.00 -1 s +5 sf +( and ) 75025 137.00 32 s +6 sf +(height) 82079 0.00 -1 s +5 sf +( specify the requested size of the wi) 123397 137.00 32 s +6 sf +(ndow) 129512 0.00 -1 s +5 sf +( interior. If either) 149352 136.33 32 s +62992.0 188434.0 m +6 sf +(width) 69264 0.00 -1 s +5 sf +( or ) 72711 -157.50 32 s +6 sf +(height) 79765 0.00 -1 s +5 sf +( was unchanged in the client request, then it is set to the current) 149352 -157.54 32 s +62992.0 191595.0 m +(window) 72083 0.00 -1 s +( size.) 77826 -57.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 37 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036155) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +42017.0 h +2 sf +(Client) 49383 0.00 -1 s +52832.0 h +(12.12.7) 61299 0.00 -1 s +( ) 64312 2307.00 32 s +5 sf +(The) 68700 0.00 -1 s +( client communications events discussed in the following) 149352 2306.43 32 s +2 sf +20320.0 29216.0 m +28900.0 h +(Communications) 49435 0.00 -1 s +52832.0 h +5 sf +(paragraphs) 65211 0.00 -1 s +( are: ) 80288 4718.00 32 s +2 sf +(:client\036message) 98622 0.00 -1 s +5 sf +(, ) 104752 4718.00 32 s +2 sf +(:property\036notify) 124341 0.00 -1 s +5 sf +(,) 125047 0.00 -1 s +( ) 130470 4717.00 32 s +2 sf +(:selection\036clear) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +20320.0 32377.0 m +41250.0 h +2 sf +(Events) 49402 0.00 -1 s +52832.0 h +(:selection\036request) 73988 0.00 -1 s +5 sf +(,) 74694 0.00 -1 s +2 sf +( ) 75340 -60.00 32 s +5 sf +(and ) 80061 -60.00 32 s +2 sf +(:selection\036notify) 99336 0.00 -1 s +5 sf +(.) 100042 0.00 -1 s +2 sf +34544.0 38653.0 m +(:client\036message) 52878 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 43372.0 m +(The) 57220 0.00 -1 s +( ) 57682 -244.00 32 s +2 sf +(:client\036message ) 76478 -244.00 32 s +5 sf +(event is generated exclusively by client) 119694 -244.00 32 s +( calls to ) 128445 -244.67 32 s +2 sf +(send\036event) 141298 0.00 -1 s +5 sf +(. The X) 149352 -244.50 32 s +52832.0 46533.0 m +(server) 59725 0.00 -1 s +( places no interpretation on the ) 93664 -273.67 32 s +/timsps10i 6 declareFont +6 sf +(type) 98365 0.00 -1 s +5 sf +( or content of ) 113102 -273.50 32 s +6 sf +(data) 118119 0.00 -1 s +5 sf +( sent in a ) 127843 -273.50 32 s +2 sf +(:client\036message) 146177 0.00 -1 s +5 sf +(. A) 149352 -274.00 32 s +52832.0 49694.0 m +(client) 59101 0.00 -1 s +( can neither select ) 79962 -35.00 32 s +2 sf +(:client\036message ) 98967 -35.00 32 s +5 sf +(events nor) 110609 -35.00 32 s +( avoid receiving them.) 135738 -35.67 32 s +6 sf +57912.0 55970.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 60757.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 67033.0 m +(type) 62613 0.00 -1 s +2 sf +( ) 63264 -55.00 32 s +5 sf +(\037 Type ) 73187 -55.00 32 s +2 sf +(keyword) 83690 0.00 -1 s +5 sf +(.) 84396 0.00 -1 s +62992.0 71820.0 m +(An) 66440 0.00 -1 s +( xatom keyword that specifies) 100012 -71.00 32 s +( the type of client message. Interpretation of) 149352 -71.57 32 s +62992.0 74981.0 m +(the) 66440 0.00 -1 s +( type is determined solely by agreement) 110442 -164.00 32 s +( between the sending and receiving) 149352 -164.60 32 s +62992.0 78142.0 m +(clients.) 71065 0.00 -1 s +6 sf +57912.0 84418.0 m +(format) 65437 0.00 -1 s +5 sf +( \037) 68936 -29.00 32 s +( Type \() 77027 -29.50 32 s +2 sf +(member 8 16 32) 96139 -29.67 32 s +5 sf +(\).) 97784 0.00 -1 s +62992.0 89205.0 m +(An) 66440 0.00 -1 s +( integer that specifies whether) 99376 -229.00 32 s +( ) 99852 -230.00 32 s +6 sf +(data) 104869 0.00 -1 s +5 sf +( should be viewed as a sequence of 8\036bit,) 149352 -229.50 32 s +62992.0 92366.0 m +(16\036bit,) 70438 0.00 -1 s +( or 32\036bit) 80888 -26.00 32 s +( quantities.) 93246 -27.00 32 s +6 sf +57912.0 98642.0 m +(data) 62929 0.00 -1 s +5 sf +( \037 Type ) 73525 -47.67 32 s +2 sf +(\(sequence integer\)) 95340 -48.00 32 s +5 sf +(.) 96046 0.00 -1 s +62992.0 103429.0 m +(The) 67380 0.00 -1 s +( data content of the client message. ) 107825 23.00 32 s +6 sf +(data) 112842 0.00 -1 s +5 sf +( always consists of 160 bytes \037) 149352 23.17 32 s +62992.0 106590.0 m +(depending) 74748 0.00 -1 s +( on format, either 20 8\036bit values, 10 16\036bit values or 5 32\036bit) 140985 -254.00 32 s +( values.) 149352 -255.00 32 s +62992.0 109751.0 m +(The) 67380 0.00 -1 s +( amount of this data actually used by a particular client message depends on) 149352 -283.92 32 s +62992.0 112911.0 m +(the) 66440 0.00 -1 s +( type.) 72655 -56.00 32 s +2 sf +34544.0 119188.0 m +(:property\036notify) 54133 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +2 sf +34544.0 122349.0 m +52832.0 h +5 sf +( ) 53532 -6.00 32 s +52832.0 125510.0 m +6 sf +(Selected) 62234 0.00 -1 s +( by: ) 67141 -54.00 32 s +5 sf +(\037) 69963 0.00 -1 s +6 sf +( ) 70615 -54.00 32 s +2 sf +(:property\036change) 91617 0.00 -1 s +5 sf +(.) 92323 0.00 -1 s +2 sf +( ) 92975 -54.00 32 s +5 sf +52832.0 130229.0 m +(The) 57220 0.00 -1 s +( ) 57643 -283.00 32 s +2 sf +(:property\036notify) 77232 0.00 -1 s +5 sf +( event is generated when a window property is changed or deleted.) 149352 -283.00 32 s +6 sf +57912.0 136505.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 141292.0 m +(The) 67380 0.00 -1 s +( window) 77128 -49.00 32 s +( receiving the event.) 99862 -49.67 32 s +6 sf +57912.0 147568.0 m +(atom) 63555 0.00 -1 s +5 sf +( \037 Type ) 74135 -53.00 32 s +2 sf +(keyword) 84638 0.00 -1 s +5 sf +(.) 85344 0.00 -1 s +62992.0 152355.0 m +(The) 67380 0.00 -1 s +( property that was changed or deleted.) 110157 -41.00 32 s +6 sf +57912.0 158631.0 m +(state) 63242 0.00 -1 s +2 sf +( ) 63910 -38.00 32 s +5 sf +(\037 Type ) 73868 -37.50 32 s +2 sf +(\(member :new\036value :deleted\)) 109835 -37.50 32 s +5 sf +(.) 110541 0.00 -1 s +6 sf +62992.0 163418.0 m +(state) 68322 0.00 -1 s +5 sf +( is ) 71174 -221.00 32 s +2 sf +(:new\036value) 84339 0.00 -1 s +5 sf +( if the) 90480 -221.00 32 s +( property was changed using ) 122367 -221.60 32 s +2 sf +(change\036property) 142430 0.00 -1 s +5 sf +( or ) 145749 -221.50 32 s +2 sf +(ro\036) 149352 0.00 -1 s +62992.0 166579.0 m +(tate\036properties) 80855 0.00 -1 s +5 sf +(,) 81561 0.00 -1 s +( even if zero\036length data was added or if all or part of the) 142776 -240.00 32 s +( prop\036) 149352 -241.00 32 s +62992.0 169740.0 m +(erty) 67379 0.00 -1 s +( was replaced with identical data. ) 107464 294.00 32 s +6 sf +(state) 112794 0.00 -1 s +5 sf +( is ) 116676 294.00 32 s +2 sf +(:deleted ) 127235 294.00 32 s +5 sf +(if the property) 143965 294.00 32 s +( was) 149352 293.00 32 s +62992.0 172901.0 m +(deleted) 71141 0.00 -1 s +( using ) 78540 -64.00 32 s +2 sf +(delete\036property) 97188 0.00 -1 s +5 sf +( or) 100180 -64.00 32 s +( ) 100821 -65.00 32 s +2 sf +(get\036property) 116021 0.00 -1 s +5 sf +(.) 116727 0.00 -1 s +6 sf +57912.0 179177.0 m +(time) 62770 0.00 -1 s +5 sf +( \037 Type ) 73435 -24.67 32 s +2 sf +(timestamp) 86128 0.00 -1 s +5 sf +(.) 86834 0.00 -1 s +62992.0 183964.0 m +(The) 67380 0.00 -1 s +( server time when the property was changed or deleted.) 129438 -35.56 32 s +2 sf +34544.0 190240.0 m +(:selection\036clear) 52720 0.00 -1 s +52832.0 h +5 sf +(Event) 59415 0.00 -1 s +( Type) 65837 -83.00 32 s +52832.0 194959.0 m +(The) 57220 0.00 -1 s +( ) 58063 137.00 32 s +2 sf +(:selection\036clear) 76239 0.00 -1 s +5 sf +( event is reported to the) 103492 137.00 32 s +( previous owner of a ) 128076 136.40 32 s +6 sf +(selection) 138107 0.00 -1 s +5 sf +( when the) 149352 136.50 32 s +52832.0 198120.0 m +(owner) 59883 0.00 -1 s +( of the ) 67181 -206.00 32 s +6 sf +(selection) 77212 0.00 -1 s +5 sf +( is changed. The selection owner is changed by a client using ) 144417 -206.00 32 s +2 sf +(setf) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 201281.0 m +(A) 54869 0.00 -1 s +( client can neither select ) 82670 -35.00 32 s +2 sf +(:selection\036clear) 100846 0.00 -1 s +5 sf +( events nor avoid receiving) 131270 -35.00 32 s +( them.) 138289 -36.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 38 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036156) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 6 declareFont +6 sf +57912.0 22578.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +/timsps10 5 declareFont +5 sf +( \037 Type ) 94287 -57.67 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 27364.0 m +(The) 67380 0.00 -1 s +( window) 77143 -34.00 32 s +( losing ownership of the ) 104952 -34.60 32 s +6 sf +(selection) 114983 0.00 -1 s +5 sf +(.) 115689 0.00 -1 s +6 sf +57912.0 33641.0 m +(selection) 67943 0.00 -1 s +2 sf +( ) 68593 -56.00 32 s +5 sf +(\037 Type ) 78515 -55.50 32 s +2 sf +(keyword) 89018 0.00 -1 s +5 sf +(.) 89724 0.00 -1 s +62992.0 38427.0 m +(The) 67380 0.00 -1 s +( name of the selection.) 92704 -36.75 32 s +6 sf +57912.0 44704.0 m +(time) 62770 0.00 -1 s +2 sf +( ) 63451 -25.00 32 s +5 sf +(\037 Type ) 73435 -24.50 32 s +2 sf +(timestamp) 86128 0.00 -1 s +5 sf +(.) 86834 0.00 -1 s +62992.0 49490.0 m +(The) 67380 0.00 -1 s +( last\036change time recorded) 97129 -35.00 32 s +( for the ) 105877 -35.67 32 s +6 sf +(selection) 115908 0.00 -1 s +5 sf +(.) 116614 0.00 -1 s +2 sf +34544.0 55767.0 m +(:selection\036notify) 53819 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 60486.0 m +(The) 57220 0.00 -1 s +( ) 57790 -136.00 32 s +2 sf +(:selection\036notify) 77065 0.00 -1 s +5 sf +( event is sent to a client calling ) 111563 -135.88 32 s +2 sf +(convert\036selection) 131935 0.00 -1 s +5 sf +(. ) 133211 -136.00 32 s +2 sf +(:selection\036no\036) 149352 0.00 -1 s +52832.0 63647.0 m +(tify) 56905 0.00 -1 s +5 sf +( reports the result of the client request to) 101068 -181.00 32 s +( return the current value of a ) 132629 -181.57 32 s +6 sf +(selection) 142660 0.00 -1 s +5 sf +( into a) 149352 -181.50 32 s +52832.0 66808.0 m +(particular) 63643 0.00 -1 s +( form.) 70308 -231.00 32 s +2 sf +( :selection\036notify) 90058 -231.00 32 s +5 sf +( is sent using ) 104501 -231.00 32 s +2 sf +(send\036event) 117354 0.00 -1 s +5 sf +( by the owner) 132100 -231.00 32 s +( of the selection) 149352 -231.67 32 s +52832.0 69969.0 m +(or) 55182 0.00 -1 s +( \(if no owner exists\) by the X server. A client can neither select ) 130077 194.29 32 s +2 sf +(:selection\036notify) 149352 0.00 -1 s +5 sf +52832.0 73129.0 m +(events) 60042 0.00 -1 s +( nor avoid receiving them.) 89566 -44.75 32 s +52832.0 81370.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 80545 av +149352 80545 as +149352 80663 as +52832 80663 as +closepath +fp +/drawmode PL_SET def +52832.0 84531.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62264 -209.00 32 s +5 sf +(Standard conventions for) 90216 -209.00 32 s +( inter\036client communication require the following ad\036) 149352 -174.67 32 s +52832.0 87692.0 m +(ditional) 61454 0.00 -1 s +( steps in processing a ) 86015 -26.00 32 s +2 sf +(:selection\036notify) 105290 0.00 -1 s +5 sf +( event:) 112866 -26.00 32 s +52832.0 93901.0 m +(1.) 54949 0.00 -1 s +57912.0 h +(The client) 69275 0.00 32 s +( receiving this event should call) 104108 -197.00 32 s +( ) 104616 -198.00 32 s +2 sf +(get\036property) 119816 0.00 -1 s +5 sf +( to return the converted se\036) 149352 -158.00 32 s +57912.0 97062.0 m +(lection) 65592 0.00 -1 s +( value.) 73039 -77.00 32 s +52832.0 102255.0 m +(2.) 54949 0.00 -1 s +57912.0 h +(After) 63864 0.00 -1 s +( receiving the) 79193 -15.00 32 s +( selection value, the property should then be deleted \(either by) 149352 -14.00 32 s +57912.0 105416.0 m +(using) 64027 0.00 -1 s +( the ) 68795 -46.00 32 s +2 sf +(:delete\036p) 79293 0.00 -1 s +5 sf +( argument) 90610 -46.00 32 s +( to ) 94124 -46.50 32 s +2 sf +(get\036property) 109324 0.00 -1 s +5 sf +( or by calling ) 124860 -35.00 32 s +2 sf +(delete\036property) 143508 0.00 -1 s +5 sf +(\).) 145153 0.00 -1 s +52832.0 108577.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 107752 av +149352 107752 as +149352 107870 as +52832 107870 as +closepath +fp +/drawmode PL_SET def +6 sf +57912.0 114785.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 119572.0 m +(The) 67380 0.00 -1 s +( requestor window given in the call to ) 110505 -36.88 32 s +2 sf +(convert\036selection) 130877 0.00 -1 s +5 sf +(.) 131583 0.00 -1 s +6 sf +57912.0 125849.0 m +(selection) 67943 0.00 -1 s +5 sf +( \037 Type ) 78515 -55.67 32 s +2 sf +(keyword) 89018 0.00 -1 s +5 sf +(.) 89724 0.00 -1 s +62992.0 130635.0 m +(The) 67380 0.00 -1 s +( selection to be converted.) 96746 -45.00 32 s +6 sf +57912.0 136912.0 m +(target) 64653 0.00 -1 s +( ) 65309 -50.00 32 s +5 sf +(\037) 68131 0.00 -1 s +2 sf +( ) 68787 -50.00 32 s +5 sf +(Type) 74586 0.00 -1 s +( ) 75241 -51.00 32 s +2 sf +(keyword) 85744 0.00 -1 s +5 sf +(.) 86450 0.00 -1 s +62992.0 141698.0 m +(An) 66440 0.00 -1 s +( ) 66856 -290.00 32 s +2 sf +(xatom) 74378 0.00 -1 s +5 sf +( specifying the type of the converted selection value. This is the same) 149352 -289.92 32 s +62992.0 144859.0 m +(target) 69416 0.00 -1 s +( type given in the call to ) 97162 -33.86 32 s +2 sf +(convert\036selection) 117534 0.00 -1 s +5 sf +(.) 118240 0.00 -1 s +6 sf +57912.0 151136.0 m +(property) 67631 0.00 -1 s +2 sf +( ) 68298 -39.00 32 s +5 sf +(\037 Type) 77586 -39.00 32 s +( ) 78252 -40.00 32 s +2 sf +(\(or null keyword\)) 99336 -39.50 32 s +5 sf +(.) 100042 0.00 -1 s +62992.0 155922.0 m +(The) 67380 0.00 -1 s +( window property containing the converted selection. If the property is) 145011 -207.00 32 s +( ) 145509 -208.00 32 s +2 sf +(nil) 148646 0.00 -1 s +5 sf +(,) 149352 0.00 -1 s +62992.0 159083.0 m +(then) 67851 0.00 -1 s +( either the ) 79370 -157.00 32 s +6 sf +(selection) 89401 0.00 -1 s +5 sf +( has no owner or the owner could not perform the con\036) 149352 -156.73 32 s +62992.0 162244.0 m +(version) 71299 0.00 -1 s +( to the ) 78976 -28.00 32 s +6 sf +(target) 85717 0.00 -1 s +5 sf +( type.) 91959 -29.00 32 s +6 sf +57912.0 168521.0 m +(time) 62770 0.00 -1 s +2 sf +( ) 63451 -25.00 32 s +5 sf +(\037 Type ) 73435 -24.50 32 s +2 sf +(timestamp) 86128 0.00 -1 s +5 sf +(.) 86834 0.00 -1 s +62992.0 173307.0 m +(The) 67380 0.00 -1 s +( timestamp from the client call to ) 105335 -30.57 32 s +2 sf +(convert\036selection) 125707 0.00 -1 s +5 sf +(.) 126413 0.00 -1 s +2 sf +34544.0 179584.0 m +(:selection\036request) 55700 0.00 -1 s +136347.0 h +5 sf +(Event) 142930 0.00 -1 s +( Type) 149352 -83.00 32 s +52832.0 184302.0 m +(The) 57220 0.00 -1 s +( ) 57823 -103.00 32 s +2 sf +(:selection\036request) 78979 0.00 -1 s +5 sf +( event is reported to the owner of a selection when a client calls) 149352 -102.62 32 s +52832.0 187463.0 m +2 sf +(convert\036selection) 73204 0.00 -1 s +5 sf +(.) 73910 0.00 -1 s +( This event requests the selection owner to convert the current value) 149352 -130.64 32 s +52832.0 190624.0 m +(of) 55182 0.00 -1 s +( a ) 57623 -112.00 32 s +6 sf +(selection) 67654 0.00 -1 s +5 sf +( into a specified form) 91343 -112.00 32 s +( and to return it to the requestor. A client can neither) 149352 -112.55 32 s +52832.0 193785.0 m +(select) 59257 0.00 -1 s +( ) 59921 -42.00 32 s +2 sf +(:selection\036request) 81077 0.00 -1 s +5 sf +( events nor avoid receiving them.) 118488 -41.60 32 s +52832.0 198978.0 m +(The) 57220 0.00 -1 s +( selection owner should respond to a ) 97031 -303.00 32 s +2 sf +(:selection\036request) 118187 0.00 -1 s +5 sf +( event by performing the fol\036) 149352 -302.60 32 s +52832.0 202139.0 m +(lowing) 60670 0.00 -1 s +( steps:) 67778 -26.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 39 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036157) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(1.) 54949 0.00 -1 s +57912.0 h +(Convert) 67003 0.00 -1 s +( the current ) 80463 -32.00 32 s +/timsps10i 6 declareFont +6 sf +(selection) 90494 0.00 -1 s +5 sf +( value to the ) 104945 -32.00 32 s +6 sf +(target) 111686 0.00 -1 s +5 sf +( type.) 117924 -33.00 32 s +52832.0 27771.0 m +(2.) 54949 0.00 -1 s +57912.0 h +(Store) 63868 0.00 -1 s +( the converted selection value in the ) 103238 -276.00 32 s +6 sf +(property) 112957 0.00 -1 s +5 sf +(. If ) 116401 -276.00 32 s +6 sf +(property) 126120 0.00 -1 s +5 sf +( is ) 128862 -276.00 32 s +2 sf +(nil) 131999 0.00 -1 s +5 sf +(, then the) 141872 -276.00 32 s +( owner) 149352 -277.00 32 s +57912.0 30932.0 m +(should) 65438 0.00 -1 s +( choose the ) 78689 -50.67 32 s +6 sf +(property) 88408 0.00 -1 s +5 sf +(.) 89114 0.00 -1 s +52832.0 37208.0 m +(3.) 54949 0.00 -1 s +57912.0 h +(Call) 62615 0.00 -1 s +( ) 63347 26.00 32 s +2 sf +(send\036event) 76200 0.00 -1 s +5 sf +( to send a ) 87749 26.00 32 s +2 sf +(:selection\036notify) 107024 0.00 -1 s +5 sf +( event to the ) 121709 26.50 32 s +6 sf +(requestor) 132526 0.00 -1 s +5 sf +( containing the) 149352 26.50 32 s +57912.0 40369.0 m +6 sf +(property) 67631 0.00 -1 s +5 sf +( with the converted value. If the ) 102571 -248.00 32 s +6 sf +(selection) 112602 0.00 -1 s +5 sf +( could not be converted to the ) 145120 -247.57 32 s +6 sf +(tar\036) 149352 0.00 -1 s +57912.0 43530.0 m +(get) 61360 0.00 -1 s +5 sf +( type, then a ) 74893 -242.00 32 s +2 sf +(nil) 78030 0.00 -1 s +5 sf +( ) 78494 -242.00 32 s +6 sf +(property) 88213 0.00 -1 s +5 sf +( should be sent. The ) 110363 -242.00 32 s +2 sf +(:selection) 121646 0.00 -1 s +5 sf +(,) 122352 0.00 -1 s +2 sf +( :target) 130961 -242.00 32 s +5 sf +(, and ) 136670 -242.00 32 s +2 sf +(:time) 142935 0.00 -1 s +5 sf +( argu\036) 149352 -242.00 32 s +57912.0 46691.0 m +(ments) 64653 0.00 -1 s +( to) 67311 -243.00 32 s +( ) 67773 -244.00 32 s +2 sf +(send\036event) 80626 0.00 -1 s +5 sf +( should be the same as those received in the ) 128196 -243.50 32 s +2 sf +(:selection\036request) 149352 0.00 -1 s +5 sf +57912.0 49852.0 m +(event.) 64730 0.00 -1 s +( The event\036mask argument to ) 97028 -296.00 32 s +2 sf +(send\036event) 109881 0.00 -1 s +5 sf +( should be ) 121301 -296.00 32 s +2 sf +(nil) 124438 0.00 -1 s +5 sf +(; that is, the ) 137130 -296.00 32 s +2 sf +(:selection\036) 149352 0.00 -1 s +57912.0 53013.0 m +(notify) 64965 0.00 -1 s +5 sf +( event should be sent to client that created the ) 116877 -28.60 32 s +6 sf +(requestor) 127694 0.00 -1 s +5 sf +(.) 128400 0.00 -1 s +52832.0 60238.0 m +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +5 17 fillpatset +newpath +52832 59413 av +149352 59413 as +149352 59531 as +52832 59531 as +closepath +fp +/drawmode PL_SET def +52832.0 63398.0 m +2 sf +(NOTE:) 61767 0.00 -1 s +( ) 62264 -209.00 32 s +5 sf +(Standard conventions for) 90216 -209.00 32 s +( inter\036client communication require the following ad\036) 149352 -174.67 32 s +52832.0 66559.0 m +(ditional) 61454 0.00 -1 s +( steps in processing a) 85331 -27.00 32 s +( ) 86009 -28.00 32 s +2 sf +(:selection\036request) 107165 0.00 -1 s +5 sf +( event: ) 115418 -27.50 32 s +52832.0 72768.0 m +(1.) 54949 0.00 -1 s +57912.0 h +(The property) 72565 0.00 32 s +( used to store the selection value must belong to the requestor. ) 143143 -29.58 32 s +52832.0 77961.0 m +(2.) 54949 0.00 -1 s +57912.0 h +(If the) 63944 0.00 32 s +( property is ) 77422 -27.00 32 s +2 sf +(nil) 80559 0.00 -1 s +5 sf +(, the target type ) 98712 -27.00 32 s +2 sf +(atom) 104823 0.00 -1 s +5 sf +( should) 113028 -27.00 32 s +( be used as the property name.) 147139 -23.00 32 s +52832.0 83154.0 m +(3.) 54949 0.00 -1 s +57912.0 h +(If) 59790 0.00 -1 s +( the window) 74293 276.00 32 s +( did not actually own the selection at the given time, the request) 149352 252.50 32 s +57912.0 86315.0 m +(should) 65438 0.00 -1 s +( be refused, just as if it could not be converted to the target type.) 137679 -23.86 32 s +52832.0 89476.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 88651 av +149352 88651 as +149352 88769 as +52832 88769 as +closepath +fp +/drawmode PL_SET def +6 sf +57912.0 95685.0 m +(window,) 67399 0.00 -1 s +( event\036window) 83721 -58.00 32 s +2 sf +( ) 84369 -58.00 32 s +5 sf +(\037 Type ) 94287 -57.50 32 s +2 sf +(window) 103694 0.00 -1 s +5 sf +(.) 104400 0.00 -1 s +62992.0 100471.0 m +(The) 67380 0.00 -1 s +( selection owner receiving the) 101053 -45.00 32 s +( event.) 108531 -46.00 32 s +6 sf +57912.0 106748.0 m +(requestor) 68729 0.00 -1 s +2 sf +( ) 69392 -43.00 32 s +5 sf +(\037 Type ) 79340 -42.50 32 s +2 sf +(window) 88747 0.00 -1 s +5 sf +(.) 89453 0.00 -1 s +62992.0 111534.0 m +(The) 67380 0.00 -1 s +( window requesting the converted ) 106080 -50.00 32 s +6 sf +(selection) 116111 0.00 -1 s +5 sf +(.) 116817 0.00 -1 s +6 sf +57912.0 117811.0 m +(selection) 67943 0.00 -1 s +2 sf +( ) 68593 -56.00 32 s +5 sf +(\037 Type ) 78515 -55.50 32 s +2 sf +(keyword) 89018 0.00 -1 s +5 sf +(.) 89724 0.00 -1 s +62992.0 122597.0 m +(The) 67380 0.00 -1 s +( selection to be converted.) 96746 -45.00 32 s +6 sf +57912.0 128874.0 m +(target) 64653 0.00 -1 s +( ) 65309 -50.00 32 s +5 sf +(\037 Type) 74586 -50.00 32 s +( ) 75241 -51.00 32 s +2 sf +(keyword) 85744 0.00 -1 s +5 sf +(.) 86450 0.00 -1 s +62992.0 133660.0 m +(An) 66440 0.00 -1 s +( ) 67109 -37.00 32 s +2 sf +(xatom) 74631 0.00 -1 s +5 sf +( specifying the type of the converted ) 116300 -37.00 32 s +6 sf +(selection) 126331 0.00 -1 s +5 sf +( value.) 133818 -37.00 32 s +6 sf +57912.0 139937.0 m +(property) 67631 0.00 -1 s +2 sf +( ) 68298 -39.00 32 s +5 sf +(\037 Type) 77586 -39.00 32 s +( ) 78252 -40.00 32 s +2 sf +(\(or null keyword\)) 99336 -39.50 32 s +5 sf +(.) 100042 0.00 -1 s +62992.0 144724.0 m +(A) 65029 0.00 -1 s +( requestor window property. ) 97581 -31.75 32 s +6 sf +57912.0 151000.0 m +(time) 62770 0.00 -1 s +( ) 63451 -25.00 32 s +5 sf +(\037) 66273 0.00 -1 s +2 sf +( ) 66955 -24.00 32 s +5 sf +(Type ) 73435 -25.00 32 s +2 sf +(timestamp) 86128 0.00 -1 s +5 sf +(.) 86834 0.00 -1 s +62992.0 155787.0 m +(The) 67380 0.00 -1 s +( timestamp sent in the client ) 99630 -33.50 32 s +2 sf +(convert\036selection) 120002 0.00 -1 s +5 sf +( request.) 129529 -34.00 32 s +52832.0 162718.0 m +541.0 sw +0.0 0.0 m +newpath +149013 161159 av +52967 161161 as +[] 0 setdash +dp +149352.0 162718.0 m +20320.0 165540.0 m +37682.0 h +2 sf +(Declaring) 49437 0.00 -1 s +52832.0 h +(12.12.8) 61299 0.00 -1 s +5 sf +() 61299 0.00 -1 s +63494.0 h +(CLX) 69137 0.00 -1 s +( uses the ) 79446 -39.00 32 s +2 sf +(declare\036event) 95586 0.00 -1 s +5 sf +( macro to define the event slot symbols) 139598 -38.86 32 s +20320.0 168701.0 m +34476.0 h +2 sf +(Event) 41530 0.00 -1 s +( Types) 49378 -71.00 32 s +52832.0 h +5 sf +(that) 57064 0.00 -1 s +( access the) 68626 -253.00 32 s +( contents of X events. Most client applications do not need to use ) 139637 -253.54 32 s +2 sf +(declare\036) 149352 0.00 -1 s +52832.0 171862.0 m +(event) 59257 0.00 -1 s +5 sf +( because the declarations for all core X) 103090 -18.00 32 s +( events are already defined by CLX. Pro\036) 149352 -18.57 32 s +52832.0 175023.0 m +(grammers) 64115 0.00 -1 s +( using extensions to the X protocol can use ) 113832 63.44 32 s +2 sf +(declare\036event) 129972 0.00 -1 s +5 sf +( to allow CLX to) 149352 63.50 32 s +52832.0 178184.0 m +(handle) 60355 0.00 -1 s +( new event types returned by an extended) 106889 -36.00 32 s +( X server. ) 118533 -36.67 32 s +2 sf +34544.0 184460.0 m +(declare\036event) 50684 0.00 -1 s +6 sf +( event\036codes) 64646 -63.00 32 s +2 sf +( ) 65290 -62.00 32 s +5 sf +(&rest) 71559 0.00 -1 s +2 sf +( ) 72202 -63.00 32 s +6 sf +(slot\036declarations) 91327 0.00 -1 s +2 sf +142014.0 h +5 sf +(Macro) 149379 0.00 -1 s +52832.0 189179.0 m +(Defines) 61607 0.00 -1 s +( a mapping between event slot symbols and the data items in event messages re\036) 149352 -193.00 32 s +52832.0 192340.0 m +(ceived) 60197 0.00 -1 s +( from an X server.) 80693 -28.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 40 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036158) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( ) 57755 -171.00 32 s +/timsps10i 6 declareFont +6 sf +(event\036codes) 71074 0.00 -1 s +5 sf +( argument gives the event type keyword for the event described. If sev\036) 149352 -170.58 32 s +52832.0 25739.0 m +(eral) 57061 0.00 -1 s +( event types share the same slots, then ) 100743 3.00 32 s +6 sf +(event\036codes) 114062 0.00 -1 s +5 sf +( can be a list of event type) 143630 3.00 32 s +( key\036) 149352 2.00 32 s +52832.0 28900.0 m +(words.) 60434 0.00 -1 s +( ) 61228 88.00 32 s +6 sf +(slot\036declarations) 80353 0.00 -1 s +5 sf +( is) 83029 88.00 32 s +( a list containing an element for each event data item. The) 149352 87.45 32 s +52832.0 32060.0 m +(order) 58785 0.00 -1 s +( of ) 62251 -148.00 32 s +6 sf +(slot\036declarations) 81376 0.00 -1 s +5 sf +( corresponds to the order of event data items defined by the X) 149352 -147.75 32 s +52832.0 35221.0 m +(protocol.) 62942 0.00 -1 s +52832.0 41498.0 m +(Each) 58473 0.00 -1 s +( element of ) 71367 -169.00 32 s +6 sf +(slot\036declarations) 90492 0.00 -1 s +5 sf +( is a list of the) 105560 -169.00 32 s +( form \() 113056 -169.50 32 s +6 sf +(type slot\036name) 129421 -170.00 32 s +5 sf +(*\), where ) 140443 -169.50 32 s +6 sf +(type) 145144 0.00 -1 s +5 sf +( is a) 149352 -169.50 32 s +52832.0 44659.0 m +(Common) 63337 0.00 -1 s +( Lisp type specifier and ) 90102 -86.00 32 s +6 sf +(slot\036name) 101230 0.00 -1 s +5 sf +( is a slot name symbol.) 126670 -86.00 32 s +( The effect of such a) 149352 -86.60 32 s +52832.0 47820.0 m +(list) 56282 0.00 -1 s +( is to declare that the next data items in the event have the given data ) 135601 59.00 32 s +6 sf +(type) 140302 0.00 -1 s +5 sf +( and are) 149352 59.00 32 s +52832.0 50981.0 m +(associated) 64430 0.00 -1 s +( with the given ) 81864 -31.00 32 s +6 sf +(slot\036name) 92992 0.00 -1 s +5 sf +( symbols. ) 104456 -31.00 32 s +6 sf +(slot\036name) 115584 0.00 -1 s +5 sf +( can also be a list of slot) 142566 -31.00 32 s +( name) 149352 -32.00 32 s +52832.0 54142.0 m +(symbols;) 63024 0.00 -1 s +( in this case, each symbol in the list is an alias that refers to the same event data) 149352 -189.67 32 s +52832.0 57302.0 m +(item.) 58554 0.00 -1 s +6 sf +52832.0 63579.0 m +(event\036codes) 66151 0.00 -1 s +( \037) 69334 -32.00 32 s +5 sf +( An event type keyword or a list of event type keywords.) 133096 -31.55 32 s +6 sf +52832.0 68366.0 m +(slot\036declarations) 71957 0.00 -1 s +( \037 ) 75840 -19.00 32 s +5 sf +(A list of clauses defining event slot symbols.) 126345 -18.71 32 s +20320.0 73874.0 m +0.0 0.0 m +newpath +20455 72250 av +148878 72248 as +[] 0 setdash +dp +149352.0 73874.0 m +/timsps12b 7 declareFont +7 sf +20320.0 77261.0 m +(Releasing) 34239 0.00 -1 s +52832.0 h +2 sf +(12.13) 59182 0.00 -1 s +61532.0 h +() 61532 0.00 -1 s +5 sf +(A) 63569 0.00 -1 s +( client grabbing) 83187 953.00 32 s +( the keyboard or pointer can freeze the reporting of) 149352 952.44 32 s +7 sf +20320.0 80648.0 m +(Queued) 31609 0.00 -1 s +( Events) 42243 5.00 32 s +52832.0 h +5 sf +(events on) 63570 0.00 32 s +( that device. When an input device is thus frozen, the server queues events un\036) 149352 -187.21 32 s +52832.0 83809.0 m +(til) 55184 0.00 -1 s +( explicitly requested to release them by the grabbing client. CLX programs can use the) 149352 -254.43 32 s +52832.0 86970.0 m +2 sf +(allow\036events) 67721 0.00 -1 s +5 sf +( function to release queued events) 105863 -36.00 32 s +( from a frozen input device.) 137025 -36.60 32 s +2 sf +34544.0 93246.0 m +(allow\036events) 49433 0.00 -1 s +52832.0 h +6 sf +(display) 60984 0.00 -1 s +( mode) 67760 -42.00 32 s +5 sf +( &optional) 79868 -42.00 32 s +( ) 80531 -43.00 32 s +6 sf +(time) 85389 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 97965.0 m +(Releases) 62706 0.00 -1 s +( some queued events if the client has caused a device to freeze. The request has) 149352 -190.00 32 s +52832.0 101126.0 m +(no) 55654 0.00 -1 s +( effect if the ) 69090 -245.00 32 s +6 sf +(time) 73948 0.00 -1 s +5 sf +( is earlier than the last\036grab time of the most recent active grab for the) 149352 -245.00 32 s +52832.0 104287.0 m +(client,) 59807 0.00 -1 s +( or if the ) 69676 -119.00 32 s +6 sf +(time) 74534 0.00 -1 s +5 sf +( is later than the current server time. If ) 117502 -119.00 32 s +6 sf +(time) 122360 0.00 -1 s +5 sf +( is ) 125416 -119.00 32 s +2 sf +(nil) 128553 0.00 -1 s +5 sf +(, the current server) 149352 -118.67 32 s +52832.0 107448.0 m +(time) 57848 0.00 -1 s +( is used. The effect of) 82163 -27.00 32 s +( this function depends on the specified ) 126097 -27.57 32 s +6 sf +(mode) 132209 0.00 -1 s +5 sf +(.) 132915 0.00 -1 s +/symbb8 4 declareFont +4 sf +52832.0 113995.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:async\036pointer) 75310 0.00 -1 s +5 sf +( \037 If the pointer is frozen by the client,) 120831 77.00 32 s +( pointer event processing) 149352 76.33 32 s +57912.0 117156.0 m +(continues) 68728 0.00 -1 s +( normally. If the pointer) 94613 -288.00 32 s +( is frozen twice by the client on behalf of two sepa\036) 149352 -288.55 32 s +57912.0 120317.0 m +(rate) 62141 0.00 -1 s +( grabs, ) 70509 69.00 32 s +2 sf +(:async\036pointer) 87907 0.00 -1 s +5 sf +( releases events for both grab) 121243 69.00 32 s +6 sf +(s) 122341 0.00 -1 s +5 sf +(.) 123047 0.00 -1 s +( ) 123821 68.00 32 s +2 sf +(:async\036pointer) 141219 0.00 -1 s +5 sf +( has no) 149352 68.50 32 s +57912.0 123478.0 m +(effect) 64333 0.00 -1 s +( if the pointer is not frozen by the client, but the pointer need not be grabbed) 146098 -273.00 32 s +( by) 149352 -274.00 32 s +57912.0 126639.0 m +(the) 61360 0.00 -1 s +( client.) 68998 -43.00 32 s +4 sf +52832.0 133186.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:sync\036pointer) 73899 0.00 -1 s +5 sf +( \037 If the pointer is frozen and actively grabbed by the client,) 140830 -176.00 32 s +( pointer) 149352 -177.00 32 s +57912.0 136347.0 m +(event) 64024 0.00 -1 s +( processing continues normally until the next ) 115991 67.29 32 s +2 sf +(:button\036press ) 132910 68.00 32 s +5 sf +(or ) 136033 67.00 32 s +2 sf +(:button\036re\036) 149352 0.00 -1 s +57912.0 139508.0 m +(lease) 63711 0.00 -1 s +5 sf +( event is reported to the client, at which time the pointer again appears) 146207 245.00 32 s +( to) 149352 244.00 32 s +57912.0 142669.0 m +(freeze.) 65508 0.00 -1 s +( However, if the reported event causes the pointer grab to be released,) 145133 66.00 32 s +( the) 149352 65.00 32 s +57912.0 145830.0 m +(pointer) 65905 0.00 -1 s +( does not freeze. ) 84965 -34.75 32 s +2 sf +(:sync\036pointer) 100952 0.00 -1 s +5 sf +( has no effect if the pointer is not frozen by) 149352 -34.50 32 s +57912.0 148991.0 m +(the) 61360 0.00 -1 s +( client, or if the pointer is not grabbed by the client.) 119188 -22.64 32 s +4 sf +52832.0 155538.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:replay\036pointer) 76249 0.00 -1 s +5 sf +( \037 If the pointer is actively grabbed by the client and is frozen as) 149352 -62.79 32 s +57912.0 158699.0 m +(the) 61360 0.00 -1 s +( result) 68261 -74.00 32 s +( of an event having been sent to the client \(either from the activation of a) 149352 -74.53 32 s +57912.0 161860.0 m +2 sf +(grab\036button) 72491 0.00 -1 s +5 sf +(,) 73197 0.00 -1 s +( or from a previous ) 95637 21.00 32 s +2 sf +(allow\036events) 110526 0.00 -1 s +5 sf +( with mode ) 123993 21.00 32 s +2 sf +(:sync\036pointer) 139980 0.00 -1 s +5 sf +(, but not) 149352 21.00 32 s +57912.0 165021.0 m +(from) 63396 0.00 -1 s +( a ) 65903 -79.00 32 s +2 sf +(grab\036pointer) 81264 0.00 -1 s +5 sf +(\),) 82909 0.00 -1 s +( the pointer grab is released and that event is completely re\036) 149352 -79.55 32 s +57912.0 168182.0 m +(processed,) 69745 0.00 -1 s +( but this time ignoring any passive grabs at or above \(towards the root\)) 149352 -19.77 32 s +57912.0 171343.0 m +(the) 61360 0.00 -1 s +( ) 61798 -268.00 32 s +2 sf +(grab\036window) 77788 0.00 -1 s +5 sf +( of the grab just released. The request has no effect if the pointer is) 149352 -267.64 32 s +57912.0 174504.0 m +(not) 61518 0.00 -1 s +( grabbed by the client, or if the pointer is not frozen as the result of an event.) 147591 -21.82 32 s +4 sf +52832.0 181051.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:async\036keyboard) 77978 0.00 -1 s +5 sf +( \037 If the keyboard is frozen by the client, keyboard event proc\036) 149352 -53.67 32 s +57912.0 184212.0 m +(essing) 64967 0.00 -1 s +( continues normally. If the keyboard is frozen twice by the client on behalf of) 149352 -214.00 32 s +57912.0 187373.0 m +(two) 62144 0.00 -1 s +( separate grabs, ) 80213 -37.00 32 s +2 sf +(:async\036keyboard) 100279 0.00 -1 s +5 sf +( releases events for both grabs. ) 135560 -36.67 32 s +2 sf +(:async\036key\036) 149352 0.00 -1 s +57912.0 190534.0 m +(board) 65125 0.00 -1 s +5 sf +( has no effect if the) 85406 -285.00 32 s +( keyboard is not frozen by the client, but the keyboard need) 149352 -285.55 32 s +57912.0 193695.0 m +(not) 61518 0.00 -1 s +( be grabbed by the) 82217 -37.00 32 s +( client.) 89860 -38.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 41 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +133728.0 8195.0 m +(Events and) 143695 -22.00 32 s +( Input) 149013 -23.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(12\036159) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/symbb8 4 declareFont +4 sf +52832.0 22849.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:sync\036keyboard) 76567 0.00 -1 s +/timsps10 5 declareFont +5 sf +( \037 If the keyboard is frozen and actively grabbed by the) 141569 103.00 32 s +( client,) 149352 102.00 32 s +57912.0 26010.0 m +(keyboard) 68412 0.00 -1 s +( event processing continues) 98606 -307.00 32 s +( normally until the next ) 124267 -307.60 32 s +2 sf +(:key\036press) 136649 0.00 -1 s +5 sf +( or ) 139796 -307.50 32 s +2 sf +(:key\036re\036) 149352 0.00 -1 s +57912.0 29170.0 m +(lease) 63711 0.00 -1 s +5 sf +( event is reported to the client, at which time the keyboard) 130113 66.00 32 s +( again appears to) 149352 65.33 32 s +57912.0 32331.0 m +(freeze.) 65508 0.00 -1 s +( However if the reported event causes the keyboard grab to be released, the) 149352 -72.62 32 s +57912.0 35492.0 m +(keyboard) 68412 0.00 -1 s +( does not freeze. ) 87099 -128.00 32 s +2 sf +(:sync\036keyboard) 105754 0.00 -1 s +5 sf +( has no effect if the keyboard is not fro\036) 149352 -127.56 32 s +57912.0 38653.0 m +(zen) 61829 0.00 -1 s +( by the client, or if the keyboard is not grabbed by the client.) 129732 -27.92 32 s +4 sf +52832.0 45201.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:replay\036keyboard) 78917 0.00 -1 s +5 sf +( \037 If the keyboard is actively grabbed by the client and is frozen) 149352 -230.54 32 s +57912.0 48362.0 m +(as) 60263 0.00 -1 s +( the result of an event having been sent to the client \(either from the activation of a) 149352 -249.94 32 s +57912.0 51522.0 m +(grab\036key,) 68646 0.00 -1 s +( or from a previous ) 92027 209.20 32 s +2 sf +(allow\036events) 106916 0.00 -1 s +5 sf +( with mode ) 120948 209.33 32 s +2 sf +(:sync\036keyboard) 139603 0.00 -1 s +5 sf +(, but not) 149352 209.50 32 s +57912.0 54683.0 m +(from) 63396 0.00 -1 s +( a ) 65665 -198.00 32 s +2 sf +(grab\036keyboard) 83694 0.00 -1 s +5 sf +(\), the keyboard grab is released and that event is completely) 149352 -197.50 32 s +57912.0 57844.0 m +(reprocessed,) 71937 0.00 -1 s +( but this time ignoring) 96270 -188.00 32 s +( any passive grabs at or above \(towards the root\)) 149352 -188.56 32 s +57912.0 61005.0 m +(the) 61360 0.00 -1 s +( ) 61785 -281.00 32 s +2 sf +(grab\036window) 77775 0.00 -1 s +5 sf +( of the grab just released. The request has no effect if the keyboard) 149352 -281.00 32 s +57912.0 64166.0 m +(is) 59794 0.00 -1 s +( not grabbed by the client, or if the keyboard is not frozen as the result of an event.) 149352 -205.83 32 s +4 sf +52832.0 70714.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:sync\036both) 70609 0.00 -1 s +5 sf +( \037 If both pointer and keyboard are frozen by the client, event process\036) 149352 -163.85 32 s +57912.0 73874.0 m +(ing) 61518 0.00 -1 s +( \(for both devices\) continues normally until the next ) 118729 -252.78 32 s +2 sf +(:button\036press) 134874 0.00 -1 s +5 sf +(, ) 136033 -253.00 32 s +2 sf +(:button\036re\036) 149352 0.00 -1 s +57912.0 77035.0 m +(lease) 63711 0.00 -1 s +5 sf +(,) 64417 0.00 -1 s +( ) 65429 306.00 32 s +2 sf +(:key\036press) 77811 0.00 -1 s +5 sf +(, or ) 82891 306.00 32 s +2 sf +(:key\036release) 97307 0.00 -1 s +5 sf +( event is reported to the client for a) 139252 306.00 32 s +( grabbed) 149352 305.00 32 s +57912.0 80196.0 m +(device) 65277 0.00 -1 s +( \(button event for the pointer, key event for the keyboard\). At this time,) 145245 -46.00 32 s +( the) 149352 -47.00 32 s +57912.0 83357.0 m +(devices) 66375 0.00 -1 s +( again appear to freeze. If the reported event causes the grab to be released,) 149352 -129.00 32 s +57912.0 86518.0 m +(the) 61360 0.00 -1 s +( devices do not freeze. However, if the other device is still grabbed, then a subse\036) 149352 -246.60 32 s +57912.0 89679.0 m +(quent) 64182 0.00 -1 s +( event for it will still cause both devices to freeze. ) 121435 32.36 32 s +2 sf +(:sync\036both) 134132 0.00 -1 s +5 sf +( has no effect) 149352 32.33 32 s +57912.0 92840.0 m +(unless) 64967 0.00 -1 s +( both pointer and keyboard are frozen by the client. If the pointer of keyboard) 149352 -224.93 32 s +57912.0 96001.0 m +(is) 59794 0.00 -1 s +( frozen twice by the client on behalf of two separate grabs, ) 125549 -90.83 32 s +2 sf +(:sync\036both) 138246 0.00 -1 s +5 sf +( ) 138862 -90.00 32 s +/timsps10i 6 declareFont +6 sf +(thaws) 145448 0.00 -1 s +5 sf +( for) 149352 -91.00 32 s +57912.0 99162.0 m +(both,) 63635 0.00 -1 s +( but a subsequent) 83048 -35.00 32 s +( freeze for ) 95238 -35.67 32 s +2 sf +(:sync\036both) 107935 0.00 -1 s +5 sf +( will only freeze each device once.) 146823 -35.50 32 s +4 sf +52832.0 105709.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:async\036both) 72020 0.00 -1 s +5 sf +( \037 If the pointer and the keyboard are frozen) 121470 -191.00 32 s +( by the client, event proc\036) 149352 -191.60 32 s +57912.0 108870.0 m +(essing) 64967 0.00 -1 s +( for both devices continues normally. If a device is frozen twice by the client) 149352 -158.00 32 s +57912.0 112031.0 m +(on) 60734 0.00 -1 s +( behalf of two separate grabs, ) 94691 4.33 32 s +2 sf +(:async\036both) 108799 0.00 -1 s +5 sf +( ) 109510 5.00 32 s +6 sf +(thaws) 116096 0.00 -1 s +5 sf +( for both. ) 127239 4.33 32 s +2 sf +(:async\036both) 141347 0.00 -1 s +5 sf +( has no) 149352 4.50 32 s +57912.0 115192.0 m +(effect) 64333 0.00 -1 s +( unless both pointer and keyboard) 102338 -33.00 32 s +( are frozen by the client.) 129596 -33.60 32 s +2 sf +52832.0 121468.0 m +(:async\036pointer) 70230 0.00 -1 s +5 sf +(,) 70936 0.00 -1 s +( ) 71769 127.00 32 s +2 sf +(:sync\036pointer) 87756 0.00 -1 s +5 sf +(, and ) 94203 127.00 32 s +2 sf +(:replay\036pointer) 112540 0.00 -1 s +5 sf +( have no effect on processing of) 149352 127.33 32 s +52832.0 124629.0 m +(keyboard) 63332 0.00 -1 s +( events. ) 72602 -29.00 32 s +2 sf +(:async\036keyboard) 92668 0.00 -1 s +5 sf +(, ) 94051 -29.00 32 s +2 sf +(:sync\036keyboard) 112706 0.00 -1 s +5 sf +(, and ) 118842 -28.50 32 s +2 sf +(:replay\036keyboard) 139847 0.00 -1 s +5 sf +( have no) 149352 -28.50 32 s +52832.0 127790.0 m +(effect) 59253 0.00 -1 s +( on processing of pointer events.) 95775 -31.60 32 s +52832.0 134067.0 m +(It) 54555 0.00 -1 s +( is possible for both a pointer grab and a keyboard grab to be) 121065 -159.00 32 s +( active simultaneously by) 149352 -159.67 32 s +52832.0 137228.0 m +(the) 56280 0.00 -1 s +( same or different clients. When a device is frozen on behalf of either grab, no) 142654 -119.00 32 s +( event) 149352 -120.00 32 s +52832.0 140389.0 m +(processing) 64901 0.00 -1 s +( is performed for the device. It is possible for a single device to be frozen) 144755 -183.00 32 s +( due) 149352 -184.00 32 s +52832.0 143550.0 m +(to) 55027 0.00 -1 s +( both grabs. In this case, the freeze must be released on behalf of both grabs before) 149352 57.00 32 s +52832.0 146710.0 m +(events) 60042 0.00 -1 s +( can again be) 74706 -49.00 32 s +( processed.) 87195 -50.00 32 s +6 sf +52832.0 152987.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +6 sf +52832.0 157774.0 m +(mode) 58944 0.00 -1 s +5 sf +( \037 One of: ) 73345 230.00 32 s +2 sf +(:async\036pointer) 90743 0.00 -1 s +5 sf +(,) 91449 0.00 -1 s +2 sf +( :sync\036pointer) 108371 229.00 32 s +5 sf +(,) 109077 0.00 -1 s +2 sf +( :reply\036pointer) 126939 230.00 32 s +5 sf +(,) 127645 0.00 -1 s +2 sf +( :async\036keyboard) 148646 229.00 32 s +5 sf +(,) 149352 0.00 -1 s +57912.0 160934.0 m +2 sf +(:sync\036keyboard) 76567 0.00 -1 s +5 sf +(,) 77273 0.00 -1 s +2 sf +( :replay\036keyboard) 98900 -84.00 32 s +5 sf +(,) 99606 0.00 -1 s +2 sf +( :async\036both) 114335 -85.00 32 s +5 sf +(,) 115041 0.00 -1 s +2 sf +( :sync\036both) 128360 -84.00 32 s +5 sf +(. ) 129687 -85.00 32 s +6 sf +52832.0 165721.0 m +(time) 57690 0.00 -1 s +5 sf +( \037 A) 63937 -12.00 32 s +( ) 64630 -13.00 32 s +2 sf +(timestamp) 77323 0.00 -1 s +5 sf +(.) 78029 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 42 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Events and) 30287 -22.00 32 s +( Input) 35605 -23.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(12\036160) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/appa.ps +++ cmucl-20a-20090928/own-work/clx/appa.ps @@ -0,0 +1,5563 @@ +%!PS-Adobe-2.0 +%%Title: appa.ps +%%Pages: 10 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 7 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps9i /ILtimsi 9 map + /timsps8i /ILtimsi 8 map + /timsps10i /ILtimsi 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 7 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141804.0 208619.0 m +(A\036191) 149013 0.00 -1 s +/timsps8i 3 declareFont +3 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 6 declareFont +6 sf +20410.0 38360.0 m +30479.0 31948.0 m +(PROTOCOL VS. CLX) 80480 -44.00 32 s +( FUNCTIONAL) 115846 -45.00 32 s +42265.0 37547.0 m +( CROSS\036REFERENCE) 93444 -37.00 32 s +( LISTING) 115846 -38.00 32 s +116320.0 38360.0 m +117675.0 28877.0 m +2 sf +116862.0 36463.0 m +117675.0 33754.0 m +270.0 sw +0.0 0.0 m +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 19304 av +148832 19304 as +148832 38269 as +121739 38269 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +146663 38299 av +142543 38299 as +142086 36011 as +137508 36011 as +137508 36011 as +138424 32961 as +138424 32961 as +141170 32961 as +139797 25716 as +139797 25716 as +137508 22284 as +137508 22284 as +142086 22284 as +146663 38299 as +fp +newpath +146663 38299 av +142543 38299 as +142086 36011 as +137508 36011 as +[] 0 setdash +dp +newpath +0.0 sw +137508 36011 av +138424 32961 as +newpath +270.0 sw +138424 32961 av +141170 32961 as +139797 25716 as +[] 0 setdash +dp +newpath +0.0 sw +139797 25716 av +137508 22284 as +newpath +270.0 sw +137508 22284 av +142086 22284 as +146663 38299 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +137051 38299 av +137508 36011 as +137508 36011 as +138424 32961 as +138424 32961 as +139797 25716 as +139797 25716 as +137508 22284 as +137508 22284 as +132931 38299 as +137051 38299 as +fp +newpath +137051 38299 av +137508 36011 as +[] 0 setdash +dp +newpath +0.0 sw +137508 36011 av +138424 32961 as +newpath +270.0 sw +138424 32961 av +139797 25716 as +[] 0 setdash +dp +newpath +0.0 sw +139797 25716 av +137508 22284 as +newpath +270.0 sw +137508 22284 av +132931 38299 as +137051 38299 as +[] 0 setdash +dp +0.0 sw +newpath +133389 22284 av +133389 22284 as +newpath +133389 42875 av +133389 42875 as +newpath +146205 42875 av +146205 42875 as +newpath +146205 22284 av +146205 22284 as +149351.0 38360.0 m +6 sf +/timsps10 4 declareFont +4 sf +20320.0 42469.0 m +541.0 sw +0.0 0.0 m +newpath +20455 40845 av +149013 40843 as +[] 0 setdash +dp +149352.0 42469.0 m +52832.0 45291.0 m +2 sf +51568.0 v +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 54729.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 53904 av +149352 53904 as +149352 54139 as +52832 54139 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 57889.0 m +(AllocColor) 65528 0.00 -1 s +93472.0 h +2 sf +(alloc\036color) 106166 0.00 -1 s +4 sf +52832.0 61050.0 m +(AllocColorCells) 71329 0.00 -1 s +93472.0 h +2 sf +(alloc\036color\036cells) 112277 0.00 -1 s +4 sf +52832.0 64211.0 m +(AllocColorPlanes) 72896 0.00 -1 s +93472.0 h +2 sf +(alloc\036color\036planes) 114789 0.00 -1 s +4 sf +52832.0 67372.0 m +(AllocNamedColor) 73677 0.00 -1 s +93472.0 h +2 sf +(alloc\036color) 106166 0.00 -1 s +4 sf +52832.0 70533.0 m +(AllowEvents) 67566 0.00 -1 s +93472.0 h +2 sf +(allow\036events) 108361 0.00 -1 s +4 sf +52832.0 73694.0 m +(Bell) 57535 0.00 -1 s +( ) 58228 -13.00 32 s +93472.0 h +2 sf +(bell) 97862 0.00 -1 s +4 sf +52832.0 76855.0 m +(ChangeAccessControl) 78067 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100259 -26.00 32 s +2 sf +(access\036control) 117184 0.00 -1 s +4 sf +( ) 117864 -26.00 32 s +/timsps10i 5 declareFont +5 sf +(display) 126016 0.00 -1 s +4 sf +(\)) 126955 0.00 -1 s +52832.0 80016.0 m +(ChangeActivePointerGrab) 82766 0.00 -1 s +93472.0 h +2 sf +(change\036active\036pointer\036grab) 126228 0.00 -1 s +4 sf +52832.0 83177.0 m +(ChangeCloseDownMode) 81361 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100256 -29.00 32 s +2 sf +(close\036down\036mode) 121102 0.00 -1 s +4 sf +( ) 121779 -29.00 32 s +5 sf +(display) 129931 0.00 -1 s +4 sf +(\)\)) 131809 0.00 -1 s +52832.0 86337.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +2 sf +(force\036gcontext\036changes) 121209 0.00 -1 s +4 sf +52832.0 89498.0 m +60960.0 h +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99131 -61.00 32 s +2 sf +(with\036gcontext) 115585 0.00 -1 s +4 sf +(\)) 116524 0.00 -1 s +52832.0 92659.0 m +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100259 -26.00 32 s +2 sf +(gcontext\036function) 121417 0.00 -1 s +4 sf +( ) 122097 -26.00 32 s +5 sf +(gc) 124761 0.00 -1 s +4 sf +(\)\)) 126639 0.00 -1 s +52832.0 95820.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100252 -33.00 32 s +2 sf +(gcontext\036plane\036mask) 125330 0.00 -1 s +4 sf +( ) 126003 -33.00 32 s +5 sf +(gc) 128667 0.00 -1 s +4 sf +(\)\)) 130545 0.00 -1 s +52832.0 98981.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100229 -56.00 32 s +2 sf +(gcontext\036foreground) 124992 0.00 -1 s +4 sf +( ) 125641 -57.00 32 s +5 sf +(gc) 128305 0.00 -1 s +4 sf +(\)\)) 130183 0.00 -1 s +52832.0 102142.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100219 -66.00 32 s +2 sf +(gcontext\036background) 125928 0.00 -1 s +4 sf +( ) 126567 -67.00 32 s +5 sf +(gc) 129231 0.00 -1 s +4 sf +(\)\)) 131109 0.00 -1 s +52832.0 105303.0 m +( ) 55632 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100268 -17.00 32 s +2 sf +(gcontext\036line\036width) 123620 0.00 -1 s +4 sf +( ) 124309 -17.00 32 s +5 sf +(gc) 126973 0.00 -1 s +4 sf +(\)\)) 128851 0.00 -1 s +52832.0 108464.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100275 -10.00 32 s +2 sf +(gcontext\036line\036style) 122214 0.00 -1 s +4 sf +( ) 122910 -10.00 32 s +5 sf +(gc) 125574 0.00 -1 s +4 sf +(\)\)) 127452 0.00 -1 s +52832.0 111625.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100263 -22.00 32 s +2 sf +(gcontext\036cap\036style) 122045 0.00 -1 s +4 sf +( ) 122729 -22.00 32 s +5 sf +(gc) 125393 0.00 -1 s +4 sf +(\)\)) 127271 0.00 -1 s +52832.0 114785.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100277 -8.00 32 s +2 sf +(gcontext\036join\036style) 122529 0.00 -1 s +4 sf +( ) 123226 -9.00 32 s +5 sf +(gc) 125890 0.00 -1 s +4 sf +(\)\)) 127768 0.00 -1 s +52832.0 117946.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100294 9.00 32 s +2 sf +(gcontext\036fill\036style) 121134 0.00 -1 s +4 sf +( ) 121848 8.00 32 s +5 sf +(gc) 124512 0.00 -1 s +4 sf +(\)\)) 126390 0.00 -1 s +52832.0 121107.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100280 -5.00 32 s +2 sf +(gcontext\036fill\036rule) 120494 0.00 -1 s +4 sf +( ) 121194 -6.00 32 s +5 sf +(gc) 123858 0.00 -1 s +4 sf +(\)\)) 125736 0.00 -1 s +52832.0 124268.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100280 -5.00 32 s +2 sf +(gcontext\036tile) 115165 0.00 -1 s +4 sf +( ) 115865 -6.00 32 s +5 sf +(gc) 118529 0.00 -1 s +4 sf +(\)\)) 120407 0.00 -1 s +52832.0 127429.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100273 -12.00 32 s +2 sf +(gcontext\036stipple) 119394 0.00 -1 s +4 sf +( ) 120087 -13.00 32 s +5 sf +(gc) 122751 0.00 -1 s +4 sf +(\)\)) 124629 0.00 -1 s +52832.0 130590.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100282 -3.00 32 s +2 sf +(gcontext\036ts\036x) 115794 0.00 -1 s +4 sf +( ) 116497 -3.00 32 s +5 sf +(gc) 119161 0.00 -1 s +4 sf +(\)\)) 121039 0.00 -1 s +52832.0 133751.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100282 -3.00 32 s +2 sf +(gcontext\036ts\036y) 115794 0.00 -1 s +4 sf +( ) 116497 -3.00 32 s +5 sf +(gc) 119161 0.00 -1 s +4 sf +(\)\)) 121039 0.00 -1 s +52832.0 136912.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100261 -24.00 32 s +2 sf +(gcontext\036font) 116244 0.00 -1 s +4 sf +( ) 116925 -25.00 32 s +5 sf +(gc) 119589 0.00 -1 s +4 sf +( &optional ) 132396 -24.50 32 s +2 sf +149352.0 h +52832.0 140073.0 m +60960.0 h +93472.0 h +( ) 94876 -4.00 32 s +( metrics\036p) 107015 -5.00 32 s +4 sf +(\)\)) 108893 0.00 -1 s +52832.0 143233.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100236 -49.00 32 s +2 sf +(gcontext\036subwindow\036mode) 132526 0.00 -1 s +4 sf +( ) 133182 -50.00 32 s +5 sf +(gc) 135846 0.00 -1 s +4 sf +(\)\)) 137724 0.00 -1 s +52832.0 146394.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100248 -37.00 32 s +2 sf +(gcontext\036exposures) 123288 0.00 -1 s +4 sf +( ) 123957 -37.00 32 s +5 sf +(gc) 126621 0.00 -1 s +4 sf +(\)\)\)) 129438 0.00 -1 s +52832.0 149555.0 m +( ) 55632 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100269 -16.00 32 s +2 sf +(gcontext\036clip\036x) 118134 0.00 -1 s +4 sf +( ) 118823 -17.00 32 s +5 sf +(gc) 121487 0.00 -1 s +4 sf +(\)\)) 123365 0.00 -1 s +52832.0 152716.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100269 -16.00 32 s +2 sf +(gcontext\036clip\036y) 118134 0.00 -1 s +4 sf +( ) 118823 -17.00 32 s +5 sf +(gc) 121487 0.00 -1 s +4 sf +(\)\)) 123365 0.00 -1 s +52832.0 155877.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100264 -21.00 32 s +2 sf +(gcontext\036clip\036mask) 123146 0.00 -1 s +4 sf +( ) 123832 -20.00 32 s +5 sf +(gc ) 127181 -21.00 32 s +4 sf +52832.0 159038.0 m +60960.0 h +93472.0 h +( &optional ) 107620 -30.00 32 s +2 sf +(ordering) 118123 0.00 -1 s +4 sf +(\)\)) 120001 0.00 -1 s +52832.0 162199.0 m +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100274 -11.00 32 s +2 sf +(gcontext\036dash\036offset) 124564 0.00 -1 s +4 sf +( ) 125258 -12.00 32 s +5 sf +(gc) 127922 0.00 -1 s +4 sf +(\)\)) 129800 0.00 -1 s +52832.0 165360.0 m +( ) 53532 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100261 -24.00 32 s +2 sf +(gcontext\036dashes) 119384 0.00 -1 s +4 sf +( ) 120065 -25.00 32 s +5 sf +(gc) 122729 0.00 -1 s +4 sf +(\)\)) 124607 0.00 -1 s +52832.0 168521.0 m +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100245 -40.00 32 s +2 sf +(gcontext\036arc\036mode) 122809 0.00 -1 s +4 sf +( ) 123474 -41.00 32 s +5 sf +(gc) 126138 0.00 -1 s +4 sf +(\)\)) 128016 0.00 -1 s +52832.0 171681.0 m +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(gcontext\036clip\036ordering) 127195 0.00 -1 s +4 sf +( ) 127854 -47.00 32 s +5 sf +(gc) 130518 0.00 -1 s +4 sf +(\)\)) 132396 0.00 -1 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +20320.0 7677.0 m +(Protocol vs.) 32583 -11.00 32 s +( CLX Functional ) 50258 -11.67 32 s +20320.0 10454.0 m +(Cross\036Reference) 37244 0.00 -1 s +( Listing) 44930 -7.00 32 s +/timsps10b 2 declareFont +2 sf +20591.0 208619.0 m +(A\036192) 27800 0.00 -1 s +/timsps8i 3 declareFont +3 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(ChangeHosts) 67881 0.00 -1 s +93472.0 h +2 sf +(add\036access\036host) 112282 0.00 -1 s +4 sf +52832.0 31044.0 m +(ChangeHosts) 67881 0.00 -1 s +93472.0 h +2 sf +(remove\036access\036host) 116664 0.00 -1 s +4 sf +52832.0 34205.0 m +(ChangeKeyboardControl) 81201 0.00 -1 s +93472.0 h +2 sf +(change\036keyboard\036control) 123882 0.00 -1 s +4 sf +52832.0 37366.0 m +(ChangePointerControl) 78226 0.00 -1 s +93472.0 h +2 sf +(change\036pointer\036control) 121214 0.00 -1 s +4 sf +52832.0 40527.0 m +(ChangeProperty) 71170 0.00 -1 s +93472.0 h +2 sf +(change\036property) 113535 0.00 -1 s +4 sf +52832.0 43688.0 m +(ChangeSaveSet) 70545 0.00 -1 s +93472.0 h +2 sf +(remove\036from\036save\036set) 119636 0.00 -1 s +4 sf +52832.0 46849.0 m +(ChangeSaveSet) 70545 0.00 -1 s +93472.0 h +2 sf +(add\036to\036save\036set) 111651 0.00 -1 s +4 sf +52832.0 50010.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99184 -8.00 32 s +2 sf +(with\036state) 111092 0.00 -1 s +4 sf +(\)) 112031 0.00 -1 s +52832.0 53171.0 m +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100214 -71.00 32 s +2 sf +(window\036background) 125144 0.00 -1 s +4 sf +( ) 125779 -71.00 32 s +/timsps10i 5 declareFont +5 sf +(window) 134560 0.00 -1 s +4 sf +(\)\)) 136438 0.00 -1 s +52832.0 56332.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100236 -49.00 32 s +2 sf +(window\036border ) 119547 -49.00 32 s +5 sf +(window) 128328 0.00 -1 s +4 sf +(\)\)) 130206 0.00 -1 s +52832.0 59492.0 m +( ) 55632 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100256 -29.00 32 s +2 sf +(window\036bit\036gravity) 123453 0.00 -1 s +4 sf +( ) 124130 -29.00 32 s +5 sf +(window) 132911 0.00 -1 s +4 sf +(\)\)) 134789 0.00 -1 s +52832.0 62653.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100250 -35.00 32 s +2 sf +(window\036gravity) 119216 0.00 -1 s +4 sf +( ) 119886 -36.00 32 s +5 sf +(window) 128667 0.00 -1 s +4 sf +(\)\)) 130545 0.00 -1 s +52832.0 65814.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100236 -49.00 32 s +2 sf +(window\036backing\036store) 127041 0.00 -1 s +4 sf +( ) 127698 -49.00 32 s +5 sf +(window) 136479 0.00 -1 s +4 sf +(\)\)) 138357 0.00 -1 s +52832.0 68975.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100229 -56.00 32 s +2 sf +(window\036backing\036planes) 128764 0.00 -1 s +4 sf +( ) 129414 -56.00 32 s +5 sf +(window) 138195 0.00 -1 s +4 sf +(\)\)) 140073 0.00 -1 s +52832.0 72136.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100234 -51.00 32 s +2 sf +(window\036backing\036pixel) 126886 0.00 -1 s +4 sf +( ) 127540 -52.00 32 s +5 sf +(window) 136321 0.00 -1 s +4 sf +(\)\)) 138199 0.00 -1 s +52832.0 75297.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100208 -77.00 32 s +2 sf +(window\036override\036redirect) 131237 0.00 -1 s +4 sf +( ) 131865 -78.00 32 s +5 sf +(window) 140646 0.00 -1 s +4 sf +(\)) 141585 0.00 -1 s +2 sf +52832.0 78458.0 m +60960.0 h +93472.0 h +(\(setf) 98640 0.00 -1 s +( \(window\036save\036under) 123905 -51.00 32 s +( ) 124559 -52.00 32 s +5 sf +(window) 133340 0.00 -1 s +2 sf +(\)\)) 135218 0.00 -1 s +4 sf +52832.0 81619.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(window\036colormap) 122026 0.00 -1 s +4 sf +( ) 122685 -47.00 32 s +5 sf +(window) 131466 0.00 -1 s +4 sf +(\)\)) 133344 0.00 -1 s +52832.0 84780.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100246 -39.00 32 s +2 sf +(window\036cursor) 118429 0.00 -1 s +4 sf +( ) 119095 -40.00 32 s +5 sf +(window) 127876 0.00 -1 s +4 sf +(\)\)) 129754 0.00 -1 s +52832.0 87940.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100249 -36.00 32 s +2 sf +(window\036event\036mask) 124387 0.00 -1 s +4 sf +( ) 125056 -37.00 32 s +5 sf +(window) 133837 0.00 -1 s +4 sf +(\)\)) 135715 0.00 -1 s +52832.0 91101.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100181 -104.00 32 s +2 sf +(window\036do\036not\036propagate\036mask) 138898 0.00 -1 s +52832.0 94262.0 m +60960.0 h +93472.0 h +( ) 95554 -12.00 32 s +4 sf +( ) 96247 -13.00 32 s +5 sf +(window) 105028 0.00 -1 s +4 sf +(\)\)) 106906 0.00 -1 s +52832.0 97423.0 m +(CirculateWindow) 72893 0.00 -1 s +93472.0 h +2 sf +(circulate\036window\036down) 121842 0.00 -1 s +4 sf +52832.0 100584.0 m +(CirculateWindow) 72893 0.00 -1 s +93472.0 h +2 sf +(circulate\036window\036up) 118394 0.00 -1 s +4 sf +52832.0 103745.0 m +(ClearToBackground) 75871 0.00 -1 s +93472.0 h +2 sf +(clear\036area) 105693 0.00 -1 s +4 sf +52832.0 106906.0 m +(CloseFont) 64435 0.00 -1 s +93472.0 h +2 sf +(close\036font) 105068 0.00 -1 s +4 sf +52832.0 110067.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99184 -8.00 32 s +2 sf +(with\036state) 111092 0.00 -1 s +4 sf +(\)) 112031 0.00 -1 s +52832.0 113228.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100247 -38.00 32 s +2 sf +(drawable\036x) 113884 0.00 -1 s +4 sf +( ) 114551 -39.00 32 s +5 sf +(drawable) 125212 0.00 -1 s +4 sf +(\)\)) 127090 0.00 -1 s +52832.0 116388.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100247 -38.00 32 s +2 sf +(drawable\036y) 113884 0.00 -1 s +4 sf +( ) 114551 -39.00 32 s +5 sf +(drawabl) 123959 0.00 -1 s +4 sf +(e\)\)) 127090 0.00 -1 s +52832.0 119549.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100247 -38.00 32 s +2 sf +(drawable\036width) 119371 0.00 -1 s +4 sf +( ) 120038 -39.00 32 s +5 sf +(drawable) 130699 0.00 -1 s +4 sf +(\)\)) 132577 0.00 -1 s +52832.0 122710.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(drawable\036height) 119989 0.00 -1 s +4 sf +( ) 120647 -48.00 32 s +5 sf +(drawable) 131308 0.00 -1 s +4 sf +(\)\)) 133186 0.00 -1 s +52832.0 125871.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100235 -50.00 32 s +2 sf +(drawable\036depth) 119360 0.00 -1 s +4 sf +( ) 120015 -51.00 32 s +5 sf +(drawable) 130676 0.00 -1 s +4 sf +(\)\)) 132554 0.00 -1 s +52832.0 129032.0 m +( ) 55632 -6.00 32 s +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100218 -67.00 32 s +2 sf +(drawable\036border\036width) 128589 0.00 -1 s +4 sf +( ) 129227 -68.00 32 s +5 sf +(drawable) 139888 0.00 -1 s +4 sf +(\)\)) 141766 0.00 -1 s +52832.0 132193.0 m +( ) 54232 -6.00 32 s +60960.0 h +( ) 63060 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100241 -44.00 32 s +2 sf +(window\036priority) 119991 0.00 -1 s +4 sf +( ) 120653 -44.00 32 s +5 sf +(window) 129434 0.00 -1 s +4 sf +( &optional) 141540 -44.00 32 s +52832.0 135354.0 m +60960.0 h +93472.0 h +( ) 95584 -2.00 32 s +2 sf +(sibling) 103583 0.00 -1 s +4 sf +(\)\)) 105461 0.00 -1 s +52832.0 138515.0 m +(ConvertSelection) 72425 0.00 -1 s +93472.0 h +2 sf +(convert\036selection) 113844 0.00 -1 s +4 sf +52832.0 141676.0 m +(CopyArea) 64429 0.00 -1 s +93472.0 h +2 sf +(copy\036area) 105383 0.00 -1 s +4 sf +52832.0 144836.0 m +(CopyColormapAndFree) 80106 0.00 -1 s +93472.0 h +2 sf +(copy\036colormap\036and\036free) 122622 0.00 -1 s +4 sf +52832.0 147997.0 m +(CopyGC) 62866 0.00 -1 s +93472.0 h +2 sf +(copy\036gcontext) 110241 0.00 -1 s +4 sf +52832.0 151158.0 m +(CopyGC) 62866 0.00 -1 s +93472.0 h +2 sf +(copy\036gcontext\036components) 125602 0.00 -1 s +4 sf +52832.0 154319.0 m +(CopyPlane) 65217 0.00 -1 s +93472.0 h +2 sf +(copy\036plane) 106641 0.00 -1 s +4 sf +52832.0 157480.0 m +(CreateColormap) 71482 0.00 -1 s +93472.0 h +2 sf +(create\036colormap) 113215 0.00 -1 s +4 sf +52832.0 160641.0 m +(CreateCursor) 67876 0.00 -1 s +93472.0 h +2 sf +(create\036cursor) 109610 0.00 -1 s +4 sf +52832.0 163802.0 m +(CreateGC) 64115 0.00 -1 s +93472.0 h +2 sf +(create\036gcontext) 111959 0.00 -1 s +4 sf +52832.0 166963.0 m +(CreateGlyphCursor) 74930 0.00 -1 s +93472.0 h +2 sf +(create\036glyph\036cursor) 117293 0.00 -1 s +4 sf +52832.0 170124.0 m +(CreatePixmap) 68819 0.00 -1 s +93472.0 h +2 sf +(create\036pixmap) 110867 0.00 -1 s +4 sf +52832.0 173284.0 m +(CreateWindow) 69914 0.00 -1 s +93472.0 h +2 sf +(create\036window) 111180 0.00 -1 s +4 sf +52832.0 176445.0 m +(DeleteProperty) 69913 0.00 -1 s +93472.0 h +2 sf +(delete\036property) 112120 0.00 -1 s +4 sf +52832.0 179606.0 m +(DestroySubwindows) 76345 0.00 -1 s +93472.0 h +2 sf +(destroy\036subwindows) 118086 0.00 -1 s +4 sf +52832.0 182767.0 m +(DestroyWindow) 71483 0.00 -1 s +93472.0 h +2 sf +(destroy\036window) 112752 0.00 -1 s +4 sf +52832.0 185928.0 m +(FillPoly) 61928 0.00 -1 s +93472.0 h +2 sf +(draw\036lines) 106169 0.00 -1 s +4 sf +52832.0 189089.0 m +(ForceScreenSaver) 73360 0.00 -1 s +93472.0 h +2 sf +(reset\036screen\036saver) 115251 0.00 -1 s +4 sf +52832.0 192250.0 m +(ForceScreenSaver) 73360 0.00 -1 s +93472.0 h +2 sf +(activate\036screen\036saver) 118856 0.00 -1 s +4 sf +52832.0 195411.0 m +(FreeColormap) 69132 0.00 -1 s +( ) 69765 -73.00 32 s +93472.0 h +2 sf +(free\036colormap) 110551 0.00 -1 s +4 sf +52832.0 198572.0 m +(FreeColors) 65371 0.00 -1 s +93472.0 h +2 sf +(free\036colors) 106319 0.00 -1 s +4 sf +52832.0 201732.0 m +(FreeCursor) 65526 0.00 -1 s +93472.0 h +2 sf +(free\036cursor) 106946 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +119075.0 7677.0 m +(Protocol vs.) 131338 -11.00 32 s +( CLX Functional ) 149013 -11.67 32 s +124404.0 10454.0 m +(Cross\036Reference) 141328 0.00 -1 s +( Listing) 149013 -8.00 32 s +/timsps10b 2 declareFont +2 sf +141804.0 208619.0 m +(A\036193) 149013 0.00 -1 s +/timsps8i 3 declareFont +3 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(FreeGC) 61765 0.00 -1 s +( ) 62428 -43.00 32 s +93472.0 h +2 sf +(free\036gcontext) 109295 0.00 -1 s +4 sf +52832.0 31044.0 m +(FreePixmap) 66469 0.00 -1 s +93472.0 h +2 sf +(free\036pixmap) 108203 0.00 -1 s +4 sf +52832.0 34205.0 m +(GetAtomName) 70071 0.00 -1 s +93472.0 h +2 sf +(atom\036name) 107105 0.00 -1 s +4 sf +52832.0 37366.0 m +(GetFontPath) 67098 0.00 -1 s +( ) 67733 -71.00 32 s +93472.0 h +2 sf +(font\036path) 104757 0.00 -1 s +4 sf +52832.0 40527.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99184 -8.00 32 s +2 sf +(with\036state) 111092 0.00 -1 s +4 sf +(\)) 112031 0.00 -1 s +52832.0 43688.0 m +60960.0 h +93472.0 h +2 sf +(drawable\036root) 110712 0.00 -1 s +4 sf +52832.0 46849.0 m +60960.0 h +93472.0 h +2 sf +(drawable\036x) 107109 0.00 -1 s +4 sf +52832.0 50010.0 m +60960.0 h +93472.0 h +2 sf +(drawable\036y) 107109 0.00 -1 s +4 sf +52832.0 53171.0 m +( ) 53532 -6.00 32 s +60960.0 h +93472.0 h +2 sf +(drawable\036width) 112596 0.00 -1 s +4 sf +52832.0 56332.0 m +60960.0 h +93472.0 h +2 sf +(drawable\036height) 113223 0.00 -1 s +4 sf +52832.0 59492.0 m +60960.0 h +93472.0 h +2 sf +(drawable\036depth) 112597 0.00 -1 s +4 sf +52832.0 62653.0 m +60960.0 h +93472.0 h +2 sf +(drawable\036border\036width) 121843 0.00 -1 s +4 sf +52832.0 65814.0 m +(GetImage) 63957 0.00 -1 s +93472.0 h +2 sf +(get\036raw\036image) 110863 0.00 -1 s +4 sf +52832.0 68975.0 m +(GetInputFocus) 69604 0.00 -1 s +93472.0 h +2 sf +(input\036focus) 107111 0.00 -1 s +4 sf +52832.0 72136.0 m +(GetKeyboardControl) 76654 0.00 -1 s +93472.0 h +2 sf +(keyboard\036control) 114477 0.00 -1 s +4 sf +52832.0 75297.0 m +(GetKeyboardMapping) 78222 0.00 -1 s +93472.0 h +2 sf +(keyboard\036mapping) 116520 0.00 -1 s +4 sf +52832.0 78458.0 m +(GetModifierMapping) 77126 0.00 -1 s +93472.0 h +2 sf +(modifier\036mapping) 115417 0.00 -1 s +4 sf +52832.0 81619.0 m +(GetMotionEvents) 72897 0.00 -1 s +93472.0 h +2 sf +(motion\036events) 110398 0.00 -1 s +4 sf +52832.0 84780.0 m +(GetPointerControl) 73679 0.00 -1 s +93472.0 h +2 sf +(pointer\036control) 111809 0.00 -1 s +4 sf +52832.0 87940.0 m +(GetPointerMapping) 75247 0.00 -1 s +93472.0 h +2 sf +(pointer\036mapping) 113852 0.00 -1 s +4 sf +52832.0 91101.0 m +(GetProperty) 66623 0.00 -1 s +93472.0 h +2 sf +(get\036property) 108672 0.00 -1 s +4 sf +52832.0 94262.0 m +(GetScreenSaver) 71009 0.00 -1 s +93472.0 h +2 sf +(screen\036saver) 108516 0.00 -1 s +4 sf +52832.0 97423.0 m +(GetSelectionOwner) 75085 0.00 -1 s +93472.0 h +2 sf +(selection\036owner) 112278 0.00 -1 s +4 sf +52832.0 100584.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99184 -8.00 32 s +2 sf +(with\036state) 111092 0.00 -1 s +4 sf +(\)) 112031 0.00 -1 s +52832.0 103745.0 m +60960.0 h +93472.0 h +2 sf +(window\036visual) 110875 0.00 -1 s +4 sf +52832.0 106906.0 m +( ) 67532 -6.00 32 s +( ) 69630 -6.67 32 s +93472.0 h +2 sf +(window\036class) 109462 0.00 -1 s +4 sf +52832.0 110067.0 m +( ) 68930 -6.09 32 s +93472.0 h +2 sf +(window\036bit\036gravity) 116669 0.00 -1 s +4 sf +52832.0 113228.0 m +( ) 68930 -6.09 32 s +93472.0 h +2 sf +(window\036gravity) 112438 0.00 -1 s +4 sf +52832.0 116388.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(window\036backing\036store) 120277 0.00 -1 s +4 sf +52832.0 119549.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(window\036backing\036planes) 122007 0.00 -1 s +4 sf +52832.0 122710.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(window\036backing\036pixel) 120124 0.00 -1 s +4 sf +52832.0 125871.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(window\036save\036under) 117143 0.00 -1 s +52832.0 129032.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036override\036redirect) 124501 0.00 -1 s +52832.0 132193.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036event\036mask) 117610 0.00 -1 s +52832.0 135354.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036do\036not\036propagate\036mask) 132189 0.00 -1 s +52832.0 138515.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036colormap) 115260 0.00 -1 s +52832.0 141676.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036colormap\036installed\036p) 128898 0.00 -1 s +52832.0 144836.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036all\036event\036masks) 122626 0.00 -1 s +52832.0 147997.0 m +( ) 69630 -6.08 32 s +93472.0 h +(window\036map\036state) 115727 0.00 -1 s +4 sf +52832.0 151158.0 m +(GrabButton) 66155 0.00 -1 s +93472.0 h +2 sf +(grab\036button) 108051 0.00 -1 s +4 sf +52832.0 154319.0 m +(GrabKey) 63173 0.00 -1 s +93472.0 h +2 sf +(grab\036key) 104288 0.00 -1 s +4 sf +52832.0 157480.0 m +(GrabKeyboard) 69598 0.00 -1 s +93472.0 h +2 sf +(grab\036keyboard) 111501 0.00 -1 s +4 sf +52832.0 160641.0 m +(GrabPointer) 66623 0.00 -1 s +93472.0 h +2 sf +(grab\036pointer) 108833 0.00 -1 s +4 sf +52832.0 163802.0 m +(GrabServer) 65836 0.00 -1 s +93472.0 h +2 sf +(grab\036server) 107576 0.00 -1 s +4 sf +52832.0 166963.0 m +(ImageText16) 67877 0.00 -1 s +93472.0 h +2 sf +(draw\036image\036glyphs) 116671 0.00 -1 s +4 sf +52832.0 170124.0 m +(ImageText16) 67877 0.00 -1 s +93472.0 h +2 sf +(draw\036image\036glyph) 115573 0.00 -1 s +4 sf +52832.0 173284.0 m +(ImageText8) 66466 0.00 -1 s +93472.0 h +2 sf +(draw\036image\036glyphs) 116671 0.00 -1 s +4 sf +52832.0 176445.0 m +(InstallColormap) 71171 0.00 -1 s +93472.0 h +2 sf +(install\036colormap) 113222 0.00 -1 s +4 sf +52832.0 179606.0 m +(InternAtom) 65996 0.00 -1 s +93472.0 h +2 sf +(find\036atom) 105383 0.00 -1 s +4 sf +52832.0 182767.0 m +(InternAtom) 65996 0.00 -1 s +93472.0 h +2 sf +(intern\036atom) 107889 0.00 -1 s +4 sf +52832.0 185928.0 m +(KillClient) 64119 0.00 -1 s +93472.0 h +2 sf +(kill\036temporary\036clients) 119801 0.00 -1 s +4 sf +52832.0 189089.0 m +(KillClient) 64119 0.00 -1 s +93472.0 h +2 sf +(kill\036client) 104914 0.00 -1 s +4 sf +52832.0 192250.0 m +(ListExtensions) 69607 0.00 -1 s +93472.0 h +2 sf +(list\036extensions) 110401 0.00 -1 s +4 sf +52832.0 195411.0 m +(ListFonts) 63495 0.00 -1 s +93472.0 h +2 sf +(list\036font\036names) 111494 0.00 -1 s +4 sf +52832.0 198572.0 m +(ListFontsWithInfo) 73838 0.00 -1 s +93472.0 h +2 sf +(list\036fonts) 103972 0.00 -1 s +4 sf +52832.0 201732.0 m +(ListHosts) 63650 0.00 -1 s +93472.0 h +2 sf +(access\036control) 110397 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +20320.0 7677.0 m +(Protocol vs.) 32583 -11.00 32 s +( CLX Functional ) 50258 -11.67 32 s +20320.0 10454.0 m +(Cross\036Reference) 37244 0.00 -1 s +( Listing) 44930 -7.00 32 s +/timsps10b 2 declareFont +2 sf +20591.0 208619.0 m +(A\036194) 27800 0.00 -1 s +/timsps8i 3 declareFont +3 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(ListHosts) 63650 0.00 -1 s +93472.0 h +2 sf +(access\036hosts) 107892 0.00 -1 s +4 sf +52832.0 31044.0 m +(ListInstalledColormaps) 79323 0.00 -1 s +93472.0 h +2 sf +(installed\036colormaps) 117142 0.00 -1 s +4 sf +52832.0 34205.0 m +(ListProperties) 68663 0.00 -1 s +93472.0 h +2 sf +(list\036properties) 110398 0.00 -1 s +4 sf +52832.0 37366.0 m +(LookupColor) 68038 0.00 -1 s +( ) 68659 -85.00 32 s +93472.0 h +2 sf +(lookup\036color) 108836 0.00 -1 s +4 sf +52832.0 40527.0 m +(MapSubwindows) 72585 0.00 -1 s +93472.0 h +2 sf +(map\036subwindows) 114482 0.00 -1 s +4 sf +52832.0 43688.0 m +(MapWindow) 67723 0.00 -1 s +93472.0 h +2 sf +(map\036window) 109148 0.00 -1 s +4 sf +52832.0 46849.0 m +(OpenFont) 64119 0.00 -1 s +( ) 64753 -72.00 32 s +93472.0 h +2 sf +(open\036font) 105071 0.00 -1 s +4 sf +52832.0 50010.0 m +(PolyArc) 62236 0.00 -1 s +93472.0 h +2 sf +(draw\036arc) 104598 0.00 -1 s +4 sf +52832.0 53171.0 m +(PolyArc) 62236 0.00 -1 s +93472.0 h +2 sf +(draw\036arcs) 105696 0.00 -1 s +4 sf +52832.0 56332.0 m +(PolyFillArc) 66157 0.00 -1 s +( ) 66830 -33.00 32 s +93472.0 h +2 sf +(draw\036arc) 104598 0.00 -1 s +4 sf +52832.0 59492.0 m +(PolyFillArc) 66157 0.00 -1 s +93472.0 h +2 sf +(draw\036arcs) 105696 0.00 -1 s +4 sf +52832.0 62653.0 m +(PolyFillRectangle) 73212 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangle) 111807 0.00 -1 s +4 sf +52832.0 65814.0 m +(PolyFillRectangle) 73212 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangles) 112905 0.00 -1 s +4 sf +52832.0 68975.0 m +(PolyLine) 63179 0.00 -1 s +93472.0 h +2 sf +(draw\036line) 105071 0.00 -1 s +4 sf +52832.0 72136.0 m +(PolyLine) 63179 0.00 -1 s +93472.0 h +2 sf +(draw\036lines) 106169 0.00 -1 s +4 sf +52832.0 75297.0 m +(PolyPoint) 63966 0.00 -1 s +( ) 64618 -54.00 32 s +93472.0 h +2 sf +(draw\036point) 106953 0.00 -1 s +4 sf +52832.0 78458.0 m +(PolyPoint ) 64618 -54.00 32 s +93472.0 h +2 sf +(draw\036points) 108051 0.00 -1 s +4 sf +52832.0 81619.0 m +(PolyRectangle) 69291 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangle) 111807 0.00 -1 s +4 sf +52832.0 84780.0 m +(PolyRectangle) 69291 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangles) 112905 0.00 -1 s +4 sf +52832.0 87940.0 m +(PolySegment) 67883 0.00 -1 s +93472.0 h +2 sf +(draw\036segments) 111652 0.00 -1 s +4 sf +52832.0 91101.0 m +(PolyText16) 66001 0.00 -1 s +93472.0 h +2 sf +(draw\036glyph) 107425 0.00 -1 s +4 sf +52832.0 94262.0 m +(PolyText16) 66001 0.00 -1 s +93472.0 h +2 sf +(draw\036glyphs) 108523 0.00 -1 s +4 sf +52832.0 97423.0 m +(PolyText8) 64590 0.00 -1 s +93472.0 h +2 sf +(draw\036glyphs) 108523 0.00 -1 s +4 sf +52832.0 100584.0 m +(PutImage) 63647 0.00 -1 s +93472.0 h +2 sf +(put\036raw\036image) 111337 0.00 -1 s +4 sf +52832.0 103745.0 m +(QueryBestSize) 69759 0.00 -1 s +93472.0 h +2 sf +(query\036best\036cursor) 115101 0.00 -1 s +4 sf +52832.0 106906.0 m +(QueryBestSize) 69759 0.00 -1 s +93472.0 h +2 sf +(query\036best\036stipple) 115260 0.00 -1 s +4 sf +52832.0 110067.0 m +(QueryBestSize) 69759 0.00 -1 s +93472.0 h +2 sf +(query\036best\036tile) 111024 0.00 -1 s +4 sf +52832.0 113228.0 m +(QueryColors) 67408 0.00 -1 s +93472.0 h +2 sf +(query\036colors) 108676 0.00 -1 s +4 sf +52832.0 116388.0 m +(QueryExtension) 71170 0.00 -1 s +93472.0 h +2 sf +(query\036extension) 112753 0.00 -1 s +4 sf +52832.0 119549.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036name) 105852 0.00 -1 s +4 sf +52832.0 122710.0 m +( ) 67532 -6.00 32 s +( ) 69630 -6.67 32 s +93472.0 h +2 sf +(font\036name) 105852 0.00 -1 s +4 sf +52832.0 125871.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(font\036direction) 110084 0.00 -1 s +4 sf +52832.0 129032.0 m +( ) 68930 -6.09 32 s +93472.0 h +2 sf +(font\036min\036char) 110397 0.00 -1 s +4 sf +52832.0 132193.0 m +( ) 68930 -6.09 32 s +93472.0 h +2 sf +(font\036max\036char) 110866 0.00 -1 s +4 sf +52832.0 135354.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(font\036min\036byte1) 111494 0.00 -1 s +4 sf +52832.0 138515.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(font\036max\036byte1) 111963 0.00 -1 s +4 sf +52832.0 141676.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(font\036min\036byte2) 111494 0.00 -1 s +4 sf +52832.0 144836.0 m +( ) 69630 -6.08 32 s +93472.0 h +2 sf +(font\036max\036byte2) 111963 0.00 -1 s +52832.0 147997.0 m +( ) 68930 -6.09 32 s +93472.0 h +(font\036all\036chars\036exist\036p) 118703 0.00 -1 s +52832.0 151158.0 m +( ) 68930 -6.09 32 s +93472.0 h +(font\036default\036char) 114158 0.00 -1 s +52832.0 154319.0 m +( ) 69630 -6.08 32 s +93472.0 h +(font\036ascent) 106792 0.00 -1 s +52832.0 157480.0 m +( ) 69630 -6.08 32 s +93472.0 h +(font\036descent) 108203 0.00 -1 s +52832.0 160641.0 m +( ) 69630 -6.08 32 s +93472.0 h +(font\036properties) 111651 0.00 -1 s +52832.0 163802.0 m +( ) 69630 -6.08 32 s +93472.0 h +(font\036property) 109927 0.00 -1 s +4 sf +52832.0 166963.0 m +( ) 53532 -6.00 32 s +60960.0 h +93472.0 h +2 sf +(char\036left\036bearing) 114001 0.00 -1 s +52832.0 170124.0 m +60960.0 h +93472.0 h +(char\036right\036bearing) 116042 0.00 -1 s +52832.0 173284.0 m +60960.0 h +93472.0 h +(char\036width) 106795 0.00 -1 s +52832.0 176445.0 m +60960.0 h +93472.0 h +(char\036ascent) 107420 0.00 -1 s +52832.0 179606.0 m +60960.0 h +93472.0 h +(char\036descent) 108831 0.00 -1 s +52832.0 182767.0 m +60960.0 h +93472.0 h +(char\036attributes) 111651 0.00 -1 s +52832.0 185928.0 m +60960.0 h +93472.0 h +(min\036char\036left\036bearing) 119643 0.00 -1 s +52832.0 189089.0 m +( ) 69630 -6.08 32 s +93472.0 h +(min\036char\036right\036bearing) 121684 0.00 -1 s +52832.0 192250.0 m +( ) 69630 -6.08 32 s +93472.0 h +(min\036char\036width) 112437 0.00 -1 s +52832.0 195411.0 m +( ) 69630 -6.08 32 s +93472.0 h +(min\036char\036ascent) 113062 0.00 -1 s +52832.0 198572.0 m +( ) 55632 -6.00 32 s +60960.0 h +93472.0 h +(min\036char\036descent) 114473 0.00 -1 s +52832.0 201732.0 m +( ) 69630 -6.08 32 s +93472.0 h +(min\036char\036attributes) 117293 0.00 -1 s +( ) 117946 -53.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +119075.0 7677.0 m +(Protocol vs.) 131338 -11.00 32 s +( CLX Functional ) 149013 -11.67 32 s +124404.0 10454.0 m +(Cross\036Reference) 141328 0.00 -1 s +( Listing) 149013 -8.00 32 s +/timsps10b 2 declareFont +2 sf +141804.0 208619.0 m +(A\036195) 149013 0.00 -1 s +/timsps8i 3 declareFont +3 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +( ) 53532 -6.00 32 s +60960.0 h +93472.0 h +2 sf +(max\036char\036left\036bearing) 120112 0.00 -1 s +52832.0 31044.0 m +( ) 67532 -6.00 32 s +( ) 69630 -6.67 32 s +93472.0 h +(max\036char\036right\036bearing) 122153 0.00 -1 s +52832.0 34205.0 m +( ) 69630 -6.08 32 s +93472.0 h +(max\036char\036width) 112906 0.00 -1 s +52832.0 37366.0 m +( ) 69630 -6.08 32 s +93472.0 h +(max\036char\036ascent) 113531 0.00 -1 s +52832.0 40527.0 m +( ) 69630 -6.08 32 s +93472.0 h +(max\036char\036descent) 114942 0.00 -1 s +52832.0 43688.0 m +( ) 69630 -6.08 32 s +93472.0 h +(max\036char\036attributes) 117762 0.00 -1 s +4 sf +52832.0 46849.0 m +(QueryKeymap) 69443 0.00 -1 s +93472.0 h +2 sf +(query\036keymap) 111029 0.00 -1 s +4 sf +52832.0 50010.0 m +(QueryPointer) 68034 0.00 -1 s +93472.0 h +2 sf +(global\036pointer\036position) 121063 0.00 -1 s +4 sf +52832.0 53171.0 m +(QueryPointer) 68034 0.00 -1 s +93472.0 h +2 sf +(pointer\036position) 112754 0.00 -1 s +4 sf +52832.0 56332.0 m +(QueryPointer) 68034 0.00 -1 s +93472.0 h +2 sf +(query\036pointer) 110244 0.00 -1 s +4 sf +52832.0 59492.0 m +(QueryTextExtents) 73520 0.00 -1 s +93472.0 h +2 sf +(text\036extents) 107415 0.00 -1 s +4 sf +52832.0 62653.0 m +(QueryTextExtents) 73520 0.00 -1 s +93472.0 h +2 sf +(text\036width) 105851 0.00 -1 s +4 sf +52832.0 65814.0 m +(QueryTree) 65052 0.00 -1 s +93472.0 h +2 sf +(query\036tree) 106164 0.00 -1 s +4 sf +52832.0 68975.0 m +(RecolorCursor) 69445 0.00 -1 s +93472.0 h +2 sf +(recolor\036cursor) 110866 0.00 -1 s +4 sf +52832.0 72136.0 m +(ReparentWindow) 72736 0.00 -1 s +93472.0 h +2 sf +(reparent\036window) 114318 0.00 -1 s +4 sf +52832.0 75297.0 m +(RotateProperties) 71640 0.00 -1 s +93472.0 h +2 sf +(rotate\036properties) 113999 0.00 -1 s +4 sf +52832.0 78458.0 m +(SendEvent) 65059 0.00 -1 s +93472.0 h +2 sf +(send\036event) 106325 0.00 -1 s +4 sf +52832.0 81619.0 m +(SetClipRectangles) 73681 0.00 -1 s +93472.0 h +2 sf +(force\036gcontext\036changes) 121209 0.00 -1 s +4 sf +52832.0 84780.0 m +60960.0 h +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99131 -61.00 32 s +2 sf +(with\036gcontext) 115585 0.00 -1 s +4 sf +(\)) 116524 0.00 -1 s +52832.0 87940.0 m +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100269 -16.00 32 s +2 sf +(gcontext\036clip\036x) 118134 0.00 -1 s +4 sf +( ) 118823 -17.00 32 s +/timsps10i 5 declareFont +5 sf +(gc) 121487 0.00 -1 s +4 sf +(\)\)) 123365 0.00 -1 s +52832.0 91101.0 m +60960.0 h +( ) 61660 -6.00 32 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100269 -16.00 32 s +2 sf +(gcontext\036clip\036y) 118134 0.00 -1 s +4 sf +( ) 118823 -17.00 32 s +5 sf +(gc) 121487 0.00 -1 s +4 sf +(\)\)) 123365 0.00 -1 s +52832.0 94262.0 m +( ) 53532 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100250 -35.00 32 s +2 sf +(gcontext\036clip\036mask) 123132 0.00 -1 s +4 sf +( ) 123803 -35.00 32 s +5 sf +(gc) 126467 0.00 -1 s +4 sf +( &optional) 138582 -35.00 32 s +52832.0 97423.0 m +60960.0 h +93472.0 h +( ) 95518 -24.00 32 s +2 sf +(ordering) 106021 0.00 -1 s +4 sf +(\)\)) 107899 0.00 -1 s +52832.0 100584.0 m +( ) 54232 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(gcontext\036clip\036ordering) 127195 0.00 -1 s +4 sf +( ) 127854 -47.00 32 s +5 sf +(gc) 130518 0.00 -1 s +4 sf +(\)\)) 132396 0.00 -1 s +52832.0 103745.0 m +(SetDashes) 64588 0.00 -1 s +93472.0 h +2 sf +(force\036gcontext\036changes) 121209 0.00 -1 s +4 sf +52832.0 106906.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\(See) 98486 0.00 -1 s +( ) 99131 -61.00 32 s +2 sf +(with\036gcontext) 115585 0.00 -1 s +4 sf +(\)) 116524 0.00 -1 s +52832.0 110067.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100274 -11.00 32 s +2 sf +(gcontext\036dash\036offset) 124564 0.00 -1 s +4 sf +( ) 125258 -12.00 32 s +5 sf +(gc) 127922 0.00 -1 s +4 sf +(\)\)) 129800 0.00 -1 s +52832.0 113228.0 m +( ) 56332 -6.00 32 s +60960.0 h +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100267 -18.00 32 s +2 sf +(gcontext\036dashes) 119390 0.00 -1 s +4 sf +( ) 120078 -18.00 32 s +5 sf +(gc) 122742 0.00 -1 s +4 sf +(\)\)) 124620 0.00 -1 s +( ) 125307 -19.00 32 s +52832.0 116388.0 m +(SetFontPath) 66630 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +( ) 99348 2.00 32 s +4 sf +(\() 100287 0.00 -1 s +2 sf +(font\036path) 111572 0.00 -1 s +4 sf +( ) 112279 1.00 32 s +5 sf +(font) 116669 0.00 -1 s +4 sf +(\)) 117608 0.00 -1 s +52832.0 119549.0 m +(SetInputFocus) 69136 0.00 -1 s +93472.0 h +2 sf +(set\036input\036focus) 111340 0.00 -1 s +4 sf +52832.0 122710.0 m +(SetKeyboardMapping) 77754 0.00 -1 s +93472.0 h +2 sf +(change\036keyboard\036mapping) 125925 0.00 -1 s +4 sf +52832.0 125871.0 m +(SetModifierMapping) 76658 0.00 -1 s +93472.0 h +2 sf +(set\036modifier\036mapping) 119646 0.00 -1 s +4 sf +52832.0 129032.0 m +(SetPointerMapping) 74779 0.00 -1 s +93472.0 h +2 sf +(set\036pointer\036mapping) 118081 0.00 -1 s +4 sf +52832.0 132193.0 m +(SetScreenSaver) 70541 0.00 -1 s +93472.0 h +2 sf +(set\036screen\036saver) 112745 0.00 -1 s +4 sf +52832.0 135354.0 m +(SetSelectionOwner) 74617 0.00 -1 s +( ) 75229 -94.00 32 s +93472.0 h +2 sf +(set\036selection\036owner) 116507 0.00 -1 s +4 sf +52832.0 138515.0 m +(StoreColors) 66313 0.00 -1 s +93472.0 h +2 sf +(store\036color) 106477 0.00 -1 s +4 sf +52832.0 141676.0 m +(StoreColors) 66313 0.00 -1 s +93472.0 h +2 sf +(store\036colors) 107575 0.00 -1 s +4 sf +52832.0 144836.0 m +(StoreNamedColor) 73364 0.00 -1 s +93472.0 h +2 sf +(store\036color) 106477 0.00 -1 s +4 sf +52832.0 147997.0 m +(StoreNamedColor) 73364 0.00 -1 s +93472.0 h +2 sf +(store\036colors) 107575 0.00 -1 s +4 sf +52832.0 151158.0 m +(TranslateCoords) 71483 0.00 -1 s +( ) 72136 -53.00 32 s +93472.0 h +2 sf +(translate\036coordinates) 119019 0.00 -1 s +4 sf +52832.0 154319.0 m +(UngrabButton) 68977 0.00 -1 s +93472.0 h +2 sf +(ungrab\036button) 111189 0.00 -1 s +4 sf +52832.0 157480.0 m +(UngrabKey) 65995 0.00 -1 s +93472.0 h +2 sf +(ungrab\036key) 107426 0.00 -1 s +4 sf +52832.0 160641.0 m +(UngrabKeyboard) 72420 0.00 -1 s +93472.0 h +2 sf +(ungrab\036keyboard) 114639 0.00 -1 s +4 sf +52832.0 163802.0 m +(UngrabPointer) 69445 0.00 -1 s +93472.0 h +2 sf +(ungrab\036pointer) 111971 0.00 -1 s +4 sf +52832.0 166963.0 m +(UngrabServer) 68658 0.00 -1 s +93472.0 h +2 sf +(ungrab\036server) 110714 0.00 -1 s +4 sf +52832.0 170124.0 m +(UninstallColormap) 74464 0.00 -1 s +93472.0 h +2 sf +(uninstall\036colormap) 116360 0.00 -1 s +4 sf +52832.0 173284.0 m +(UnmapSubwindows) 75719 0.00 -1 s +93472.0 h +2 sf +(unmap\036subwindows) 117620 0.00 -1 s +4 sf +52832.0 176445.0 m +(UnmapWindow) 70857 0.00 -1 s +93472.0 h +2 sf +(unmap\036window) 112286 0.00 -1 s +( ) 112911 -81.00 32 s +4 sf +52832.0 179606.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer) 109459 0.00 -1 s +4 sf +52832.0 182767.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer\036if\036inside) 120117 0.00 -1 s +4 sf +52832.0 185928.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer\036relative) 119486 0.00 -1 s +4 sf +52832.0 189089.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer\036relative\036if\036inside) 130144 0.00 -1 s +4 sf +52832.0 192250.0 m +(ListHosts) 63650 0.00 -1 s +93472.0 h +2 sf +(access\036control) 110397 0.00 -1 s +4 sf +52832.0 195411.0 m +(ListHosts) 63650 0.00 -1 s +93472.0 h +2 sf +(access\036hosts) 107892 0.00 -1 s +4 sf +52832.0 198572.0 m +(ForceScreenSaver) 73360 0.00 -1 s +93472.0 h +2 sf +(activate\036screen\036saver) 118856 0.00 -1 s +4 sf +52832.0 201732.0 m +(ChangeHosts) 67881 0.00 -1 s +93472.0 h +2 sf +(add\036access\036host) 112282 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +20320.0 7677.0 m +(Protocol vs.) 32583 -11.00 32 s +( CLX Functional ) 50258 -11.67 32 s +20320.0 10454.0 m +(Cross\036Reference) 37244 0.00 -1 s +( Listing) 44930 -7.00 32 s +/timsps10b 2 declareFont +2 sf +20591.0 208619.0 m +(A\036196) 27800 0.00 -1 s +/timsps8i 3 declareFont +3 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(ChangeSaveSet) 70545 0.00 -1 s +( ) 71120 -131.00 32 s +93472.0 h +2 sf +(add\036to\036save\036set) 111651 0.00 -1 s +4 sf +52832.0 31044.0 m +(AllocColor) 65528 0.00 -1 s +93472.0 h +2 sf +(alloc\036color) 106166 0.00 -1 s +4 sf +52832.0 34205.0 m +(AllocNamedColor) 73677 0.00 -1 s +93472.0 h +2 sf +(alloc\036color) 106166 0.00 -1 s +4 sf +52832.0 37366.0 m +(AllocColorCells) 71329 0.00 -1 s +93472.0 h +2 sf +(alloc\036color\036cells) 112277 0.00 -1 s +4 sf +52832.0 40527.0 m +(AllocColorPlanes) 72896 0.00 -1 s +93472.0 h +2 sf +(alloc\036color\036planes) 114789 0.00 -1 s +4 sf +52832.0 43688.0 m +(AllowEvents) 67566 0.00 -1 s +93472.0 h +2 sf +(allow\036events) 108361 0.00 -1 s +4 sf +52832.0 46849.0 m +(GetAtomName) 70071 0.00 -1 s +93472.0 h +2 sf +(atom\036name) 107105 0.00 -1 s +4 sf +52832.0 50010.0 m +(Bell) 57535 0.00 -1 s +( ) 58228 -13.00 32 s +60960.0 h +93472.0 h +2 sf +(bell) 97862 0.00 -1 s +4 sf +52832.0 53171.0 m +(ChangeActivePointerGrab) 82766 0.00 -1 s +93472.0 h +2 sf +(change\036active\036pointer\036grab) 126228 0.00 -1 s +4 sf +52832.0 56332.0 m +(ChangeKeyboardControl) 81201 0.00 -1 s +93472.0 h +2 sf +(change\036keyboard\036control) 123882 0.00 -1 s +4 sf +52832.0 59492.0 m +(SetKeyboardMapping) 77754 0.00 -1 s +93472.0 h +2 sf +(change\036keyboard\036mapping) 125925 0.00 -1 s +4 sf +52832.0 62653.0 m +(ChangePointerControl) 78226 0.00 -1 s +93472.0 h +2 sf +(change\036pointer\036control) 121214 0.00 -1 s +4 sf +52832.0 65814.0 m +(ChangeProperty) 71170 0.00 -1 s +93472.0 h +2 sf +(change\036property) 113535 0.00 -1 s +4 sf +52832.0 68975.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(char\036ascent) 107420 0.00 -1 s +4 sf +52832.0 72136.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(char\036attributes) 111651 0.00 -1 s +4 sf +52832.0 75297.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(char\036descent) 108831 0.00 -1 s +4 sf +52832.0 78458.0 m +(QueryFont) 65058 0.00 -1 s +( ) 65701 -63.00 32 s +93472.0 h +2 sf +(char\036left\036bearing) 114001 0.00 -1 s +4 sf +52832.0 81619.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(char\036right\036bearing) 116042 0.00 -1 s +4 sf +52832.0 84780.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(char\036width) 106795 0.00 -1 s +4 sf +52832.0 87940.0 m +(CirculateWindow) 72893 0.00 -1 s +93472.0 h +2 sf +(circulate\036window\036down) 121842 0.00 -1 s +4 sf +52832.0 91101.0 m +(CirculateWindow) 72893 0.00 -1 s +93472.0 h +2 sf +(circulate\036window\036up) 118394 0.00 -1 s +4 sf +52832.0 94262.0 m +(ClearToBackground) 75871 0.00 -1 s +93472.0 h +2 sf +(clear\036area) 105693 0.00 -1 s +4 sf +52832.0 97423.0 m +(CloseFont) 64435 0.00 -1 s +93472.0 h +2 sf +(close\036font) 105068 0.00 -1 s +4 sf +52832.0 100584.0 m +(ConvertSelection) 72425 0.00 -1 s +93472.0 h +2 sf +(convert\036selection) 113844 0.00 -1 s +4 sf +52832.0 103745.0 m +(CopyArea) 64429 0.00 -1 s +93472.0 h +2 sf +(copy\036area) 105383 0.00 -1 s +4 sf +52832.0 106906.0 m +(CopyColormapAndFree) 80106 0.00 -1 s +93472.0 h +2 sf +(copy\036colormap\036and\036free) 122622 0.00 -1 s +4 sf +52832.0 110067.0 m +(CopyGC) 62866 0.00 -1 s +93472.0 h +2 sf +(copy\036gcontext) 110241 0.00 -1 s +4 sf +52832.0 113228.0 m +(CopyGC) 62866 0.00 -1 s +93472.0 h +2 sf +(copy\036gcontext\036components) 125602 0.00 -1 s +4 sf +52832.0 116388.0 m +(CopyPlane) 65217 0.00 -1 s +93472.0 h +2 sf +(copy\036plane) 106641 0.00 -1 s +4 sf +52832.0 119549.0 m +(CreateColormap) 71482 0.00 -1 s +93472.0 h +2 sf +(create\036colormap) 113215 0.00 -1 s +4 sf +52832.0 122710.0 m +(CreateCursor) 67876 0.00 -1 s +93472.0 h +2 sf +(create\036cursor) 109610 0.00 -1 s +4 sf +52832.0 125871.0 m +(CreateGC) 64115 0.00 -1 s +93472.0 h +2 sf +(create\036gcontext) 111959 0.00 -1 s +4 sf +52832.0 129032.0 m +(CreateGlyphCursor) 74930 0.00 -1 s +93472.0 h +2 sf +(create\036glyph\036cursor) 117293 0.00 -1 s +4 sf +52832.0 132193.0 m +(CreatePixmap) 68819 0.00 -1 s +93472.0 h +2 sf +(create\036pixmap) 110867 0.00 -1 s +4 sf +52832.0 135354.0 m +(CreateWindow) 69914 0.00 -1 s +93472.0 h +2 sf +(create\036window) 111180 0.00 -1 s +4 sf +52832.0 138515.0 m +(DeleteProperty) 69913 0.00 -1 s +93472.0 h +2 sf +(delete\036property) 112120 0.00 -1 s +4 sf +52832.0 141676.0 m +(DestroySubwindows) 76345 0.00 -1 s +93472.0 h +2 sf +(destroy\036subwindows) 118086 0.00 -1 s +4 sf +52832.0 144836.0 m +(DestroyWindow) 71483 0.00 -1 s +93472.0 h +2 sf +(destroy\036window) 112752 0.00 -1 s +4 sf +52832.0 147997.0 m +(PolyArc) 62236 0.00 -1 s +93472.0 h +2 sf +(draw\036arc) 104598 0.00 -1 s +4 sf +52832.0 151158.0 m +(PolyArc) 62236 0.00 -1 s +93472.0 h +2 sf +(draw\036arcs) 105696 0.00 -1 s +4 sf +52832.0 154319.0 m +(PolyText16) 66001 0.00 -1 s +( ) 66627 -80.00 32 s +93472.0 h +2 sf +(draw\036glyph) 107425 0.00 -1 s +4 sf +52832.0 157480.0 m +(PolyText16) 66001 0.00 -1 s +93472.0 h +2 sf +(draw\036glyphs) 108523 0.00 -1 s +4 sf +52832.0 160641.0 m +(PolyText8) 64590 0.00 -1 s +93472.0 h +2 sf +(draw\036glyphs) 108523 0.00 -1 s +4 sf +52832.0 163802.0 m +(ImageText16) 67877 0.00 -1 s +93472.0 h +2 sf +(draw\036image\036glyph) 115573 0.00 -1 s +4 sf +52832.0 166963.0 m +(ImageText16) 67877 0.00 -1 s +93472.0 h +2 sf +(draw\036image\036glyphs) 116671 0.00 -1 s +4 sf +52832.0 170124.0 m +(ImageText8) 66466 0.00 -1 s +93472.0 h +2 sf +(draw\036image\036glyphs) 116671 0.00 -1 s +4 sf +52832.0 173284.0 m +(PolyLine) 63179 0.00 -1 s +93472.0 h +2 sf +(draw\036line) 105071 0.00 -1 s +4 sf +( ) 105732 -45.00 32 s +52832.0 176445.0 m +(PolyLine) 63179 0.00 -1 s +93472.0 h +2 sf +(draw\036lines) 106169 0.00 -1 s +4 sf +52832.0 179606.0 m +(PolyPoint) 63966 0.00 -1 s +93472.0 h +2 sf +(draw\036point) 106953 0.00 -1 s +4 sf +52832.0 182767.0 m +(PolyPoint) 63966 0.00 -1 s +93472.0 h +2 sf +(draw\036points) 108051 0.00 -1 s +4 sf +52832.0 185928.0 m +(PolyFillRectangle) 73212 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangle) 111807 0.00 -1 s +4 sf +52832.0 189089.0 m +(PolyRectangle) 69291 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangle) 111807 0.00 -1 s +4 sf +52832.0 192250.0 m +(PolyFillRectangle) 73212 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangles) 112905 0.00 -1 s +4 sf +52832.0 195411.0 m +(PolyRectangle) 69291 0.00 -1 s +93472.0 h +2 sf +(draw\036rectangles) 112905 0.00 -1 s +4 sf +52832.0 198572.0 m +(PolySegment) 67883 0.00 -1 s +93472.0 h +2 sf +(draw\036segments) 111652 0.00 -1 s +4 sf +52832.0 201732.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036border\036width) 121843 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +119075.0 7677.0 m +(Protocol vs.) 131338 -11.00 32 s +( CLX Functional ) 149013 -11.67 32 s +124404.0 10454.0 m +(Cross\036Reference) 141328 0.00 -1 s +( Listing) 149013 -8.00 32 s +/timsps10b 2 declareFont +2 sf +141804.0 208619.0 m +(A\036197) 149013 0.00 -1 s +/timsps8i 3 declareFont +3 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036depth) 112597 0.00 -1 s +4 sf +52832.0 31044.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036height) 113223 0.00 -1 s +4 sf +52832.0 34205.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036root) 110712 0.00 -1 s +4 sf +52832.0 37366.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036width) 112596 0.00 -1 s +4 sf +52832.0 40527.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036x) 107109 0.00 -1 s +4 sf +52832.0 43688.0 m +(GetGeometry) 68189 0.00 -1 s +93472.0 h +2 sf +(drawable\036y) 107109 0.00 -1 s +4 sf +52832.0 46849.0 m +(FillPoly) 61928 0.00 -1 s +93472.0 h +2 sf +(fill\036polygon) 107268 0.00 -1 s +4 sf +52832.0 50010.0 m +(InternAtom) 65996 0.00 -1 s +93472.0 h +2 sf +(find\036atom) 105383 0.00 -1 s +4 sf +52832.0 53171.0 m +(QueryFont) 65058 0.00 -1 s +( ) 65701 -63.00 32 s +93472.0 h +2 sf +(font\036all\036chars\036exist\036p) 118703 0.00 -1 s +4 sf +52832.0 56332.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036ascent) 106792 0.00 -1 s +4 sf +52832.0 59492.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036default\036char) 114158 0.00 -1 s +4 sf +52832.0 62653.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036descent) 108203 0.00 -1 s +4 sf +52832.0 65814.0 m +(QueryFont ) 65701 -63.00 32 s +93472.0 h +2 sf +(font\036direction) 110084 0.00 -1 s +4 sf +52832.0 68975.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036max\036byte1) 111963 0.00 -1 s +4 sf +52832.0 72136.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036max\036byte2) 111963 0.00 -1 s +4 sf +52832.0 75297.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036max\036char) 110866 0.00 -1 s +4 sf +52832.0 78458.0 m +(QueryFont ) 65701 -63.00 32 s +93472.0 h +2 sf +(font\036min\036byte1) 111494 0.00 -1 s +4 sf +52832.0 81619.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036min\036byte2) 111494 0.00 -1 s +4 sf +52832.0 84780.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036min\036char) 110397 0.00 -1 s +4 sf +52832.0 87940.0 m +(QueryFont ) 65701 -63.00 32 s +93472.0 h +2 sf +(font\036name) 105852 0.00 -1 s +4 sf +52832.0 91101.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036name) 105852 0.00 -1 s +4 sf +52832.0 94262.0 m +(GetFontPath) 67098 0.00 -1 s +93472.0 h +2 sf +(font\036path) 104757 0.00 -1 s +4 sf +52832.0 97423.0 m +(QueryFont ) 65701 -63.00 32 s +93472.0 h +2 sf +(font\036properties) 111651 0.00 -1 s +4 sf +52832.0 100584.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(font\036property) 109927 0.00 -1 s +4 sf +52832.0 103745.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +2 sf +(force\036gcontext\036changes) 121209 0.00 -1 s +4 sf +52832.0 106906.0 m +(SetClipRectangles) 73681 0.00 -1 s +93472.0 h +2 sf +(force\036gcontext\036changes) 121209 0.00 -1 s +4 sf +52832.0 110067.0 m +(SetDashes) 64588 0.00 -1 s +93472.0 h +2 sf +(force\036gcontext\036changes) 121209 0.00 -1 s +4 sf +52832.0 113228.0 m +(FreeColormap) 69132 0.00 -1 s +93472.0 h +2 sf +(free\036colormap) 110551 0.00 -1 s +4 sf +52832.0 116388.0 m +(FreeColors) 65371 0.00 -1 s +93472.0 h +2 sf +(free\036colors) 106319 0.00 -1 s +4 sf +52832.0 119549.0 m +(FreeCursor) 65526 0.00 -1 s +93472.0 h +2 sf +(free\036cursor) 106946 0.00 -1 s +4 sf +52832.0 122710.0 m +(FreeGC) 61765 0.00 -1 s +93472.0 h +2 sf +(free\036gcontext) 109295 0.00 -1 s +4 sf +52832.0 125871.0 m +(FreePixmap) 66469 0.00 -1 s +93472.0 h +2 sf +(free\036pixmap) 108203 0.00 -1 s +4 sf +52832.0 129032.0 m +(GetProperty) 66623 0.00 -1 s +93472.0 h +2 sf +(get\036property) 108672 0.00 -1 s +4 sf +52832.0 132193.0 m +(GetImage) 63957 0.00 -1 s +93472.0 h +2 sf +(get\036raw\036image) 110863 0.00 -1 s +4 sf +52832.0 135354.0 m +(QueryPointer) 68034 0.00 -1 s +93472.0 h +2 sf +(global\036pointer\036position) 121063 0.00 -1 s +4 sf +52832.0 138515.0 m +(GrabButton) 66155 0.00 -1 s +93472.0 h +2 sf +(grab\036button) 108051 0.00 -1 s +4 sf +52832.0 141676.0 m +(GrabKey) 63173 0.00 -1 s +93472.0 h +2 sf +(grab\036key) 104288 0.00 -1 s +4 sf +52832.0 144836.0 m +(GrabKeyboard) 69598 0.00 -1 s +( ) 70217 -87.00 32 s +93472.0 h +2 sf +(grab\036keyboard) 111501 0.00 -1 s +4 sf +52832.0 147997.0 m +(GrabPointer) 66623 0.00 -1 s +93472.0 h +2 sf +(grab\036pointer) 108833 0.00 -1 s +4 sf +52832.0 151158.0 m +(GrabServer) 65836 0.00 -1 s +93472.0 h +2 sf +(grab\036server) 107576 0.00 -1 s +4 sf +52832.0 154319.0 m +(GrabServer) 65836 0.00 -1 s +93472.0 h +2 sf +(with\036server\036grabbed) 118235 0.00 -1 s +4 sf +52832.0 157480.0 m +(GetInputFocus) 69604 0.00 -1 s +93472.0 h +2 sf +(input\036focus) 107111 0.00 -1 s +( ) 107786 -31.00 32 s +4 sf +52832.0 160641.0 m +(InstallColormap) 71171 0.00 -1 s +93472.0 h +2 sf +(install\036colormap) 113222 0.00 -1 s +4 sf +52832.0 163802.0 m +(ListInstalledColormaps) 79323 0.00 -1 s +93472.0 h +2 sf +(installed\036colormaps) 117142 0.00 -1 s +4 sf +52832.0 166963.0 m +(InternAtom) 65996 0.00 -1 s +93472.0 h +2 sf +(intern\036atom) 107889 0.00 -1 s +4 sf +52832.0 170124.0 m +(GetKeyboardControl) 76654 0.00 -1 s +93472.0 h +2 sf +(keyboard\036control) 114477 0.00 -1 s +4 sf +52832.0 173284.0 m +(GetKeyboardMapping) 78222 0.00 -1 s +93472.0 h +2 sf +(keyboard\036mapping) 116520 0.00 -1 s +4 sf +52832.0 176445.0 m +(KillClient) 64119 0.00 -1 s +93472.0 h +2 sf +(kill\036client) 104914 0.00 -1 s +4 sf +52832.0 179606.0 m +(KillClient) 64119 0.00 -1 s +93472.0 h +2 sf +(kill\036temporary\036clients) 119801 0.00 -1 s +4 sf +52832.0 182767.0 m +(ListExtensions) 69607 0.00 -1 s +93472.0 h +2 sf +(list\036extensions) 110401 0.00 -1 s +4 sf +52832.0 185928.0 m +(ListFonts) 63495 0.00 -1 s +93472.0 h +2 sf +(list\036font\036names) 111494 0.00 -1 s +4 sf +52832.0 189089.0 m +(ListFontsWithInfo) 73838 0.00 -1 s +93472.0 h +2 sf +(list\036fonts) 103972 0.00 -1 s +( ) 104716 38.00 32 s +4 sf +52832.0 192250.0 m +(ListProperties) 68663 0.00 -1 s +93472.0 h +2 sf +(list\036properties) 110398 0.00 -1 s +4 sf +52832.0 195411.0 m +(LookupColor) 68038 0.00 -1 s +( ) 68659 -85.00 32 s +93472.0 h +2 sf +(lookup\036color) 108836 0.00 -1 s +4 sf +52832.0 198572.0 m +(MapSubwindows) 72585 0.00 -1 s +93472.0 h +2 sf +(map\036subwindows) 114482 0.00 -1 s +4 sf +52832.0 201732.0 m +(MapWindow) 67723 0.00 -1 s +93472.0 h +2 sf +(map\036window) 109148 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +20320.0 7677.0 m +(Protocol vs.) 32583 -11.00 32 s +( CLX Functional ) 50258 -11.67 32 s +20320.0 10454.0 m +(Cross\036Reference) 37244 0.00 -1 s +( Listing) 44930 -7.00 32 s +/timsps10b 2 declareFont +2 sf +20591.0 208619.0 m +(A\036198) 27800 0.00 -1 s +/timsps8i 3 declareFont +3 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(max\036char\036ascent) 113531 0.00 -1 s +4 sf +52832.0 31044.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(max\036char\036attributes) 117762 0.00 -1 s +4 sf +52832.0 34205.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(max\036char\036descent) 114942 0.00 -1 s +4 sf +52832.0 37366.0 m +(QueryFont) 65058 0.00 -1 s +( ) 65701 -63.00 32 s +93472.0 h +2 sf +(max\036char\036left\036bearing) 120112 0.00 -1 s +4 sf +52832.0 40527.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(max\036char\036right\036bearing) 122153 0.00 -1 s +4 sf +52832.0 43688.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(max\036char\036width) 112906 0.00 -1 s +4 sf +52832.0 46849.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(min\036char\036ascent) 113062 0.00 -1 s +4 sf +52832.0 50010.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(min\036char\036attributes) 117293 0.00 -1 s +4 sf +52832.0 53171.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(min\036char\036descent) 114473 0.00 -1 s +4 sf +52832.0 56332.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(min\036char\036left\036bearing) 119643 0.00 -1 s +4 sf +52832.0 59492.0 m +(QueryFont) 65058 0.00 -1 s +93472.0 h +2 sf +(min\036char\036right\036bearing) 121684 0.00 -1 s +4 sf +52832.0 62653.0 m +(QueryFont ) 65701 -63.00 32 s +93472.0 h +2 sf +(min\036char\036width) 112437 0.00 -1 s +4 sf +52832.0 65814.0 m +(GetModifierMapping) 77126 0.00 -1 s +93472.0 h +2 sf +(modifier\036mapping) 115417 0.00 -1 s +4 sf +52832.0 68975.0 m +(GetMotionEvents) 72897 0.00 -1 s +93472.0 h +2 sf +(motion\036events) 110398 0.00 -1 s +4 sf +52832.0 72136.0 m +(OpenFont) 64119 0.00 -1 s +93472.0 h +2 sf +(open\036font) 105071 0.00 -1 s +4 sf +52832.0 75297.0 m +(GetPointerControl) 73679 0.00 -1 s +93472.0 h +2 sf +(pointer\036control) 111809 0.00 -1 s +4 sf +52832.0 78458.0 m +(GetPointerMapping) 75247 0.00 -1 s +93472.0 h +2 sf +(pointer\036mapping) 113852 0.00 -1 s +4 sf +52832.0 81619.0 m +(QueryPointer) 68034 0.00 -1 s +93472.0 h +2 sf +(pointer\036position) 112754 0.00 -1 s +4 sf +52832.0 84780.0 m +(PutImage) 63647 0.00 -1 s +93472.0 h +2 sf +(put\036raw\036image) 111337 0.00 -1 s +4 sf +52832.0 87940.0 m +(QueryBestSize) 69759 0.00 -1 s +93472.0 h +2 sf +(query\036best\036cursor) 115101 0.00 -1 s +4 sf +52832.0 91101.0 m +(QueryBestSize) 69759 0.00 -1 s +93472.0 h +2 sf +(query\036best\036stipple) 115260 0.00 -1 s +4 sf +52832.0 94262.0 m +(QueryBestSize) 69759 0.00 -1 s +93472.0 h +2 sf +(query\036best\036tile) 111024 0.00 -1 s +4 sf +52832.0 97423.0 m +(QueryColors) 67408 0.00 -1 s +93472.0 h +2 sf +(query\036colors) 108676 0.00 -1 s +4 sf +52832.0 100584.0 m +(QueryExtension) 71170 0.00 -1 s +93472.0 h +2 sf +(query\036extension) 112753 0.00 -1 s +4 sf +52832.0 103745.0 m +(QueryKeymap) 69443 0.00 -1 s +93472.0 h +2 sf +(query\036keymap) 111029 0.00 -1 s +4 sf +52832.0 106906.0 m +(QueryPointer) 68034 0.00 -1 s +93472.0 h +2 sf +(query\036pointer) 110244 0.00 -1 s +4 sf +52832.0 110067.0 m +(QueryTree) 65052 0.00 -1 s +93472.0 h +2 sf +(query\036tree) 106164 0.00 -1 s +4 sf +52832.0 113228.0 m +(RecolorCursor) 69445 0.00 -1 s +93472.0 h +2 sf +(recolor\036cursor) 110866 0.00 -1 s +4 sf +52832.0 116388.0 m +(ChangeHosts) 67881 0.00 -1 s +93472.0 h +2 sf +(remove\036access\036host) 116664 0.00 -1 s +4 sf +52832.0 119549.0 m +(ChangeSaveSet) 70545 0.00 -1 s +93472.0 h +2 sf +(remove\036from\036save\036set) 119636 0.00 -1 s +4 sf +52832.0 122710.0 m +(ReparentWindow) 72736 0.00 -1 s +93472.0 h +2 sf +(reparent\036window) 114318 0.00 -1 s +4 sf +52832.0 125871.0 m +(ForceScreenSaver) 73360 0.00 -1 s +93472.0 h +2 sf +(reset\036screen\036saver) 115251 0.00 -1 s +4 sf +52832.0 129032.0 m +(RotateProperties) 71640 0.00 -1 s +93472.0 h +2 sf +(rotate\036properties) 113999 0.00 -1 s +4 sf +52832.0 132193.0 m +(GetScreenSaver) 71009 0.00 -1 s +93472.0 h +2 sf +(screen\036saver) 108516 0.00 -1 s +4 sf +52832.0 135354.0 m +(GetSelectionOwner) 75085 0.00 -1 s +93472.0 h +2 sf +(selection\036owner) 112278 0.00 -1 s +4 sf +52832.0 138515.0 m +(SendEvent) 65059 0.00 -1 s +93472.0 h +2 sf +(send\036event) 106325 0.00 -1 s +4 sf +52832.0 141676.0 m +(ChangeAccessControl) 78067 0.00 -1 s +93472.0 h +2 sf +(set\036access\036control) 114626 0.00 -1 s +4 sf +52832.0 144836.0 m +(ChangeCloseDownMode) 81361 0.00 -1 s +93472.0 h +2 sf +(set\036close\036down\036mode) 118547 0.00 -1 s +4 sf +52832.0 147997.0 m +(SetInputFocus) 69136 0.00 -1 s +93472.0 h +2 sf +(set\036input\036focus) 111340 0.00 -1 s +4 sf +52832.0 151158.0 m +(SetModifierMapping) 76658 0.00 -1 s +93472.0 h +2 sf +(set\036modifier\036mapping) 119646 0.00 -1 s +4 sf +52832.0 154319.0 m +(SetPointerMapping) 74779 0.00 -1 s +93472.0 h +2 sf +(set\036pointer\036mapping) 118081 0.00 -1 s +4 sf +52832.0 157480.0 m +(SetScreenSaver) 70541 0.00 -1 s +93472.0 h +2 sf +(set\036screen\036saver) 112745 0.00 -1 s +4 sf +52832.0 160641.0 m +(SetSelectionOwner) 74617 0.00 -1 s +93472.0 h +2 sf +(set\036selection\036owner) 116507 0.00 -1 s +4 sf +52832.0 163802.0 m +(StoreColors) 66313 0.00 -1 s +93472.0 h +2 sf +(store\036color) 106477 0.00 -1 s +4 sf +52832.0 166963.0 m +(StoreColors) 66313 0.00 -1 s +93472.0 h +2 sf +(store\036colors) 107575 0.00 -1 s +4 sf +52832.0 170124.0 m +(StoreNamedColor) 73364 0.00 -1 s +93472.0 h +2 sf +(store\036color) 106477 0.00 -1 s +4 sf +52832.0 173284.0 m +(StoreNamedColor) 73364 0.00 -1 s +93472.0 h +2 sf +(store\036colors) 107575 0.00 -1 s +4 sf +52832.0 176445.0 m +(QueryTextExtents) 73520 0.00 -1 s +93472.0 h +2 sf +(text\036extents) 107415 0.00 -1 s +4 sf +52832.0 179606.0 m +(QueryTextExtents) 73520 0.00 -1 s +93472.0 h +2 sf +(text\036width) 105851 0.00 -1 s +4 sf +52832.0 182767.0 m +(TranslateCoords) 71483 0.00 -1 s +93472.0 h +2 sf +(translate\036coordinates) 119019 0.00 -1 s +( ) 119640 -85.00 32 s +4 sf +52832.0 185928.0 m +(UngrabButton) 68977 0.00 -1 s +93472.0 h +2 sf +(ungrab\036button) 111189 0.00 -1 s +4 sf +52832.0 189089.0 m +(UngrabKey) 65995 0.00 -1 s +93472.0 h +2 sf +(ungrab\036key) 107426 0.00 -1 s +4 sf +52832.0 192250.0 m +(UngrabKeyboard) 72420 0.00 -1 s +93472.0 h +2 sf +(ungrab\036keyboard) 114639 0.00 -1 s +4 sf +52832.0 195411.0 m +(UngrabPointer) 69445 0.00 -1 s +93472.0 h +2 sf +(ungrab\036pointer) 111971 0.00 -1 s +( ) 112573 -104.00 32 s +4 sf +52832.0 198572.0 m +(UngrabServer) 68658 0.00 -1 s +93472.0 h +2 sf +(ungrab\036server) 110714 0.00 -1 s +4 sf +52832.0 201732.0 m +(UngrabServer) 68658 0.00 -1 s +93472.0 h +2 sf +(with\036server\036grabbed) 118235 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +119075.0 7677.0 m +(Protocol vs.) 131338 -11.00 32 s +( CLX Functional ) 149013 -11.67 32 s +124404.0 10454.0 m +(Cross\036Reference) 141328 0.00 -1 s +( Listing) 149013 -8.00 32 s +/timsps10b 2 declareFont +2 sf +141804.0 208619.0 m +(A\036199) 149013 0.00 -1 s +/timsps8i 3 declareFont +3 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(UninstallColormap) 74464 0.00 -1 s +93472.0 h +2 sf +(uninstall\036colormap) 116360 0.00 -1 s +4 sf +52832.0 31044.0 m +(UnmapSubwindows) 75719 0.00 -1 s +93472.0 h +2 sf +(unmap\036subwindows) 117620 0.00 -1 s +4 sf +52832.0 34205.0 m +(UnmapWindow) 70857 0.00 -1 s +93472.0 h +2 sf +(unmap\036window) 112286 0.00 -1 s +4 sf +52832.0 37366.0 m +(WarpPointer) 67250 0.00 -1 s +( ) 67914 -42.00 32 s +93472.0 h +2 sf +(warp\036pointer) 109459 0.00 -1 s +4 sf +52832.0 40527.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer\036if\036inside) 120117 0.00 -1 s +4 sf +52832.0 43688.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer\036relative) 119486 0.00 -1 s +4 sf +52832.0 46849.0 m +(WarpPointer) 67250 0.00 -1 s +93472.0 h +2 sf +(warp\036pointer\036relative\036if\036inside) 130144 0.00 -1 s +4 sf +52832.0 50010.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036all\036event\036masks) 122626 0.00 -1 s +4 sf +52832.0 53171.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036backing\036pixel) 120124 0.00 -1 s +4 sf +52832.0 56332.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036backing\036planes) 122007 0.00 -1 s +4 sf +52832.0 59492.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036backing\036store) 120277 0.00 -1 s +4 sf +52832.0 62653.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036bit\036gravity) 116669 0.00 -1 s +4 sf +52832.0 65814.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036class) 109462 0.00 -1 s +4 sf +52832.0 68975.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036colormap) 115260 0.00 -1 s +4 sf +52832.0 72136.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036colormap\036installed\036p) 128898 0.00 -1 s +4 sf +52832.0 75297.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036do\036not\036propagate\036mask) 132189 0.00 -1 s +4 sf +52832.0 78458.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036event\036mask) 117610 0.00 -1 s +4 sf +52832.0 81619.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036gravity) 112438 0.00 -1 s +4 sf +52832.0 84780.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036map\036state) 115727 0.00 -1 s +4 sf +52832.0 87940.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036override\036redirect) 124501 0.00 -1 s +4 sf +52832.0 91101.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036save\036under) 117143 0.00 -1 s +4 sf +52832.0 94262.0 m +(GetWindowAttributes) 77909 0.00 -1 s +93472.0 h +2 sf +(window\036visual) 110875 0.00 -1 s +( ) 111534 -47.00 32 s +4 sf +52832.0 97423.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100218 -67.00 32 s +2 sf +(drawable\036border\036width) 128589 0.00 -1 s +4 sf +( ) 129227 -68.00 32 s +/timsps10i 5 declareFont +5 sf +(drawable) 139888 0.00 -1 s +4 sf +(\)\)) 141766 0.00 -1 s +52832.0 100584.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100235 -50.00 32 s +2 sf +(drawable\036depth) 119360 0.00 -1 s +4 sf +( ) 120015 -51.00 32 s +5 sf +(drawable) 130676 0.00 -1 s +4 sf +(\)\)) 132554 0.00 -1 s +52832.0 103745.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(drawable\036height) 119989 0.00 -1 s +4 sf +( ) 120647 -48.00 32 s +5 sf +(drawable) 131308 0.00 -1 s +4 sf +(\)\)) 133186 0.00 -1 s +52832.0 106906.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100247 -38.00 32 s +2 sf +(drawable\036width) 119371 0.00 -1 s +4 sf +( ) 120038 -39.00 32 s +5 sf +(drawabl) 129446 0.00 -1 s +4 sf +(e\)\)) 132577 0.00 -1 s +52832.0 110067.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100247 -38.00 32 s +2 sf +(drawable\036x ) 114551 -39.00 32 s +5 sf +(drawable) 125212 0.00 -1 s +4 sf +(\)\)) 127090 0.00 -1 s +52832.0 113228.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100247 -38.00 32 s +2 sf +(drawable\036y) 113884 0.00 -1 s +4 sf +( ) 114551 -39.00 32 s +5 sf +(drawable) 125212 0.00 -1 s +4 sf +(\)\)) 127090 0.00 -1 s +52832.0 116388.0 m +(SetFontPath) 66630 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100282 -3.00 32 s +2 sf +(font\036path) 111567 0.00 -1 s +4 sf +( ) 112270 -3.00 32 s +5 sf +(font) 116660 0.00 -1 s +4 sf +(\)) 117599 0.00 -1 s +( ) 118301 -4.00 32 s +2 sf +(paths) 124887 0.00 -1 s +4 sf +(\)) 125826 0.00 -1 s +52832.0 119549.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100245 -40.00 32 s +2 sf +(gcontext\036arc\036mode) 122809 0.00 -1 s +4 sf +( ) 123474 -41.00 32 s +5 sf +(gc) 126138 0.00 -1 s +4 sf +(\)\)) 128016 0.00 -1 s +52832.0 122710.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100219 -66.00 32 s +2 sf +(gcontext\036background) 125928 0.00 -1 s +4 sf +( ) 126567 -67.00 32 s +5 sf +(gc) 129231 0.00 -1 s +4 sf +(\)\)) 131109 0.00 -1 s +52832.0 125871.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100263 -22.00 32 s +2 sf +(gcontext\036cap\036style) 122045 0.00 -1 s +4 sf +( ) 122729 -22.00 32 s +5 sf +(gc) 125393 0.00 -1 s +4 sf +(\)\)) 127271 0.00 -1 s +52832.0 129032.0 m +(SetClipRectangles) 73681 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100250 -35.00 32 s +2 sf +(gcontext\036clip\036mask) 123132 0.00 -1 s +4 sf +( ) 123803 -35.00 32 s +5 sf +(gc) 126467 0.00 -1 s +4 sf +( &optional) 138582 -35.00 32 s +52832.0 132193.0 m +93472.0 h +() 93472 0.00 -1 s +95667.0 h +() 95667 0.00 -1 s +2 sf +(ordering) 106170 0.00 -1 s +4 sf +(\)\)) 108048 0.00 -1 s +52832.0 135354.0 m +(SetClipRectangles) 73681 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(gcontext\036clip\036ordering) 127195 0.00 -1 s +4 sf +( ) 127854 -47.00 32 s +5 sf +(gc) 130518 0.00 -1 s +4 sf +(\)\)) 132396 0.00 -1 s +52832.0 138515.0 m +(SetClipRectangles) 73681 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100269 -16.00 32 s +2 sf +(gcontext\036clip\036x) 118134 0.00 -1 s +4 sf +( ) 118823 -17.00 32 s +5 sf +(gc) 121487 0.00 -1 s +4 sf +(\)\)) 123365 0.00 -1 s +52832.0 141676.0 m +(SetClipRectangles) 73681 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100269 -16.00 32 s +2 sf +(gcontext\036clip\036y) 118134 0.00 -1 s +4 sf +( ) 118823 -17.00 32 s +5 sf +(gc) 121487 0.00 -1 s +4 sf +(\)\)) 123365 0.00 -1 s +52832.0 144836.0 m +(SetDashes) 64588 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100274 -11.00 32 s +2 sf +(gcontext\036dash\036offset) 124564 0.00 -1 s +4 sf +( ) 125258 -12.00 32 s +5 sf +(gc) 127922 0.00 -1 s +4 sf +(\)\)) 129800 0.00 -1 s +52832.0 147997.0 m +(SetDashes) 64588 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +( ) 99322 -24.00 32 s +4 sf +(\() 100261 0.00 -1 s +2 sf +(gcontext\036dashes) 119384 0.00 -1 s +4 sf +( ) 120065 -25.00 32 s +5 sf +(gc) 122729 0.00 -1 s +4 sf +(\)\)) 124607 0.00 -1 s +52832.0 151158.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +( ) 99305 -41.00 32 s +4 sf +(\() 100244 0.00 -1 s +2 sf +(gcontext\036exposures) 123284 0.00 -1 s +5 sf +( gc) 126612 -42.00 32 s +4 sf +(\)\)) 128490 0.00 -1 s +52832.0 154319.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100255 -30.00 32 s +2 sf +(gcontext\036fill\036rule) 120469 0.00 -1 s +4 sf +( ) 121145 -30.00 32 s +5 sf +(gc) 123809 0.00 -1 s +4 sf +(\) ) 125424 -30.00 32 s +2 sf +(keyword) 135927 0.00 -1 s +4 sf +(\)) 136866 0.00 -1 s +52832.0 157480.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100265 -20.00 32 s +2 sf +(gcontext\036fill\036style) 121105 0.00 -1 s +4 sf +( ) 121791 -20.00 32 s +5 sf +(gc) 124455 0.00 -1 s +4 sf +(\)) 125394 0.00 -1 s +( ) 126079 -21.00 32 s +2 sf +(keyword) 136582 0.00 -1 s +4 sf +(\)) 137521 0.00 -1 s +52832.0 160641.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100254 -31.00 32 s +2 sf +(gcontext\036font) 116237 0.00 -1 s +4 sf +( ) 116913 -30.00 32 s +5 sf +(gc) 119577 0.00 -1 s +4 sf +( &optional) 131696 -31.00 32 s +52832.0 163802.0 m +93472.0 h +() 93472 0.00 -1 s +95667.0 h +() 95667 0.00 -1 s +2 sf +(metrics\036p) 107105 0.00 -1 s +4 sf +(\)) 108044 0.00 -1 s +52832.0 166963.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100223 -62.00 32 s +2 sf +(gcontext\036foreground) 124986 0.00 -1 s +4 sf +( ) 125630 -62.00 32 s +5 sf +(gc) 128294 0.00 -1 s +4 sf +(\)) 129233 0.00 -1 s +2 sf +( card32) 138185 -62.00 32 s +4 sf +(\)) 139124 0.00 -1 s +52832.0 170124.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100259 -26.00 32 s +2 sf +(gcontext\036function) 121417 0.00 -1 s +4 sf +( ) 122097 -26.00 32 s +5 sf +(gc) 124761 0.00 -1 s +4 sf +(\)\)) 126639 0.00 -1 s +52832.0 173284.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100253 -32.00 32 s +2 sf +(gcontext\036join\036style) 122505 0.00 -1 s +4 sf +( ) 123179 -32.00 32 s +5 sf +(gc) 125843 0.00 -1 s +4 sf +(\) ) 127456 -32.00 32 s +2 sf +(keyword) 137959 0.00 -1 s +4 sf +(\)) 138898 0.00 -1 s +52832.0 176445.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100252 -33.00 32 s +2 sf +(gcontext\036line\036style) 122191 0.00 -1 s +4 sf +( ) 122864 -33.00 32 s +5 sf +(gc) 125528 0.00 -1 s +4 sf +(\) ) 127140 -33.00 32 s +2 sf +(keyword) 137643 0.00 -1 s +4 sf +(\)) 138582 0.00 -1 s +52832.0 179606.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100249 -36.00 32 s +2 sf +(gcontext\036line\036width) 123601 0.00 -1 s +4 sf +( ) 124272 -35.00 32 s +5 sf +(gc) 126936 0.00 -1 s +4 sf +(\) ) 128545 -36.00 32 s +2 sf +(card16) 136853 0.00 -1 s +4 sf +(\)) 137792 0.00 -1 s +52832.0 182767.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100239 -46.00 32 s +2 sf +(gcontext\036plane\036mask) 125317 0.00 -1 s +4 sf +( ) 125977 -46.00 32 s +5 sf +(gc) 128641 0.00 -1 s +4 sf +(\)) 129580 0.00 -1 s +( ) 130239 -47.00 32 s +2 sf +(card32) 138547 0.00 -1 s +4 sf +(\)) 139486 0.00 -1 s +52832.0 185928.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100261 -24.00 32 s +2 sf +(gcontext\036stipple) 119382 0.00 -1 s +4 sf +( ) 120065 -23.00 32 s +5 sf +(gc) 122729 0.00 -1 s +4 sf +(\) ) 124350 -24.00 32 s +2 sf +(pixmap) 133444 0.00 -1 s +4 sf +(\)) 134383 0.00 -1 s +52832.0 189089.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100236 -49.00 32 s +2 sf +(gcontext\036subwindow\036mode) 132526 0.00 -1 s +4 sf +( ) 133182 -50.00 32 s +5 sf +(gc) 135846 0.00 -1 s +4 sf +(\)\)) 137724 0.00 -1 s +52832.0 192250.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100280 -5.00 32 s +2 sf +(gcontext\036tile) 115165 0.00 -1 s +4 sf +( ) 115865 -6.00 32 s +5 sf +(gc) 118529 0.00 -1 s +4 sf +(\)\)) 120407 0.00 -1 s +52832.0 195411.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100282 -3.00 32 s +2 sf +(gcontext\036ts\036x) 115794 0.00 -1 s +4 sf +( ) 116497 -3.00 32 s +5 sf +(gc) 119161 0.00 -1 s +4 sf +(\)\)) 121039 0.00 -1 s +52832.0 198572.0 m +(ChangeGC) 65372 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100282 -3.00 32 s +2 sf +(gcontext\036ts\036y) 115794 0.00 -1 s +4 sf +( ) 116497 -3.00 32 s +5 sf +(gc) 119161 0.00 -1 s +4 sf +(\)\)) 121039 0.00 -1 s +52832.0 201732.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100214 -71.00 32 s +2 sf +(window\036background) 125144 0.00 -1 s +4 sf +( ) 125779 -71.00 32 s +5 sf +(window) 134560 0.00 -1 s +4 sf +(\)\)) 136438 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps9i 1 declareFont +1 sf +20320.0 7677.0 m +(Protocol vs.) 32583 -11.00 32 s +( CLX Functional ) 50258 -11.67 32 s +20320.0 10454.0 m +(Cross\036Reference) 37244 0.00 -1 s +( Listing) 44930 -7.00 32 s +/timsps10b 2 declareFont +2 sf +20591.0 208619.0 m +(A\036200) 27800 0.00 -1 s +/timsps8i 3 declareFont +3 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 21562.0 m +( X11 Request Name) 76471 -35.67 32 s +79248.0 h +(CLX) 85204 0.00 -1 s +( Function Name) 104377 -54.00 32 s +52832.0 24723.0 m +79248.0 h +93472.0 h +113792.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 23898 av +149352 23898 as +149352 24133 as +52832 24133 as +closepath +fp +/drawmode PL_SET def +4 sf +52832.0 27884.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100234 -51.00 32 s +2 sf +(window\036backing\036pixel) 126886 0.00 -1 s +4 sf +( ) 127540 -52.00 32 s +/timsps10i 5 declareFont +5 sf +(window) 136321 0.00 -1 s +4 sf +(\)\)) 138199 0.00 -1 s +52832.0 31044.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100229 -56.00 32 s +2 sf +(window\036backing\036planes) 128764 0.00 -1 s +4 sf +( ) 129414 -56.00 32 s +5 sf +(window) 138195 0.00 -1 s +4 sf +(\)\)) 140073 0.00 -1 s +52832.0 34205.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100236 -49.00 32 s +2 sf +(window\036backing\036store) 127041 0.00 -1 s +4 sf +( ) 127698 -49.00 32 s +5 sf +(window) 136479 0.00 -1 s +4 sf +(\)\)) 138357 0.00 -1 s +52832.0 37366.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100256 -29.00 32 s +2 sf +(window\036bit\036gravity) 123453 0.00 -1 s +4 sf +( ) 124130 -29.00 32 s +5 sf +(window) 132911 0.00 -1 s +4 sf +(\)\)) 134789 0.00 -1 s +52832.0 40527.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100236 -49.00 32 s +2 sf +(window\036border) 118890 0.00 -1 s +4 sf +( ) 119547 -49.00 32 s +5 sf +(window) 128328 0.00 -1 s +4 sf +(\)\)) 130206 0.00 -1 s +52832.0 43688.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100238 -47.00 32 s +2 sf +(window\036colormap) 122026 0.00 -1 s +4 sf +( ) 122685 -47.00 32 s +5 sf +(window) 131466 0.00 -1 s +4 sf +(\)\)) 133344 0.00 -1 s +52832.0 46849.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100246 -39.00 32 s +2 sf +(window\036cursor) 118429 0.00 -1 s +4 sf +( ) 119095 -40.00 32 s +5 sf +(window) 127876 0.00 -1 s +4 sf +(\)\)) 129754 0.00 -1 s +52832.0 50010.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +( ) 99242 -104.00 32 s +4 sf +(\() 100181 0.00 -1 s +2 sf +(window\036do\036not\036propagate\036mask) 138898 0.00 -1 s +4 sf +52832.0 53171.0 m +93472.0 h +() 93472 0.00 -1 s +95667.0 h +() 95667 0.00 -1 s +5 sf +(window) 104448 0.00 -1 s +4 sf +(\)\)) 106326 0.00 -1 s +52832.0 56332.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100249 -36.00 32 s +2 sf +(window\036event\036mask) 124387 0.00 -1 s +4 sf +( ) 125056 -37.00 32 s +5 sf +(window) 133837 0.00 -1 s +4 sf +(\)\)) 135715 0.00 -1 s +52832.0 59492.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100250 -35.00 32 s +2 sf +(window\036gravity) 119216 0.00 -1 s +4 sf +( ) 119886 -36.00 32 s +5 sf +(window) 128667 0.00 -1 s +4 sf +(\)\)) 130545 0.00 -1 s +52832.0 62653.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100213 -72.00 32 s +2 sf +(window\036override\036redirect) 131242 0.00 -1 s +4 sf +( ) 131875 -73.00 32 s +5 sf +(window) 140656 0.00 -1 s +4 sf +(\)\)) 142534 0.00 -1 s +52832.0 65814.0 m +(ConfigureWindow) 73991 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100241 -44.00 32 s +2 sf +(window\036priority) 119991 0.00 -1 s +4 sf +( ) 120653 -44.00 32 s +5 sf +(window) 129434 0.00 -1 s +4 sf +( &optional) 141540 -44.00 32 s +52832.0 68975.0 m +93472.0 h +() 93472 0.00 -1 s +95667.0 h +() 95667 0.00 -1 s +2 sf +(sibling) 103666 0.00 -1 s +4 sf +(\)\)) 105544 0.00 -1 s +52832.0 72136.0 m +(ChangeWindowAttributes) 82456 0.00 -1 s +93472.0 h +(\() 94411 0.00 -1 s +2 sf +(setf) 98640 0.00 -1 s +4 sf +( \() 100234 -51.00 32 s +2 sf +(window\036save\036under) 123905 0.00 -1 s +4 sf +( ) 124559 -52.00 32 s +5 sf +(window) 133340 0.00 -1 s +4 sf +(\)\)) 135218 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s05.ps +++ cmucl-20a-20090928/own-work/clx/s05.ps @@ -0,0 +1,6001 @@ +%!PS-Adobe-2.0 +%%Title: s05.ps +%%Pages: 16 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map + /courps8 /ILcourps 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +/Courier /ILcourps ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03653) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 7 declareFont +7 sf +20410.0 39376.0 m +59898.0 39466.0 m +(GRAPHICS CONTEXTS) 115846 -68.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +143157 39315 av +136768 39315 as +134030 37028 as +134030 34740 as +138137 34740 as +138137 36265 as +141788 36265 as +141788 32452 as +135399 32452 as +134030 31308 as +134030 23300 as +145438 23300 as +145438 26351 as +138137 26351 as +138137 29401 as +143157 29401 as +145895 31689 as +145895 37028 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +133118 43891 av +133118 43891 as +newpath +133118 23300 av +133118 23300 as +newpath +146807 23300 av +146807 23300 as +newpath +146807 43891 av +146807 43891 as +149351.0 39376.0 m +7 sf +/timsps10 4 declareFont +4 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 5 declareFont +5 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(5.1) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(Clients) 66551 0.00 -1 s +( of the X Window System specify the visual attributes) 127283 -36.00 32 s +( of graphical output) 149352 -36.67 32 s +52832.0 50032.0 m +(primitives) 64275 0.00 -1 s +( by using ) 75031 -99.67 32 s +/timsps10i 3 declareFont +3 sf +(graphics contexts) 94762 -99.00 32 s +4 sf +(. A graphics context is a set of graphical attribute) 149352 -99.56 32 s +52832.0 53193.0 m +(values) 60042 0.00 -1 s +( such as) 68556 -211.00 32 s +( foreground color, font, line style, and so forth. Like a window, a graphics) 149352 -211.54 32 s +52832.0 56354.0 m +(context) 61139 0.00 -1 s +( is another kind of X server resource which is created and maintained at the re\036) 149352 -48.60 32 s +52832.0 59515.0 m +(quest) 58789 0.00 -1 s +( of a client program. The client program, which may use several different graphics) 149352 -188.85 32 s +52832.0 62676.0 m +(contexts) 62237 0.00 -1 s +( at different times, is responsible for specifying a graphics context to use with) 149352 -38.85 32 s +52832.0 65837.0 m +(each) 58002 0.00 -1 s +( graphical output) 77005 -60.00 32 s +( function.) 87760 -61.00 32 s +52832.0 72113.0 m +(CLX) 58475 0.00 -1 s +( represents a graphics context by an object of type ) 114636 -104.90 32 s +2 sf +(gcontext) 124822 0.00 -1 s +4 sf +( and defines functions) 149352 -104.67 32 s +52832.0 75274.0 m +(to) 55027 0.00 -1 s +( create, modify, and manipulate ) 91585 23.20 32 s +2 sf +(gcontext) 101771 0.00 -1 s +4 sf +( objects. By default, CLX also records the) 149352 23.43 32 s +52832.0 78435.0 m +(contents) 62237 0.00 -1 s +( of graphics contexts in a cache associated with each display. This local caching) 149352 -243.77 32 s +52832.0 81596.0 m +(of) 55182 0.00 -1 s +( graphics contexts has two important advantages:) 110450 -36.83 32 s +52832.0 87873.0 m +(1.) 54949 0.00 -1 s +57912.0 h +(Communication) 76097 0.00 -1 s +( efficiency \037 Changes to attribute values in a ) 129540 112.44 32 s +2 sf +(gcontext) 139726 0.00 -1 s +4 sf +( are first) 149352 112.50 32 s +57912.0 91034.0 m +(made) 64024 0.00 -1 s +( only in the local cache. Just before a ) 103919 -287.00 32 s +2 sf +(gcontext) 114105 0.00 -1 s +4 sf +( is actually used, CLX automati\036) 149352 -286.80 32 s +57912.0 94194.0 m +(cally) 63397 0.00 -1 s +( sends any changes to the X server, batching all changes into a single request.) 149352 -108.00 32 s +52832.0 100471.0 m +(2.) 54949 0.00 -1 s +57912.0 h +(Inquiring) 68413 0.00 -1 s +( ) 69033 -86.00 32 s +2 sf +(gcontext) 79219 0.00 -1 s +4 sf +( contents \037 Accessor functions) 114770 -86.00 32 s +( can be used to return the value) 149352 -86.57 32 s +57912.0 103632.0 m +(of) 60262 0.00 -1 s +( any individual ) 77098 -267.00 32 s +2 sf +(gcontext) 87284 0.00 -1 s +4 sf +( component by reading the copy of the ) 129355 -266.63 32 s +2 sf +(gcontext) 139541 0.00 -1 s +4 sf +( from the) 149352 -266.50 32 s +57912.0 106793.0 m +(cache.) 65041 0.00 -1 s +( This kind of inquiry is not supported by the basic X protocol. There) 138644 -271.00 32 s +( is no way) 149352 -271.67 32 s +57912.0 109954.0 m +(for) 61201 0.00 -1 s +( a client program to request an X server) 105692 -22.00 32 s +( to return the contents of a ) 135864 -22.57 32 s +2 sf +(gcontext) 146050 0.00 -1 s +4 sf +(.) 146756 0.00 -1 s +52832.0 116230.0 m +(Caching) 62237 0.00 -1 s +( graphics contexts can result) 93504 -177.00 32 s +( in a synchronization problem if more than one cli\036) 149352 -177.56 32 s +52832.0 119391.0 m +(ent) 56280 0.00 -1 s +( program modifies a graphics context. However, this problem is unusual. Sharing a) 149352 -48.83 32 s +52832.0 122552.0 m +(graphics) 62392 0.00 -1 s +( context among several clients, while possible, is not expected to be useful and) 149352 -141.69 32 s +52832.0 125713.0 m +(is) 54714 0.00 -1 s +( not very easy to do. At any rate, a client program can choose to not cache a ) 139166 -97.61 32 s +2 sf +(gcontext) 149352 0.00 -1 s +4 sf +52832.0 128874.0 m +(when) 58944 0.00 -1 s +( it is created.) 73287 -25.67 32 s +52832.0 135151.0 m +(Each) 58473 0.00 -1 s +( client program must determine) 93092 -201.00 32 s +( its own policy for creating and using graphics con\036) 149352 -201.56 32 s +52832.0 138311.0 m +(texts.) 58868 0.00 -1 s +( Depending on the display hardware and the server implementation, creating a new) 149352 -263.75 32 s +52832.0 141472.0 m +(graphics) 62392 0.00 -1 s +( context can be more or) 88303 -131.00 32 s +( less expensive than modifying an existing one. In gen\036) 149352 -131.56 32 s +52832.0 144633.0 m +(eral,) 57767 0.00 -1 s +( some amount of graphics context information can be) 118133 22.00 32 s +( cached in the display hard\036) 149352 21.40 32 s +52832.0 147794.0 m +(ware,) 59020 0.00 -1 s +( in which case modifying the hardware cache is faster than replacing it. Typical) 149352 52.46 32 s +52832.0 150955.0 m +(display) 60984 0.00 -1 s +( hardware can cache only a small number of graphics contexts. Graphics output is) 149352 -303.92 32 s +52832.0 154116.0 m +(fastest) 60041 0.00 -1 s +( when only a few graphics contexts are used without heavy) 126336 -32.00 32 s +( modifications.) 143233 -33.00 32 s +52832.0 160393.0 m +(This) 57849 0.00 -1 s +( section explains the CLX functions used to:) 107741 -27.71 32 s +/symbb8 8 declareFont +8 sf +52832.0 166940.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Create) 65276 0.00 -1 s +( a graphics context) 86383 -43.67 32 s +8 sf +52832.0 173488.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Return) 65592 0.00 -1 s +( the contents of a graphics context) 103948 -33.83 32 s +8 sf +52832.0 180035.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Change) 66533 0.00 -1 s +( the contents of a graphics) 95879 -40.00 32 s +( context) 104851 -41.00 32 s +8 sf +52832.0 186583.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Copy) 64027 0.00 -1 s +( a graphics context) 85118 -49.00 32 s +8 sf +52832.0 193130.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(Free) 62926 0.00 -1 s +( a graphics) 75065 -43.00 32 s +( context) 84034 -44.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03654) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 5 declareFont +5 sf +20320.0 26687.0 m +(Creating) 33108 0.00 -1 s +( ) 33980 25.00 32 s +52832.0 h +2 sf +(5.2) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +4 sf +(To) 61845 0.00 -1 s +( create a graphics context, use ) 96087 -52.83 32 s +2 sf +(create\036gcontext.) 115280 0.00 -1 s +117630.0 h +() 117630 0.00 -1 s +5 sf +20320.0 30074.0 m +(Graphics) 33677 0.00 -1 s +2 sf +52832.0 h +5 sf +20320.0 33460.0 m +(Contexts) 33108 0.00 -1 s +52832.0 h +2 sf +34544.0 39737.0 m +(create\036gcontext) 53031 0.00 -1 s +( ) 53678 -59.00 32 s +4 sf +(&key ) 60595 -59.00 32 s +2 sf +(:arc\036mode) 72973 0.00 -1 s +4 sf +( ) 73621 -58.00 32 s +2 sf +(:background) 89144 0.00 -1 s +4 sf +( \() 90730 -59.00 32 s +2 sf +(:cache\036p) 100916 0.00 -1 s +4 sf +( t\) ) 103934 -58.50 32 s +2 sf +(:cap\036style) 115530 0.00 -1 s +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 42898.0 m +2 sf +(:clip\036mask) 65528 0.00 -1 s +( :clip\036ordering :clip\036x :clip\036y :dash\036offset :dashes ) 124810 -20.67 32 s +52832.0 46059.0 m +(:drawable) 65058 0.00 -1 s +( :exposures :fill\036rule :fill\036style :font :foreground ) 123049 -25.83 32 s +52832.0 49220.0 m +(:function) 63804 0.00 -1 s +( :join\036style :line\036style) 89011 -12.00 32 s +( :line\036width :plane\036mask :stipple) 128084 -12.67 32 s +52832.0 52380.0 m +(:subwindow\036mode) 74936 0.00 -1 s +( :tile :ts\036x :ts\036y) 92388 -5.67 32 s +34544.0 55541.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +/timsps10i 3 declareFont +3 sf +52832.0 58702.0 m +( gcontext ) 64402 -36.00 32 s +4 sf +(\037 Type) 73693 -36.00 32 s +( ) 74362 -37.00 32 s +2 sf +(gcontext) 84548 0.00 -1 s +4 sf +(.) 85254 0.00 -1 s +52832.0 63421.0 m +(Creates,) 62000 0.00 -1 s +( initializes, and returns a graphics context \() 109275 -187.71 32 s +2 sf +(gcontext) 119461 0.00 -1 s +4 sf +(\). The graphics context can) 149352 -187.50 32 s +52832.0 66582.0 m +(only) 57849 0.00 -1 s +( be used with destination drawables having the) 109168 -204.00 32 s +( same root and depth as the specified) 149352 -204.57 32 s +52832.0 69743.0 m +2 sf +(:drawable) 65058 0.00 -1 s +4 sf +(.) 65764 0.00 -1 s +( If ) 69636 291.00 32 s +2 sf +(:cache\036p) 79822 0.00 -1 s +4 sf +( is non\036) 88870 291.00 32 s +2 sf +(nil) 92007 0.00 -1 s +4 sf +(, the graphics context state is cached locally,) 144281 291.00 32 s +( and) 149352 290.00 32 s +52832.0 72904.0 m +(changing) 63177 0.00 -1 s +( a component has no effect unless the new value differs from the cached value.) 149352 -197.86 32 s +52832.0 76065.0 m +(Changes) 62551 0.00 -1 s +( to a graphics context \() 87865 -94.00 32 s +2 sf +(setf) 92094 0.00 -1 s +4 sf +( and ) 97393 -94.00 32 s +2 sf +(with\036gcontext) 113847 0.00 -1 s +4 sf +(\) are always deferred regardless) 149352 -94.00 32 s +52832.0 79225.0 m +(of) 55182 0.00 -1 s +( the) 59091 -245.00 32 s +( cache mode and sent to the server only when required by a local operation or by an) 149352 -245.53 32 s +52832.0 82386.0 m +(explicit) 61296 0.00 -1 s +( call to) 68855 -61.00 32 s +( ) 69499 -62.00 32 s +2 sf +(force\036gcontext\036changes) 97236 0.00 -1 s +4 sf +(.) 97942 0.00 -1 s +2 sf +52832.0 88663.0 m +(:cache\036p) 63018 0.00 -1 s +( ) 63705 -19.00 32 s +4 sf +(\037) 66527 0.00 -1 s +( Specifies if this graphics context should be cached locally by CLX. If ) 146215 -19.54 32 s +2 sf +(nil) 149352 0.00 -1 s +4 sf +57912.0 91824.0 m +(then) 62771 0.00 -1 s +( the state is not cached, otherwise a local cache is kept. ) 125149 -26.67 32 s +2 sf +52832.0 98100.0 m +(:drawable) 65058 0.00 -1 s +( ) 65582 -182.00 32 s +4 sf +(\037 The ) 73840 -182.00 32 s +2 sf +(drawable) 85127 0.00 -1 s +4 sf +( whose root and depth are to be associated with this graph\036) 149352 -181.82 32 s +57912.0 101261.0 m +(ics) 61047 0.00 -1 s +( context. This is a required keyword) 101530 -32.00 32 s +( argument.) 113566 -33.00 32 s +2 sf +52832.0 107538.0 m +(:arc\036mode) 65210 0.00 -1 s +4 sf +(,) 65916 0.00 -1 s +( ) 67125 503.00 32 s +2 sf +(:background) 82648 0.00 -1 s +4 sf +(, ) 84563 503.00 32 s +2 sf +(:cap\036style) 96159 0.00 -1 s +4 sf +(, ) 98075 504.00 32 s +2 sf +(:clip\036mask) 110771 0.00 -1 s +4 sf +(, ) 112686 503.00 32 s +2 sf +(:clip\036ordering) 129457 0.00 -1 s +4 sf +(, ) 131373 504.00 32 s +2 sf +(:clip\036x) 139052 0.00 -1 s +4 sf +(, ) 140967 503.00 32 s +2 sf +(:clip\036y) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +57912.0 110699.0 m +2 sf +(:dash\036offset) 72016 0.00 -1 s +4 sf +(,) 72722 0.00 -1 s +( ) 74313 885.00 32 s +2 sf +(:dashes) 83250 0.00 -1 s +4 sf +(, ) 85547 885.00 32 s +2 sf +(:exposures) 98401 0.00 -1 s +4 sf +(, ) 100698 885.00 32 s +2 sf +(:fill\036rule) 110726 0.00 -1 s +4 sf +(, ) 113023 885.00 32 s +2 sf +(:fill\036style) 123677 0.00 -1 s +4 sf +(, ) 125975 886.00 32 s +2 sf +(:font) 131772 0.00 -1 s +4 sf +(, ) 134069 885.00 32 s +2 sf +(:foreground) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +57912.0 113860.0 m +2 sf +(:function) 68884 0.00 -1 s +4 sf +(,) 69590 0.00 -1 s +( ) 70409 113.00 32 s +2 sf +(:join\036style) 82475 0.00 -1 s +4 sf +(, ) 84000 113.00 32 s +2 sf +(:line\036style) 95753 0.00 -1 s +4 sf +(, ) 97279 114.00 32 s +2 sf +(:line\036width) 110445 0.00 -1 s +4 sf +(, ) 111970 113.00 32 s +2 sf +(:plane\036mask) 126862 0.00 -1 s +4 sf +(, ) 128388 114.00 32 s +2 sf +(:stipple) 137323 0.00 -1 s +4 sf +(, ) 138848 113.00 32 s +2 sf +(:subwin\036) 149352 0.00 -1 s +57912.0 117021.0 m +(dow\036mode) 70451 0.00 -1 s +4 sf +(,) 71157 0.00 -1 s +( ) 71846 -17.00 32 s +2 sf +(:tile) 76545 0.00 -1 s +4 sf +(, ) 77940 -17.00 32 s +2 sf +(:ts\036x) 83266 0.00 -1 s +4 sf +(, ) 84661 -17.00 32 s +2 sf +(:ts\036y ) 90676 -17.00 32 s +4 sf +(\037 Initial attribute values for) 122895 -17.00 32 s +( the graphics context.) 146981 -17.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03655) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(All) 56437 0.00 -1 s +( of) 59227 -266.00 32 s +( the graphics context components are set to the values that are specified by the key\036) 149352 -266.53 32 s +52832.0 25739.0 m +(word) 58630 0.00 -1 s +( arguments, except that a) 87029 66.00 32 s +( value of ) 97805 65.33 32 s +2 sf +(nil ) 101714 66.00 32 s +4 sf +(causes the default value to be used. These) 149352 65.43 32 s +52832.0 28900.0 m +(default) 60667 0.00 -1 s +( values are as 6.follows: ) 88460 -21.60 32 s +2 sf +52832.0 35176.0 m +83312.0 h +99568.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 34351 av +149352 34351 as +149352 34586 as +52832 34586 as +closepath +fp +/drawmode PL_SET def +52832.0 38337.0 m +(Component) 66940 0.00 -1 s +83312.0 h +(Default) 92244 0.00 -1 s +( Value) 99952 -52.00 32 s +52832.0 41498.0 m +83312.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 40673 av +149352 40673 as +149352 40908 as +52832 40908 as +closepath +fp +/drawmode PL_SET def +52832.0 44659.0 m +(arc\036mode) 64271 0.00 -1 s +4 sf +83312.0 h +2 sf +(:pie\036slice) 93968 0.00 -1 s +52832.0 47820.0 m +(background) 67416 0.00 -1 s +4 sf +83312.0 h +(1) 84723 0.00 -1 s +( ) 85412 -17.00 32 s +2 sf +52832.0 50981.0 m +(cap\036style) 63489 0.00 -1 s +4 sf +83312.0 h +2 sf +(:butt) 89267 0.00 -1 s +52832.0 54142.0 m +(clip\036mask) 64589 0.00 -1 s +4 sf +83312.0 h +2 sf +(:none) 90053 0.00 -1 s +52832.0 57302.0 m +(clip\036ordering) 68664 0.00 -1 s +4 sf +83312.0 h +2 sf +(:unsorted) 94912 0.00 -1 s +52832.0 60463.0 m +(clip\036x) 59572 0.00 -1 s +4 sf +83312.0 h +(0 ) 85412 -17.00 32 s +2 sf +52832.0 63624.0 m +(clip\036y) 59572 0.00 -1 s +4 sf +83312.0 h +(0 ) 85412 -17.00 32 s +2 sf +52832.0 66785.0 m +(dash\036offset) 65997 0.00 -1 s +4 sf +83312.0 h +(0 ) 85412 -17.00 32 s +2 sf +52832.0 69946.0 m +(dashes) 60830 0.00 -1 s +4 sf +83312.0 h +(4) 84723 0.00 -1 s +( \(that is, the list '\(4, 4\)\) ) 111579 -3.86 32 s +2 sf +52832.0 73107.0 m +(exposures) 64747 0.00 -1 s +4 sf +83312.0 h +2 sf +(:on) 87231 0.00 -1 s +52832.0 76268.0 m +(fill\036rule) 61921 0.00 -1 s +4 sf +83312.0 h +2 sf +(:even\036odd) 95225 0.00 -1 s +52832.0 79429.0 m +(fill\036style) 62547 0.00 -1 s +4 sf +83312.0 h +2 sf +(:solid) 89897 0.00 -1 s +52832.0 82590.0 m +(font) 57690 0.00 -1 s +4 sf +83312.0 h +(server) 90205 0.00 -1 s +( dependent) 102413 -96.00 32 s +2 sf +52832.0 85750.0 m +(foreground) 66470 0.00 -1 s +4 sf +83312.0 h +(0) 84723 0.00 -1 s +( ) 85412 -17.00 32 s +2 sf +52832.0 88911.0 m +(function) 62865 0.00 -1 s +4 sf +83312.0 h +2 sf +(boole\0361) 92090 0.00 -1 s +52832.0 92072.0 m +(join\036style) 63959 0.00 -1 s +4 sf +83312.0 h +2 sf +(:miter) 90830 0.00 -1 s +52832.0 95233.0 m +(line\036style) 63646 0.00 -1 s +4 sf +83312.0 h +2 sf +(:solid) 89897 0.00 -1 s +52832.0 98394.0 m +(line\036width) 65059 0.00 -1 s +4 sf +83312.0 h +(0 ) 85412 -17.00 32 s +2 sf +52832.0 101555.0 m +(plane\036mask) 66785 0.00 -1 s +4 sf +83312.0 h +(A) 85349 0.00 -1 s +( bit mask of all ones) 108089 -14.00 32 s +( ) 108780 -15.00 32 s +2 sf +52832.0 104716.0 m +(stipple) 60828 0.00 -1 s +4 sf +83312.0 h +(Pixmap) 91935 0.00 -1 s +( of unspecified size filled with ones) 131899 -27.00 32 s +52832.0 107877.0 m +2 sf +(subwindow\036mode) 73997 0.00 -1 s +4 sf +83312.0 h +2 sf +(:clip\036by\036children) 103533 0.00 -1 s +52832.0 111038.0 m +(tile) 56592 0.00 -1 s +4 sf +83312.0 h +(Pixmap of an unspecified size filled) 123700 -26.00 32 s +( with) 129397 -25.00 32 s +( the) 133525 -26.00 32 s +52832.0 114198.0 m +83312.0 h +(foreground) 95848 0.00 -1 s +( pixel \(that is, the client\036specified) 133482 -28.00 32 s +( pixel) 139802 -29.00 32 s +52832.0 117359.0 m +83312.0 h +(if) 85035 0.00 -1 s +( any, or else 0\)) 101676 -13.00 32 s +( ) 102368 -14.00 32 s +2 sf +52832.0 120520.0 m +(ts\036x) 57219 0.00 -1 s +4 sf +83312.0 h +(0) 84723 0.00 -1 s +( ) 85412 -17.00 32 s +2 sf +52832.0 123681.0 m +(ts\036y) 57219 0.00 -1 s +4 sf +83312.0 h +(0 ) 85412 -17.00 32 s +52832.0 126842.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 126017 av +149352 126017 as +149352 126135 as +52832 126135 as +closepath +fp +/drawmode PL_SET def +52832.0 133051.0 m +(Note) 58317 0.00 -1 s +( that foreground and background) 95194 -28.00 32 s +( do not default to any values that are likely to be) 149352 -28.55 32 s +52832.0 136212.0 m +(useful) 59728 0.00 -1 s +( on a color display. Since specifying a ) 101481 -238.00 32 s +2 sf +(nil) 104618 0.00 -1 s +4 sf +( value means use the default, this) 140576 -238.00 32 s +( implies) 149352 -239.00 32 s +52832.0 139373.0 m +(for) 56121 0.00 -1 s +( clip\036mask that an empty rectangle sequence cannot be specified as an empty list;) 149352 124.23 32 s +52832.0 142534.0 m +2 sf +(:none) 59573 0.00 -1 s +4 sf +( must be used instead. Specifying a ) 99826 -27.57 32 s +2 sf +(stringable) 111897 0.00 -1 s +4 sf +( for font causes an implicit ) 142611 -27.50 32 s +2 sf +(open\036) 149352 0.00 -1 s +52832.0 145694.0 m +(font) 57690 0.00 -1 s +4 sf +( call to) 65319 -26.00 32 s +( occur.) 72971 -27.00 32 s +20320.0 152694.0 m +541.0 sw +0.0 0.0 m +newpath +20455 151070 av +148878 151068 as +[] 0 setdash +dp +149352.0 152694.0 m +/timsps12b 5 declareFont +5 sf +20320.0 156080.0 m +(Graphics) 33677 0.00 -1 s +( ) 34544 20.00 32 s +52832.0 h +2 sf +(5.3) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( following paragraphs describe the CLX functions used) 132789 1055.00 32 s +( to return or) 149352 1054.33 32 s +5 sf +20320.0 159467.0 m +(Context) 31791 0.00 -1 s +2 sf +52832.0 h +4 sf +(change) 60824 0.00 -1 s +( the attributes of a ) 86654 949.60 32 s +2 sf +(gcontext) 96840 0.00 -1 s +4 sf +(. Functions that return the) 130667 1187.00 32 s +( contents of a) 149352 1186.33 32 s +5 sf +20320.0 162854.0 m +(Attributes) 35176 0.00 -1 s +52832.0 h +2 sf +(gcontext) 63018 0.00 -1 s +4 sf +( return ) 74049 1441.00 32 s +2 sf +(nil) 77186 0.00 -1 s +4 sf +( if the last) 92717 1441.00 32 s +( value stored is unknown \(for example, if) 149352 1440.43 32 s +52832.0 166014.0 m +(the ) 56986 0.00 32 s +2 sf +(gcontext) 67172 0.00 -1 s +4 sf +( was not cached or if the ) 94434 -147.00 32 s +2 sf +(gcontext) 104620 0.00 -1 s +4 sf +( was not created by the inquiring client\).) 149352 -125.71 32 s +2 sf +34544.0 172291.0 m +(gcontext\036arc\036mode) 57108 0.00 -1 s +4 sf +( ) 57654 -160.00 32 s +/timsps10i 3 declareFont +3 sf +(gcontext) 67214 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 175452.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 178613.0 m +( arc\036mode ) 65700 -21.00 32 s +4 sf +(\037 Either ) 76787 -21.00 32 s +2 sf +(:chord) 84781 0.00 -1 s +4 sf +( or) 87816 -21.00 32 s +( ) 88500 -22.00 32 s +2 sf +(:pie\036slice) 99156 0.00 -1 s +4 sf +(.) 99862 0.00 -1 s +52832.0 183332.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 72987 -257.00 32 s +2 sf +(setf) 77216 0.00 -1 s +4 sf +(\) changes the arc\036mode attribute of the specified graphics context.) 149352 -256.56 32 s +52832.0 189608.0 m +(The) 57220 0.00 -1 s +( arc\036mode attribute of a graphics context controls the kind of filling, if any, to be) 149352 76.20 32 s +52832.0 192769.0 m +(done) 58318 0.00 -1 s +( by the ) 66313 -131.00 32 s +2 sf +(draw\036arcs) 78537 0.00 -1 s +4 sf +( function. A value of ) 102022 -130.80 32 s +2 sf +(:chord) 110016 0.00 -1 s +4 sf +( specifies that arcs are filled inward) 149352 -130.50 32 s +52832.0 195930.0 m +(to) 55027 0.00 -1 s +( the chord between) 75961 -153.00 32 s +( the end points of the arc. ) 104199 -153.57 32 s +2 sf +(:pie\036slice ) 115408 -153.00 32 s +4 sf +(specifies that arcs are filled in\036) 149352 -153.60 32 s +52832.0 199091.0 m +(ward) 58472 0.00 -1 s +( to the center point of the arc,) 91539 -23.00 32 s +( creating a pie slice effect.) 121039 -23.60 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03656) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 3 declareFont +3 sf +52832.0 22578.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +/timsps10 4 declareFont +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 27364.0 m +(gcontext\036background) 60253 0.00 -1 s +4 sf +( ) 60747 -212.00 32 s +3 sf +(gcontext) 70307 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 30525.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 33686.0 m +( background) 67631 -47.00 32 s +( ) 68289 -48.00 32 s +4 sf +(\037 Type ) 78227 -47.50 32 s +2 sf +(card32) 86535 0.00 -1 s +4 sf +(.) 87241 0.00 -1 s +52832.0 38405.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73320 -146.00 32 s +2 sf +(setf) 77549 0.00 -1 s +4 sf +(\) changes the background attribute of the specified graphics con\036) 149352 -145.67 32 s +52832.0 41566.0 m +(text.) 57770 0.00 -1 s +52832.0 47842.0 m +(The) 57220 0.00 -1 s +( background attribute specifies the) 95770 -80.00 32 s +( pixel value drawn for pixels that are not set in a) 149352 -80.55 32 s +52832.0 51003.0 m +(bitmap) 60670 0.00 -1 s +( and for pixels that are cleared by) 96738 -232.00 32 s +( a graphics operation, such as the gaps in dashed) 149352 -232.56 32 s +52832.0 54164.0 m +(lines.) 58868 0.00 -1 s +3 sf +52832.0 60441.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 65227.0 m +(gcontext\036cache\036p) 54916 0.00 -1 s +4 sf +( ) 55464 -158.00 32 s +3 sf +(gcontext) 65024 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 68388.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 71549.0 m +( cache\036p) 63097 -39.00 32 s +( ) 63763 -40.00 32 s +4 sf +(\037 Type ) 73717 -39.50 32 s +2 sf +(boolean) 83125 0.00 -1 s +4 sf +(.) 83831 0.00 -1 s +52832.0 76268.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 72930 -276.00 32 s +2 sf +(setf) 77159 0.00 -1 s +4 sf +(\) changes the local cache mode for the ) 118993 -275.75 32 s +3 sf +(gcontext) 128553 0.00 -1 s +4 sf +(. If true, the state of) 149352 -275.60 32 s +52832.0 79429.0 m +(the) 56280 0.00 -1 s +( ) 56719 -267.00 32 s +3 sf +(gcontext) 66279 0.00 -1 s +4 sf +( is cached by CLX and changes to its attributes have no effect unless the new) 149352 -266.67 32 s +52832.0 82590.0 m +(value) 58944 0.00 -1 s +( differs from its cached value.) 92501 -27.60 32 s +3 sf +52832.0 88866.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 93653.0 m +(gcontext\036cap\036style) 56326 0.00 -1 s +( ) 56909 -123.00 32 s +3 sf +(gcontext) 66469 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 96814.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 99974.0 m +( cap\036style ) 65073 -21.00 32 s +4 sf +(\037 One of ) 77001 -21.00 32 s +2 sf +(:butt) 82956 0.00 -1 s +4 sf +(, ) 84347 -21.00 32 s +2 sf +(:not\036last) 94376 0.00 -1 s +4 sf +(, ) 95767 -21.00 32 s +2 sf +(:projecting) 109087 0.00 -1 s +4 sf +(, or ) 113514 -20.50 32 s +2 sf +(:round) 121824 0.00 -1 s +4 sf +(.) 122530 0.00 -1 s +52832.0 104693.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73104 -218.00 32 s +2 sf +(setf) 77333 0.00 -1 s +4 sf +(\) changes the cap\036style attribute of the specified graphics context.) 149352 -217.56 32 s +52832.0 110699.0 m +(The) 57220 0.00 -1 s +( cap\036style attribute of a graphics context defines how the end points of a path are) 149352 76.40 32 s +52832.0 113860.0 m +(drawn.) 60589 0.00 -1 s +( The possible) 75589 -25.00 32 s +( values and their interpretations are as follows:) 128151 -25.57 32 s +2 sf +52832.0 120136.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 119311 av +149352 119311 as +149352 119546 as +52832 119546 as +closepath +fp +/drawmode PL_SET def +52832.0 123297.0 m +(Cap\036Style) 64744 0.00 -1 s +79248.0 h +85344.0 h +(Interpretation) 102584 0.00 -1 s +52832.0 126458.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 125633 av +149352 125633 as +149352 125868 as +52832 125868 as +closepath +fp +/drawmode PL_SET def +52832.0 129619.0 m +(:butt) 58787 0.00 -1 s +4 sf +85344.0 h +(Square) 93180 0.00 -1 s +( at the end point \(perpendicular to the) 135368 -30.00 32 s +( slope of the) 149149 -30.67 32 s +85344.0 132780.0 m +(line\)) 90515 0.00 -1 s +( with no projection beyond.) 121468 -41.00 32 s +85344.0 135941.0 m +2 sf +52832.0 139102.0 m +(:not\036last) 62861 0.00 -1 s +4 sf +85344.0 h +(Equivalent) 97570 0.00 -1 s +( to ) 101127 -25.00 32 s +2 sf +(:butt) 107082 0.00 -1 s +4 sf +(, except that for a line\036width of zero) 147501 -24.57 32 s +85344.0 142263.0 m +(or one the final end point is not drawn.) 128964 -24.13 32 s +85344.0 145423.0 m +2 sf +52832.0 148584.0 m +(:projecting) 66152 0.00 -1 s +4 sf +85344.0 h +(Square) 93180 0.00 -1 s +( at the end, but the path continues beyond the) 144633 -35.80 32 s +85344.0 151745.0 m +(end) 89419 0.00 -1 s +( point for a distance equal to half the line\036width. This) 149284 -24.80 32 s +85344.0 154906.0 m +(is) 87226 0.00 -1 s +( equivalent to ) 103231 -21.00 32 s +2 sf +(:butt) 109186 0.00 -1 s +4 sf +( for line\036width zero or one.) 139486 -20.80 32 s +85344.0 158067.0 m +2 sf +52832.0 161228.0 m +(:round) 61142 0.00 -1 s +4 sf +85344.0 h +(A circular arc with the radius equal to 1/2 of the) 139373 -20.00 32 s +85344.0 164389.0 m +(line\036width,) 97648 0.00 -1 s +( centered on the end point. This is equivalent) 148088 -33.88 32 s +85344.0 167550.0 m +(to) 87539 0.00 -1 s +( ) 88227 -18.00 32 s +2 sf +(:butt) 94182 0.00 -1 s +4 sf +( for line\036width) 110445 -18.00 32 s +( zero or one.) 124494 -18.67 32 s +52832.0 170711.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 169886 av +149352 169886 as +149352 170004 as +52832 170004 as +closepath +fp +/drawmode PL_SET def +52832.0 176919.0 m +(The) 57220 0.00 -1 s +( following table describes what happens when the end points of a line are identical.) 149352 -119.93 32 s +52832.0 180080.0 m +(The) 57220 0.00 -1 s +( effect) 64315 -32.00 32 s +( depends on both the cap style and line width.) 115598 -32.56 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03657) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +79248.0 h +99568.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 21753 av +149352 21753 as +149352 21988 as +52832 21988 as +closepath +fp +/drawmode PL_SET def +52832.0 25739.0 m +(Cap\036Style) 64744 0.00 -1 s +79248.0 h +(Line\036Width) 93358 0.00 -1 s +99568.0 h +(Effect) 106773 0.00 -1 s +52832.0 28900.0 m +79248.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 28075 av +149352 28075 as +149352 28310 as +52832 28310 as +closepath +fp +/drawmode PL_SET def +52832.0 32060.0 m +(:butt) 58787 0.00 -1 s +4 sf +79248.0 h +(thin) 83638 0.00 -1 s +99568.0 h +(Device) 107559 0.00 -1 s +( dependent, but the desired) 137679 -52.75 32 s +52832.0 35221.0 m +79248.0 h +99568.0 h +(effect) 105989 0.00 -1 s +( is that a single pixel is) 131762 -16.00 32 s +( drawn.) 140208 -17.00 32 s +52832.0 38382.0 m +2 sf +41543.0 v +(:butt) 58787 0.00 -1 s +4 sf +79248.0 h +(wide) 84733 0.00 -1 s +99568.0 h +(Nothing) 108817 0.00 -1 s +( is drawn.) 119798 -35.00 32 s +52832.0 44704.0 m +2 sf +47865.0 v +(:not\036last) 62861 0.00 -1 s +4 sf +79248.0 h +(thin) 83638 0.00 -1 s +99568.0 h +(Device) 107559 0.00 -1 s +( dependent, but the desired) 137679 -52.75 32 s +52832.0 51026.0 m +79248.0 h +99568.0 h +(effect) 105989 0.00 -1 s +( is that nothing is drawn.) 133796 -19.80 32 s +52832.0 54187.0 m +57348.0 v +2 sf +(:projecting) 66152 0.00 -1 s +4 sf +79248.0 h +(thin) 83638 0.00 -1 s +99568.0 h +(Same as ) 109561 -20.00 32 s +2 sf +(:butt) 115516 0.00 -1 s +4 sf +( with thin line\036width.) 139282 -20.67 32 s +52832.0 60508.0 m +2 sf +63669.0 v +(:projecting) 66152 0.00 -1 s +4 sf +79248.0 h +(wide) 84733 0.00 -1 s +99568.0 h +(The) 103956 0.00 -1 s +( closed path is a square, aligned) 139576 -33.00 32 s +52832.0 66830.0 m +79248.0 h +99568.0 h +(with) 104584 0.00 -1 s +( the coordinate axes, centered at) 140592 -39.00 32 s +52832.0 69991.0 m +79248.0 h +99568.0 h +(the) 103016 0.00 -1 s +( end point, with sides equal to) 136645 -26.00 32 s +( the) 140772 -27.00 32 s +52832.0 73152.0 m +79248.0 h +99568.0 h +(line\036width.) 111872 0.00 -1 s +52832.0 76313.0 m +( ) 53532 -6.00 32 s +2 sf +52832.0 79474.0 m +(:round) 61142 0.00 -1 s +4 sf +79248.0 h +(wide) 84733 0.00 -1 s +99568.0 h +(The) 103956 0.00 -1 s +( closed path is a circle, centered) 139734 -31.83 32 s +52832.0 82635.0 m +79248.0 h +99568.0 h +(at the end point, with diameter equal) 140682 -31.50 32 s +52832.0 85796.0 m +79248.0 h +99568.0 h +(to) 101763 0.00 -1 s +( the) 105890 -27.00 32 s +( line\036width.) 118872 -28.00 32 s +52832.0 88956.0 m +2 sf +92117.0 v +(:round) 61142 0.00 -1 s +4 sf +79248.0 h +(thin) 83638 0.00 -1 s +99568.0 h +(Same) 105838 0.00 -1 s +( as ) 109561 -20.00 32 s +2 sf +(:butt) 115516 0.00 -1 s +( ) 116201 -21.00 32 s +4 sf +(with thin line\036width.) 139282 -20.50 32 s +52832.0 95278.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 94453 av +149352 94453 as +149352 94571 as +52832 94571 as +closepath +fp +/drawmode PL_SET def +/timsps10i 3 declareFont +3 sf +52832.0 101284.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 106070.0 m +(gcontext\036clip\036mask) 57426 0.00 -1 s +( ) 58064 -68.00 32 s +3 sf +(gcontext) 67624 0.00 -1 s +2 sf +( ) 68262 -68.00 32 s +4 sf +(&optional ) 80344 -68.00 32 s +3 sf +(ordering) 90221 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +4 sf +52832.0 110789.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73677 -27.00 32 s +2 sf +(setf) 77906 0.00 -1 s +4 sf +(\) changes the clip\036mask attribute of the graphics context.) 141721 -26.50 32 s +52832.0 117066.0 m +(When) 59571 0.00 -1 s +( changing the clip\036mask attribute, the new clip\036mask can be specified as a pixmap) 149352 -195.38 32 s +52832.0 120227.0 m +(or) 55182 0.00 -1 s +( a ) 57499 -174.00 32 s +2 sf +(rect\036seq) 67056 0.00 -1 s +4 sf +( or as the values ) 85072 -174.60 32 s +2 sf +(:none) 91813 0.00 -1 s +4 sf +( or ) 95226 -174.50 32 s +2 sf +(nil) 98363 0.00 -1 s +4 sf +(. The ordering argument can be specified only) 149352 -149.57 32 s +52832.0 123388.0 m +(with) 57848 0.00 -1 s +( ) 58530 -24.00 32 s +2 sf +(setf) 62759 0.00 -1 s +4 sf +( when) 69553 -24.00 32 s +( the new clip\036mask is a ) 96078 -20.50 32 s +2 sf +(rect\036seq) 105635 0.00 -1 s +4 sf +(.) 106341 0.00 -1 s +52832.0 129664.0 m +(The) 57220 0.00 -1 s +( clip\036mask attribute of a graphics context affects all graphics operations and is used) 149352 -140.92 32 s +52832.0 132825.0 m +(to) 55027 0.00 -1 s +( restrict output to the destination drawable. The clip\036mask does not clip the source of a) 149352 -221.87 32 s +52832.0 135986.0 m +(graphics) 62392 0.00 -1 s +( operation. A value of ) 88134 70.00 32 s +2 sf +(:none ) 95651 70.00 32 s +4 sf +(for clip\036mask indicates that no clipping is to be) 149352 70.13 32 s +52832.0 139147.0 m +(done.) 59024 0.00 -1 s +52832.0 145423.0 m +(If) 54710 0.00 -1 s +( a pixmap is specified as the clip\036mask, it must have depth one and the same root as the) 149352 -215.56 32 s +52832.0 148584.0 m +(specified) 63018 0.00 -1 s +( graphics context. Pixels where the clip\036mask has a one bit are drawn. Pixels) 149352 3.46 32 s +52832.0 151745.0 m +(outside) 60984 0.00 -1 s +( the area covered by the clip\036mask or where the clip\036mask has) 130036 -70.00 32 s +( a zero bit are not) 149352 -70.60 32 s +52832.0 154906.0 m +(drawn.) 60589 0.00 -1 s +52832.0 161183.0 m +(If) 54710 0.00 -1 s +( a sequence of rectangles is specified as the clip\036mask, the output is clipped to remain) 149352 -127.53 32 s +52832.0 164344.0 m +(contained) 63803 0.00 -1 s +( within the rectangles. The rectangles should be non\036intersecting, or the) 141575 -295.00 32 s +( results) 149352 -296.00 32 s +52832.0 167505.0 m +(of) 55182 0.00 -1 s +( graphics operations will be undefined. The rectangle coordinates are interpreted rela\036) 149352 -229.64 32 s +52832.0 170665.0 m +(tive) 57064 0.00 -1 s +( to the clip origin. Note that the sequence of rectangles can be empty, which effec\036) 149352 -48.87 32 s +52832.0 173826.0 m +(tively) 59259 0.00 -1 s +( disables output. This is the opposite of setting the clip\036mask to ) 131023 -22.83 32 s +2 sf +(:none) 137764 0.00 -1 s +4 sf +(.) 138470 0.00 -1 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03658) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(If) 54710 0.00 -1 s +( known by the client, the ordering of clip\036mask rectangles can be specified to provide) 149352 -119.57 32 s +52832.0 25739.0 m +(faster) 59098 0.00 -1 s +( operation by the server. A value of ) 97653 -264.75 32 s +2 sf +(:unsorted) 109253 0.00 -1 s +4 sf +( means the rectangles are in arbitrary) 149352 -264.50 32 s +52832.0 28900.0 m +(order.) 59491 0.00 -1 s +( A value of ) 72294 -130.00 32 s +2 sf +(:y\036sorted) 83106 0.00 -1 s +4 sf +( means that the rectangles are non\036decreasing in) 136345 -130.00 32 s +( their Y ori\036) 149352 -130.67 32 s +52832.0 32060.0 m +(gin.) 57144 0.00 -1 s +( A ) 60033 -280.00 32 s +2 sf +(:yx\036sorted) 72256 0.00 -1 s +4 sf +( value is like ) 86186 -280.00 32 s +2 sf +(:y\036sorted) 96998 0.00 -1 s +4 sf +( with the additional constraint that all rectangles) 149352 -279.71 32 s +52832.0 35221.0 m +(with) 57848 0.00 -1 s +( an equal Y origin are non\036decreasing in their X origin. A) 121911 -75.00 32 s +( ) 122541 -76.00 32 s +2 sf +(:yx\036banded) 136181 0.00 -1 s +4 sf +( value addi\036) 149352 -75.50 32 s +52832.0 38382.0 m +(tionally) 61454 0.00 -1 s +( constrains ) 74146 -81.00 32 s +2 sf +(:yx\036sorted) 86369 0.00 -1 s +4 sf +( by requiring that, for every possible Y scan line, all rec\036) 149352 -80.64 32 s +52832.0 41543.0 m +(tangles) 60826 0.00 -1 s +( that include that scan line have an identical Y origins and Y extents. If incorrect) 149352 -158.87 32 s +52832.0 44704.0 m +(ordering) 62391 0.00 -1 s +( is specified, the X server may generate an error, but it is not required to do so.) 147010 -241.00 32 s +( If) 149352 -242.00 32 s +52832.0 47865.0 m +(no) 55654 0.00 -1 s +( error is generated, the results of the graphics operations are undefined.) 135512 -28.00 32 s +/timsps10i 3 declareFont +3 sf +52832.0 54142.0 m +(gcontext) 62392 0.00 -1 s +( \037 ) 66223 -45.00 32 s +4 sf +(A) 68260 0.00 -1 s +( ) 68920 -46.00 32 s +2 sf +(gcontext) 79106 0.00 -1 s +4 sf +(.) 79812 0.00 -1 s +3 sf +52832.0 58928.0 m +(ordering) 62709 0.00 -1 s +( \037 ) 66560 -35.00 32 s +4 sf +(One of ) 74953 -35.00 32 s +2 sf +(:unsorted) 86553 0.00 -1 s +4 sf +(, ) 87930 -35.00 32 s +2 sf +(:y\036sorted) 98742 0.00 -1 s +4 sf +(, ) 100120 -34.00 32 s +2 sf +(:yx\036banded) 113760 0.00 -1 s +4 sf +(, ) 115137 -35.00 32 s +2 sf +(:yx\036sorted) 127360 0.00 -1 s +4 sf +(, or ) 131759 -34.50 32 s +2 sf +(nil) 134896 0.00 -1 s +4 sf +(.) 135602 0.00 -1 s +2 sf +34544.0 63714.0 m +(gcontext\036clip\036x) 52409 0.00 -1 s +( ) 53003 -112.00 32 s +3 sf +(gcontext) 62563 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 66875.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 70036.0 m +( clip\036x ) 61309 -21.67 32 s +4 sf +(\037 Type ) 71299 -21.50 32 s +2 sf +(int16) 77413 0.00 -1 s +4 sf +(.) 78119 0.00 -1 s +52832.0 74755.0 m +(Returns) 61610 0.00 -1 s +( and) 66365 -26.00 32 s +( \(with ) 73679 -26.50 32 s +2 sf +(setf) 77908 0.00 -1 s +4 sf +(\) changes the clip\036x attribute of the specified graphics context.) 148042 -26.56 32 s +52832.0 81032.0 m +(The) 57220 0.00 -1 s +( clip\036x and clip\036y attributes specify the origin for the clip\036mask, whether it) 139844 -96.00 32 s +( is a pix\036) 149352 -96.67 32 s +52832.0 84193.0 m +(map) 57691 0.00 -1 s +( or a) 62366 -170.00 32 s +( sequence of rectangles. These coordinates are interpreted relative to the origin) 149352 -170.55 32 s +52832.0 87353.0 m +(of) 55182 0.00 -1 s +( whatever destination drawable is specified in a graphics operation.) 130748 -32.56 32 s +3 sf +52832.0 93630.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 98417.0 m +(gcontext\036clip\036y) 52409 0.00 -1 s +( ) 53003 -112.00 32 s +3 sf +(gcontext) 62563 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 101577.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 104738.0 m +( clip\036y ) 61309 -21.67 32 s +4 sf +(\037 Type ) 71299 -21.50 32 s +2 sf +(int16) 77413 0.00 -1 s +4 sf +(.) 78119 0.00 -1 s +52832.0 109457.0 m +(Returns) 61610 0.00 -1 s +( and) 66365 -26.00 32 s +( \(with ) 73679 -26.50 32 s +2 sf +(setf) 77908 0.00 -1 s +4 sf +(\) changes the clip\036y attribute of the specified graphics context.) 148042 -26.56 32 s +52832.0 115734.0 m +(The) 57220 0.00 -1 s +( clip\036x and clip\036y attributes specify the origin for the clip\036mask, whether it) 139844 -96.00 32 s +( is a pix\036) 149352 -96.67 32 s +52832.0 118895.0 m +(map) 57691 0.00 -1 s +( or a) 62366 -170.00 32 s +( sequence of rectangles. These coordinates are interpreted relative to the origin) 149352 -170.55 32 s +52832.0 122055.0 m +(of) 55182 0.00 -1 s +( whatever destination drawable is specified in a graphics operation.) 130748 -32.56 32 s +3 sf +52832.0 128332.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 133119.0 m +(gcontext\036dash\036offset) 58834 0.00 -1 s +( ) 59438 -102.00 32 s +3 sf +(gcontext) 68998 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 136279.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 139440.0 m +( dash\036offset ) 67241 -31.00 32 s +4 sf +(\037 Type) 76537 -31.00 32 s +( ) 77211 -32.00 32 s +2 sf +(card16) 85519 0.00 -1 s +4 sf +(.) 86225 0.00 -1 s +52832.0 144159.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73518 -80.00 32 s +2 sf +(setf) 77747 0.00 -1 s +4 sf +(\) changes the dash\036offset attribute) 115667 -80.00 32 s +( of the specified graphics con\036) 149352 -80.60 32 s +52832.0 147320.0 m +(text.) 57770 0.00 -1 s +52832.0 153597.0 m +(The) 57220 0.00 -1 s +( dash\036offset attribute of a graphics context defines the phase of the pattern) 137913 -237.00 32 s +( contained) 149352 -238.00 32 s +52832.0 156758.0 m +(in) 55027 0.00 -1 s +( the dashes attribute. This phase specifies how many elements \(pixels\) into) 136312 -277.00 32 s +( the path the) 149352 -277.67 32 s +52832.0 159918.0 m +(pattern) 60667 0.00 -1 s +( should actually begin in any single graphics operation. Dashing is continuous) 149352 53.09 32 s +52832.0 163079.0 m +(through) 61610 0.00 -1 s +( path elements combined with a join\036style, but is reset to the dash\036offset each) 149352 57.46 32 s +52832.0 166240.0 m +(time) 57848 0.00 -1 s +( a cap\036style is applied at a line end point.) 103722 -23.56 32 s +3 sf +52832.0 172517.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 177303.0 m +(gcontext\036dashes) 53667 0.00 -1 s +( ) 54245 -128.00 32 s +3 sf +(gcontext) 63805 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 180464.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 183625.0 m +( dashes ) 62527 -35.00 32 s +4 sf +(\037 Type ) 72490 -35.00 32 s +2 sf +(sequence) 83307 0.00 -1 s +4 sf +( or) 86328 -35.00 32 s +( ) 86998 -36.00 32 s +2 sf +(card8) 93895 0.00 -1 s +4 sf +(.) 94601 0.00 -1 s +52832.0 188344.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73770 4.00 32 s +2 sf +(setf) 77999 0.00 -1 s +4 sf +(\) changes the dashes attribute of the specified graphics context.) 149352 4.22 32 s +52832.0 191505.0 m +(The) 57220 0.00 -1 s +( sequence) 68228 -41.00 32 s +( must be non\036empty and the elements must be non\036zero ) 130985 -41.50 32 s +2 sf +(card8) 137882 0.00 -1 s +4 sf +( values.) 146462 -42.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03659) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( dashes attribute in a graphics context specifies the pattern that is used for graphics) 149352 -91.86 32 s +52832.0 25739.0 m +(operations) 64587 0.00 -1 s +( which) 72114 -75.00 32 s +( use the dashed line styles. It is a non\036) 114231 -75.56 32 s +2 sf +(nil) 117368 0.00 -1 s +4 sf +( sequence with each element) 149352 -75.50 32 s +52832.0 28900.0 m +(representing) 66779 0.00 -1 s +( the) 70780 -153.00 32 s +( length of a single dash or space. The initial and alternating elements of) 149352 -153.54 32 s +52832.0 32060.0 m +(the) 56280 0.00 -1 s +( dashes are the even dashes, while the others are the odd dashes. An odd length) 145369 -12.00 32 s +( se\036) 149352 -13.00 32 s +52832.0 35221.0 m +(quence) 60824 0.00 -1 s +( is equivalent to the same sequence concatenated with itself to produce an even) 149352 -56.62 32 s +52832.0 38382.0 m +(length) 59886 0.00 -1 s +( sequence. All of the elements of a) 98676 -34.00 32 s +( dashes sequence must be non\036zero.) 138786 -34.60 32 s +52832.0 44659.0 m +(Specifying) 65058 0.00 -1 s +( a single integer value, ) 91505 54.00 32 s +/timsps10i 3 declareFont +3 sf +(N) 93387 0.00 -1 s +4 sf +(,) 94093 0.00 -1 s +( for the dashes attribute is an abbreviated way of) 149352 53.44 32 s +52832.0 47820.0 m +(specifying) 64587 0.00 -1 s +( a two element sequence with both elements equal to the specified value [) 146764 -62.92 32 s +3 sf +(N) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +52832.0 50981.0 m +3 sf +(N) 54714 0.00 -1 s +4 sf +(].) 56359 0.00 -1 s +52832.0 57257.0 m +(The) 57220 0.00 -1 s +( unit of measure for dashes is the same as in the ordinary coordinate system.) 140312 -206.00 32 s +( Ideally,) 149352 -207.00 32 s +52832.0 60418.0 m +(a) 54085 0.00 -1 s +( dash length is measured along the slope of the line,) 109528 -295.00 32 s +( but server implementations are only) 149352 -295.60 32 s +52832.0 63579.0 m +(required) 62233 0.00 -1 s +( to match this ideal for horizontal and vertical lines.) 120317 -25.00 32 s +3 sf +52832.0 69856.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 74642.0 m +(gcontext\036display) 54295 0.00 -1 s +4 sf +( ) 54877 -124.00 32 s +3 sf +(gcontext) 64437 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 77803.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 80964.0 m +( display ) 63036 -22.00 32 s +4 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +4 sf +(. ) 83041 -22.00 32 s +52832.0 85683.0 m +(Returns) 61610 0.00 -1 s +( the ) 66406 -32.00 32 s +2 sf +(display) 75032 0.00 -1 s +4 sf +( object associated with the) 104686 -32.00 32 s +( specified ) 116219 -32.50 32 s +3 sf +(gcontext) 125779 0.00 -1 s +4 sf +(. ) 127158 -33.00 32 s +3 sf +52832.0 91959.0 m +(gcontext) 62392 0.00 -1 s +( \037) 65572 -35.00 32 s +( ) 66242 -36.00 32 s +4 sf +(A ) 68950 -35.00 32 s +2 sf +(gcontext) 79136 0.00 -1 s +4 sf +(. ) 80512 -36.00 32 s +2 sf +34544.0 96746.0 m +(gcontext\036equal) 52255 0.00 -1 s +( ) 52860 -101.00 32 s +3 sf +(gcontext\0361) 64770 0.00 -1 s +4 sf +( ) 65374 -102.00 32 s +3 sf +(gcontext\0362) 77284 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 99907.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 103068.0 m +( equal\036p ) 63462 -36.00 32 s +4 sf +(\037 Type ) 73424 -35.50 32 s +2 sf +(boolean) 82832 0.00 -1 s +4 sf +(.) 83538 0.00 -1 s +52832.0 107786.0 m +(Returns) 61610 0.00 -1 s +( true if the two arguments refer to the same server resource, and ) 130769 -273.85 32 s +2 sf +(nil) 133906 0.00 -1 s +4 sf +( if they do not.) 149352 -273.50 32 s +3 sf +52832.0 114063.0 m +(gcontext\0361) 64742 0.00 -1 s +4 sf +(,) 65448 0.00 -1 s +( ) 66103 -51.00 32 s +3 sf +(gcontext\0362 ) 78668 -51.00 32 s +4 sf +(\037 A ) 84838 -50.50 32 s +2 sf +(gcontext) 95024 0.00 -1 s +4 sf +(.) 95730 0.00 -1 s +2 sf +34544.0 118849.0 m +(gcontext\036exposures) 57584 0.00 -1 s +( ) 58128 -162.00 32 s +3 sf +(gcontext) 67688 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 122010.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 125171.0 m +( exposures ) 66194 -14.00 32 s +4 sf +(\037 Either ) 77295 -14.00 32 s +2 sf +(:off) 81523 0.00 -1 s +4 sf +( or ) 85257 -14.00 32 s +2 sf +(:on) 89176 0.00 -1 s +4 sf +(.) 89882 0.00 -1 s +52832.0 129890.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73830 24.00 32 s +2 sf +(setf) 78059 0.00 -1 s +4 sf +(\) changes the exposures attribute of the specified graphics con\036) 149352 24.00 32 s +52832.0 133051.0 m +(text.) 57770 0.00 -1 s +52832.0 139327.0 m +(The) 57220 0.00 -1 s +( exposures attribute in a graphics context controls the generation of ) 130543 -295.00 32 s +2 sf +(:graphics\036expo\036) 149352 0.00 -1 s +52832.0 142488.0 m +(sure) 58005 0.00 -1 s +4 sf +( events) 65827 -94.00 32 s +( for calls to the ) 82988 -94.60 32 s +2 sf +(copy\036area) 94899 0.00 -1 s +4 sf +( and ) 100197 -94.50 32 s +2 sf +(copy\036plane) 113366 0.00 -1 s +4 sf +( functions. If ) 128287 -94.33 32 s +2 sf +(:on) 132206 0.00 -1 s +4 sf +(, ) 133523 -95.00 32 s +2 sf +(:graphics\036ex\036) 149352 0.00 -1 s +52832.0 145649.0 m +(posure) 60985 0.00 -1 s +4 sf +( events will be reported) 87489 4.00 32 s +( when calling the ) 107567 3.50 32 s +2 sf +(copy\036area) 119478 0.00 -1 s +4 sf +( and ) 124972 3.50 32 s +2 sf +(copy\036plane) 138141 0.00 -1 s +4 sf +( functions) 149352 3.00 32 s +52832.0 148810.0 m +(with) 57848 0.00 -1 s +( this graphics context. Otherwise, if ) 98633 -21.00 32 s +2 sf +(:off) 102861 0.00 -1 s +4 sf +(, the events will not be reported.) 139102 -20.83 32 s +3 sf +52832.0 155087.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 159873.0 m +(gcontext\036fill\036rule) 54758 0.00 -1 s +( ) 55374 -90.00 32 s +3 sf +(gcontext) 64934 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 163034.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 166195.0 m +( fill\036rule ) 63520 -17.00 32 s +4 sf +(\037 Either ) 74615 -17.00 32 s +2 sf +(:even\036odd) 86528 0.00 -1 s +4 sf +( or ) 90255 -17.50 32 s +2 sf +(:winding) 100917 0.00 -1 s +4 sf +(.) 101623 0.00 -1 s +52832.0 170914.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73497 -87.00 32 s +2 sf +(setf) 77726 0.00 -1 s +4 sf +(\) changes the fill\036rule attribute of the specified graphics context.) 149352 -86.89 32 s +52832.0 177190.0 m +(The) 57220 0.00 -1 s +( fill\036rule) 66396 -147.00 32 s +( attribute in a graphics context specifies the rule used to determine the inte\036) 149352 -147.54 32 s +52832.0 180351.0 m +(rior) 56905 0.00 -1 s +( of a filled area. It can be specified as either ) 106660 -21.64 32 s +2 sf +(:even\036odd) 118573 0.00 -1 s +4 sf +( or ) 122292 -21.50 32 s +2 sf +(:winding) 132954 0.00 -1 s +4 sf +(.) 133660 0.00 -1 s +52832.0 186628.0 m +(The) 57220 0.00 -1 s +( ) 57953 27.00 32 s +2 sf +(:even\036odd) 69866 0.00 -1 s +4 sf +( rule defines a point to be inside if any infinite ray starting at the point) 149352 27.00 32 s +52832.0 189789.0 m +(crosses) 60982 0.00 -1 s +( the border an odd number of times. Tangencies do) 118247 -29.00 32 s +( not count as a crossing.) 145220 -29.60 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03660) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( ) 58031 105.00 32 s +2 sf +(:winding) 68693 0.00 -1 s +4 sf +( rule defines a point to be inside if any infinite ray starting at the point) 149352 105.20 32 s +52832.0 25739.0 m +(crosses) 60982 0.00 -1 s +( an unequal number of clockwise and counterclockwise directed border seg\036) 149352 248.40 32 s +52832.0 28900.0 m +(ments.) 60279 0.00 -1 s +( A clockwise directed border segment crosses the ray from left to) 135381 138.00 32 s +( right as ob\036) 149352 137.33 32 s +52832.0 32060.0 m +(served) 60197 0.00 -1 s +( from the point. A counterclockwise segment crosses the ray from right to left as) 149352 -119.71 32 s +52832.0 35221.0 m +(observed) 63019 0.00 -1 s +( from the point. The case where a directed line) 114749 -86.00 32 s +( segment is coincident with the) 149352 -86.60 32 s +52832.0 38382.0 m +(ray) 56435 0.00 -1 s +( is uninteresting because you can simply choose a different) 121542 -159.00 32 s +( ray that is not coincident) 149352 -159.60 32 s +52832.0 41543.0 m +(with) 57848 0.00 -1 s +( a segment.) 70556 -34.00 32 s +52832.0 47820.0 m +(For) 56751 0.00 -1 s +( both ) 63080 -50.00 32 s +2 sf +(:even\036odd) 74993 0.00 -1 s +4 sf +( and ) 80380 -50.00 32 s +2 sf +(:winding) 91042 0.00 -1 s +4 sf +(, a point is infinitely small, and) 125860 -50.00 32 s +( the border is an infi\036) 149352 -50.60 32 s +52832.0 50981.0 m +(nitely) 59259 0.00 -1 s +( thin line. A pixel is inside if the center point of the pixel is inside, and the) 141826 -72.00 32 s +( center) 149352 -73.00 32 s +52832.0 54142.0 m +(point) 58633 0.00 -1 s +( is not on the border. If the center point is on the border, the pixel is inside if, and) 149352 -51.74 32 s +52832.0 57302.0 m +(only) 57849 0.00 -1 s +( if, the polygon interior is immediately to its right \(x) 117020 15.00 32 s +( increasing direction\). Pixels) 149352 14.33 32 s +52832.0 60463.0 m +(with) 57848 0.00 -1 s +( centers along a horizontal edge are a special case and are inside if, and only if, the) 149352 -107.71 32 s +52832.0 63624.0 m +(polygon) 62082 0.00 -1 s +( interior is immediately below \(y increasing direction\).) 123613 -31.86 32 s +/timsps10i 3 declareFont +3 sf +52832.0 69901.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 74687.0 m +(gcontext\036fill\036style) 55384 0.00 -1 s +( ) 56028 -62.00 32 s +3 sf +(gcontext) 65588 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 77848.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 81009.0 m +( fill\036style ) 64155 -14.00 32 s +4 sf +(\037 One of ) 76104 -14.00 32 s +2 sf +(:opaque\036stippled) 96329 0.00 -1 s +4 sf +(, ) 97727 -14.00 32 s +2 sf +(:solid) 104312 0.00 -1 s +4 sf +(, ) 105710 -14.00 32 s +2 sf +(:stippled) 116214 0.00 -1 s +4 sf +(, or :) 121439 -13.50 32 s +2 sf +(tiled) 126768 0.00 -1 s +4 sf +(.) 127474 0.00 -1 s +52832.0 85728.0 m +(Returns) 61610 0.00 -1 s +( and) 66226 -165.00 32 s +( \(with ) 73262 -165.50 32 s +2 sf +(setf) 77491 0.00 -1 s +4 sf +(\) changes the fill\036style attribute of the specified graphics context.) 149352 -165.56 32 s +52832.0 92004.0 m +(The) 57220 0.00 -1 s +( fill\036style attribute of a graphics context defines the contents) 124640 -41.00 32 s +( of the source for line,) 149352 -41.60 32 s +52832.0 95165.0 m +(text,) 57770 0.00 -1 s +( and fill graphics operations. It determines whether the source image is drawn with a) 149352 -270.86 32 s +52832.0 98326.0 m +(solid) 58320 0.00 -1 s +( color, a tile, or a stippled tile. The possible values and their meanings are as fol\036) 149352 2.44 32 s +52832.0 101487.0 m +(lows:) 58946 0.00 -1 s +( ) 59650 -2.00 32 s +2 sf +52832.0 107764.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 106939 av +149352 106939 as +149352 107174 as +52832 107174 as +closepath +fp +/drawmode PL_SET def +52832.0 110925.0 m +(Fill\036Style) 63803 0.00 -1 s +79248.0 h +85344.0 h +(Meaning) 96005 0.00 -1 s +52832.0 114086.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 113261 av +149352 113261 as +149352 113496 as +52832 113496 as +closepath +fp +/drawmode PL_SET def +52832.0 117246.0 m +(:opaque\036stippled) 73057 0.00 -1 s +4 sf +85344.0 h +(Filled) 91929 0.00 -1 s +( with a tile with the same width and height as) 142827 -20.60 32 s +85344.0 120407.0 m +(stipple,) 93575 0.00 -1 s +( but with the background value used everywhere) 148042 -44.57 32 s +85344.0 123568.0 m +(stipple) 92869 0.00 -1 s +( has a zero and the foreground pixel value used) 145785 -32.89 32 s +85344.0 126729.0 m +(everywhere) 98504 0.00 -1 s +( stipple has a) 113042 -40.00 32 s +( one.) 118488 -41.00 32 s +85344.0 129890.0 m +2 sf +52832.0 133051.0 m +(:solid) 59417 0.00 -1 s +4 sf +85344.0 h +(Filled) 91929 0.00 -1 s +( with the) 101733 -36.00 32 s +( foreground pixel value.) 128738 -36.67 32 s +85344.0 136212.0 m +2 sf +52832.0 139373.0 m +(:stippled) 63336 0.00 -1 s +4 sf +85344.0 h +(Filled with the foreground pixel value) 128034 -36.00 32 s +( masked) 137326 -35.00 32 s +( by) 140818 -36.00 32 s +85344.0 142534.0 m +(stipple.) 93575 0.00 -1 s +85344.0 145694.0 m +2 sf +52832.0 148855.0 m +(:tiled) 59100 0.00 -1 s +4 sf +85344.0 h +(Filled) 91929 0.00 -1 s +( with) 97637 -14.00 32 s +( tile.) 102639 -15.00 32 s +52832.0 152016.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 151191 av +149352 151191 as +149352 151309 as +52832 151309 as +closepath +fp +/drawmode PL_SET def +52832.0 158225.0 m +(When) 59571 0.00 -1 s +( drawing lines with line\036style ) 92334 -172.00 32 s +2 sf +(:double\036dash) 108014 0.00 -1 s +4 sf +(, the filling of the odd dashes are con\036) 149352 -171.88 32 s +52832.0 161386.0 m +(trolled) 60198 0.00 -1 s +( by the fill\036style in the following manner: ) 107402 -16.88 32 s +2 sf +52832.0 167663.0 m +83312.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 166838 av +149352 166838 as +149352 167073 as +52832 167073 as +closepath +fp +/drawmode PL_SET def +52832.0 170823.0 m +(Fill\036Style) 63803 0.00 -1 s +83312.0 h +(Effect) 90517 0.00 -1 s +52832.0 173984.0 m +83312.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 173159 av +149352 173159 as +149352 173394 as +52832 173394 as +closepath +fp +/drawmode PL_SET def +52832.0 177145.0 m +(:opaque\036stippled) 73057 0.00 -1 s +83312.0 h +4 sf +(Same) 89582 0.00 -1 s +( as) 92605 -34.00 32 s +( for even dashes.) 111466 -34.67 32 s +52832.0 180306.0 m +2 sf +183467.0 v +(:solid) 59417 0.00 -1 s +4 sf +83312.0 h +(Filled) 89897 0.00 -1 s +( with the) 99685 -44.00 32 s +( background pixel value.) 127452 -44.67 32 s +52832.0 186628.0 m +2 sf +189789.0 v +(:stippled) 63336 0.00 -1 s +4 sf +83312.0 h +(Filled) 89897 0.00 -1 s +( with the background pixel value masked by) 139531 -41.71 32 s +52832.0 192950.0 m +83312.0 h +(stipple.) 91543 0.00 -1 s +52832.0 196111.0 m +2 sf +199271.0 v +(:tiled) 59100 0.00 -1 s +4 sf +83312.0 h +(Filled) 89897 0.00 -1 s +( the same as the even dashes.) 122552 -30.83 32 s +52832.0 202432.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 201607 av +149352 201607 as +149352 201725 as +52832 201725 as +closepath +fp +/drawmode PL_SET def +eop +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03661) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 3 declareFont +3 sf +52832.0 22578.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +/timsps10 4 declareFont +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 27364.0 m +(gcontext\036font) 50527 0.00 -1 s +( ) 51180 -53.00 32 s +3 sf +(gcontext ) 61393 -53.00 32 s +4 sf +(&optional ) 73490 -53.00 32 s +3 sf +(metrics\036p) 84147 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 30525.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63088 -12.00 32 s +3 sf +( ) 63782 -12.00 32 s +52832.0 33686.0 m +( font ) 59290 -16.67 32 s +4 sf +(\037 Type ) 69290 -16.50 32 s +2 sf +(font) 74148 0.00 -1 s +4 sf +( or ) 77877 -16.50 32 s +2 sf +(null) 82583 0.00 -1 s +4 sf +(.) 83289 0.00 -1 s +52832.0 38405.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 72996 -254.00 32 s +2 sf +(setf) 77225 0.00 -1 s +4 sf +(\) changes the ) 92058 -254.00 32 s +3 sf +(font) 96448 0.00 -1 s +4 sf +( attribute of the specified graphics context. If the) 149352 -253.75 32 s +52832.0 41566.0 m +(stored) 59728 0.00 -1 s +( font is known, it is returned. If it) 96289 -113.00 32 s +( is not known and the ) 120536 -113.50 32 s +3 sf +(metrics\036p) 131193 0.00 -1 s +4 sf +( argument is ) 145509 -113.67 32 s +2 sf +(nil) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +52832.0 44727.0 m +(then) 57691 0.00 -1 s +( ) 58298 -99.00 32 s +2 sf +(nil) 61435 0.00 -1 s +4 sf +( is returned. If the font is not known and) 106002 -99.00 32 s +( ) 106608 -100.00 32 s +3 sf +(metrics\036p) 117265 0.00 -1 s +4 sf +( is true, then a pseudo\036font is) 149352 -99.50 32 s +52832.0 47887.0 m +(constructed) 65840 0.00 -1 s +( and returned. For a) 87298 -180.00 32 s +( constructed pseudo\036font, full metric and property infor\036) 149352 -180.57 32 s +52832.0 51048.0 m +(mation) 60670 0.00 -1 s +( can) 65065 -228.00 32 s +( be obtained, but it does not have a name or a resource ID, and attempts to use) 149352 -228.53 32 s +52832.0 54209.0 m +(it) 54400 0.00 -1 s +( where a resource ID is required results in an invalid\036font error.) 125690 -15.73 32 s +52832.0 60486.0 m +(The) 57220 0.00 -1 s +( font attribute in a graphics context defines the default text font used in text) 139586 -185.00 32 s +( drawing) 149352 -186.00 32 s +52832.0 63647.0 m +(operations.) 65293 0.00 -1 s +( When setting the value) 92373 108.00 32 s +( of the font attribute, either a ) 126196 107.43 32 s +2 sf +(font) 131054 0.00 -1 s +4 sf +( object or a font) 149352 107.50 32 s +52832.0 66808.0 m +(name) 58944 0.00 -1 s +( can be used. If) 74974 -283.00 32 s +( a font name is passed, ) 99531 -283.50 32 s +2 sf +(open\036font) 111130 0.00 -1 s +4 sf +( is call automatically to get the ) 144494 -283.57 32 s +2 sf +(font) 149352 0.00 -1 s +4 sf +52832.0 69969.0 m +(object.) 60434 0.00 -1 s +3 sf +52832.0 76245.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +3 sf +52832.0 81032.0 m +(metrics\036p) 63489 0.00 -1 s +( ) 63969 -226.00 32 s +4 sf +(\037 Specifies whether a pseudo\036font is returned when the real font stored in the) 149352 -225.92 32 s +57912.0 84193.0 m +(graphics) 67472 0.00 -1 s +( context is not known. The default is) 110374 239.00 32 s +( ) 111318 238.00 32 s +2 sf +(nil) 114455 0.00 -1 s +4 sf +(, which means do not return a) 149352 238.50 32 s +57912.0 87353.0 m +(pseudo\036font.) 72097 0.00 -1 s +2 sf +34544.0 92140.0 m +(gcontext\036foreground) 59307 0.00 -1 s +4 sf +( ) 59822 -191.00 32 s +3 sf +(gcontext) 69382 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 95301.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 98462.0 m +( foreground ) 67529 -40.00 32 s +4 sf +(\037 Type) 76816 -40.00 32 s +( ) 77481 -41.00 32 s +2 sf +(card32) 85789 0.00 -1 s +4 sf +(.) 86495 0.00 -1 s +52832.0 103180.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73518 -80.00 32 s +2 sf +(setf) 77747 0.00 -1 s +4 sf +(\) changes the foreground attribute) 115667 -80.00 32 s +( of the specified graphics con\036) 149352 -80.60 32 s +52832.0 106341.0 m +(text.) 57770 0.00 -1 s +52832.0 112618.0 m +(The) 57220 0.00 -1 s +( foreground attribute of a graphics context specifies the pixel value drawn for set bits) 149352 -270.64 32 s +52832.0 115779.0 m +(in) 55027 0.00 -1 s +( a bitmap and for bits set by a graphics operation. ) 111218 -21.82 32 s +3 sf +52832.0 122055.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 126842.0 m +(gcontext\036function) 55702 0.00 -1 s +3 sf +( gcontext) 65837 -131.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 130003.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 133164.0 m +( function ) 64095 -34.67 32 s +4 sf +(\037 Type ) 74059 -34.50 32 s +2 sf +(boole\036constant) 91615 0.00 -1 s +4 sf +(.) 92321 0.00 -1 s +52832.0 137882.0 m +(Returns) 61610 0.00 -1 s +( the ) 66408 -31.00 32 s +3 sf +(function) 75657 0.00 -1 s +4 sf +( of the specified graphics context. ) 114266 -30.67 32 s +52832.0 144159.0 m +(In) 55182 0.00 -1 s +( all graphic operations, given a source pixel and a corresponding destination pixel, the) 149352 -225.77 32 s +52832.0 147320.0 m +(resulting) 62707 0.00 -1 s +( pixel drawn is computed bitwise on the bits of the source and destination pix\036) 149352 -114.93 32 s +52832.0 150481.0 m +(els.) 56673 0.00 -1 s +( That is, a logical operation is used to combine each bit plane of corresponding) 149352 265.93 32 s +52832.0 153642.0 m +(source) 60197 0.00 -1 s +( and destination pixels. The graphics context function attribute specifies the logi\036) 149352 -202.64 32 s +52832.0 156803.0 m +(cal) 56122 0.00 -1 s +( operation used via one of the 16 operation) 104424 3.00 32 s +( codes defined by Common Lisp for the) 149352 2.43 32 s +52832.0 159964.0 m +2 sf +(boole) 59260 0.00 -1 s +4 sf +( function.) 69991 -85.00 32 s +52832.0 166240.0 m +(The) 57220 0.00 -1 s +( following table shows each of the logical) 103797 -75.00 32 s +( operation codes that can be given by the) 149352 -66.13 32 s +52832.0 169401.0 m +(function) 62236 0.00 -1 s +( attribute. For each operation code, its result is shown as a logical function of a) 149352 -159.06 32 s +52832.0 172562.0 m +(source) 60197 0.00 -1 s +( pixel) 66511 -35.00 32 s +( ) 67181 -36.00 32 s +3 sf +(S) 68592 0.00 -1 s +4 sf +( and a destination pixel ) 95335 -28.40 32 s +3 sf +(D) 97372 0.00 -1 s +4 sf +(.) 98078 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03662) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +83312.0 h +99568.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +/timsps10 4 declareFont +4 17 fillpatset +newpath +52832 21753 av +149352 21753 as +149352 21988 as +52832 21988 as +closepath +fp +/drawmode PL_SET def +52832.0 25739.0 m +(Symbol) 61926 0.00 -1 s +83312.0 h +(Result) 90992 0.00 -1 s +52832.0 28900.0 m +83312.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 28075 av +149352 28075 as +149352 28310 as +52832 28310 as +closepath +fp +/drawmode PL_SET def +52832.0 32060.0 m +(boole\0361) 61610 0.00 -1 s +4 sf +83312.0 h +/timsps10i 3 declareFont +3 sf +(S) 84723 0.00 -1 s +2 sf +52832.0 35221.0 m +(boole\0362) 61610 0.00 -1 s +4 sf +83312.0 h +3 sf +(D) 85349 0.00 -1 s +2 sf +52832.0 38382.0 m +(boole\036andc1) 67412 0.00 -1 s +4 sf +83312.0 h +(\(logandc1) 94596 0.00 -1 s +( ) 95261 -41.00 32 s +3 sf +(S) 96672 0.00 -1 s +4 sf +( ) 97337 -41.00 32 s +3 sf +(D) 99374 0.00 -1 s +4 sf +(\)) 100313 0.00 -1 s +2 sf +52832.0 41543.0 m +(boole\036andc2) 67412 0.00 -1 s +( ) 68027 -91.00 32 s +4 sf +83312.0 h +(\(logandc2) 94596 0.00 -1 s +( ) 95261 -41.00 32 s +3 sf +(S D) 99374 -41.00 32 s +4 sf +(\)) 100313 0.00 -1 s +2 sf +52832.0 44704.0 m +(boole\036and) 64748 0.00 -1 s +4 sf +83312.0 h +(\(logand) 91932 0.00 -1 s +( ) 92608 -30.00 32 s +3 sf +(S D) 96732 -30.00 32 s +4 sf +(\)) 97671 0.00 -1 s +2 sf +52832.0 47865.0 m +(boole\036c1) 62863 0.00 -1 s +4 sf +83312.0 h +(\(lognot) 91463 0.00 -1 s +( ) 92151 -18.00 32 s +3 sf +( S) 94249 -19.00 32 s +4 sf +(\)) 95188 0.00 -1 s +2 sf +52832.0 51026.0 m +(boole\036c2) 62863 0.00 -1 s +4 sf +83312.0 h +(\(lognot) 91463 0.00 -1 s +( ) 92154 -15.00 32 s +( ) 92844 -16.00 32 s +3 sf +(D) 94881 0.00 -1 s +4 sf +(\)) 95820 0.00 -1 s +2 sf +52832.0 54187.0 m +(boole\036clr) 63489 0.00 -1 s +( ) 64143 -52.00 32 s +4 sf +83312.0 h +(0) 84723 0.00 -1 s +2 sf +52832.0 57348.0 m +(boole\036eqv) 64432 0.00 -1 s +4 sf +83312.0 h +(\(logeqv) 91932 0.00 -1 s +( ) 92608 -30.00 32 s +3 sf +(S D) 96732 -30.00 32 s +4 sf +(\)) 97671 0.00 -1 s +2 sf +52832.0 60508.0 m +(boole\036ior) 63647 0.00 -1 s +4 sf +83312.0 h +(\(logior) 90991 0.00 -1 s +( ) 91686 -11.00 32 s +3 sf +(S D) 95829 -11.00 32 s +4 sf +(\)) 96768 0.00 -1 s +2 sf +52832.0 63669.0 m +(boole\036nand) 66317 0.00 -1 s +4 sf +83312.0 h +(\(lognand) 93343 0.00 -1 s +( ) 94014 -35.00 32 s +3 sf +(S) 95425 0.00 -1 s +( D) 98132 -36.00 32 s +4 sf +(\)) 99071 0.00 -1 s +2 sf +52832.0 66830.0 m +(boole\036nor) 64432 0.00 -1 s +4 sf +83312.0 h +(\(lognor) 91618 0.00 -1 s +( ) 92305 -19.00 32 s +3 sf +(S) 93716 0.00 -1 s +( D) 96439 -20.00 32 s +4 sf +(\)) 97378 0.00 -1 s +2 sf +52832.0 69991.0 m +(boole\036orc1) 65527 0.00 -1 s +4 sf +83312.0 h +(\(logorc1) 92871 0.00 -1 s +( ) 93552 -25.00 32 s +3 sf +(S D) 97681 -25.00 32 s +4 sf +(\)) 98620 0.00 -1 s +2 sf +52832.0 73152.0 m +(boole\036orc2) 65527 0.00 -1 s +4 sf +83312.0 h +(\(logorc2 ) 93552 -25.00 32 s +3 sf +(S D) 97681 -25.00 32 s +4 sf +(\)) 98620 0.00 -1 s +2 sf +52832.0 76313.0 m +(boole\036set) 63489 0.00 -1 s +4 sf +83312.0 h +(1) 84723 0.00 -1 s +2 sf +52832.0 79474.0 m +(boole\036xor) 64274 0.00 -1 s +4 sf +83312.0 h +(\(logxor) 91618 0.00 -1 s +3 sf +( S) 93716 -19.00 32 s +( D) 96439 -20.00 32 s +4 sf +(\)) 97378 0.00 -1 s +2 sf +52832.0 82635.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 81810 av +149352 81810 as +149352 82045 as +52832 82045 as +closepath +fp +/drawmode PL_SET def +3 sf +52832.0 88844.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 93630.0 m +(gcontext\036id) 48022 0.00 -1 s +( ) 48623 -105.00 32 s +3 sf +(gcontext) 58183 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 96791.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 99952.0 m +( id ) 57055 -30.00 32 s +4 sf +(\037 Type ) 67029 -29.50 32 s +2 sf +(resource\036id) 80664 0.00 -1 s +4 sf +(.) 81370 0.00 -1 s +52832.0 104671.0 m +(Returns) 61610 0.00 -1 s +( the unique ID that has been assigned to the specified graphics context.) 141247 -31.92 32 s +3 sf +52832.0 110947.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 115734.0 m +(gcontext\036join\036style) 56796 0.00 -1 s +( ) 57406 -96.00 32 s +3 sf +(gcontext) 66966 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 118895.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 122055.0 m +( join\036style ) 65391 -20.00 32 s +4 sf +(\037 One of ) 77322 -20.00 32 s +2 sf +(:bevel) 84531 0.00 -1 s +4 sf +(,) 85237 0.00 -1 s +( ) 85922 -21.00 32 s +2 sf +(:miter) 93440 0.00 -1 s +4 sf +(, or ) 97867 -20.50 32 s +2 sf +(:round) 106177 0.00 -1 s +4 sf +(.) 106883 0.00 -1 s +52832.0 126774.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 72987 -257.00 32 s +2 sf +(setf) 77216 0.00 -1 s +4 sf +(\) changes the join\036style attribute of the specified graphics) 139891 -257.00 32 s +( context.) 149352 -258.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03663) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( join\036style attribute of a graphics context defines how the segment intersections) 145322 -120.00 32 s +( are) 149352 -121.00 32 s +52832.0 25739.0 m +(drawn) 59883 0.00 -1 s +( for wide polylines. The possible values and their interpretations are as follows: ) 149352 -74.85 32 s +2 sf +52832.0 31744.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +4 17 fillpatset +newpath +52832 30919 av +149352 30919 as +149352 31154 as +52832 31154 as +closepath +fp +/drawmode PL_SET def +52832.0 34905.0 m +(Join\036Style) 64902 0.00 -1 s +79248.0 h +85344.0 h +(Interpretation) 102584 0.00 -1 s +52832.0 38066.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 37241 av +149352 37241 as +149352 37476 as +52832 37476 as +closepath +fp +/drawmode PL_SET def +52832.0 41227.0 m +(:bevel) 60041 0.00 -1 s +4 sf +85344.0 h +(Uses) 90830 0.00 -1 s +( ) 91515 -21.00 32 s +2 sf +(:butt) 97470 0.00 -1 s +4 sf +( end point styles with the triangular notch) 144272 -21.00 32 s +85344.0 44388.0 m +(filled.) 92005 0.00 -1 s +85344.0 47549.0 m +2 sf +52832.0 50710.0 m +(:miter) 60350 0.00 -1 s +4 sf +85344.0 h +(The) 89732 0.00 -1 s +( outer edges of two lines extend to meet at an angle.) 148042 -28.55 32 s +85344.0 53871.0 m +2 sf +52832.0 57031.0 m +(:round) 61142 0.00 -1 s +4 sf +85344.0 h +(A) 87381 0.00 -1 s +( circular arc with diameter equal) 123852 -24.00 32 s +( to the line\036width,) 143843 -24.67 32 s +85344.0 60192.0 m +(centered) 94901 0.00 -1 s +( on the join point.) 114740 -38.00 32 s +52832.0 63353.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 62528 av +149352 62528 as +149352 62646 as +52832 62646 as +closepath +fp +/drawmode PL_SET def +52832.0 69359.0 m +(When) 59571 0.00 -1 s +( the end points of a polyline segment are identical,) 116058 -46.00 32 s +( the effect is as if the segment) 149352 -46.57 32 s +52832.0 72520.0 m +(was) 57220 0.00 -1 s +( removed from the polyline. When a polyline is a single point, the effect) 136584 -159.00 32 s +( is the same) 149352 -159.67 32 s +52832.0 75681.0 m +(as) 55183 0.00 -1 s +( when the cap\036style is applied at both end points.) 109954 -28.00 32 s +/timsps10i 3 declareFont +3 sf +52832.0 81686.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 86473.0 m +(gcontext\036line\036style) 56483 0.00 -1 s +( ) 57090 -99.00 32 s +3 sf +(gcontext) 66650 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 89634.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 92795.0 m +( line\036style ) 65236 -19.00 32 s +4 sf +(\037 One of ) 77170 -19.00 32 s +2 sf +(:dash) 83756 0.00 -1 s +4 sf +(, ) 85149 -19.00 32 s +2 sf +(:double\036dash) 100829 0.00 -1 s +4 sf +(, or ) 105259 -19.00 32 s +2 sf +(:solid) 111844 0.00 -1 s +4 sf +(.) 112550 0.00 -1 s +52832.0 97513.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73026 -244.00 32 s +2 sf +(setf) 77255 0.00 -1 s +4 sf +(\) changes the line\036style attribute of the specified graphics context.) 149352 -243.89 32 s +52832.0 103790.0 m +(The) 57220 0.00 -1 s +( line\036style attribute of a graphics context specifies how \(which sections of\) lines are) 149352 -164.85 32 s +52832.0 106951.0 m +(drawn) 59883 0.00 -1 s +( for a path in graphics operations. The possible values and their meanings are as) 149352 -52.71 32 s +52832.0 110112.0 m +(follows:) 62080 0.00 -1 s +( ) 62789 3.00 32 s +2 sf +52832.0 116388.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 115563 av +149352 115563 as +149352 115798 as +52832 115798 as +closepath +fp +/drawmode PL_SET def +52832.0 119549.0 m +(Line\036Style) 65215 0.00 -1 s +79248.0 h +85344.0 h +(Meaning) 96005 0.00 -1 s +52832.0 122710.0 m +79248.0 h +85344.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 121885 av +149352 121885 as +149352 122120 as +52832 122120 as +closepath +fp +/drawmode PL_SET def +52832.0 125871.0 m +(:solid) 59417 0.00 -1 s +4 sf +85344.0 h +(The) 89732 0.00 -1 s +( full path is) 102440 -23.00 32 s +( drawn.) 110879 -24.00 32 s +85344.0 129032.0 m +2 sf +52832.0 132193.0 m +(:double\036dash) 68512 0.00 -1 s +4 sf +85344.0 h +(The full path is drawn, but the even) 125304 -24.00 32 s +( dashes are filled) 144272 -24.67 32 s +85344.0 135354.0 m +(differently than the odd) 111838 -24.00 32 s +( dashes.) 120751 -23.00 32 s +( The ) 126504 -23.50 32 s +2 sf +(:butt ) 133141 -24.00 32 s +4 sf +(style is used) 146891 -23.50 32 s +85344.0 138515.0 m +(where) 92237 0.00 -1 s +( even) 98227 -44.00 32 s +( and odd dashes meet \(see paragraph 5.4.7,) 146349 -44.57 32 s +85344.0 141676.0 m +(Fill\036Rule) 95534 0.00 -1 s +( and Fill\036Style\).) 113273 -27.00 32 s +85344.0 144836.0 m +2 sf +52832.0 147997.0 m +(:on\036off\036dash) 67565 0.00 -1 s +4 sf +85344.0 h +(Only) 90987 0.00 -1 s +( the even dashes are drawn, with cap\036style) 138388 -35.00 32 s +( applied) 147365 -36.00 32 s +85344.0 151158.0 m +(to) 87539 0.00 -1 s +( all internal ends of the individual dashes, except) 142398 -29.88 32 s +85344.0 154319.0 m +2 sf +(:not\036last) 95373 0.00 -1 s +4 sf +( is) 97957 -4.00 32 s +( treated as ) 110089 -4.67 32 s +2 sf +(:butt) 116044 0.00 -1 s +4 sf +(.) 116750 0.00 -1 s +52832.0 157480.0 m +88392.0 h +99568.0 h +123952.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +52832 156655 av +149352 156655 as +149352 156773 as +52832 156773 as +closepath +fp +/drawmode PL_SET def +3 sf +52832.0 163689.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 168475.0 m +(gcontext\036line\036width) 57896 0.00 -1 s +3 sf +( gcontext) 68049 -113.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 171636.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 174797.0 m +( line\036width ) 66294 -33.00 32 s +4 sf +(\037 Type ) 76262 -32.50 32 s +2 sf +(card16) 84570 0.00 -1 s +4 sf +(.) 85276 0.00 -1 s +52832.0 179516.0 m +(Returns) 61610 0.00 -1 s +( the ) 66414 -28.00 32 s +3 sf +(line\036width) 77857 0.00 -1 s +4 sf +( of) 80885 -28.00 32 s +( the specified graphics context. ) 116479 -28.60 32 s +52832.0 185793.0 m +(The) 57220 0.00 -1 s +( line\036width is measured in pixels and can be greater than or) 122493 -129.00 32 s +( equal to one \(wide line\)) 149352 -129.60 32 s +52832.0 188953.0 m +(or) 55182 0.00 -1 s +( can be the special value zero \(thin) 94097 -27.00 32 s +( line\).) 100652 -28.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03664) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(Wide) 58944 0.00 -1 s +( lines are drawn centered on the path described by the graphics operation. Unless) 149352 -74.54 32 s +52832.0 25739.0 m +(otherwise) 63802 0.00 -1 s +( specified by the join\036style or cap\036style, the bounding box of a wide line with) 149352 -97.79 32 s +52832.0 28900.0 m +(end) 56907 0.00 -1 s +( points [x1, y1], [x2, y2], and width w) 97597 -283.00 32 s +( is a rectangle with vertices at the following real) 149352 -283.56 32 s +52832.0 32060.0 m +(coordinates:) 66624 0.00 -1 s +( ) 67282 -48.00 32 s +52832.0 38337.0 m +([x1) 56593 0.00 -1 s +( - \(w*) 63771 -16.00 32 s +/timsps10i 3 declareFont +3 sf +(sin) 67064 0.00 -1 s +4 sf +(/2\), y1 + \(w*) 82465 -16.00 32 s +3 sf +(cos) 86227 0.00 -1 s +4 sf +(/2\)], [x1+ \(w*) 102126 -16.00 32 s +3 sf +(sin) 105419 0.00 -1 s +4 sf +(/2\),) 109259 0.00 -1 s +3 sf +( ) 109949 -16.00 32 s +4 sf +(y1 - \(w*) 119949 -16.00 32 s +3 sf +(cos) 123711 0.00 -1 s +4 sf +(/2\)],) 128490 0.00 -1 s +52832.0 41498.0 m +([x2 - \(w*) 63773 -15.00 32 s +3 sf +(sin) 67066 0.00 -1 s +4 sf +(/2\), y2 +) 76702 -15.00 32 s +( \(w*) 81781 -14.00 32 s +3 sf +(cos) 85543 0.00 -1 s +4 sf +(/2\)],) 90322 0.00 -1 s +( [x2 + \(w*) 102136 -14.67 32 s +3 sf +(sin) 105429 0.00 -1 s +4 sf +(/2\),) 109269 0.00 -1 s +3 sf +( ) 109961 -14.00 32 s +4 sf +(y2 - \(w*) 119964 -14.50 32 s +3 sf +(cos) 123726 0.00 -1 s +4 sf +(/2\)] ) 128490 -15.00 32 s +52832.0 47775.0 m +(where) 59725 0.00 -1 s +( ) 60155 -276.00 32 s +3 sf +(sin) 63448 0.00 -1 s +4 sf +( is the sine of the angle of the line and ) 104069 -276.00 32 s +3 sf +(cos ) 108261 -276.00 32 s +4 sf +(is the cosine of the angle of) 137641 -276.00 32 s +( the line. A) 149352 -276.67 32 s +52832.0 50935.0 m +(pixel) 58475 0.00 -1 s +( is part of the line and, hence, is drawn if the center of the pixel is fully inside) 145238 -39.00 32 s +( the) 149352 -40.00 32 s +52832.0 54096.0 m +(bounding) 63493 0.00 -1 s +( box \(which is viewed as having infinitely thin edges\). If the center of the pixel) 149352 -221.87 32 s +52832.0 57257.0 m +(is) 54714 0.00 -1 s +( exactly on the bounding) 81818 -200.00 32 s +( box, it is part of the line if, and only if, the interior is immedi\036) 149352 -200.53 32 s +52832.0 60418.0 m +(ately) 58317 0.00 -1 s +( to its right \(x increasing direction\).) 98041 -54.00 32 s +( Pixels with centers on a horizontal edge are a) 149352 -54.56 32 s +52832.0 63579.0 m +(special) 60668 0.00 -1 s +( case and are part of the line if, and only if, the interior is immediately below \(y) 149352 -61.76 32 s +52832.0 66740.0 m +(increasing) 64429 0.00 -1 s +( direction\).) 76742 -68.00 32 s +52832.0 73017.0 m +(Thin) 58162 0.00 -1 s +( lines \(zero line\036width\) are) 87169 -231.00 32 s +( always one pixel wide lines drawn using an unspecified,) 149352 -231.56 32 s +52832.0 76177.0 m +(device) 60197 0.00 -1 s +( dependent algorithm. There are only two constraints on this algorithm.) 140253 -35.70 32 s +52832.0 82454.0 m +(1.) 54949 0.00 -1 s +57912.0 h +(If) 59790 0.00 -1 s +( a line is drawn unclipped from [x1,y1] to [x2,y2] and if another line is drawn un\036) 149352 -162.63 32 s +57912.0 85615.0 m +(clipped) 66219 0.00 -1 s +( from [x1+dx,y1+dy] to [x2+dx,y2+dy], a point [x,y] is touched by drawing) 149352 -224.91 32 s +57912.0 88776.0 m +(the) 61360 0.00 -1 s +( first line if, and) 78672 -198.00 32 s +( only if ,the point [x+dx,y+dy] is touched by drawing the second) 149352 -198.55 32 s +57912.0 91937.0 m +(line.) 62850 0.00 -1 s +52832.0 98213.0 m +(2.) 54949 0.00 -1 s +57912.0 h +(The) 62300 0.00 -1 s +( effective set of points comprising a line cannot be affected by clipping. That is,) 149352 -219.71 32 s +57912.0 101374.0 m +(a) 59165 0.00 -1 s +( point is touched in a clipped) 91431 -57.00 32 s +( line if, and only if, the point lies inside the clipping) 149352 -57.55 32 s +57912.0 104535.0 m +(region) 65121 0.00 -1 s +( and the point would be touched by the line when drawn unclipped.) 140592 -39.75 32 s +52832.0 110812.0 m +(A) 54869 0.00 -1 s +( wide line drawn from [x1,y1] to [x2,y2] always draws the same pixels as a wide line) 149352 -99.94 32 s +52832.0 113973.0 m +(drawn) 59883 0.00 -1 s +( from [x2,y2] to [x1,y1], not counting cap\036style and join\036style. Implementors are) 149352 -124.00 32 s +52832.0 117134.0 m +(encouraged) 65838 0.00 -1 s +( to make this property true for thin) 102787 -286.00 32 s +( lines, but it is not required. A line\036width of) 149352 -286.56 32 s +52832.0 120294.0 m +(zero) 57688 0.00 -1 s +( may differ from a line\036width of one in which pixels are drawn. This permits the use) 149352 -202.56 32 s +52832.0 123455.0 m +(of) 55182 0.00 -1 s +( many manufacturer's line drawing hardware, which may run much faster than the) 149352 109.25 32 s +52832.0 126616.0 m +(more) 58630 0.00 -1 s +( precisely specified wide lines.) 93224 -30.75 32 s +52832.0 132893.0 m +(In) 55182 0.00 -1 s +( general, drawing a thin line is faster than drawing a wide line of width one. However,) 149352 -192.81 32 s +52832.0 136054.0 m +(because) 61764 0.00 -1 s +( of their different drawing algorithms, thin lines may not mix well, aesthetically) 149352 -198.67 32 s +52832.0 139215.0 m +(speaking,) 63570 0.00 -1 s +( with wide lines. If it is desirable to obtain precise and uniform results across) 149352 -69.79 32 s +52832.0 142375.0 m +(all) 55653 0.00 -1 s +( displays, a client should always use a line\036width of one, rather than a line\036width of) 149352 -7.60 32 s +52832.0 145536.0 m +(zero.) 58394 0.00 -1 s +3 sf +52832.0 151813.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 156599.0 m +(gcontext\036p) 47238 0.00 -1 s +( ) 47833 -111.00 32 s +3 sf +(gcontext) 57393 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 159760.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 162921.0 m +( gcontext ) 64393 -39.00 32 s +4 sf +(\037 Type ) 74349 -38.50 32 s +2 sf +(boolean) 83757 0.00 -1 s +4 sf +(.) 84463 0.00 -1 s +52832.0 167640.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67462 -26.00 32 s +2 sf +(nil) 70599 0.00 -1 s +4 sf +( if the argument is a graphics context and ) 117626 -25.78 32 s +2 sf +(nil) 120763 0.00 -1 s +4 sf +( otherwise.) 133119 -26.00 32 s +2 sf +34544.0 173917.0 m +(gcontext\036plane\036mask) 59622 0.00 -1 s +3 sf +( gcontext) 69743 -145.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 177078.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 180238.0 m +( plane\036mask ) 67842 -38.67 32 s +4 sf +(\037 Type ) 77798 -38.50 32 s +2 sf +(card32) 86106 0.00 -1 s +4 sf +(.) 86812 0.00 -1 s +52832.0 184957.0 m +(Returns) 61610 0.00 -1 s +( the ) 66406 -32.00 32 s +3 sf +(plane\036mask) 79414 0.00 -1 s +4 sf +( of the specified graphics context.) 117341 -32.00 32 s +( ) 118014 -33.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 13 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03665) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( plane\036mask attribute of a graphics context specifies which bit planes of the destina\036) 149352 -201.23 32 s +52832.0 25739.0 m +(tion) 57222 0.00 -1 s +( drawable are modified during a graphic operation. The plane\036mask is a pixel value) 149352 -134.85 32 s +52832.0 28900.0 m +(in) 55027 0.00 -1 s +( which a 1 bit means that the corresponding bit plane will be modified and a 0 bit means) 149352 -289.72 32 s +52832.0 32060.0 m +(that) 57064 0.00 -1 s +( the corresponding bit plane will not be affected during a graphic operations. Thus,) 149352 -93.00 32 s +52832.0 35221.0 m +(the) 56280 0.00 -1 s +( actual result of a graphic operation) 95075 -195.00 32 s +( depends on both the function and plane\036mask at\036) 149352 -171.13 32 s +52832.0 38382.0 m +(tributes) 61296 0.00 -1 s +( of) 64322 -30.00 32 s +( the graphics context and is given by the following expression:) 134744 -27.50 32 s +/courps8 6 declareFont +6 sf +52832.0 44659.0 m +(\(logior) 62331 0.00 -1 s +( \(logand ) 74507 -18.50 32 s +52832.0 47820.0 m +( \(boole function source) 96160 -8.00 32 s +( destination\)) 113792 -9.00 32 s +52832.0 50981.0 m +( plane\036mask\)) 81280 -4.90 32 s +52832.0 54142.0 m +( ) 62317 -2.00 32 s +( ) 74507 -2.56 32 s +52832.0 57302.0 m +( \(logandc2) 75861 -5.00 32 s +52832.0 60463.0 m +( destination) 81280 -4.90 32 s +52832.0 63624.0 m +( plane\036mask\)\)) 83989 -4.91 32 s +/timsps10i 3 declareFont +3 sf +52832.0 69901.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 74687.0 m +(gcontext\036plist) 50843 0.00 -1 s +( ) 51468 -81.00 32 s +3 sf +(gcontext) 61028 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 77848.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 81009.0 m +( gcontext\036p ) 66797 -21.00 32 s +4 sf +(\037 Type ) 76788 -21.00 32 s +2 sf +(list) 80393 0.00 -1 s +4 sf +(.) 81099 0.00 -1 s +52832.0 85728.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 74004 82.00 32 s +2 sf +(setf) 78233 0.00 -1 s +4 sf +(\) sets the property list for the specified ) 123089 82.00 32 s +3 sf +(gcontext) 132649 0.00 -1 s +4 sf +(. This function) 149352 82.00 32 s +52832.0 88889.0 m +(provides) 62550 0.00 -1 s +( a hook where extensions can add data.) 106296 -42.71 32 s +3 sf +52832.0 95165.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 99952.0 m +(gcontext\036stipple) 53665 0.00 -1 s +3 sf +( gcontext) 63827 -104.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 103113.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 106274.0 m +( stipple ) 62400 -25.00 32 s +4 sf +(\037 Type ) 72383 -25.00 32 s +2 sf +(pixmap) 81477 0.00 -1 s +4 sf +(.) 82183 0.00 -1 s +52832.0 110992.0 m +(Returns) 61610 0.00 -1 s +( the ) 66416 -27.00 32 s +3 sf +(stipple) 73941 0.00 -1 s +4 sf +( of the specified graphics context. ) 112573 -26.83 32 s +52832.0 117269.0 m +(The) 57220 0.00 -1 s +( stipple attribute of a graphics context is a bitmap used to prevent certain pixels in the) 149352 -276.63 32 s +52832.0 120430.0 m +(destination) 65216 0.00 -1 s +( of graphics operations from being affected by tiling.) 124607 -30.88 32 s +52832.0 126706.0 m +(The) 57220 0.00 -1 s +( stipple and tile have the same origin. This origin point is interpreted relative to the) 149352 -96.67 32 s +52832.0 129867.0 m +(origin) 59572 0.00 -1 s +( of whatever destination drawable is specified in a graphics request. The stipple) 149352 4.00 32 s +52832.0 133028.0 m +(pixmap) 61297 0.00 -1 s +( must have depth one and must have the same root as the graphics context. The) 149352 -75.93 32 s +52832.0 136189.0 m +(tile) 56437 0.00 -1 s +( pixmap must have the same root) 92102 -274.00 32 s +( and depth as the graphics context. For stipple opera\036) 149352 -274.56 32 s +52832.0 139350.0 m +(tions) 58320 0.00 -1 s +( where) 65883 -36.00 32 s +( the fill\036style is ) 83451 -36.50 32 s +2 sf +(:stippled) 93955 0.00 -1 s +4 sf +( \(but not ) 104114 -36.67 32 s +2 sf +(:opaque\036stippled) 124339 0.00 -1 s +4 sf +(\), the stipple pattern is) 149352 -36.50 32 s +52832.0 142511.0 m +(tiled) 57848 0.00 -1 s +( in a) 62224 -242.00 32 s +( single plane and acts as an additional clip mask to be ) 120451 -242.50 32 s +2 sf +(and) 125000 0.00 -1 s +4 sf +(ed with the clip\036mask.) 149352 -242.67 32 s +52832.0 145672.0 m +(Any) 57691 0.00 -1 s +( size pixmap can be used for stipple or tile, although some sizes) 127104 -205.00 32 s +( may be faster to use) 149352 -205.60 32 s +52832.0 148833.0 m +(than) 57691 0.00 -1 s +( others.) 65950 -49.00 32 s +52832.0 155109.0 m +(Specifying) 65058 0.00 -1 s +( a pixmap for stipple or tile in a graphics context might or might not result in) 147650 -256.00 32 s +( a) 149352 -257.00 32 s +52832.0 158270.0 m +(copy) 58318 0.00 -1 s +( being made. If the) 78984 -143.00 32 s +( pixmap is later used as the destination for a graphics operation,) 149352 -143.55 32 s +52832.0 161431.0 m +(the) 56280 0.00 -1 s +( change might or might not be reflected in the graphics context. If the pixmap is used) 149352 -183.56 32 s +52832.0 164592.0 m +(both) 57849 0.00 -1 s +( as the destination for a graphics operation and as a stipple or tile, the results are not) 149352 -186.59 32 s +52832.0 167753.0 m +(defined.) 62000 0.00 -1 s +52832.0 174030.0 m +(Some) 59260 0.00 -1 s +( displays have hardware support for) 100258 128.00 32 s +( tiling or stippling with patterns of specific) 149352 127.43 32 s +52832.0 177190.0 m +(sizes.) 59024 0.00 -1 s +( Tiling and stippling operations that restrict themselves to those) 132533 199.00 32 s +( sizes may run) 149352 198.33 32 s +52832.0 180351.0 m +(much) 59102 0.00 -1 s +( faster than such) 76747 -257.00 32 s +( operations with arbitrary size patterns. CLX provides functions to) 149352 -257.56 32 s +52832.0 183512.0 m +(determine) 64115 0.00 -1 s +( the best size for stipple or tile \(see ) 103113 -116.67 32 s +2 sf +(query\036best\036stipple) 124901 0.00 -1 s +4 sf +( and ) 130155 -116.50 32 s +2 sf +(query\036best\036tile) 147707 0.00 -1 s +4 sf +(\).) 149352 0.00 -1 s +3 sf +52832.0 189789.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 14 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03666) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(gcontext\036subwindow\036mode) 66834 0.00 -1 s +( ) 67362 -178.00 32 s +/timsps10i 3 declareFont +3 sf +(gcontext) 76922 0.00 -1 s +2 sf +139373.0 h +/timsps10 4 declareFont +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 28900.0 m +( subwindow\036mode ) 74597 -35.00 32 s +4 sf +(\037 One of) 85812 -35.00 32 s +( ) 86482 -36.00 32 s +2 sf +(:clip\036by\036children) 106703 0.00 -1 s +4 sf +( or ) 110394 -35.50 32 s +2 sf +(:include\036inferiors) 131397 0.00 -1 s +4 sf +(.) 132103 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 72960 -266.00 32 s +2 sf +(setf) 77189 0.00 -1 s +4 sf +(\) changes the subwindow\036mode attribute of the specified) 139353 -266.00 32 s +( graphics) 149352 -267.00 32 s +52832.0 36779.0 m +(context.) 61845 0.00 -1 s +52832.0 43056.0 m +(The) 57220 0.00 -1 s +( subwindow\036mode attribute of a graphics context specifies) 121133 -285.00 32 s +( whether subwindows ob\036) 149352 -285.67 32 s +52832.0 46217.0 m +(scure) 58786 0.00 -1 s +( the contents of their parent) 90096 71.00 32 s +( window during a graphics operation. For a value of) 149352 70.44 32 s +52832.0 49378.0 m +2 sf +(:clip\036by\036children) 73053 0.00 -1 s +4 sf +(,) 73759 0.00 -1 s +( both source and destination windows are clipped by all viewable) 144690 -274.00 32 s +( ) 145121 -275.00 32 s +2 sf +(:in\036) 149352 0.00 -1 s +52832.0 52538.0 m +(put\036output) 65844 0.00 -1 s +4 sf +( class children. This clipping is in addition to the clipping provided by the) 149352 8.23 32 s +52832.0 55699.0 m +(clip\036mode) 64273 0.00 -1 s +( attribute. For a value of ) 90653 -266.50 32 s +2 sf +(:include\036inferiors) 111656 0.00 -1 s +4 sf +(, neither the source nor destination) 149352 -266.60 32 s +52832.0 58860.0 m +(window is clipped by its inferiors. This results in the inclusion of subwindow contents in) 149352 -266.50 32 s +52832.0 62021.0 m +(the) 56280 0.00 -1 s +( source and the drawing through of subwindow boundaries) 120247 -292.00 32 s +( of the destination. The use) 149352 -292.60 32 s +52832.0 65182.0 m +(of) 55182 0.00 -1 s +( ) 55590 -298.00 32 s +2 sf +(:include\036inferiors) 76593 0.00 -1 s +4 sf +( on a window of one depth with mapped inferiors of differing depth) 149352 -297.75 32 s +52832.0 68343.0 m +(is) 54714 0.00 -1 s +( not illegal, but the semantics) 87662 -26.00 32 s +( are not defined by the core protocol.) 129167 -26.57 32 s +3 sf +52832.0 74620.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 79406.0 m +(gcontext\036tile) 49429 0.00 -1 s +3 sf +( gcontext) 59605 -90.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 82567.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 85728.0 m +( tile ) 58489 -22.00 32 s +4 sf +(\037 Type) 67794 -22.00 32 s +( ) 68477 -23.00 32 s +2 sf +(pixmap) 77571 0.00 -1 s +4 sf +(.) 78277 0.00 -1 s +52832.0 90447.0 m +(Returns) 61610 0.00 -1 s +( the ) 66420 -25.00 32 s +3 sf +(tile) 70025 0.00 -1 s +4 sf +( of the specified graphics context.) 107987 -25.00 32 s +( ) 108667 -26.00 32 s +52832.0 96723.0 m +(The) 57220 0.00 -1 s +( tile attribute is a pixmap used to fill in areas for graphics operations. It is so) 141246 -122.00 32 s +( named) 149352 -123.00 32 s +52832.0 99884.0 m +(because) 61764 0.00 -1 s +( copies of it are laid out side by side to fill the area. ) 120046 -18.93 32 s +52832.0 106161.0 m +(The) 57220 0.00 -1 s +( stipple and tile have the same origin. This origin point is interpreted relative to the) 149352 -96.67 32 s +52832.0 109322.0 m +(origin) 59572 0.00 -1 s +( of whatever destination drawable is specified in a graphics request. The stipple) 149352 4.00 32 s +52832.0 112482.0 m +(pixmap) 61297 0.00 -1 s +( must have depth one and must have the same root as the graphics context. The) 149352 -75.93 32 s +52832.0 115643.0 m +(tile) 56437 0.00 -1 s +( pixmap must have the same root) 92102 -274.00 32 s +( and depth as the graphics context. For stipple opera\036) 149352 -274.56 32 s +52832.0 118804.0 m +(tions) 58320 0.00 -1 s +( where) 65883 -36.00 32 s +( the fill\036style is ) 83451 -36.50 32 s +2 sf +(:stippled) 93955 0.00 -1 s +4 sf +( \(but not ) 104114 -36.67 32 s +2 sf +(:opaque\036stippled) 124339 0.00 -1 s +4 sf +(\), the stipple pattern is) 149352 -36.50 32 s +52832.0 121965.0 m +(tiled) 57848 0.00 -1 s +( in a) 62224 -242.00 32 s +( single plane and acts as an additional clip mask to be ) 120451 -242.50 32 s +2 sf +(and) 125000 0.00 -1 s +4 sf +(ed with the clip\036mask.) 149352 -242.67 32 s +52832.0 125126.0 m +(Any) 57691 0.00 -1 s +( size pixmap can be used for stipple or tile, although some sizes) 127104 -205.00 32 s +( may be faster to use) 149352 -205.60 32 s +52832.0 128287.0 m +(than) 57691 0.00 -1 s +( others.) 65950 -49.00 32 s +52832.0 134564.0 m +(Specifying) 65058 0.00 -1 s +( a pixmap for stipple or tile in a graphics context might or might not result in) 147650 -256.00 32 s +( a) 149352 -257.00 32 s +52832.0 137724.0 m +(copy) 58318 0.00 -1 s +( being made. If the) 78984 -143.00 32 s +( pixmap is later used as the destination for a graphics operation,) 149352 -143.55 32 s +52832.0 140885.0 m +(the) 56280 0.00 -1 s +( change might or might not be reflected in the graphics context. If the pixmap is used) 149352 -183.56 32 s +52832.0 144046.0 m +(both) 57849 0.00 -1 s +( as the destination for a graphics operation and as a stipple or tile, the results are not) 149352 -186.59 32 s +52832.0 147207.0 m +(defined.) 62000 0.00 -1 s +52832.0 153484.0 m +(Some) 59260 0.00 -1 s +( displays have hardware support for) 100258 128.00 32 s +( tiling or stippling with patterns of specific) 149352 127.43 32 s +52832.0 156645.0 m +(sizes.) 59024 0.00 -1 s +( Tiling and stippling operations that restrict themselves to those) 132533 199.00 32 s +( sizes may run) 149352 198.33 32 s +52832.0 159806.0 m +(much) 59102 0.00 -1 s +( faster than such) 76747 -257.00 32 s +( operations with arbitrary size patterns. CLX provides functions to) 149352 -257.56 32 s +52832.0 162966.0 m +(determine) 64115 0.00 -1 s +( the best size for stipple or tile \(see ) 103113 -116.67 32 s +2 sf +(query\036best\036stipple) 124901 0.00 -1 s +4 sf +( and ) 130155 -116.50 32 s +2 sf +(query\036best\036tile) 147707 0.00 -1 s +4 sf +(\).) 149352 0.00 -1 s +3 sf +52832.0 169243.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 15 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +129506.0 8737.0 m +(Graphics Contexts) 146372 -36.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(5\03667) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(gcontext\036ts\036x) 50056 0.00 -1 s +/timsps10i 3 declareFont +3 sf +( gcontext) 60238 -84.00 32 s +2 sf +139373.0 h +/timsps10 4 declareFont +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 28900.0 m +( ) 53521 -17.00 32 s +( ts\036x) 58285 -16.00 32 s +( ) 58974 -17.00 32 s +4 sf +(\037 Type ) 68974 -16.50 32 s +2 sf +(int16) 75088 0.00 -1 s +4 sf +(.) 75794 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the ) 66422 -24.00 32 s +3 sf +(ts\036x) 70496 0.00 -1 s +4 sf +( attribute of the specified graphics context. ) 119233 -23.57 32 s +52832.0 39895.0 m +(The) 57220 0.00 -1 s +( ts\036x and ts\036y attributes of a graphics context are the coordinates of the origin for tile) 149352 -187.94 32 s +52832.0 43056.0 m +(pixmaps) 62395 0.00 -1 s +( and the stipple.) 80151 -38.67 32 s +3 sf +52832.0 49332.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 54119.0 m +(gcontext\036ts\036y) 50056 0.00 -1 s +3 sf +( gcontext) 60238 -84.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 57280.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 60441.0 m +( ) 53521 -17.00 32 s +( ts\036y) 58285 -16.00 32 s +( ) 58974 -17.00 32 s +4 sf +(\037 Type ) 68974 -16.50 32 s +2 sf +(int16) 75088 0.00 -1 s +4 sf +(.) 75794 0.00 -1 s +52832.0 65159.0 m +(Returns) 61610 0.00 -1 s +( the ) 66422 -24.00 32 s +3 sf +(ts\036y) 70496 0.00 -1 s +4 sf +( attribute of the specified graphics context. ) 119233 -23.57 32 s +52832.0 71436.0 m +(The) 57220 0.00 -1 s +( ts\036x and ts\036y attributes of a graphics context are the coordinates of the origin for tile) 149352 -187.94 32 s +52832.0 74597.0 m +(pixmaps) 62395 0.00 -1 s +( and the stipple.) 80151 -38.67 32 s +3 sf +52832.0 80874.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 85660.0 m +(query\036best\036stipple) 56332 0.00 -1 s +4 sf +( ) 56983 -55.00 32 s +3 sf +(width height drawable) 82273 -54.50 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 88821.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 91982.0 m +( best\036width) 65933 -34.00 32 s +4 sf +(,) 66639 0.00 -1 s +3 sf +( best\036height ) 80522 -34.00 32 s +4 sf +(\037 Type) 89815 -34.00 32 s +( ) 90486 -35.00 32 s +2 sf +(card16) 98794 0.00 -1 s +4 sf +(.) 99500 0.00 -1 s +52832.0 96701.0 m +(Returns) 61610 0.00 -1 s +( the ) 66410 -30.00 32 s +3 sf +(best\036width) 78167 0.00 -1 s +4 sf +( and) 82918 -30.00 32 s +( ) 83593 -31.00 32 s +3 sf +(best\036height) 96132 0.00 -1 s +4 sf +( for stipple pixmaps on the ) 126832 -30.50 32 s +3 sf +(drawable) 137493 0.00 -1 s +4 sf +(.) 138199 0.00 -1 s +52832.0 102977.0 m +(The) 57220 0.00 -1 s +( ) 57718 -208.00 32 s +3 sf +(drawable) 68379 0.00 -1 s +4 sf +( indicates the screen and possibly) 105038 -208.00 32 s +( the window class and depth. An ) 141044 -208.57 32 s +2 sf +(:input\036) 149352 0.00 -1 s +52832.0 106138.0 m +(only) 58007 0.00 -1 s +4 sf +( window cannot be specified as the ) 99171 137.00 32 s +3 sf +(drawable) 109832 0.00 -1 s +4 sf +(. The size is returned as width and) 149352 137.14 32 s +52832.0 109299.0 m +(height) 59886 0.00 -1 s +( values.) 68433 -75.00 32 s +3 sf +52832.0 115576.0 m +(width) 59104 0.00 -1 s +4 sf +(,) 59810 0.00 -1 s +( ) 60489 -27.00 32 s +3 sf +(height ) 68222 -27.00 32 s +4 sf +(\037 Specifies the width and height) 105787 -27.00 32 s +( of the desired stipple pattern.) 139192 -27.60 32 s +3 sf +52832.0 120362.0 m +(drawable) 63493 0.00 -1 s +( ) 64151 -48.00 32 s +4 sf +(\037 A ) 70326 -48.00 32 s +2 sf +(drawable) 81613 0.00 -1 s +4 sf +(.) 82319 0.00 -1 s +2 sf +34544.0 125149.0 m +(query\036best\036tile) 52096 0.00 -1 s +4 sf +( ) 52752 -50.00 32 s +3 sf +(width height drawable) 78051 -50.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 128310.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +3 sf +52832.0 131470.0 m +( best\036width) 65933 -34.00 32 s +4 sf +(,) 66639 0.00 -1 s +3 sf +( best\036height ) 80522 -34.00 32 s +4 sf +(\037 Type) 89815 -34.00 32 s +( ) 90486 -35.00 32 s +2 sf +(card16) 98794 0.00 -1 s +4 sf +(.) 99500 0.00 -1 s +52832.0 136189.0 m +(Returns) 61610 0.00 -1 s +( the ) 66412 -29.00 32 s +3 sf +(best\036width) 78169 0.00 -1 s +4 sf +( and ) 83598 -29.00 32 s +3 sf +(best\036height) 96137 0.00 -1 s +4 sf +( for tile pixmaps on the ) 122926 -29.00 32 s +3 sf +(drawable) 133587 0.00 -1 s +4 sf +(.) 134293 0.00 -1 s +52832.0 142466.0 m +(The) 57220 0.00 -1 s +( ) 57718 -208.00 32 s +3 sf +(drawable) 68379 0.00 -1 s +4 sf +( indicates the screen and possibly) 105038 -208.00 32 s +( the window class and depth. An ) 141044 -208.57 32 s +2 sf +(:input\036) 149352 0.00 -1 s +52832.0 145627.0 m +(only) 58007 0.00 -1 s +4 sf +( window cannot be specified as the ) 99171 137.00 32 s +3 sf +(drawable) 109832 0.00 -1 s +4 sf +(. The size is returned as width and) 149352 137.14 32 s +52832.0 148788.0 m +(height) 59886 0.00 -1 s +( values.) 68433 -75.00 32 s +3 sf +52832.0 155064.0 m +(width) 59104 0.00 -1 s +4 sf +(,) 59810 0.00 -1 s +( ) 60490 -26.00 32 s +3 sf +(height ) 68224 -26.00 32 s +4 sf +(\037 Specifies the width and height of the desired tile) 126066 -26.00 32 s +( pattern.) 135286 -27.00 32 s +3 sf +52832.0 159851.0 m +(drawable) 63493 0.00 -1 s +( ) 64151 -48.00 32 s +4 sf +(\037 A ) 70326 -48.00 32 s +2 sf +(drawable) 81613 0.00 -1 s +4 sf +(.) 82319 0.00 -1 s +20320.0 165360.0 m +0.0 0.0 m +newpath +20455 163736 av +148878 163734 as +[] 0 setdash +dp +149352.0 165360.0 m +/timsps12b 5 declareFont +5 sf +20320.0 168746.0 m +(Copying) 32551 0.00 -1 s +( ) 33393 -5.00 32 s +52832.0 h +2 sf +(5.3) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(CLX) 64198 0.00 -1 s +( provides functions to copy some or all) 120048 1697.00 32 s +( attribute values from) 149352 1696.33 32 s +5 sf +20320.0 172133.0 m +(Graphics) 33677 0.00 -1 s +2 sf +52832.0 h +4 sf +(one) 56907 0.00 -1 s +( graphics context to another. These functions are generally more efficient) 149352 977.20 32 s +5 sf +20320.0 175520.0 m +(Contexts) 33108 0.00 -1 s +( ) 33957 2.00 32 s +52832.0 h +4 sf +(than) 57691 0.00 -1 s +( using ) 65154 -32.00 32 s +2 sf +(setf) 69383 0.00 -1 s +4 sf +( to copy ) 79084 -32.67 32 s +2 sf +(gcontext) 89270 0.00 -1 s +4 sf +( attributes individually.) 115463 -32.50 32 s +2 sf +34544.0 181796.0 m +(copy\036gcontext) 51313 0.00 -1 s +4 sf +( ) 51940 -79.00 32 s +3 sf +(source destination) 72633 -79.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 186515.0 m +(Copies) 60671 0.00 -1 s +( all) 64039 -159.00 32 s +( the values of the attributes of the source graphics context into the destination) 149352 -159.54 32 s +52832.0 189676.0 m +(graphics) 62392 0.00 -1 s +( context.) 71919 -192.00 32 s +( The source and destination graphics contexts must have the same root) 149352 -192.55 32 s +52832.0 192837.0 m +(and) 56907 0.00 -1 s +( depth.) 64505 -84.00 32 s +52832.0 199113.0 m +( ) 53504 -34.00 32 s +3 sf +(source ) 61700 -34.00 32 s +4 sf +(\037 The source) 77619 -34.00 32 s +( ) 78290 -35.00 32 s +2 sf +(gcontext) 88476 0.00 -1 s +4 sf +(.) 89182 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 16 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Graphics Contexts) 37186 -36.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(5\03668) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 3 declareFont +3 sf +52832.0 22578.0 m +(destination) 65374 0.00 -1 s +( ) 66036 -44.00 32 s +/timsps10 4 declareFont +4 sf +(\037 The destination) 86954 -44.00 32 s +( ) 87615 -45.00 32 s +2 sf +(gcontext) 97801 0.00 -1 s +4 sf +(.) 98507 0.00 -1 s +2 sf +34544.0 27364.0 m +(copy\036gcontext\036components) 66674 0.00 -1 s +4 sf +( ) 67320 -60.00 32 s +3 sf +(source destination ) 88678 -60.00 32 s +4 sf +(&rest) 94947 0.00 -1 s +( ) 95592 -61.00 32 s +3 sf +(keys) 100449 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 32083.0 m +(Copies) 60671 0.00 -1 s +( the values of the specified attributes of) 103132 -282.00 32 s +( the source graphics context to the destina\036) 149352 -282.57 32 s +52832.0 35244.0 m +(tion) 57222 0.00 -1 s +( graphics context. The source and destination graphics contexts must have the same) 149352 -179.58 32 s +52832.0 38405.0 m +(root) 57377 0.00 -1 s +( and) 62110 -48.00 32 s +( depth.) 69743 -49.00 32 s +3 sf +52832.0 44004.0 m +(source) 60356 0.00 -1 s +( ) 61021 -41.00 32 s +4 sf +(\037 The source) 76926 -41.00 32 s +( ) 77590 -42.00 32 s +2 sf +(gcontext) 87776 0.00 -1 s +4 sf +(.) 88482 0.00 -1 s +3 sf +52832.0 48791.0 m +(destination) 65374 0.00 -1 s +( ) 66036 -44.00 32 s +4 sf +(\037 The destination) 86954 -44.00 32 s +( ) 87615 -45.00 32 s +2 sf +(gcontext) 97801 0.00 -1 s +4 sf +(.) 98507 0.00 -1 s +3 sf +52832.0 53577.0 m +(keys) 57689 0.00 -1 s +( ) 58400 5.00 32 s +4 sf +(\037 The remaining arguments) 90939 5.00 32 s +( are keywords, of type ) 116822 4.40 32 s +2 sf +(gcontext\036key) 132180 0.00 -1 s +4 sf +(, which specify) 149352 4.50 32 s +57912.0 56738.0 m +(which) 64808 0.00 -1 s +( attributes of the graphics context are to be) 112678 -31.00 32 s +( copied.) 121581 -32.00 32 s +20320.0 62247.0 m +0.0 0.0 m +newpath +20455 60623 av +148878 60621 as +[] 0 setdash +dp +149352.0 62247.0 m +/timsps12b 5 declareFont +5 sf +20320.0 65634.0 m +(Destroying) 36118 0.00 -1 s +52832.0 h +2 sf +(5.5) 56360 0.00 -1 s +58710.0 h +() 58710 0.00 -1 s +4 sf +(To) 61845 0.00 -1 s +( destroy a graphics) 82942 -47.00 32 s +( context, use) 97034 -47.50 32 s +2 sf +( free\036gcontext.) 114221 -48.00 32 s +5 sf +20320.0 69020.0 m +(Graphics) 33677 0.00 -1 s +2 sf +52832.0 h +5 sf +20320.0 72407.0 m +(Contexts) 33108 0.00 -1 s +( ) 33957 2.00 32 s +4 sf +52832.0 h +2 sf +34544.0 76584.0 m +(free\036gcontext) 50367 0.00 -1 s +( ) 50948 -125.00 32 s +3 sf +(gcontext) 60508 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 81303.0 m +(Deletes) 61294 0.00 -1 s +( the association between the assigned resource) 114700 176.00 32 s +( ID and the specified graphics) 149352 175.40 32 s +52832.0 84463.0 m +(context,) 61845 0.00 -1 s +( and then destroys the graphics context.) 106183 -43.00 32 s +3 sf +52832.0 90063.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +20320.0 95572.0 m +0.0 0.0 m +newpath +20455 93948 av +148878 93946 as +[] 0 setdash +dp +149352.0 95572.0 m +5 sf +20320.0 98958.0 m +(Graphics) 33677 0.00 -1 s +52832.0 h +2 sf +(5.6) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(CLX) 64198 0.00 -1 s +( provides a set of functions to control the automatic graphics) 149352 1681.20 32 s +5 sf +20320.0 102345.0 m +(Context) 31791 0.00 -1 s +2 sf +52832.0 h +4 sf +(context) 61139 0.00 -1 s +( caching mechanism.) 84712 -87.00 32 s +5 sf +20320.0 105732.0 m +(Cache) 29347 0.00 -1 s +52832.0 h +2 sf +34544.0 109909.0 m +(force\036gcontext\036changes) 62281 0.00 -1 s +4 sf +( ) 62802 -185.00 32 s +3 sf +(gcontext) 72362 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 114627.0 m +(Forces) 60355 0.00 -1 s +( any delayed changes to the specified graphics context to be) 125591 -232.00 32 s +( sent out to the server.) 149352 -232.60 32 s +52832.0 117788.0 m +(Note) 58317 0.00 -1 s +( that ) 63893 -34.00 32 s +2 sf +(force\036gcontext\036changes) 91630 0.00 -1 s +4 sf +( is called by all of the graphics functions.) 137837 -33.75 32 s +3 sf +52832.0 123388.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +34544.0 128174.0 m +(with\036gcontext) 50998 0.00 -1 s +4 sf +( ) 51647 -57.00 32 s +3 sf +(gcontext) 61207 0.00 -1 s +2 sf +( ) 61856 -57.00 32 s +4 sf +(&key) 68126 0.00 -1 s +2 sf +( :arc\036mode) 81153 -57.00 32 s +( :background :cap\036style :clip\036mask) 122913 -57.67 32 s +142014.0 h +4 sf +(Macro) 149379 0.00 -1 s +52832.0 131335.0 m +2 sf +(:clip\036ordering) 69603 0.00 -1 s +( :clip\036x :clip\036y :dashes :dash\036offset :exposures) 124246 -28.00 32 s +( ) 124923 -29.00 32 s +52832.0 134496.0 m +(:fill\036rule) 62860 0.00 -1 s +( :fill\036style :font :foreground :function :join\036style) 120411 -9.00 32 s +( ) 121107 -10.00 32 s +52832.0 137657.0 m +(:line\036style) 64585 0.00 -1 s +( :line\036width :plane\036mask) 94007 -24.00 32 s +( :stipple :subwindow\036mode ) 127090 -24.67 32 s +52832.0 140818.0 m +(:tile) 57531 0.00 -1 s +( :ts\036x :ts\036y) 69555 -20.00 32 s +4 sf +( &allow\036other\036keys &body ) 100765 -20.00 32 s +3 sf +(body) 106251 0.00 -1 s +4 sf +52832.0 145536.0 m +(Changes) 62551 0.00 -1 s +( the indicated graphics context components to the specified values only within) 149352 -139.00 32 s +52832.0 148697.0 m +(the) 56280 0.00 -1 s +( dynamic extent of the body.) 87862 -142.00 32 s +( ) 88425 -143.00 32 s +2 sf +(with\036gcontext) 104879 0.00 -1 s +4 sf +( works on a per\036process basis in a multi\036) 149352 -142.50 32 s +52832.0 151858.0 m +(processing) 64901 0.00 -1 s +( environment. The ) 85842 -178.00 32 s +3 sf +(body) 91328 0.00 -1 s +4 sf +( is not surrounded by a ) 116754 -178.00 32 s +2 sf +(with\036display) 131648 0.00 -1 s +4 sf +( form. If there is) 149352 -177.50 32 s +52832.0 155019.0 m +(no) 55654 0.00 -1 s +( local cache for the specified graphics context, or if some of the component states are) 149352 -158.60 32 s +52832.0 158180.0 m +(unknown,) 64041 0.00 -1 s +( ) 64873 126.00 32 s +2 sf +(with\036gcontext) 81327 0.00 -1 s +4 sf +( does the save and restore by creating) 124449 126.00 32 s +( a temporary graphics) 149352 125.33 32 s +52832.0 161341.0 m +(context) 61139 0.00 -1 s +( and copying components to and from it using ) 113287 -49.78 32 s +2 sf +(copy\036gcontext\036components) 145417 0.00 -1 s +4 sf +(.) 146123 0.00 -1 s +3 sf +52832.0 166940.0 m +(gcontext) 62392 0.00 -1 s +( ) 63054 -44.00 32 s +4 sf +(\037 A ) 69237 -44.00 32 s +2 sf +(gcontext) 79423 0.00 -1 s +4 sf +(.) 80129 0.00 -1 s +2 sf +52832.0 171727.0 m +(:arc\036mode,) 65916 0.00 -1 s +4 sf +( ) 67125 503.00 32 s +2 sf +(:background) 82648 0.00 -1 s +4 sf +(, ) 84563 503.00 32 s +2 sf +(:cap\036style) 96159 0.00 -1 s +4 sf +(, ) 98075 504.00 32 s +2 sf +(:clip\036mask) 110771 0.00 -1 s +4 sf +(, ) 112686 503.00 32 s +2 sf +(:clip\036ordering) 129457 0.00 -1 s +4 sf +(, ) 131373 504.00 32 s +2 sf +(:clip\036x) 139052 0.00 -1 s +4 sf +(, ) 140967 503.00 32 s +2 sf +(:clip\036y) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +57912.0 174887.0 m +2 sf +(:dashes) 66849 0.00 -1 s +4 sf +(,) 67555 0.00 -1 s +( ) 69146 885.00 32 s +2 sf +(:dash\036offset) 83250 0.00 -1 s +4 sf +(, ) 85547 885.00 32 s +2 sf +(:exposures) 98401 0.00 -1 s +4 sf +(, ) 100698 885.00 32 s +2 sf +(:fill\036rule) 110726 0.00 -1 s +4 sf +(, ) 113023 885.00 32 s +2 sf +(:fill\036style) 123677 0.00 -1 s +4 sf +(, ) 125975 886.00 32 s +2 sf +(:font) 131772 0.00 -1 s +4 sf +(, ) 134069 885.00 32 s +2 sf +(:foreground) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +57912.0 178048.0 m +2 sf +(:function) 68884 0.00 -1 s +4 sf +(,) 69590 0.00 -1 s +( ) 70409 113.00 32 s +2 sf +(:join\036style) 82475 0.00 -1 s +4 sf +(, ) 84000 113.00 32 s +2 sf +(:line\036style) 95753 0.00 -1 s +4 sf +(, ) 97279 114.00 32 s +2 sf +(:line\036width) 110445 0.00 -1 s +4 sf +(, ) 111970 113.00 32 s +2 sf +(:plane\036mask) 126862 0.00 -1 s +4 sf +(, ) 128388 114.00 32 s +2 sf +(:stipple) 137323 0.00 -1 s +4 sf +(, ) 138848 113.00 32 s +2 sf +(:subwin\036) 149352 0.00 -1 s +57912.0 181209.0 m +(dow\036mode) 70451 0.00 -1 s +4 sf +(,) 71157 0.00 -1 s +( ) 71975 112.00 32 s +2 sf +(:tile) 76674 0.00 -1 s +4 sf +(, ) 78198 112.00 32 s +2 sf +(:ts\036x) 83524 0.00 -1 s +4 sf +(, ) 85048 112.00 32 s +2 sf +(:ts\036y ) 91192 112.00 32 s +4 sf +(\037These keyword arguments) 124017 112.00 32 s +( and associated values) 149352 111.33 32 s +57912.0 184370.0 m +(specify) 66061 0.00 -1 s +( which graphics context components) 106054 -308.00 32 s +( are to be changed. Any components not) 149352 -308.57 32 s +57912.0 187531.0 m +(specified) 68098 0.00 -1 s +( are left unmodified. See paragraph 5.2, Creating Graphics Contexts, for) 149352 -24.90 32 s +57912.0 190692.0 m +(more) 63710 0.00 -1 s +( information.) 78390 -54.00 32 s +3 sf +52832.0 195478.0 m +(body) 58318 0.00 -1 s +( ) 58990 -34.00 32 s +4 sf +(\037 The body of code which will have access to the altered graphics context.) 143978 -33.54 32 s +52832.0 200265.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s14.ps +++ cmucl-20a-20090928/own-work/clx/s14.ps @@ -0,0 +1,5012 @@ +%!PS-Adobe-2.0 +%%Title: s14.ps +%%Pages: 14 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036169) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 8 declareFont +8 sf +20410.0 39376.0 m +59063.0 39466.0 m +(CONTROL FUNCTIONS) 115846 -76.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +146087 39315 av +142782 39315 as +142782 36265 as +142782 36265 as +142782 33596 as +142782 33596 as +142782 27495 as +142782 27495 as +142415 23300 as +142415 23300 as +146087 23300 as +146087 33596 as +147923 33596 as +147923 36265 as +146087 36265 as +146087 39315 as +fp +newpath +146087 39315 av +142782 39315 as +142782 36265 as +[] 0 setdash +dp +newpath +0.0 sw +142782 36265 av +142782 33596 as +newpath +270.0 sw +142782 33596 av +142782 27495 as +[] 0 setdash +dp +newpath +0.0 sw +142782 27495 av +142415 23300 as +newpath +270.0 sw +142415 23300 av +146087 23300 as +146087 33596 as +147923 33596 as +147923 36265 as +146087 36265 as +146087 39315 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +0.0 sw +/drawmode PL_SET def +142782 36265 av +142782 33596 as +142782 33596 as +138743 33596 as +142782 27495 as +142782 27495 as +142415 23300 as +142415 23300 as +135806 32833 as +135806 36265 as +142782 36265 as +fp +newpath +142782 36265 av +142782 33596 as +newpath +270.0 sw +142782 33596 av +138743 33596 as +142782 27495 as +[] 0 setdash +dp +newpath +0.0 sw +142782 27495 av +142415 23300 as +newpath +270.0 sw +142415 23300 av +135806 32833 as +135806 36265 as +142782 36265 as +[] 0 setdash +dp +0.0 sw +newpath +135439 23300 av +135439 23300 as +newpath +135439 43891 av +135439 43891 as +newpath +148290 43891 av +148290 43891 as +newpath +148290 23300 av +148290 23300 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +134088 39315 av +134088 23300 as +131150 23300 as +128213 26351 as +128213 27876 as +130783 27876 as +130783 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +127845 23300 av +127845 23300 as +newpath +127845 43891 av +127845 43891 as +newpath +135556 43891 av +135556 43891 as +newpath +135556 23300 av +135556 23300 as +149351.0 39376.0 m +8 sf +/timsps10 5 declareFont +5 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 7 declareFont +7 sf +20320.0 46871.0 m +(Grabbing) 34433 0.00 -1 s +52832.0 h +2 sf +(14.1) 57771 0.00 -1 s +60121.0 h +() 60121 0.00 -1 s +5 sf +(Certain) 68427 0.00 -1 s +( cases may require that a client demand exclusive access to the) 149352 923.45 32 s +7 sf +20320.0 50258.0 m +(the) 24833 0.00 -1 s +( Server) 35312 44.00 32 s +52832.0 h +5 sf +(server, causing) 69758 0.00 32 s +( the processing for all other clients to be) 114521 -67.00 32 s +( suspended. Such exclusive ac\036) 149352 -50.75 32 s +52832.0 53419.0 m +(cess) 57534 0.00 -1 s +( is referred to as ) 76435 3.40 32 s +/timsps10i 4 declareFont +4 sf +(grabbing the server) 98703 3.50 32 s +5 sf +(. CLX provides functions to grab and release) 149352 3.00 32 s +52832.0 56580.0 m +(exclusive) 63490 0.00 -1 s +( access to) 73831 -237.00 32 s +( the server. These function should be used rarely and always with ex\036) 149352 -217.75 32 s +52832.0 59741.0 m +(treme) 59256 0.00 -1 s +( caution, since they have the potential to disrupt the entire window) 133530 -73.64 32 s +( system for all) 149352 -81.67 32 s +52832.0 62902.0 m +(clients.) 60905 0.00 -1 s +( ) 61592 -19.00 32 s +2 sf +34544.0 69178.0 m +(grab\036server) 48648 0.00 -1 s +( ) 49241 -113.00 32 s +4 sf +(display) 57393 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 73897.0 m +(Disables) 62550 0.00 -1 s +( processing of requests and close\036downs) 107587 -68.00 32 s +( on all connections other than the one) 149352 -68.57 32 s +52832.0 77058.0 m +(on) 55654 0.00 -1 s +( which this request arrived. ) 86879 -24.60 32 s +4 sf +52832.0 83335.0 m +(display) 60984 0.00 -1 s +( ) 61669 -21.00 32 s +5 sf +(\037 A ) 67899 -20.50 32 s +2 sf +(display) 76525 0.00 -1 s +5 sf +(. ) 77916 -21.00 32 s +2 sf +34544.0 88121.0 m +(ungrab\036server) 51786 0.00 -1 s +( ) 52356 -136.00 32 s +4 sf +(display) 60508 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 92840.0 m +(Restarts) 61923 0.00 -1 s +( processing of requests and close\036downs on other connections.) 131945 -34.88 32 s +4 sf +52832.0 99116.0 m +(display) 60984 0.00 -1 s +( ) 61669 -21.00 32 s +5 sf +(\037 A ) 67899 -20.50 32 s +2 sf +(display) 76525 0.00 -1 s +5 sf +(. ) 77916 -21.00 32 s +2 sf +34544.0 103903.0 m +(with\036server\036grabbed) 59307 0.00 -1 s +( ) 59931 -82.00 32 s +4 sf +(display ) 68708 -81.00 32 s +5 sf +(&body) 76547 0.00 -1 s +4 sf +( body) 82657 -82.00 32 s +2 sf +142014.0 h +5 sf +(Macro) 149379 0.00 -1 s +52832.0 110112.0 m +(Grabs) 59570 0.00 -1 s +( the ) 64232 -99.00 32 s +4 sf +(display) 72384 0.00 -1 s +5 sf +( server only within the dynamic extent of the ) 122823 -99.56 32 s +4 sf +(body) 128309 0.00 -1 s +5 sf +(. ) 129622 -99.00 32 s +2 sf +(ungrab\036server) 146864 0.00 -1 s +5 sf +( is) 149352 -100.00 32 s +52832.0 113273.0 m +(automatically) 68192 0.00 -1 s +( called upon exit from the ) 96294 -280.00 32 s +4 sf +(body) 101780 0.00 -1 s +5 sf +(. This macro provides the most reliable way) 149352 -280.00 32 s +52832.0 116434.0 m +(for) 56121 0.00 -1 s +( CLX clients to grab the) 83223 -19.00 32 s +( server.) 91508 -20.00 32 s +4 sf +52832.0 122710.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 127497.0 m +(body) 58318 0.00 -1 s +5 sf +( \037 The forms to execute while the server is grabbed.) 117991 -27.90 32 s +20320.0 133006.0 m +0.0 0.0 m +newpath +20455 131382 av +148878 131380 as +[] 0 setdash +dp +149352.0 133006.0 m +7 sf +20320.0 136392.0 m +(Pointer) 31039 0.00 -1 s +( Control) 43214 43.00 32 s +52832.0 h +2 sf +(14.2) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 130183 -39.63 32 s +/symbb8 6 declareFont +6 sf +52832.0 142940.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change the pointer acceleration and acceleration threshold) 134496 -45.75 32 s +6 sf +52832.0 149487.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change the mapping of pointer button numbers) 121875 -38.00 32 s +2 sf +34544.0 155764.0 m +(change\036pointer\036control) 62286 0.00 -1 s +( ) 62912 -80.00 32 s +4 sf +(display) 71064 0.00 -1 s +5 sf +( &key ) 78586 -80.00 32 s +2 sf +(:acceleration :threshold) 107109 -80.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 160483.0 m +(Changes) 62551 0.00 -1 s +( the acceleration and/or the acceleration threshold of the pointer for the ) 140494 -243.83 32 s +4 sf +(display) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 163644.0 m +(The) 57220 0.00 -1 s +( ) 57767 -159.00 32 s +2 sf +(:acceleration) 73280 0.00 -1 s +5 sf +( number is) 84876 -159.00 32 s +( used as a multiplier, typically specified as a rational num\036) 149352 -143.60 32 s +52832.0 166805.0 m +(ber) 56435 0.00 -1 s +( of the form ) 69505 -259.00 32 s +4 sf +(C/P) 73895 0.00 -1 s +5 sf +(, where ) 82389 -258.50 32 s +4 sf +(C) 84271 0.00 -1 s +5 sf +( is the number of pixel positions of cursor motion displayed) 149352 -232.70 32 s +52832.0 169966.0 m +(for) 56121 0.00 -1 s +( ) 56734 -93.00 32 s +4 sf +(P) 58458 0.00 -1 s +5 sf +( units of pointer device motion. The acceleration only occurs if the pointer moves) 149352 -85.77 32 s +52832.0 173126.0 m +(more) 58630 0.00 -1 s +( that ) 63870 -202.00 32 s +2 sf +(:threshold) 76254 0.00 -1 s +5 sf +( pixels at once, and only) 102880 -161.60 32 s +( applies to the motion beyond the ) 139793 -202.57 32 s +2 sf +(:thresh\036) 149352 0.00 -1 s +52832.0 176287.0 m +(old) 56596 0.00 -1 s +5 sf +(.) 57302 0.00 -1 s +( Either ) 65913 152.00 32 s +2 sf +(:acceleration) 81426 0.00 -1 s +5 sf +( or ) 85796 304.00 32 s +2 sf +(:threshold) 98180 0.00 -1 s +5 sf +( can be set to ) 115143 304.40 32 s +2 sf +(:default) 124546 0.00 -1 s +5 sf +(, that restores the de\036) 149352 304.50 32 s +52832.0 179448.0 m +(fault settings) 67332 0.00 32 s +( of the server.) 82793 -18.00 32 s +4 sf +52832.0 185725.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 190511.0 m +(:acceleration) 68345 0.00 -1 s +( ) 69017 -34.00 32 s +5 sf +(\037 A number for the acceleration ratio.) 112776 -33.50 32 s +2 sf +52832.0 196788.0 m +(:threshold) 65216 0.00 -1 s +( ) 65893 -29.00 32 s +5 sf +(\037 The number of pixels required for acceleration to take effect.) 137928 -29.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036170) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(pointer\036control) 52881 0.00 -1 s +( ) 53485 -102.00 32 s +/timsps10i 4 declareFont +4 sf +(displa) 60384 0.00 -1 s +/timsps10 5 declareFont +5 sf +(y) 61795 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( ) 53499 -39.00 32 s +( acceleration) 68271 -40.00 32 s +5 sf +(, ) 69644 -39.00 32 s +4 sf +(threshold ) 80971 -40.00 32 s +5 sf +(\037 Type ) 90925 -39.50 32 s +2 sf +(number) 100488 0.00 -1 s +5 sf +(.) 101194 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the acceleration and threshold for the) 104059 -30.00 32 s +( ) 104734 -31.00 32 s +4 sf +(display) 112886 0.00 -1 s +5 sf +( pointer. ) 122936 -30.50 32 s +4 sf +52832.0 39895.0 m +(displa) 59731 0.00 -1 s +5 sf +(y) 61142 0.00 -1 s +( \037 A ) 68042 -25.67 32 s +2 sf +(display) 76668 0.00 -1 s +5 sf +(.) 77374 0.00 -1 s +2 sf +34544.0 44681.0 m +(pointer\036mapping) 54924 0.00 -1 s +( ) 55598 -32.00 32 s +4 sf +(display) 63750 0.00 -1 s +5 sf +( &key \() 72308 -31.50 32 s +2 sf +(:result\036type 'list) 91472 -32.00 32 s +5 sf +(\)) 92411 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 47842.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +52832.0 51003.0 m +( ) 54174 -35.00 32 s +4 sf +(mapping) 64050 0.00 -1 s +5 sf +( \037 Type ) 74684 -35.00 32 s +2 sf +(sequence) 85501 0.00 -1 s +5 sf +( or ) 89194 -34.50 32 s +2 sf +(card8) 96091 0.00 -1 s +4 sf +(.) 96797 0.00 -1 s +5 sf +( ) 97468 -35.00 32 s +52832.0 55722.0 m +(Returns) 61610 0.00 -1 s +( or \(with ) 71985 -16.00 32 s +2 sf +(setf) 76214 0.00 -1 s +5 sf +(\) changes the mapping of button numbers for the ) 131795 -15.89 32 s +4 sf +(display) 139947 0.00 -1 s +5 sf +( pointer.) 149352 0.00 32 s +52832.0 58883.0 m +(The) 57220 0.00 -1 s +( ) 57918 -8.00 32 s +2 sf +(:result\036type) 71864 0.00 -1 s +5 sf +( is not used when changing the mapping. If) 120474 -8.00 32 s +( element ) 130802 -8.50 32 s +4 sf +(i) 131586 0.00 -1 s +5 sf +( of the mapping) 149352 -8.67 32 s +52832.0 62044.0 m +(sequence) 63175 0.00 -1 s +( is ) 66329 -70.00 32 s +4 sf +(j) 67113 0.00 -1 s +5 sf +(, then the events from pointer button ) 108547 -60.00 32 s +4 sf +(j) 109331 0.00 -1 s +5 sf +( are reported by the server as) 141507 -70.00 32 s +( events) 149352 -71.00 32 s +52832.0 65205.0 m +(for) 56121 0.00 -1 s +( button ) 64721 -12.00 32 s +4 sf +(i) 65505 0.00 -1 s +5 sf +(+1. \(Note that pointer buttons are numbered beginning with one, while the) 149352 -10.64 32 s +52832.0 68366.0 m +(mapping) 62708 0.00 -1 s +( sequence itself is indexed normally from zero.\)) 115346 -182.57 32 s +( If element ) 127634 -213.67 32 s +4 sf +(i) 128418 0.00 -1 s +5 sf +( of the mapping se\036) 149352 -213.50 32 s +52832.0 71526.0 m +(quence) 60824 0.00 -1 s +( is zero, then button ) 83441 -85.60 32 s +4 sf +(i) 84225 0.00 -1 s +5 sf +(+1) 87228 0.00 -1 s +( is disabled and can no longer generate input events. No) 149352 -96.80 32 s +52832.0 74687.0 m +(two) 57064 0.00 -1 s +( elements of the mapping can have the same non\036zero value.) 124787 -38.00 32 s +52832.0 80964.0 m +(The) 57220 0.00 -1 s +( length of the mapping sequence indicates the actual number of buttons on the de\036) 149352 -13.79 32 s +52832.0 84125.0 m +(vice.) 58239 0.00 -1 s +( When changing the mapping, the new mapping must have) 124188 -40.00 32 s +( this same length.) 143820 -40.67 32 s +4 sf +52832.0 90401.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 95188.0 m +(:result\036type) 66778 0.00 -1 s +( ) 67454 -30.00 32 s +5 sf +(\037 The type of sequence to return.) 105912 -29.67 32 s +20320.0 102187.0 m +0.0 0.0 m +newpath +20455 100563 av +148878 100561 as +[] 0 setdash +dp +149352.0 102187.0 m +/timsps12b 7 declareFont +7 sf +20320.0 105574.0 m +(Keyboard) 34805 0.00 -1 s +( ) 35673 21.00 32 s +52832.0 h +2 sf +(14.3) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(The) 64354 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 130183 -39.63 32 s +7 sf +20320.0 108960.0 m +(Control) 31605 0.00 -1 s +52832.0 h +/symbb8 6 declareFont +6 sf +115508.0 v +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change keyboard controls) 98146 -50.75 32 s +6 sf +52832.0 122055.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Ring) 63400 0.00 -1 s +( the keyboard bell) 83560 -46.00 32 s +6 sf +52832.0 128603.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change the mapping of modifiers) 106454 -34.00 32 s +6 sf +52832.0 135151.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( the current up/down state of all keys) 107177 -26.71 32 s +2 sf +34544.0 141427.0 m +(bell) 38934 0.00 -1 s +( ) 39605 -35.00 32 s +4 sf +(display) 47757 0.00 -1 s +( ) 48427 -36.00 32 s +5 sf +(&optional \() 61481 -35.00 32 s +4 sf +(percent\036from\036normal) 85304 0.00 -1 s +5 sf +( 0\)) 88324 -36.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 146146.0 m +(Rings) 59418 0.00 -1 s +( the bell on the keyboard) 86433 -193.00 32 s +( at a volume relative to the base volume for the keyboard,) 149352 -193.55 32 s +52832.0 149307.0 m +(if) 54555 0.00 -1 s +( possible. Percent can range from -100 to 100 inclusive, or else a) 127171 -75.00 32 s +( Value error occurs.) 149352 -75.67 32 s +52832.0 152468.0 m +(The) 57220 0.00 -1 s +( following is the bell) 80446 -33.00 32 s +( volume when percent is non\036negative:) 124087 -33.60 32 s +52832.0 158744.0 m +(\(-) 55182 0.00 -1 s +( \(+ ) 59079 -23.00 32 s +4 sf +(base percent) 73398 -23.00 32 s +5 sf +(\) \() 75959 -23.00 32 s +2 sf +(quotient) 85992 0.00 -1 s +5 sf +( \(* ) 89708 -23.00 32 s +4 sf +(base percent) 104027 -23.00 32 s +5 sf +(\) 100\)\)) 111760 -23.00 32 s +52832.0 165021.0 m +(and) 56907 0.00 -1 s +( when percent) 72665 -35.00 32 s +( is negative: ) 86902 -35.67 32 s +52832.0 171298.0 m +(\(+) 55363 0.00 -1 s +( ) 56046 -23.00 32 s +4 sf +(base) 61219 0.00 -1 s +5 sf +( \() 62841 -23.00 32 s +2 sf +(quotient) 72874 0.00 -1 s +5 sf +( \(* ) 76590 -23.00 32 s +4 sf +(base percent) 90909 -23.00 32 s +5 sf +(\) 100\)\)) 98642 -23.00 32 s +4 sf +52832.0 177574.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 182361.0 m +(percent\036from\036normal) 76655 0.00 -1 s +5 sf +( \037 An integer) 92764 -38.00 32 s +( \(-100 through 100\).) 116005 -38.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +132373.0 8195.0 m +(Control Functions) 149013 -14.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036171) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(change\036keyboard\036control) 64954 0.00 -1 s +( ) 65579 -81.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 73731 0.00 -1 s +/timsps10 5 declareFont +5 sf +( &key ) 81251 -81.00 32 s +2 sf +(:key\036click\036percent :bell\036percent) 119015 -81.00 32 s +5 sf +( ) 119640 -81.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 25739.0 m +2 sf +(:bell\036pitch) 65214 0.00 -1 s +( :bell\036duration :led :led\036mode :key :auto\036repeat\036mode) 129484 -45.00 32 s +5 sf +52832.0 30457.0 m +(Changes) 62551 0.00 -1 s +( the various aspects of the keyboard. The keyword) 120145 97.00 32 s +( arguments specify which) 149352 96.33 32 s +52832.0 33618.0 m +(controls) 61923 0.00 -1 s +( to change. ) 74823 -37.00 32 s +52832.0 39895.0 m +(The) 57220 0.00 -1 s +( ) 57655 -271.00 32 s +2 sf +(:key\036click\036percent) 79437 0.00 -1 s +5 sf +( keyword sets the volume for key clicks, if possible. A value of) 147507 -271.00 32 s +( 0) 149352 -272.00 32 s +52832.0 43056.0 m +(implies) 61141 0.00 -1 s +( off, while a value of 100 implies loud. Setting ) 114541 10.00 32 s +2 sf +(:key\036click\036percent) 136323 0.00 -1 s +5 sf +( to) 139234 10.00 32 s +( ) 139949 9.00 32 s +2 sf +(:default) 149352 0.00 -1 s +5 sf +52832.0 46217.0 m +(restores) 61607 0.00 -1 s +( the default value.) 81751 -25.00 32 s +( ) 82431 -26.00 32 s +52832.0 52493.0 m +(The) 57220 0.00 -1 s +( ) 57650 -276.00 32 s +2 sf +(:bell\036percent) 73007 0.00 -1 s +5 sf +( sets the base volume for the bell between 0 \(off\) and 100 \(loud\) if pos\036) 149352 -276.00 32 s +52832.0 55654.0 m +(sible.) 58868 0.00 -1 s +( Setting ) 68225 -25.50 32 s +2 sf +(:bell\036percent) 83582 0.00 -1 s +5 sf +( to ) 87138 -25.50 32 s +2 sf +(:default) 96541 0.00 -1 s +5 sf +( restores the default value. ) 126819 -25.60 32 s +52832.0 61931.0 m +(The) 57220 0.00 -1 s +( ) 57803 -123.00 32 s +2 sf +(:bell\036pitch) 70185 0.00 -1 s +5 sf +( sets the pitch \(specified in Hz\) of the bell, if possible. Setting the ) 143084 -122.64 32 s +2 sf +(:bell\036) 149352 0.00 -1 s +52832.0 65092.0 m +(pitch) 58946 0.00 -1 s +5 sf +( to ) 62143 -205.00 32 s +2 sf +(:default ) 72047 -205.00 32 s +5 sf +(restores the default value. The) 105315 -205.00 32 s +( ) 105815 -206.00 32 s +2 sf +(:bell\036duration) 122588 0.00 -1 s +5 sf +( sets the duration \(speci\036) 149352 -205.50 32 s +52832.0 68253.0 m +(fied) 57219 0.00 -1 s +( in milliseconds\)) 75869 -81.00 32 s +( of the bell, if possible. Setting ) 110651 -81.57 32 s +2 sf +(:bell\036pitch) 123033 0.00 -1 s +5 sf +( to ) 126477 -81.50 32 s +2 sf +(:default) 135880 0.00 -1 s +5 sf +( restores the) 149352 -81.50 32 s +52832.0 71414.0 m +(default.) 61373 0.00 -1 s +( Note that a bell generator connected with the console but not directly on the key\036) 149352 -273.80 32 s +52832.0 74574.0 m +(board) 59257 0.00 -1 s +( is treated as if it were part of the keyboard.) 108193 -19.80 32 s +52832.0 80851.0 m +(If) 54710 0.00 -1 s +( both) 60265 -168.00 32 s +( ) 60802 -169.00 32 s +2 sf +(:led\036mode) 72869 0.00 -1 s +5 sf +( and ) 78019 -168.50 32 s +2 sf +(:led) 82564 0.00 -1 s +5 sf +( are specified, then the state of that LED is changed, if possi\036) 149352 -168.50 32 s +52832.0 84012.0 m +(ble.) 56986 0.00 -1 s +( If only ) 65141 -286.00 32 s +2 sf +(:led\036mode) 77208 0.00 -1 s +5 sf +( is specified,) 90822 -286.00 32 s +( the state of all LEDs are changed, if possible. At most) 149352 -286.55 32 s +52832.0 87173.0 m +(32) 55654 0.00 -1 s +( LEDs are supported, numbered from one. No standard interpretation of) 134435 -225.00 32 s +( the LEDs are) 149352 -225.67 32 s +52832.0 90334.0 m +(defined.) 62000 0.00 -1 s +( ) 62653 -53.00 32 s +52832.0 96610.0 m +(If) 54710 0.00 -1 s +( both ) 61063 -38.00 32 s +2 sf +(:auto\036repeat\036mode) 83471 0.00 -1 s +5 sf +( and ) 88882 -38.00 32 s +2 sf +(:key) 94054 0.00 -1 s +5 sf +( are specified, the auto\036repeat mode of that key is) 149352 -37.89 32 s +52832.0 99771.0 m +(changed,) 62941 0.00 -1 s +( if possible. If only ) 86245 240.00 32 s +2 sf +(:auto\036repeat\036mode) 108653 0.00 -1 s +5 sf +( is specified, the global auto\036repeat) 149352 240.40 32 s +52832.0 102932.0 m +(mode) 59102 0.00 -1 s +( for the entire keyboard is changed, if possible, without affecting the per\036key set\036) 149352 -80.54 32 s +52832.0 106093.0 m +(tings.) 59026 0.00 -1 s +( An error occurs if ) 80448 -25.00 32 s +2 sf +(:key) 85620 0.00 -1 s +5 sf +( is specified without ) 109034 -25.00 32 s +2 sf +(:auto\036repeat\036mode) 131442 0.00 -1 s +5 sf +(.) 132148 0.00 -1 s +4 sf +52832.0 112370.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 117156.0 m +(:key\036click\036percent) 74614 0.00 -1 s +5 sf +( \037 An) 82222 -37.00 32 s +( integer \(0 100\).) 100290 -37.67 32 s +2 sf +52832.0 123433.0 m +(:bell\036percent) 68189 0.00 -1 s +5 sf +( \037 An integer \(0) 87348 -30.00 32 s +( 100\).) 93901 -31.00 32 s +2 sf +52832.0 129709.0 m +(:bell\036pitch) 65214 0.00 -1 s +5 sf +( \037 A) 71415 -35.00 32 s +( ) 72085 -36.00 32 s +2 sf +(card16) 80393 0.00 -1 s +5 sf +(.) 81099 0.00 -1 s +2 sf +52832.0 135986.0 m +(:bell\036duration) 69605 0.00 -1 s +5 sf +( \037 A) 75784 -46.00 32 s +( ) 76443 -47.00 32 s +2 sf +(card16) 84751 0.00 -1 s +5 sf +(.) 85457 0.00 -1 s +2 sf +52832.0 142263.0 m +(:led) 57377 0.00 -1 s +( ) 58052 -31.00 32 s +5 sf +(\037 A ) 64262 -30.50 32 s +2 sf +(card8) 71159 0.00 -1 s +5 sf +(.) 71865 0.00 -1 s +2 sf +52832.0 148539.0 m +(:led\036mode) 64899 0.00 -1 s +5 sf +( \037 Either ) 76689 -15.00 32 s +2 sf +(:on) 80608 0.00 -1 s +5 sf +( or) 83649 -15.00 32 s +( ) 84339 -16.00 32 s +2 sf +(:off) 88567 0.00 -1 s +5 sf +(.) 89273 0.00 -1 s +2 sf +52832.0 154816.0 m +(:key) 58004 0.00 -1 s +( ) 58662 -48.00 32 s +5 sf +(\037) 61484 0.00 -1 s +( A ) 64836 -48.50 32 s +2 sf +(card8) 71733 0.00 -1 s +5 sf +( keycode.) 82499 -49.00 32 s +2 sf +52832.0 161092.0 m +(:auto\036repeat\036mode) 75240 0.00 -1 s +( ) 75921 -25.00 32 s +5 sf +(\037 Either ) 87000 -25.00 32 s +2 sf +(:on) 90919 0.00 -1 s +5 sf +(, ) 92306 -25.00 32 s +2 sf +(:off) 96534 0.00 -1 s +5 sf +(, or) 100271 -25.00 32 s +( ) 100951 -26.00 32 s +2 sf +(:default) 110354 0.00 -1 s +5 sf +(.) 111060 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036172) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(keyboard\036control) 55549 0.00 -1 s +( ) 56104 -151.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 64256 0.00 -1 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +54864.0 h +(key\036click\036percent,) 74997 0.00 -1 s +( bell\036percent) 89274 -63.00 32 s +( ) 89916 -64.00 32 s +5 sf +(\037 Type ) 99822 -63.50 32 s +2 sf +(card8) 106719 0.00 -1 s +5 sf +(.) 107425 0.00 -1 s +4 sf +52832.0 32060.0 m +54864.0 h +(bell\036pitch) 65678 0.00 -1 s +( bell\036duration ) 81884 -49.00 32 s +5 sf +(\037 Type) 91162 -49.00 32 s +( ) 91818 -50.00 32 s +2 sf +(card16) 100126 0.00 -1 s +5 sf +(.) 100832 0.00 -1 s +4 sf +52832.0 35221.0 m +54864.0 h +(led\036mask) 65050 0.00 -1 s +( ) 65703 -53.00 32 s +5 sf +(\037 Type ) 75630 -53.00 32 s +2 sf +(card32) 83938 0.00 -1 s +5 sf +(.) 84644 0.00 -1 s +4 sf +52832.0 38382.0 m +54864.0 h +(global\036auto\036repeat) 76181 0.00 -1 s +( ) 76864 -23.00 32 s +5 sf +(\037 Either ) 87947 -23.00 32 s +2 sf +(:on) 91866 0.00 -1 s +5 sf +( or ) 95582 -23.00 32 s +2 sf +(:off) 99810 0.00 -1 s +5 sf +(.) 100516 0.00 -1 s +4 sf +52832.0 41543.0 m +54864.0 h +(auto\036repeats) 69128 0.00 -1 s +( ) 69788 -46.00 32 s +5 sf +(\037 Type) 79069 -46.00 32 s +( ) 79728 -47.00 32 s +2 sf +(bit\036vector) 91479 0.00 -1 s +5 sf +(.) 92185 0.00 -1 s +52832.0 46262.0 m +(Returns) 61610 0.00 -1 s +( the current control values for the keyboard. For the LEDs, the least significant) 149352 -92.92 32 s +52832.0 49423.0 m +(bit) 55811 0.00 -1 s +( of ) 59235 -169.00 32 s +4 sf +(led\036mask) 69421 0.00 -1 s +5 sf +( corresponds to) 86325 -169.00 32 s +( LED one, and each one bit in ) 119377 -169.50 32 s +4 sf +(led\036mask) 129563 0.00 -1 s +5 sf +( indicates an LED) 149352 -169.67 32 s +52832.0 52584.0 m +(that) 57064 0.00 -1 s +( is lit. ) 63864 -86.00 32 s +4 sf +(auto\036repeats) 78128 0.00 -1 s +5 sf +( is a bit vector; each one bit indicates that auto\036repeat is) 139957 -86.00 32 s +( enabled) 149352 -87.00 32 s +52832.0 55745.0 m +(for) 56121 0.00 -1 s +( the corresponding key. The vector is represented as 32 bytes. Byte ) 132121 -28.00 32 s +4 sf +(n) 133532 0.00 -1 s +5 sf +( \(from 0\)) 143661 -28.00 32 s +( con\036) 149352 -29.00 32 s +52832.0 58905.0 m +(tains) 58162 0.00 -1 s +( the bits for keys 8) 78897 -38.60 32 s +4 sf +(n) 80308 0.00 -1 s +5 sf +( to 8) 85249 -38.50 32 s +4 sf +(n) 86660 0.00 -1 s +5 sf +(+7, with the least significant bit in the byte representing) 149352 -38.56 32 s +52832.0 62066.0 m +(key) 56907 0.00 -1 s +( 8) 58956 -68.00 32 s +4 sf +(n) 60367 0.00 -1 s +5 sf +(.) 61073 0.00 -1 s +4 sf +52832.0 68343.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 73129.0 m +(modifier\036mapping) 56489 0.00 -1 s +( ) 57144 -51.00 32 s +4 sf +(display) 65296 0.00 -1 s +( ) 65950 -52.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 76290.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 79451.0 m +54864.0 h +(shift\036keycodes) 70849 0.00 -1 s +5 sf +(,) 71555 0.00 -1 s +4 sf +( lock\036keycodes) 87966 -120.00 32 s +5 sf +(,) 88672 0.00 -1 s +4 sf +( control\036keycodes) 108534 -120.00 32 s +5 sf +(,) 109240 0.00 -1 s +4 sf +( mod1\036keycodes) 127220 -120.00 32 s +5 sf +(,) 127926 0.00 -1 s +149352.0 h +52832.0 82612.0 m +54864.0 h +4 sf +(mod2\036keycodes) 72258 0.00 -1 s +5 sf +(,) 72964 0.00 -1 s +( ) 73581 -89.00 32 s +4 sf +(mod3\036keycodes) 90975 0.00 -1 s +5 sf +(, ) 92298 -89.00 32 s +4 sf +(mod4\036keycodes) 109692 0.00 -1 s +5 sf +(, ) 111015 -89.00 32 s +4 sf +(mod5\036keycodes) 128409 0.00 -1 s +5 sf +( \037) 131848 -89.00 32 s +( ) 132464 -90.00 32 s +52832.0 85773.0 m +54864.0 h +(Type) 60663 0.00 -1 s +( ) 61338 -31.00 32 s +2 sf +(list) 64943 0.00 -1 s +5 sf +( of) 67968 -31.00 32 s +( ) 68642 -32.00 32 s +2 sf +(card8) 75539 0.00 -1 s +5 sf +(.) 76245 0.00 -1 s +52832.0 90492.0 m +(Returns) 61610 0.00 -1 s +( the set of keycodes used for each) 98155 -209.00 32 s +( modifier on the ) 116127 -209.50 32 s +4 sf +(display) 124279 0.00 -1 s +5 sf +( keyboard. Each return) 149352 -209.67 32 s +52832.0 93653.0 m +(value) 58944 0.00 -1 s +( is a list of the) 74237 -124.00 32 s +( ) 74818 -125.00 32 s +2 sf +(card8) 81715 0.00 -1 s +5 sf +( keycodes used for each modifier key. The order of keycodes) 149352 -124.50 32 s +52832.0 96814.0 m +(within) 60043 0.00 -1 s +( each list is server\036dependent.) 93382 -30.75 32 s +4 sf +52832.0 103090.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 107877.0 m +(query\036keymap) 52101 0.00 -1 s +( ) 52673 -134.00 32 s +4 sf +(display) 60825 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 111038.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 114198.0 m +( keymap ) 63475 -31.00 32 s +5 sf +(\037 Type ) 73446 -31.00 32 s +2 sf +(bit\036vector ) 85872 -31.00 32 s +5 sf +(256.) 90811 0.00 -1 s +( ) 91485 -32.00 32 s +52832.0 118917.0 m +(Returns) 61610 0.00 -1 s +( a bit vector that describes the) 94733 -96.00 32 s +( state of the keyboard. Each one bit indicates that) 149352 -96.56 32 s +52832.0 122078.0 m +(the) 56280 0.00 -1 s +( corresponding key is currently pressed.) 100134 -226.00 32 s +( The vector is represented as 32 bytes. Byte ) 147941 -226.56 32 s +4 sf +(n) 149352 0.00 -1 s +5 sf +52832.0 125239.0 m +(\(from) 59255 0.00 -1 s +( 0\) contains the bits for keys 8) 93259 -13.00 32 s +4 sf +(n) 94670 0.00 -1 s +5 sf +( to 8) 99662 -13.00 32 s +4 sf +(n) 101073 0.00 -1 s +5 sf +(+7, with the least) 120497 -13.00 32 s +( significant bit in the byte) 149352 -13.60 32 s +52832.0 128400.0 m +(representing) 66779 0.00 -1 s +( key) 71504 -56.00 32 s +( 8) 73564 -57.00 32 s +4 sf +(n) 74975 0.00 -1 s +5 sf +(.) 75681 0.00 -1 s +4 sf +52832.0 134676.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 139463.0 m +(set\036modifier\036mapping) 60718 0.00 -1 s +( ) 61395 -29.00 32 s +4 sf +(display ) 70224 -29.00 32 s +5 sf +(&key ) 77171 -29.00 32 s +2 sf +(:shift) 83439 0.00 -1 s +5 sf +( ) 84116 -29.00 32 s +2 sf +(:lock) 90072 0.00 -1 s +5 sf +( ) 90749 -29.00 32 s +2 sf +(:control) 100308 0.00 -1 s +5 sf +( ) 100985 -29.00 32 s +2 sf +(:mod1) 108665 0.00 -1 s +5 sf +( ) 109342 -29.00 32 s +2 sf +(:mod2) 117022 0.00 -1 s +5 sf +( ) 117698 -30.00 32 s +139373.0 h +(Function) 149407 0.00 -1 s +52832.0 142624.0 m +2 sf +(:mod3) 60512 0.00 -1 s +( :mod4) 68853 -45.00 32 s +5 sf +( ) 69513 -46.00 32 s +2 sf +(:mod5) 77193 0.00 -1 s +34544.0 145785.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 148946.0 m +( status ) 61485 -17.00 32 s +5 sf +(\037 One of ) 73424 -17.33 32 s +2 sf +(:success) 82985 0.00 -1 s +5 sf +(, ) 84380 -17.00 32 s +2 sf +(:failed) 92059 0.00 -1 s +5 sf +(, or ) 96492 -17.50 32 s +2 sf +(:device\036busy) 111540 0.00 -1 s +5 sf +(. ) 112934 -18.00 32 s +52832.0 153664.0 m +(Changes) 62551 0.00 -1 s +( the set) 70300 -123.00 32 s +( of keycodes mapped to the specified modifier keys on the ) 135604 -112.27 32 s +4 sf +(display) 143756 0.00 -1 s +5 sf +( key\036) 149352 -124.00 32 s +52832.0 156825.0 m +(board.) 59963 0.00 -1 s +( Each keyword argument) 88090 -54.00 32 s +( contains a sequence of new ) 120105 -45.50 32 s +2 sf +(card8) 127002 0.00 -1 s +5 sf +( keycodes for a spe\036) 149352 -54.50 32 s +52832.0 159986.0 m +(cific) 57845 0.00 -1 s +( modifier. The return value) 92812 1121.00 32 s +( indicates whether the change was completed) 149352 933.67 32 s +52832.0 163147.0 m +(successfully.) 67331 0.00 -1 s +52832.0 169424.0 m +(A) 54869 0.00 -1 s +( status of ) 65249 -172.00 32 s +2 sf +(:failed) 72928 0.00 -1 s +5 sf +( is returned if hardware limitations prevent) 120168 -172.00 32 s +( the requested change. For) 149352 -129.50 32 s +52832.0 172585.0 m +(example,) 63098 0.00 -1 s +( multiple keycodes per modifier may not be supported, up transitions on a) 149352 244.83 32 s +52832.0 175745.0 m +(given) 59102 0.00 -1 s +( keycode may not be supported, or autorepeat may be mandatory for a given) 149352 323.08 32 s +52832.0 178906.0 m +(keycode.) 62941 0.00 -1 s +( If ) 66163 -34.00 32 s +2 sf +(:failed) 73842 0.00 -1 s +5 sf +( is returned, the mappings for all modifiers remain) 130422 -29.75 32 s +( unchanged.) 144024 -35.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +132373.0 8195.0 m +(Control Functions) 149013 -14.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036173) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(A) 54869 0.00 -1 s +( status of ) 64913 -284.00 32 s +2 sf +(:device\036busy) 79961 0.00 -1 s +5 sf +( is returned if a new keycode given for a modifier was not) 142194 -260.33 32 s +( previ\036) 149352 -285.00 32 s +52832.0 25739.0 m +(ously) 58947 0.00 -1 s +( mapped to that modifier and is currently in the down state. In this case, the map\036) 149352 -71.06 32 s +52832.0 28900.0 m +(pings) 58947 0.00 -1 s +( for) 62900 -42.00 32 s +( all modifiers remain unchanged.) 99997 -32.00 32 s +/timsps10i 4 declareFont +4 sf +52832.0 35176.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 39963.0 m +(:shift) 59100 0.00 -1 s +5 sf +(,) 59806 0.00 -1 s +( ) 60385 -127.00 32 s +2 sf +(:lock) 66341 0.00 -1 s +5 sf +(, ) 67626 -127.00 32 s +2 sf +(:control) 77185 0.00 -1 s +5 sf +(, ) 78470 -127.00 32 s +2 sf +(:mod1) 86150 0.00 -1 s +5 sf +(, ) 87435 -127.00 32 s +2 sf +(:mod2) 95115 0.00 -1 s +5 sf +(, ) 96400 -127.00 32 s +2 sf +(:mod3) 104080 0.00 -1 s +5 sf +(, ) 105365 -127.00 32 s +2 sf +(:mod4) 113045 0.00 -1 s +5 sf +(, ) 114330 -127.00 32 s +2 sf +(:mod5) 122010 0.00 -1 s +5 sf +( \037 A) 128027 -127.00 32 s +( sequence of ) 142455 -127.67 32 s +2 sf +(card8) 149352 0.00 -1 s +5 sf +57912.0 43124.0 m +(keycodes) 68413 0.00 -1 s +( for the given modifier.) 94511 -38.75 32 s +20320.0 50123.0 m +0.0 0.0 m +newpath +20455 48499 av +148878 48497 as +[] 0 setdash +dp +149352.0 50123.0 m +/timsps12b 7 declareFont +7 sf +20320.0 53509.0 m +(Keyboard) 34805 0.00 -1 s +( ) 35673 21.00 32 s +52832.0 h +2 sf +(14.4) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(Handling) 70468 0.00 -1 s +( the great diversity of keyboard devices and) 132557 1828.00 32 s +( international) 149352 1827.00 32 s +7 sf +20320.0 56896.0 m +(Encodings) 35375 0.00 -1 s +52832.0 h +5 sf +(language character) 74063 0.00 32 s +( encodings is a difficult problem for interactive programs) 143773 642.00 32 s +( that) 149352 641.00 32 s +52832.0 60057.0 m +(need to) 61061 0.00 32 s +( receive text input but must also be portable. The X Window System) 136933 -124.00 32 s +( solves this) 149352 -62.50 32 s +52832.0 63218.0 m +(problem) 62236 0.00 -1 s +( by using different sets of encodings for device keys \() 120828 -191.00 32 s +4 sf +(keycodes) 131013 0.00 -1 s +5 sf +(\) and for) 140537 -95.50 32 s +( charac\036) 149352 -192.00 32 s +52832.0 66379.0 m +(ter) 55808 0.00 -1 s +( symbols \() 67937 185.00 32 s +4 sf +(keysyms) 77182 0.00 -1 s +5 sf +(\). Each X server maintains a ) 110970 185.00 32 s +4 sf +(keyboard mapping) 132053 0.00 32 s +5 sf +( that associates) 149352 185.00 32 s +52832.0 69540.0 m +(keycodes) 63333 0.00 -1 s +( and keysyms, and which can be returned or changed by client programs.) 145107 -43.00 32 s +52832.0 75816.0 m +(To) 55967 0.00 -1 s +( handle text input, a CLX client program must follow these steps:) 129529 -24.64 32 s +52832.0 82093.0 m +(1.) 54949 0.00 -1 s +57912.0 h +(Receive) 67001 0.00 -1 s +( a ) 69570 -48.00 32 s +2 sf +(:key\036press) 81952 0.00 -1 s +5 sf +( \(or ) 86557 -48.00 32 s +2 sf +(:key\036release) 100973 0.00 -1 s +5 sf +(\) event containing a keycode.) 133931 -48.00 32 s +52832.0 88369.0 m +(2.) 54949 0.00 -1 s +57912.0 h +(Convert) 67003 0.00 -1 s +( the keycode into its corresponding keysym, based on the current keyboard) 149352 -194.36 32 s +57912.0 91530.0 m +(mapping.) 68494 0.00 -1 s +( See ) 73761 -110.00 32 s +2 sf +(keycode\036keysym) 93511 0.00 -1 s +5 sf +(.) 94217 0.00 -1 s +52832.0 97807.0 m +(3.) 54949 0.00 -1 s +57912.0 h +(Convert) 67003 0.00 -1 s +( the keysym into the corresponding Common Lisp character. See ) 139321 -159.10 32 s +2 sf +(keysym\036) 149352 0.00 -1 s +57912.0 100968.0 m +(character) 69507 0.00 -1 s +5 sf +(.) 70213 0.00 -1 s +52832.0 107899.0 m +0.0 0.0 m +newpath +149013 106340 av +52967 106342 as +[] 0 setdash +dp +149352.0 107899.0 m +20320.0 110721.0 m +32783.0 h +2 sf +(Keycodes) 44226 0.00 -1 s +( and) 49378 -103.00 32 s +52832.0 h +(14.4.1) 59888 0.00 -1 s +5 sf +() 59888 0.00 -1 s +62083.0 h +(A) 64120 0.00 -1 s +( ) 65936 1110.00 32 s +4 sf +(keycode) 75023 0.00 -1 s +5 sf +( represents a physical \(or logical\) key. In CLX,) 137036 1110.00 32 s +( keycodes) 149352 1109.00 32 s +20320.0 113882.0 m +38585.0 h +2 sf +(Keysyms) 49401 0.00 -1 s +52832.0 h +5 sf +(are) 56277 0.00 -1 s +( values of type \() 73871 -147.00 32 s +2 sf +(integer) 82333 0.00 -1 s +5 sf +( 8) 84303 -147.00 32 s +( 255\). A keycode value carries no intrinsic information, al\036) 149352 -147.56 32 s +52832.0 117043.0 m +(though) 60671 0.00 -1 s +( server implementors may attempt to encode geometry \(for example, matrix\)) 145658 -145.00 32 s +( in\036) 149352 -146.00 32 s +52832.0 120204.0 m +(formation) 63959 0.00 -1 s +( in some fashion so it can be interpreted in a server\036 dependent fashion. The) 149352 -7.79 32 s +52832.0 123365.0 m +(mapping) 62708 0.00 -1 s +( between keys and keycodes cannot be changed.) 116659 -62.57 32 s +52832.0 129642.0 m +(A) 54869 0.00 -1 s +( ) 55363 -212.00 32 s +4 sf +(keysym) 63510 0.00 -1 s +5 sf +( is an encoding of a symbol on) 96594 -212.00 32 s +( the cap of a key. In CLX, keysyms are values of) 149352 -212.55 32 s +52832.0 132802.0 m +(type) 57691 0.00 -1 s +( ) 58557 160.00 32 s +2 sf +(card32) 66865 0.00 -1 s +5 sf +(. The set of defined keysyms include the ISO Latin character sets \(1\0364\),) 149352 160.42 32 s +52832.0 135963.0 m +(Katakana,) 64193 0.00 -1 s +( Arabic, Cyrillic, Greek, Technical, Special, Publishing,) 127447 14.00 32 s +( APL, Hebrew, and) 149352 13.33 32 s +52832.0 139124.0 m +(miscellaneous) 68820 0.00 -1 s +( keys) 74683 -16.00 32 s +( found on keyboards \(RETURN, HELP, TAB, and so on\). The en\036) 149352 -16.55 32 s +52832.0 142285.0 m +(coding) 60513 0.00 -1 s +( of keysyms is) 76650 -30.00 32 s +( defined by the X Protocol.) 107064 -30.60 32 s +52832.0 148562.0 m +(A) 54869 0.00 -1 s +( list of keysyms is associated) 87276 -56.00 32 s +( with each keycode. The length of the list can vary with) 149352 -56.55 32 s +52832.0 151723.0 m +(each) 58002 0.00 -1 s +( keycode. The list) 78244 59.00 32 s +( is intended to convey the set of symbols on the corresponding) 149352 58.45 32 s +52832.0 154884.0 m +(key.) 57613 0.00 -1 s +( By convention, if the list contains a single keysym and if that) 125473 -165.00 32 s +( keysym is alphabetic) 149352 -165.67 32 s +52832.0 158044.0 m +(and) 56907 0.00 -1 s +( case distinction is relevant, then) 93089 -131.00 32 s +( it should be treated as equivalent to a two\036element) 149352 -131.56 32 s +52832.0 161205.0 m +(list) 56282 0.00 -1 s +( of) 59179 -159.00 32 s +( the lowercase and uppercase keysyms. For example, if the list contains the single) 149352 -159.54 32 s +52832.0 164366.0 m +(keysym) 61611 0.00 -1 s +( for uppercase A, the client should treat it as if it were a pair with lowercase as the) 149352 -275.83 32 s +52832.0 167527.0 m +(first) 57376 0.00 -1 s +( keysym and uppercase A as the second keysym.) 112054 -33.00 32 s +52832.0 173804.0 m +(For) 56751 0.00 -1 s +( any keycode, the first keysym in the list should be chosen as the interpretation of a) 149352 -85.81 32 s +52832.0 176965.0 m +(key) 56907 0.00 -1 s +( press) 63572 160.00 32 s +( when no modifier keys are down. The second keysym in the list normally) 149352 159.46 32 s +52832.0 180126.0 m +(should) 60358 0.00 -1 s +( be chosen when the ) 83914 -7.00 32 s +2 sf +(:shift) 90182 0.00 -1 s +5 sf +( modifier is on, or when the ) 122107 -7.57 32 s +2 sf +(:lock) 128063 0.00 -1 s +5 sf +( modifier is on and) 149352 -7.50 32 s +52832.0 183286.0 m +2 sf +(:lock) 58788 0.00 -1 s +5 sf +( is interpreted as ) 78124 14.25 32 s +2 sf +(:shift\036lock) 90348 0.00 -1 s +5 sf +(. When the ) 103403 14.67 32 s +2 sf +(:lock) 109359 0.00 -1 s +5 sf +( modifier is on and is interpreted as) 149352 14.43 32 s +52832.0 186447.0 m +2 sf +(:caps\036lock) 65058 0.00 -1 s +5 sf +(,) 65764 0.00 -1 s +( it is suggested that the ) 91906 -59.00 32 s +2 sf +(:shift) 98174 0.00 -1 s +5 sf +( modifier first be applied to choose a keysym,) 149352 -58.88 32 s +52832.0 189608.0 m +(but) 56438 0.00 -1 s +( if that keysym is lowercase alphabetic, the corresponding uppercase keysym should) 149352 -202.73 32 s +52832.0 192769.0 m +(be) 55496 0.00 -1 s +( used instead. ) 71391 -32.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036174) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22578.0 m +(Other) 59256 0.00 -1 s +( interpretations of ) 81055 344.00 32 s +2 sf +(:caps\036lock) 93281 0.00 -1 s +5 sf +( are possible;) 108860 344.00 32 s +( for example, it may be viewed as) 149352 343.43 32 s +52832.0 25739.0 m +(equivalent) 64587 0.00 -1 s +( to ) 68122 -36.00 32 s +2 sf +(:shift\036lock) 80346 0.00 -1 s +5 sf +(, but only applying when the first keysym is lowercase alpha\036) 149352 -35.60 32 s +52832.0 28900.0 m +(betic) 58317 0.00 -1 s +( and the second keysym) 84872 -102.00 32 s +( is the corresponding uppercase alphabetic. No interpreta\036) 149352 -102.57 32 s +52832.0 32060.0 m +(tion) 57222 0.00 -1 s +( of keysyms beyond the first two in a list is suggested) 116821 -76.00 32 s +( here. No spatial geometry of) 149352 -76.60 32 s +52832.0 35221.0 m +(the) 56280 0.00 -1 s +( symbols on the) 73584 -164.00 32 s +( key is defined by their order in the keysym list, although a geometry) 149352 -164.54 32 s +52832.0 38382.0 m +(might) 59417 0.00 -1 s +( be defined) 71617 -169.00 32 s +( on a vendor\036specific basis. The X server does not use the mapping be\036) 149352 -169.54 32 s +52832.0 41543.0 m +(tween) 59570 0.00 -1 s +( keycodes and keysyms. Rather, the X server stores the mapping merely for read\036) 149352 -152.85 32 s +52832.0 44704.0 m +(ing) 56438 0.00 -1 s +( and writing by) 73522 -27.00 32 s +( clients.) 82273 -28.00 32 s +52832.0 50958.0 m +0.0 0.0 m +newpath +149013 49399 av +52967 49401 as +[] 0 setdash +dp +149352.0 50958.0 m +20320.0 53780.0 m +37389.0 h +2 sf +(Keyboard) 49461 0.00 -1 s +52832.0 h +(14.4.2) 59888 0.00 -1 s +5 sf +() 59888 0.00 -1 s +62083.0 h +(The) 66471 0.00 -1 s +( X server maintains a keyboard mapping) 121779 1590.00 32 s +( that associates each) 149352 1589.33 32 s +20320.0 56941.0 m +38450.0 h +2 sf +(Mapping) 49427 0.00 -1 s +52832.0 h +5 sf +(keycode) 62235 0.00 -1 s +( with one or more keysyms. The following paragraphs describe the CLX func\036) 149352 -113.50 32 s +52832.0 60102.0 m +(tions) 58320 0.00 -1 s +( used to return or change the mapping of) 103816 -34.13 32 s +( keycodes.) 115689 -40.00 32 s +2 sf +34544.0 65701.0 m +(change\036keyboard\036mapping) 66997 0.00 -1 s +( ) 67656 -47.00 32 s +/timsps10i 4 declareFont +4 sf +(display keysyms) 85712 -47.00 32 s +5 sf +( &key \() 94239 -47.00 32 s +2 sf +(:start) 100818 0.00 -1 s +5 sf +( 0\) ) 104485 -47.50 32 s +2 sf +(:end ) 110473 -48.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 68862.0 m +(\() 53771 0.00 -1 s +2 sf +(:first\036keycode) 70381 0.00 -1 s +( :start) 77654 -12.00 32 s +5 sf +(\)) 78593 0.00 -1 s +52832.0 73581.0 m +(Changes) 62551 0.00 -1 s +( the mapping of keycodes to ) 95229 12.00 32 s +4 sf +(keysyms) 104474 0.00 -1 s +5 sf +(. A ) 108653 12.00 32 s +2 sf +(:mapping\036notify) 128247 0.00 -1 s +5 sf +( event is generated) 149352 8.33 32 s +52832.0 76742.0 m +(for) 56121 0.00 -1 s +( all clients.) 68411 -8.00 32 s +52832.0 82341.0 m +(The) 57220 0.00 -1 s +( new ) 63278 -27.50 32 s +4 sf +(keysyms) 72523 0.00 -1 s +5 sf +( are specified as a two\036dimensional array in which: ) 130500 -27.56 32 s +52832.0 88618.0 m +(\() 53771 0.00 -1 s +2 sf +(aref) 58627 0.00 -1 s +5 sf +( ) 59333 0.00 32 s +4 sf +(keysyms) 68578 0.00 -1 s +5 sf +( \(+ ) 72513 -4.00 32 s +2 sf +(:start) 79092 0.00 -1 s +5 sf +( ) 79794 -4.00 32 s +4 sf +(i) 80578 0.00 -1 s +5 sf +(\) ) 82219 -4.00 32 s +4 sf +(j) 83003 0.00 -1 s +5 sf +(\) ) 84644 -4.00 32 s +52832.0 94894.0 m +(is) 54714 0.00 -1 s +( ) 55679 259.00 32 s +4 sf +(keysym) 63826 0.00 -1 s +5 sf +( ) 64791 259.00 32 s +4 sf +(j) 65575 0.00 -1 s +5 sf +( associated with keycode \(+ ) 98689 207.20 32 s +2 sf +(:first\036keycode) 115299 0.00 -1 s +5 sf +( ) 116263 258.00 32 s +4 sf +(i) 117047 0.00 -1 s +5 sf +(\). The maximum number of) 149352 258.50 32 s +52832.0 98055.0 m +4 sf +(keysyms) 62077 0.00 -1 s +5 sf +( associated) 74342 -39.00 32 s +( with any one keycode is given by: ) 114040 -34.63 32 s +52832.0 104332.0 m +(\() 53771 0.00 -1 s +2 sf +(array\036dimension) 73836 0.00 -1 s +5 sf +( ) 74481 -61.00 32 s +4 sf +(keysyms) 83726 0.00 -1 s +5 sf +( 1\)) 86721 -61.00 32 s +4 sf +52832.0 110609.0 m +(keysyms) 62077 0.00 -1 s +5 sf +( should contain ) 79524 -168.00 32 s +2 sf +(nil) 82661 0.00 -1 s +5 sf +( elements to represent those keysyms that are undefined for a) 149352 -227.30 32 s +52832.0 113769.0 m +(given) 59102 0.00 -1 s +( keycode. ) 70123 -250.00 32 s +2 sf +(:start) 76702 0.00 -1 s +5 sf +( and ) 81689 -250.00 32 s +2 sf +(:end) 87019 0.00 -1 s +5 sf +( define the subsequence of the) 119859 -250.00 32 s +( ) 120314 -251.00 32 s +4 sf +(keysyms) 129559 0.00 -1 s +5 sf +( array that defines) 149352 -167.00 32 s +52832.0 116930.0 m +(the) 56280 0.00 -1 s +( new mapping, and the number of keycode mappings changed.) 127337 49.00 32 s +( By default, ) 141386 32.33 32 s +2 sf +(:end) 146716 0.00 -1 s +5 sf +( is) 149352 48.00 32 s +52832.0 120091.0 m +(given) 59102 0.00 -1 s +( by:) 63353 -61.00 32 s +52832.0 125690.0 m +(\() 53771 0.00 -1 s +2 sf +(array\036dimension) 73836 0.00 -1 s +5 sf +( ) 74499 -43.00 32 s +4 sf +(keysyms) 83744 0.00 -1 s +5 sf +( 0\) ) 87421 -42.50 32 s +52832.0 131967.0 m +(The) 57220 0.00 -1 s +( keycodes whose mappings are changed are given by ) 115230 -268.22 32 s +2 sf +(:first\036keycode) 131840 0.00 -1 s +5 sf +( through the fol\036) 149352 -301.67 32 s +52832.0 135128.0 m +(lowing:) 61454 0.00 -1 s +( ) 62134 -26.00 32 s +52832.0 141405.0 m +(\(+ ) 56069 0.00 32 s +2 sf +(:first\036keycode) 72679 0.00 -1 s +( ) 73371 -14.00 32 s +5 sf +(\(- ) 76413 -14.00 32 s +2 sf +(:end :start) 89014 -14.00 32 s +5 sf +(\) -1\) ) 95098 -14.00 32 s +52832.0 147681.0 m +(keycodes) 63333 0.00 -1 s +( outside this range of are not affected. ) 107656 123.38 32 s +2 sf +(:first\036keycode) 124266 0.00 -1 s +5 sf +( must not be less than) 149352 141.20 32 s +52832.0 150842.0 m +(\() 53771 0.00 -1 s +2 sf +(display\036min\036keycode) 78697 0.00 -1 s +5 sf +( ) 79403 0.00 32 s +4 sf +(display) 87555 0.00 -1 s +5 sf +(\),) 89200 0.00 -1 s +( and the last keycode modified must) 132075 353.00 32 s +( not be greater) 149352 352.33 32 s +52832.0 154003.0 m +(than \() 59336 0.00 32 s +2 sf +(display\036max\036keycode) 84731 0.00 -1 s +5 sf +( ) 85278 -159.00 32 s +4 sf +(display) 93430 0.00 -1 s +5 sf +(\).) 95075 0.00 -1 s +4 sf +52832.0 160280.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 165066.0 m +(keysyms) 62077 0.00 -1 s +( \037 ) 65928 -35.00 32 s +5 sf +(A two\036dimensional array of keysym \() 108150 -34.80 32 s +2 sf +(card32) 116458 0.00 -1 s +5 sf +(\) values.) 125984 -35.00 32 s +2 sf +52832.0 169853.0 m +(:start) 59411 0.00 -1 s +5 sf +(,) 60117 0.00 -1 s +( ) 60793 -30.00 32 s +2 sf +(:end) 66123 0.00 -1 s +5 sf +( \037 Indexes for the subsequence of ) 105804 -29.86 32 s +4 sf +(keysyms) 115049 0.00 -1 s +5 sf +( used.) 121604 -30.00 32 s +2 sf +52832.0 176129.0 m +(:first\036keycode) 69442 0.00 -1 s +5 sf +( \037 A) 75629 -42.00 32 s +( ) 76292 -43.00 32 s +2 sf +(card8) 83189 0.00 -1 s +5 sf +( defining the first keycode mapping changed.) 133954 -42.50 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +132373.0 8195.0 m +(Control Functions) 149013 -14.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036175) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(keyboard\036mapping) 57592 0.00 -1 s +( ) 58249 -49.00 32 s +/timsps10i 4 declareFont +4 sf +(displa) 65148 0.00 -1 s +/timsps10 5 declareFont +5 sf +(y &key ) 74143 -49.00 32 s +2 sf +(:first\036keycode :start :end :data) 110902 -49.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( mappings ) 65831 -31.00 32 s +5 sf +(\037) 68653 0.00 -1 s +( Type \() 76740 -31.50 32 s +2 sf +(array card32) 92461 -32.00 32 s +5 sf +( \(* *\)\).) 100155 -31.50 32 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the keysyms mapped) 85783 -68.00 32 s +( to the given range of keycodes for the ) 129357 -60.89 32 s +4 sf +(display) 137509 0.00 -1 s +5 sf +( keyboard.) 149352 -69.00 32 s +52832.0 36779.0 m +(The) 57220 0.00 -1 s +( mappings are returned in the form of a two\036dimensional array of ) 131542 15.75 32 s +2 sf +(card32) 139850 0.00 -1 s +5 sf +( keysym) 149352 17.00 32 s +52832.0 39940.0 m +(values.) 60748 0.00 -1 s +( The ) 66266 -141.00 32 s +2 sf +(:data) 72535 0.00 -1 s +5 sf +( argument, if given, must be a two\036dimensional array in) 134184 -125.33 32 s +( which the re\036) 149352 -141.67 32 s +52832.0 43101.0 m +(turned) 60041 0.00 -1 s +( mappings will be stored. In this case:) 102526 -22.00 32 s +52832.0 49378.0 m +(\() 53771 0.00 -1 s +2 sf +(array\036dimension) 73836 0.00 -1 s +( :data) 80774 -37.00 32 s +5 sf +( 1\) ) 84463 -36.50 32 s +52832.0 55654.0 m +(defines) 60981 0.00 -1 s +( the maximum number of keysyms returned) 112577 370.00 32 s +( for any keycode. Otherwise, a) 149352 443.40 32 s +52832.0 58815.0 m +(new array) 64034 0.00 32 s +( is created and returned.) 90928 -35.00 32 s +( ) 91598 -36.00 32 s +52832.0 65092.0 m +(Upon) 59102 0.00 -1 s +( return:) 67303 -26.00 32 s +( ) 67982 -27.00 32 s +52832.0 71368.0 m +(\() 53771 0.00 -1 s +2 sf +(aref) 58627 0.00 -1 s +5 sf +( ) 59329 -4.00 32 s +4 sf +(mappings) 70303 0.00 -1 s +5 sf +( \(+ ) 74238 -4.00 32 s +4 sf +(:start) 80352 0.00 -1 s +5 sf +( ) 81054 -4.00 32 s +4 sf +(i) 81838 0.00 -1 s +5 sf +(\) ) 83483 0.00 32 s +4 sf +(j) 84267 0.00 -1 s +5 sf +(\) ) 85908 -4.00 32 s +52832.0 77645.0 m +(will) 57221 0.00 -1 s +( contain keysym ) 75615 -270.00 32 s +4 sf +(j) 76399 0.00 -1 s +5 sf +( associated with keycode \(+ ) 107397 -216.00 32 s +2 sf +(:first\036keycode) 124007 0.00 -1 s +5 sf +( ) 124443 -270.00 32 s +2 sf +(i) 125227 0.00 -1 s +5 sf +(\) \(or ) 130327 -270.00 32 s +2 sf +(nil) 133464 0.00 -1 s +5 sf +(, if keysym ) 146250 -180.00 32 s +4 sf +(j) 147034 0.00 -1 s +5 sf +( is) 149352 -270.00 32 s +52832.0 80806.0 m +(undefined) 64116 0.00 -1 s +( for) 68032 -79.00 32 s +( that keycode\).) 84644 -40.00 32 s +2 sf +52832.0 87082.0 m +(:first\036keycode) 69442 0.00 -1 s +5 sf +( specifies the first keycode whose mapping is returned; by default,) 142009 -227.70 32 s +( ) 142461 -254.00 32 s +2 sf +(:first\036) 149352 0.00 -1 s +52832.0 90243.0 m +(keycode) 62551 0.00 -1 s +5 sf +( is \() 66584 -100.00 32 s +2 sf +(display\036min\036keycode) 91510 0.00 -1 s +5 sf +( ) 92116 -100.00 32 s +4 sf +(display) 100268 0.00 -1 s +5 sf +(\). ) 102619 0.00 32 s +2 sf +(:start) 109198 0.00 -1 s +5 sf +( and ) 114485 -100.00 32 s +2 sf +(:end) 119815 0.00 -1 s +5 sf +( define the subsequence of) 149352 -99.75 32 s +52832.0 93404.0 m +(the) 56280 0.00 -1 s +( returned array in which the returned mappings are stored. By default, ) 133598 -178.75 32 s +2 sf +(:start) 140177 0.00 -1 s +5 sf +( is given) 149352 -194.50 32 s +52832.0 96565.0 m +(by ) 56360 0.00 32 s +2 sf +(:first\036keycode) 72970 0.00 -1 s +5 sf +( and) 77718 -33.00 32 s +( ) 78390 -34.00 32 s +2 sf +(:end) 83720 0.00 -1 s +5 sf +( is given by: ) 98168 -33.50 32 s +52832.0 102842.0 m +(\(1+) 56774 0.00 -1 s +( \() 58363 -56.00 32 s +2 sf +(display\036max\036keycode) 83758 0.00 -1 s +5 sf +( ) 84407 -57.00 32 s +4 sf +(display) 92559 0.00 -1 s +5 sf +(\)\) ) 95143 0.00 32 s +2 sf +52832.0 109118.0 m +(:first\036keycode) 69442 0.00 -1 s +5 sf +( must not be less than \() 105723 1709.33 32 s +2 sf +(display\036min\036keycode) 130649 0.00 -1 s +5 sf +( ) 133065 1710.00 32 s +4 sf +(display) 141217 0.00 -1 s +5 sf +(\), and) 149352 1709.00 32 s +52832.0 112279.0 m +(the) 56280 0.00 -1 s +( last keycode returned must not be greater than \() 110361 -42.67 32 s +2 sf +(display\036max\036keycode) 135756 0.00 -1 s +5 sf +( ) 136462 0.00 32 s +4 sf +(display) 144614 0.00 -1 s +5 sf +(\).) 146259 0.00 -1 s +4 sf +52832.0 118556.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 123342.0 m +(:first\036keycode) 69442 0.00 -1 s +5 sf +( \037 A ) 76308 -37.00 32 s +2 sf +(card8) 83205 0.00 -1 s +5 sf +( defining the first) 102608 -37.00 32 s +( keycode mapping returned.) 133999 -37.67 32 s +2 sf +52832.0 129619.0 m +(:start) 59411 0.00 -1 s +5 sf +(,) 60117 0.00 -1 s +( ) 60797 -26.00 32 s +2 sf +(:end ) 66807 -26.00 32 s +5 sf +(\037 Indexes for) 83054 -26.00 32 s +( the subsequence of the returned array which is modified.) 147546 -26.56 32 s +2 sf +52832.0 135896.0 m +(:data) 59101 0.00 -1 s +( ) 59779 -28.00 32 s +5 sf +(\037 If given, a) 74742 -28.00 32 s +( two\036dimensional array to receive the returned keysyms.) 138018 -28.57 32 s +52832.0 142827.0 m +0.0 0.0 m +newpath +149013 141268 av +52967 141270 as +[] 0 setdash +dp +149352.0 142827.0 m +20320.0 145649.0 m +30412.0 h +2 sf +(Using) 37311 0.00 -1 s +( Keycodes) 49378 -82.00 32 s +52832.0 h +(14.4.3) 59888 0.00 -1 s +5 sf +() 59888 0.00 -1 s +62083.0 h +(The) 66471 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 132283 -41.75 32 s +20320.0 148810.0 m +33370.0 h +2 sf +(and) 37919 0.00 -1 s +( Keysyms) 49378 -63.00 32 s +52832.0 h +/symbb8 6 declareFont +6 sf +152242.0 v +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Convert) 67003 0.00 -1 s +( a keycode into a keysym) 95391 -44.00 32 s +6 sf +52832.0 158790.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Convert) 67003 0.00 -1 s +( a keysym into a character) 96362 -36.80 32 s +2 sf +34544.0 165066.0 m +(keycode\036keysym) 54294 0.00 -1 s +( ) 54924 -76.00 32 s +4 sf +(display keycode keysym\036index) 88621 -76.00 32 s +2 sf +( ) 89250 -77.00 32 s +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 168227.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 171388.0 m +( keysym ) 63002 -31.67 32 s +5 sf +(\037 Type ) 72972 -31.50 32 s +2 sf +(keysym) 82064 0.00 -1 s +5 sf +(.) 82770 0.00 -1 s +52832.0 176107.0 m +(Returns) 61610 0.00 -1 s +( the ) 65896 -287.00 32 s +4 sf +(keysym) 74043 0.00 -1 s +5 sf +( at) 76499 -287.00 32 s +( the given ) 87472 -287.67 32 s +4 sf +(keysym\036index) 102670 0.00 -1 s +5 sf +( from the keysym list for the ) 133785 -246.43 32 s +4 sf +(keycode) 142872 0.00 -1 s +5 sf +( in the) 149352 -287.50 32 s +52832.0 179268.0 m +(current) 60822 0.00 -1 s +( keyboard mapping for the ) 91277 -37.60 32 s +4 sf +(display) 99429 0.00 -1 s +5 sf +( server.) 107696 -38.00 32 s +4 sf +52832.0 185544.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 190331.0 m +(keycode) 61919 0.00 -1 s +( ) 62570 -55.00 32 s +5 sf +(\037 A ) 68732 -54.50 32 s +2 sf +(card8) 75629 0.00 -1 s +5 sf +(.) 76335 0.00 -1 s +4 sf +52832.0 195117.0 m +(keysym\036index) 68030 0.00 -1 s +5 sf +( \037 A ) 74851 -52.00 32 s +2 sf +(card8) 81748 0.00 -1 s +5 sf +(.) 82454 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036176) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(keycode\036character) 56797 0.00 -1 s +( ) 57447 -56.00 32 s +/timsps10i 4 declareFont +4 sf +(display keysym) 74396 -56.00 32 s +( ) 75045 -57.00 32 s +/timsps10 5 declareFont +5 sf +(&optional \() 88078 -56.00 32 s +4 sf +(state) 93408 0.00 -1 s +5 sf +( 0\)) 96407 -57.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( character) 65152 -32.00 32 s +( ) 65825 -33.00 32 s +5 sf +(\037 Type ) 75793 -32.50 32 s +2 sf +(character) 87388 0.00 -1 s +5 sf +( or ) 91085 -32.50 32 s +2 sf +(null) 95791 0.00 -1 s +5 sf +(.) 96497 0.00 -1 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the ) 65882 -294.00 32 s +4 sf +(character) 76854 0.00 -1 s +5 sf +( associated with the ) 98564 -294.00 32 s +4 sf +(keysym) 106711 0.00 -1 s +5 sf +( and the ) 115470 -294.00 32 s +4 sf +(state) 120800 0.00 -1 s +5 sf +(. The ) 126718 -294.00 32 s +4 sf +(state) 132048 0.00 -1 s +5 sf +( is) 134636 0.00 32 s +( a ) 136712 -294.50 32 s +2 sf +(mask16) 145962 0.00 -1 s +5 sf +( bit) 149352 -295.00 32 s +52832.0 36779.0 m +(mask) 58789 0.00 -1 s +( representing the state of the ) 90510 -146.67 32 s +4 sf +(display) 98662 0.00 -1 s +5 sf +( modifier keys and pointer buttons. See ) 142773 -125.57 32 s +2 sf +(state\036) 149352 0.00 -1 s +52832.0 39940.0 m +(mask\036key) 64432 0.00 -1 s +5 sf +( in paragraph 1.6,) 84449 63.00 32 s +( Data Types. If the ) 106485 50.00 32 s +4 sf +(keysym) 114632 0.00 -1 s +5 sf +( does not represent a Common) 149352 62.40 32 s +52832.0 43101.0 m +(Lisp) 57849 0.00 -1 s +( character, then ) 75790 -26.67 32 s +2 sf +(nil) 78927 0.00 -1 s +5 sf +( is returned.) 92275 -26.50 32 s +52832.0 49378.0 m +(The) 57220 0.00 -1 s +( ) 57902 -24.00 32 s +4 sf +(state) 63232 0.00 -1 s +5 sf +( determines the bits attribute of the returned ) 113196 -24.00 32 s +4 sf +(character) 124168 0.00 -1 s +5 sf +(,) 124874 0.00 -1 s +( as follows:) 137860 -12.50 32 s +2 sf +52832.0 55654.0 m +(:control) 62391 0.00 -1 s +68072.0 h +(char\036control\036bit) 87348 0.00 -1 s +52832.0 58815.0 m +(:mod\0361) 61451 0.00 -1 s +68072.0 h +(char\036meta\036bit) 84681 0.00 -1 s +52832.0 61976.0 m +(:mod\0362) 61451 0.00 -1 s +68072.0 h +(char\036super\036bit) 85470 0.00 -1 s +52832.0 65137.0 m +(:mod\0363) 61451 0.00 -1 s +68072.0 h +(char\036hyper\036bit) 85783 0.00 -1 s +4 sf +52832.0 71414.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 76200.0 m +(keysym) 60979 0.00 -1 s +5 sf +( \037 A) 67178 -36.00 32 s +( ) 67847 -37.00 32 s +2 sf +(keysym) 76939 0.00 -1 s +5 sf +(.) 77645 0.00 -1 s +4 sf +52832.0 80986.0 m +(state) 58162 0.00 -1 s +5 sf +( \037 A ) 65070 -23.00 32 s +2 sf +(mask16) 74320 0.00 -1 s +5 sf +(.) 75026 0.00 -1 s +20320.0 86495.0 m +0.0 0.0 m +newpath +20455 84871 av +148878 84869 as +[] 0 setdash +dp +149352.0 86495.0 m +/timsps12b 7 declareFont +7 sf +20320.0 89882.0 m +(Client) 29160 0.00 -1 s +( ) 30028 21.00 32 s +52832.0 h +2 sf +(14.5) 57771 0.00 -1 s +60121.0 h +() 60121 0.00 -1 s +5 sf +(The) 64509 0.00 -1 s +( CLX functions affecting client termination are discussed in the) 149352 1459.33 32 s +7 sf +20320.0 93269.0 m +(Termination) 38566 0.00 -1 s +52832.0 h +5 sf +(following) 63804 0.00 -1 s +( paragraphs.) 77510 -85.00 32 s +52832.0 99545.0 m +(When) 59571 0.00 -1 s +( a display connection to an X server is closed, whether by an explicit call to ) 142614 -183.38 32 s +2 sf +(close\036) 149352 0.00 -1 s +52832.0 102706.0 m +(display) 61458 0.00 -1 s +5 sf +( or by some external condition, the server automatically performs) 133833 -160.89 32 s +( a sequence of) 149352 -181.67 32 s +52832.0 105867.0 m +(operations) 64587 0.00 -1 s +( to clean up server state information associated with the closed connection.) 149352 25.55 32 s +52832.0 109028.0 m +(The) 57220 0.00 -1 s +( effect of these operations depends the ) 101552 52.71 32 s +4 sf +(close\036down mode) 121284 61.00 32 s +5 sf +( and the ) 131110 61.67 32 s +4 sf +(save\036set) 140199 0.00 -1 s +5 sf +( that the) 149352 30.50 32 s +52832.0 112189.0 m +(client) 59101 0.00 -1 s +( has specified for the closed display connection.) 111148 -290.00 32 s +( The close\036down mode of a display) 149352 -242.17 32 s +52832.0 115350.0 m +(determines) 65213 0.00 -1 s +( whether server resources allocated by the connection are freed or not. The) 149352 -8.08 32 s +52832.0 118511.0 m +(save\036set) 61921 0.00 -1 s +( identifies windows that will remain) 102493 -20.80 32 s +( after the connection is closed.) 136686 -26.60 32 s +52832.0 124787.0 m +(The) 57220 0.00 -1 s +( display save\036set is used primarily by window managers that reparent) 134537 -74.00 32 s +( the top\036level) 149352 -37.50 32 s +52832.0 127948.0 m +(windows) 63021 0.00 -1 s +( of other clients. For example, such a window manager can automatically cre\036) 149352 -120.00 32 s +52832.0 131109.0 m +(ate) 56122 0.00 -1 s +( a frame window) 74620 -181.00 32 s +( that encloses a top\036level client window, along with a set of controls) 149352 -166.42 32 s +52832.0 134270.0 m +(used) 58005 0.00 -1 s +( for window management. Ordinarily, termination of the window manager client) 149352 44.10 32 s +52832.0 137431.0 m +(would) 59886 0.00 -1 s +( then destroy all client windows! However, the window manager) 131365 -173.33 32 s +( can prevent this) 149352 -195.67 32 s +52832.0 140592.0 m +(by) 55654 0.00 -1 s +( adding to its save\036set those windows created by other clients that should be pre\036) 149352 210.00 32 s +52832.0 143753.0 m +(served.) 60903 0.00 -1 s +52832.0 150029.0 m +(When) 59571 0.00 -1 s +( a) 61497 -33.00 32 s +( display connection closes, an X server performs the following operations:) 145130 -30.20 32 s +52832.0 156577.0 m +(1.) 54949 0.00 -1 s +/symbb8 6 declareFont +6 sf +57912.0 h +5 sf +(For) 61831 0.00 -1 s +( each selection owned by a window created on the connection, the selection) 149352 181.33 32 s +57912.0 159738.0 m +(owner) 64963 0.00 -1 s +( is) 67540 -11.00 32 s +( set to ) 74953 -11.67 32 s +2 sf +(nil) 78090 0.00 -1 s +5 sf +(.) 78796 0.00 -1 s +52832.0 166285.0 m +(2.) 54949 0.00 -1 s +6 sf +57912.0 h +5 sf +(An) 61360 0.00 -1 s +( active or passive grab established for a) 104653 -163.00 32 s +( window created on the connection is re\036) 149352 -163.57 32 s +57912.0 169446.0 m +(leased.) 65670 0.00 -1 s +52832.0 175994.0 m +(3.) 54949 0.00 -1 s +6 sf +57912.0 h +5 sf +(If) 59790 0.00 -1 s +( the connection has grabbed the server, the server is) 117798 -33.00 32 s +( ungrabbed.) 131087 -34.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +132373.0 8195.0 m +(Control Functions) 149013 -14.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036177) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +52832.0 22849.0 m +(4.) 54949 0.00 -1 s +/symbb8 6 declareFont +6 sf +57912.0 h +5 sf +(Server) 65276 0.00 -1 s +( resources and colormap cells allocated by the) 116820 -59.00 32 s +( connection are freed and de\036) 149352 -59.60 32 s +57912.0 26010.0 m +(stroyed,) 66925 0.00 -1 s +( depending on the close\036down mode, as follows:) 121198 -39.71 32 s +2 sf +57912.0 32015.0 m +(:retain\036permanent) 80165 0.00 -1 s +5 sf +( \037 All resources) 99176 -63.00 32 s +( are marked ) 113010 -63.67 32 s +/timsps10i 4 declareFont +4 sf +(permanent) 125079 0.00 -1 s +5 sf +(, and no resources are) 149352 -63.50 32 s +57912.0 35176.0 m +(destroyed.) 69589 0.00 -1 s +( These resources can later be destroyed by a call to) 126662 -29.00 32 s +( ) 127338 -30.00 32 s +2 sf +(kill\036client) 138780 0.00 -1 s +5 sf +(.) 139486 0.00 -1 s +2 sf +57912.0 41385.0 m +(:retain\036temporary) 79849 0.00 -1 s +5 sf +( \037) 83377 0.00 32 s +( All resources are marked ) 113071 -0.60 32 s +4 sf +(temporary) 124827 0.00 -1 s +5 sf +(, and no resources are) 149352 -0.50 32 s +57912.0 44546.0 m +(destroyed.) 69589 0.00 -1 s +( These resources can later be destroyed by a call to ) 129037 125.36 32 s +2 sf +(kill\036client) 140479 0.00 -1 s +5 sf +( or ) 144492 125.50 32 s +2 sf +(kill\036) 149352 0.00 -1 s +57912.0 47707.0 m +(temporary\036clients) 79381 0.00 -1 s +5 sf +(.) 80087 0.00 -1 s +2 sf +57912.0 53916.0 m +(:destroy) 67785 0.00 -1 s +5 sf +( \037 All resources are destroyed.) 103384 -27.00 32 s +52832.0 60463.0 m +(When) 59571 0.00 -1 s +( server resources allocated by a display connection are destroyed \037 whether by) 149352 -15.17 32 s +52832.0 63624.0 m +(closing) 60984 0.00 -1 s +( the connection with close\036down mode ) 104384 -160.00 32 s +2 sf +(:destroy) 114257 0.00 -1 s +5 sf +( or by later calling ) 135014 -127.60 32 s +2 sf +(kill\036client) 146456 0.00 -1 s +5 sf +( or) 149352 -160.00 32 s +52832.0 66785.0 m +2 sf +(kill\036temporary\036clients) 79161 0.00 -1 s +5 sf +( \037 then an X server performs the following) 127849 -105.00 32 s +( operations on each) 149352 -120.67 32 s +52832.0 69946.0 m +(member) 62078 0.00 -1 s +( of the save\036set before actually destroying) 109058 -32.50 32 s +( resources.) 121085 -40.00 32 s +52832.0 75816.0 m +(1.) 54949 0.00 -1 s +6 sf +57912.0 h +5 sf +(If) 59790 0.00 -1 s +( the save\036set window is a descendant of a window created on the connection, the) 149352 -90.64 32 s +57912.0 78977.0 m +(save\036set) 67001 0.00 -1 s +( window is reparented. The new parent is the closest ancestor such that the) 149352 -139.92 32 s +57912.0 82138.0 m +(save\036set) 67001 0.00 -1 s +( window is no longer a descendant) 105810 -37.00 32 s +( of any window created on the connec\036) 149352 -37.57 32 s +57912.0 85299.0 m +(tion.) 63008 0.00 -1 s +( The position of the reparented window with respect to its parent remains un\036) 149352 -55.77 32 s +57912.0 88460.0 m +(changed.) 68021 0.00 -1 s +52832.0 94736.0 m +(2.) 54949 0.00 -1 s +6 sf +57912.0 h +5 sf +(If) 59790 0.00 -1 s +( the save\036set window is unmapped, then) 104695 -27.00 32 s +( it is mapped.) 119820 -27.67 32 s +52832.0 100742.0 m +(If) 54710 0.00 -1 s +( the last connection open to) 84820 -170.00 32 s +( an X server is closed with close\036down mode ) 134790 -151.56 32 s +2 sf +(:destroy) 144663 0.00 -1 s +5 sf +(, the) 149352 -171.00 32 s +52832.0 103903.0 m +(server) 59725 0.00 -1 s +( resets its state to restore all initial defaults. The server state after reset is the same) 149352 -182.81 32 s +52832.0 107064.0 m +(as) 55183 0.00 -1 s +( its initial state) 71432 -97.00 32 s +( when first started. When an X server resets, it performs the following) 149352 -89.42 32 s +52832.0 110225.0 m +(operations:) 65371 0.00 -1 s +6 sf +52832.0 116095.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(All) 61517 0.00 -1 s +( permanent and temporary server resources from previously\036closed connections) 149352 -246.00 32 s +57912.0 119256.0 m +(are) 61357 0.00 -1 s +( destroyed.) 73671 -69.00 32 s +6 sf +52832.0 125329.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(All) 61517 0.00 -1 s +( but the predefined atoms are deleted.) 103722 -31.83 32 s +6 sf +52832.0 131403.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(All) 61517 0.00 -1 s +( root window) 76507 -29.00 32 s +( properties are deleted.) 102119 -29.67 32 s +6 sf +52832.0 137476.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(All) 61517 0.00 -1 s +( device control attributes and mappings are restored to their original default val\036) 149352 -203.58 32 s +57912.0 140637.0 m +(ues.) 62380 0.00 -1 s +6 sf +52832.0 146710.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( default background and) 89560 -30.00 32 s +( cursor for all root windows are restored.) 135422 -30.57 32 s +6 sf +52832.0 152784.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( default font) 76044 -24.00 32 s +( path is restored.) 94623 -24.67 32 s +6 sf +52832.0 158857.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The input focus is set) 81958 -24.00 32 s +( to) 84836 -23.00 32 s +( ) 85518 -24.00 32 s +2 sf +(:pointer\036root) 101188 0.00 -1 s +5 sf +(.) 101894 0.00 -1 s +6 sf +52832.0 164931.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(The) 62300 0.00 -1 s +( access control list is reset.) 92321 -15.00 32 s +52832.0 170733.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 123094 -34.00 32 s +6 sf +52832.0 177281.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Add) 62771 0.00 -1 s +( or remove a) 76873 -27.00 32 s +( window from a display save\036set.) 114040 -27.60 32 s +6 sf +52832.0 183354.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change the display close\036down) 103852 -44.00 32 s +( mode.) 111489 -45.00 32 s +6 sf +52832.0 189428.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Force) 64337 0.00 -1 s +( a connection to be closed or all its server resources to be destroyed.) 140795 -26.54 32 s +6 sf +52832.0 195501.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Force) 64337 0.00 -1 s +( a connection to be closed and all temporary resources to be) 131428 -35.00 32 s +( destroyed.) 143775 -36.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036178) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(add\036to\036save\036set) 52723 0.00 -1 s +( ) 53353 -76.00 32 s +/timsps10i 4 declareFont +4 sf +(window) 62134 0.00 -1 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Adds) 58789 0.00 -1 s +( the specified ) 73707 -278.00 32 s +4 sf +(window) 82488 0.00 -1 s +5 sf +( to the save\036set of the ) 105586 -278.00 32 s +4 sf +(window) 114367 0.00 -1 s +5 sf +( display. The ) 128898 -277.67 32 s +4 sf +(window) 137679 0.00 -1 s +5 sf +( must have) 149352 -277.50 32 s +52832.0 30457.0 m +(been) 58160 0.00 -1 s +( created by some other display. Windows are removed automatically from the) 142963 -270.00 32 s +( save\036) 149352 -271.00 32 s +52832.0 33618.0 m +(set) 55967 0.00 -1 s +( when) 62748 -37.00 32 s +( they are destroyed.) 84734 -37.67 32 s +4 sf +52832.0 39895.0 m +(window ) 62282 -37.00 32 s +5 sf +(\037) 65104 0.00 -1 s +( A) 67811 -36.00 32 s +( ) 68480 -37.00 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +2 sf +34544.0 44681.0 m +(close\036down\036mode) 55390 0.00 -1 s +( ) 55991 -105.00 32 s +4 sf +(display) 64143 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 47842.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 51003.0 m +( mode ) 60951 -37.00 32 s +5 sf +(\037 One of ) 72831 -37.00 32 s +2 sf +(:destroy) 82704 0.00 -1 s +5 sf +(,) 83410 0.00 -1 s +2 sf +( :retain\036permanent) 106331 -38.00 32 s +5 sf +(, or ) 110724 -37.50 32 s +2 sf +(:retain\036temporary) 132661 0.00 -1 s +5 sf +(.) 133367 0.00 -1 s +52832.0 55722.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73119 -213.00 32 s +2 sf +(setf) 77348 0.00 -1 s +5 sf +(\) sets the close\036down mode of the client's) 122801 -213.00 32 s +( resources at connection) 149352 -213.67 32 s +52832.0 58883.0 m +(close.) 59337 0.00 -1 s +( ) 60012 -31.00 32 s +4 sf +52832.0 65159.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 69946.0 m +(kill\036client) 45986 0.00 -1 s +( ) 46663 -29.00 32 s +4 sf +(display resource\036id) 68501 -29.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 74665.0 m +(Closes) 60358 0.00 -1 s +( the display connection which created the given ) 116597 231.13 32 s +4 sf +(resource\036id) 129606 0.00 -1 s +5 sf +(. The ) 136343 115.50 32 s +4 sf +(resource\036id) 149352 0.00 -1 s +5 sf +52832.0 77826.0 m +(must) 58320 0.00 -1 s +( be valid, but need not belong to the given ) 106198 -32.90 32 s +4 sf +(display) 114350 0.00 -1 s +5 sf +(.) 115056 0.00 -1 s +52832.0 84102.0 m +(If) 54710 0.00 -1 s +( the) 58783 -81.00 32 s +( closed connection was previously open, the connection is closed according to its) 149352 -74.75 32 s +52832.0 87263.0 m +(close\036down) 65840 0.00 -1 s +( mode. Otherwise, if the connection had) 111798 136.00 32 s +( been previously terminated with) 149352 101.50 32 s +52832.0 90424.0 m +(close\036down) 65840 0.00 -1 s +( mode ) 74926 702.00 32 s +2 sf +(:retain\036permanent) 97179 0.00 -1 s +5 sf +( or ) 101643 351.00 32 s +2 sf +(:retain\036temporary) 123580 0.00 -1 s +5 sf +(, then all its retained) 149352 702.00 32 s +52832.0 93585.0 m +(server) 59725 0.00 -1 s +( resources \037 both permanent and temporary) 109851 -30.83 32 s +( \037 are destroyed.) 129800 -37.67 32 s +4 sf +52832.0 99862.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 104648.0 m +(resource\036id) 65841 0.00 -1 s +5 sf +( \037 A valid ) 79043 -31.00 32 s +2 sf +(card29) 87351 0.00 -1 s +5 sf +( resource) 97583 -31.00 32 s +( ID.) 101939 -32.00 32 s +2 sf +34544.0 109434.0 m +(kill\036temporary\036clients) 60873 0.00 -1 s +( ) 61500 -79.00 32 s +4 sf +(display) 69652 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 114153.0 m +(Closes) 60358 0.00 -1 s +( the ) 65102 -58.00 32 s +4 sf +(display) 73254 0.00 -1 s +5 sf +( connection and destroys all retained temporary server resources for) 149352 -51.11 32 s +52832.0 117314.0 m +(this) 56909 0.00 -1 s +( and all previously\036terminated connections.) 105551 -45.75 32 s +52832.0 123591.0 m +(If) 54710 0.00 -1 s +( the ) 59250 -160.00 32 s +4 sf +(display) 67402 0.00 -1 s +5 sf +( connection was previously open, the connection is closed according to its) 149352 -145.45 32 s +52832.0 126752.0 m +(close\036down) 65840 0.00 -1 s +( mode. Otherwise, if the ) 92755 -212.80 32 s +4 sf +(display) 100907 0.00 -1 s +5 sf +( connection had been previously terminated) 149352 -170.00 32 s +52832.0 129913.0 m +(with) 57848 0.00 -1 s +( close\036down mode ) 78941 -101.00 32 s +2 sf +(:retain\036permanent) 101194 0.00 -1 s +5 sf +( or ) 104855 -50.50 32 s +2 sf +(:retain\036temporary) 126792 0.00 -1 s +5 sf +(, then all its retained) 149352 -101.00 32 s +52832.0 133073.0 m +(server) 59725 0.00 -1 s +( resources \037 both permanent and temporary) 109851 -30.83 32 s +( \037 are destroyed.) 129800 -37.67 32 s +4 sf +52832.0 139350.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 144137.0 m +(remove\036from\036save\036set) 60708 0.00 -1 s +( ) 61300 -114.00 32 s +4 sf +(window) 70081 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 148855.0 m +(Removes) 63335 0.00 -1 s +( the specified ) 79213 42.00 32 s +4 sf +(window) 87994 0.00 -1 s +5 sf +( from the save\036set of the ) 116301 42.00 32 s +4 sf +(window) 125082 0.00 -1 s +5 sf +( display. The) 139824 42.00 32 s +( ) 140571 41.00 32 s +4 sf +(window) 149352 0.00 -1 s +5 sf +52832.0 152016.0 m +(must) 58320 0.00 -1 s +( have been) 70668 140.00 32 s +( created by some other display. Windows are removed automatically) 149352 139.44 32 s +52832.0 155177.0 m +(from) 58316 0.00 -1 s +( the save\036set when they are destroyed.) 100990 -32.00 32 s +4 sf +52832.0 161454.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +5 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +5 sf +(.) 78593 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +132373.0 8195.0 m +(Control Functions) 149013 -14.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036179) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 5 declareFont +5 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 7 declareFont +7 sf +20320.0 26687.0 m +(Managing) 34995 0.00 -1 s +( Host) 42626 13.00 32 s +( ) 43485 12.00 32 s +52832.0 h +2 sf +(14.6) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(An) 63414 0.00 -1 s +( X server maintains a list of hosts from which client programs can be) 149352 624.23 32 s +7 sf +20320.0 30074.0 m +(Access) 29908 0.00 -1 s +52832.0 h +5 sf +(run.) 57299 0.00 -1 s +( Only clients executing on hosts that belong to this ) 113239 -191.00 32 s +/timsps10i 4 declareFont +4 sf +(access) 120605 0.00 -1 s +( control list) 133236 -191.50 32 s +5 sf +( are allowed to) 149352 -191.67 32 s +52832.0 33234.0 m +(open) 58318 0.00 -1 s +( a connection to the server. Typically, the access control list can be changed by cli\036) 149352 -174.60 32 s +52832.0 36395.0 m +(ents) 57378 0.00 -1 s +( running on the same host as the server. Some server implementations can also im\036) 149352 -98.00 32 s +52832.0 39556.0 m +(plement) 61923 0.00 -1 s +( other authorization mechanisms) 98376 -101.00 32 s +( in addition to, or in place of, this mechanism.) 149352 -101.56 32 s +52832.0 42717.0 m +(The) 57220 0.00 -1 s +( action of this mechanism can be conditional based on the authorization protocol) 149352 101.42 32 s +52832.0 45878.0 m +(name) 58944 0.00 -1 s +( and data received by the server at connection setup.) 117517 -39.89 32 s +52832.0 52155.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 123094 -34.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 58702.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Add) 62771 0.00 -1 s +( or remove hosts) 81434 -23.00 32 s +( on the access control list.) 110473 -23.60 32 s +6 sf +52832.0 65250.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( the hosts on the access control list.) 105258 -21.86 32 s +6 sf +52832.0 71797.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change the state of the access control list mechanism) 128648 -26.80 32 s +2 sf +34544.0 78074.0 m +(access\036control) 51469 0.00 -1 s +( ) 52086 -89.00 32 s +4 sf +(display) 60238 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 81235.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 84396.0 m +( enabled\036p) 65448 -40.00 32 s +( ) 66113 -41.00 32 s +5 sf +(\037 Type ) 76065 -40.50 32 s +2 sf +(boolean) 85473 0.00 -1 s +5 sf +(.) 86179 0.00 -1 s +52832.0 89114.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73968 70.00 32 s +2 sf +(setf) 78197 0.00 -1 s +5 sf +(\) changes the state of the access control list mechanism for the) 149352 63.73 32 s +52832.0 92275.0 m +4 sf +(display) 60984 0.00 -1 s +5 sf +( server. Returns true if access control) 101558 -225.00 32 s +( is enabled; otherwise, ) 126823 -169.25 32 s +2 sf +(nil) 129960 0.00 -1 s +5 sf +( is returned. If en\036) 149352 -225.50 32 s +52832.0 95436.0 m +(abled,) 59650 0.00 -1 s +( the access control list is used to validate each client during connection) 139218 -31.17 32 s +( setup.) 146552 -35.00 32 s +52832.0 101713.0 m +(Only) 58475 0.00 -1 s +( a client running on the same host as the server is allowed to enable or disable) 145265 -61.88 32 s +( the) 149352 -67.00 32 s +52832.0 104874.0 m +(access) 60040 0.00 -1 s +( control list) 72829 -33.00 32 s +( mechanism.) 87060 -34.00 32 s +4 sf +52832.0 111150.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 115937.0 m +(access\036hosts) 48964 0.00 -1 s +52832.0 h +4 sf +(display) 60984 0.00 -1 s +5 sf +( &key \() 69580 -12.50 32 s +2 sf +(:result\036type) 83526 0.00 -1 s +5 sf +( ) 84219 -13.00 32 s +2 sf +('list) 88763 0.00 -1 s +5 sf +(\)) 89702 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 119098.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 122259.0 m +( hosts ) 60690 -20.67 32 s +5 sf +(\037 ) 64197 -21.00 32 s +2 sf +(sequence) 75014 0.00 -1 s +5 sf +( of ) 78735 -20.50 32 s +2 sf +(string) 85789 0.00 -1 s +5 sf +(.) 86495 0.00 -1 s +4 sf +52832.0 125420.0 m +( enabled\036p) 65448 -40.00 32 s +( ) 66113 -41.00 32 s +5 sf +(\037 Type ) 76065 -40.50 32 s +2 sf +(boolean) 85473 0.00 -1 s +5 sf +(.) 86179 0.00 -1 s +52832.0 130138.0 m +(Returns) 61610 0.00 -1 s +( a sequence containing the ) 91437 -132.00 32 s +4 sf +(hosts) 97239 0.00 -1 s +5 sf +( that belong to the access control list of the ) 145120 -118.40 32 s +4 sf +(dis\036) 149352 0.00 -1 s +52832.0 133299.0 m +(play) 57691 0.00 -1 s +5 sf +( server. Elements of the returned ) 95995 128.00 32 s +4 sf +(hosts) 101797 0.00 -1 s +5 sf +( sequence are either strings or some other) 149352 110.14 32 s +52832.0 136460.0 m +(type) 57691 0.00 -1 s +( of) 60572 -175.00 32 s +( object recognized as a host name by ) 101508 -153.63 32 s +2 sf +(add\036access\036host) 120318 0.00 -1 s +5 sf +( and ) 125454 -175.50 32 s +2 sf +(remove\036access\036host) 148646 0.00 -1 s +5 sf +(.) 149352 0.00 -1 s +52832.0 139621.0 m +(The) 57220 0.00 -1 s +( second returned value) 82684 -1.33 32 s +( specifies whether the access control list mechanism is cur\036) 149352 -2.56 32 s +52832.0 142782.0 m +(rently enabled) 68896 0.00 32 s +( or) 71902 -50.00 32 s +( disabled \(see ) 87816 -50.67 32 s +2 sf +(access\036control) 104741 0.00 -1 s +5 sf +(\).) 106386 0.00 -1 s +4 sf +52832.0 149058.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +52832.0 153845.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( ) 67457 -27.00 32 s +5 sf +(\037 The type of hosts sequence to return.) 112415 -26.57 32 s +2 sf +34544.0 158631.0 m +(add\036access\036host) 53354 0.00 -1 s +( ) 54014 -46.00 32 s +4 sf +(display host) 67530 -46.00 32 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 163350.0 m +(Adds) 58789 0.00 -1 s +( the specified ) 74019 -174.00 32 s +4 sf +(host) 78723 0.00 -1 s +5 sf +( to the access control list. Only a client) 121144 -174.00 32 s +( running on the same host) 149352 -174.60 32 s +52832.0 166511.0 m +(as) 55183 0.00 -1 s +( the server can change the access control list.) 105664 -27.75 32 s +4 sf +52832.0 172788.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 177574.0 m +(host) 57536 0.00 -1 s +( ) 58213 -29.00 32 s +5 sf +(\037) 61035 0.00 -1 s +( A host name. Either a string or some other implementation\036dependent type.) 146530 -29.55 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036180) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(remove\036access\036host) 57736 0.00 -1 s +( ) 58384 -58.00 32 s +/timsps10i 4 declareFont +4 sf +(display host) 71888 -58.00 32 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Removes) 63335 0.00 -1 s +( the specified ) 79363 92.00 32 s +4 sf +(host) 84067 0.00 -1 s +5 sf +( from the access control list. Only a client running on the) 149352 92.45 32 s +52832.0 30457.0 m +(same) 58631 0.00 -1 s +( host as the server can change the access control) 112705 -26.00 32 s +( list.) 117540 -27.00 32 s +4 sf +52832.0 36734.0 m +(display) 60984 0.00 -1 s +5 sf +( \037) 64486 -26.00 32 s +( A) 67204 -25.00 32 s +( ) 67884 -26.00 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 41521.0 m +(host) 57536 0.00 -1 s +5 sf +( \037) 61035 -29.00 32 s +( A host name. Either a string or some other implementation\036dependent type.) 146530 -29.55 32 s +20320.0 47030.0 m +0.0 0.0 m +newpath +20455 45406 av +148878 45404 as +[] 0 setdash +dp +149352.0 47030.0 m +/timsps12b 7 declareFont +7 sf +20320.0 50416.0 m +(Screen) 30098 0.00 -1 s +( Saver) 39263 43.00 32 s +52832.0 h +2 sf +(14.7) 57771 0.00 -1 s +5 sf +() 57771 0.00 -1 s +59966.0 h +(To) 63101 0.00 -1 s +( prevent monitor damage, an X server implements a screen saver function) 149352 275.09 32 s +52832.0 53577.0 m +(which) 59728 0.00 -1 s +( blanks screens during periods of unuse. The screen saver can be in one of three) 149352 -22.87 32 s +52832.0 56738.0 m +(states:) 59886 0.00 -1 s +/symbb8 6 declareFont +6 sf +52832.0 63286.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Disabled) 67943 0.00 -1 s +( \037 No screen blanking is done and screen content remains unchanged.) 147433 -40.91 32 s +6 sf +52832.0 69833.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Deactivated) 71388 0.00 -1 s +( \037 The server is being used. When the server input devices are unused) 149352 -164.00 32 s +57912.0 72994.0 m +(for) 61201 0.00 -1 s +( a specific amount of time, the screen) 103153 -30.00 32 s +( saver becomes activated.) 131899 -30.67 32 s +6 sf +52832.0 79542.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Activated) 68882 0.00 -1 s +( \037 The server input devices are) 103154 -296.00 32 s +( unused. The screen saver blanks all server) 149352 -296.57 32 s +57912.0 82702.0 m +(screens) 66217 0.00 -1 s +( or displays) 78733 -248.00 32 s +( a server\036dependent image. As soon as an input event from either) 149352 -248.55 32 s +57912.0 85863.0 m +(the) 61360 0.00 -1 s +( pointer or the keyboard occurs,) 97192 -12.00 32 s +( the screen saver is deactivated and its timer is) 149352 -12.56 32 s +57912.0 89024.0 m +(reset.) 63945 0.00 -1 s +52832.0 95301.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe the CLX functions used to:) 123094 -34.00 32 s +6 sf +52832.0 101848.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Return) 65592 0.00 -1 s +( or change screen saver control values.) 109006 -39.00 32 s +6 sf +52832.0 108396.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Activate) 67471 0.00 -1 s +( or reset) 76512 -24.00 32 s +( the screen saver) 95165 -24.67 32 s +2 sf +34544.0 114673.0 m +(activate\036screen\036saver) 59928 0.00 -1 s +( ) 60507 -127.00 32 s +4 sf +(display) 68659 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 119391.0 m +(Activates) 63489 0.00 -1 s +( the screen) 75508 -24.00 32 s +( saver for the ) 90925 -24.50 32 s +4 sf +(display) 99077 0.00 -1 s +5 sf +( server.) 107357 -25.00 32 s +4 sf +52832.0 125668.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 130454.0 m +(reset\036screen\036saver) 56323 0.00 -1 s +( ) 56917 -112.00 32 s +4 sf +(display) 65069 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +52832.0 135173.0 m +(Deactivates) 65995 0.00 -1 s +( the screen saver for the ) 92125 -242.00 32 s +4 sf +(display) 100277 0.00 -1 s +5 sf +( server) 107634 -242.00 32 s +( \(if necessary\) and resets its timer, just) 149352 -242.57 32 s +52832.0 138334.0 m +(as) 55183 0.00 -1 s +( if) 57579 -33.00 32 s +( a pointer or keyboard event had occurred.) 105145 -33.57 32 s +4 sf +52832.0 144611.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +2 sf +34544.0 149397.0 m +(screen\036saver) 49588 0.00 -1 s +52832.0 h +4 sf +(display) 60984 0.00 -1 s +2 sf +139373.0 h +5 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 152558.0 m +52832.0 h +5 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 155719.0 m +( timeout) 62656 -26.00 32 s +5 sf +(,) 63362 0.00 -1 s +4 sf +( period) 71410 -26.00 32 s +( ) 72089 -27.00 32 s +5 sf +(\037 Type ) 82069 -26.50 32 s +2 sf +(int16) 88183 0.00 -1 s +5 sf +(.) 88889 0.00 -1 s +52832.0 158880.0 m +( ) 54196 -24.00 32 s +4 sf +(blanking) 64072 0.00 -1 s +5 sf +(,) 64778 0.00 -1 s +4 sf +( exposures ) 77429 -23.50 32 s +5 sf +(\037 One of ) 89349 -23.67 32 s +2 sf +(:yes) 94050 0.00 -1 s +5 sf +( or ) 97765 -23.50 32 s +2 sf +(:no) 101684 0.00 -1 s +5 sf +(.) 102390 0.00 -1 s +52832.0 163599.0 m +(Returns) 61610 0.00 -1 s +( the current control values for the ) 99965 5.00 32 s +4 sf +(display) 108117 0.00 -1 s +5 sf +( server screen) 123639 5.00 32 s +( saver. See ) 136505 4.33 32 s +2 sf +(set\036screen\036) 149352 0.00 -1 s +52832.0 166759.0 m +(saver) 59258 0.00 -1 s +5 sf +(.) 59964 0.00 -1 s +4 sf +52832.0 173036.0 m +(display) 60984 0.00 -1 s +5 sf +( \037 A ) 67884 -25.67 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 13 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +132373.0 8195.0 m +(Control Functions) 149013 -14.00 32 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(14\036181) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(set\036screen\036saver) 53817 0.00 -1 s +( ) 54479 -44.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 62631 0.00 -1 s +( timeout period blanking exposures ) 102932 -44.60 32 s +2 sf +139373.0 h +/timsps10 5 declareFont +5 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Changes) 62551 0.00 -1 s +( the current control values for the ) 99578 -184.71 32 s +4 sf +(display) 107730 0.00 -1 s +5 sf +( server screen saver. The screen saver) 149352 -153.83 32 s +52832.0 30457.0 m +(is) 54714 0.00 -1 s +( reset. The screen saver is also disabled if:) 102164 -15.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 37005.0 m +(\267) 53872 0.00 -1 s +57912.0 h +4 sf +(timeout) 66376 0.00 -1 s +5 sf +( is zero, or) 78232 -18.67 32 s +6 sf +52832.0 43553.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(Both) 63400 0.00 -1 s +( ) 64375 269.00 32 s +4 sf +(blanking) 74251 0.00 -1 s +5 sf +( and ) 80276 269.00 32 s +4 sf +(exposures) 91562 0.00 -1 s +5 sf +( are disabled and the server cannot regenerate the) 149352 269.50 32 s +57912.0 46713.0 m +(screen) 65119 0.00 -1 s +( contents without sending ) 94549 -50.00 32 s +2 sf +(:exposure) 106305 0.00 -1 s +5 sf +( events.) 114876 -51.00 32 s +52832.0 52990.0 m +(The) 57220 0.00 -1 s +( ) 57915 -11.00 32 s +4 sf +(timeout ) 67074 -11.00 32 s +5 sf +(specifies the \(non\036negative\) number of seconds of input device inactivity) 149352 -9.67 32 s +52832.0 56151.0 m +(that) 57064 0.00 -1 s +( must elapse before the screen saver is activated. The ) 116615 -102.60 32 s +4 sf +(timeout) 125079 0.00 -1 s +5 sf +( can be set to) 139358 -114.00 32 s +( ) 139949 -115.00 32 s +2 sf +(:default) 149352 0.00 -1 s +5 sf +52832.0 59312.0 m +(to) 55027 0.00 -1 s +( restore the server default) 83600 -26.00 32 s +( timeout interval.) 102932 -13.50 32 s +52832.0 65588.0 m +(If) 54710 0.00 -1 s +( ) 55269 -147.00 32 s +4 sf +(blanking) 65145 0.00 -1 s +5 sf +( is ) 68145 -147.00 32 s +2 sf +(:yes) 72846 0.00 -1 s +5 sf +( and) 77480 -147.00 32 s +( the screen hardware supports blanking, blanking is enabled; that) 149352 -147.56 32 s +52832.0 68749.0 m +(is,) 55420 0.00 -1 s +( the screen) 67023 -232.00 32 s +( saver will simply blank all screens when it is activated. ) 128340 -211.36 32 s +4 sf +(blanking) 138216 0.00 -1 s +5 sf +( can be set) 149352 -232.67 32 s +52832.0 71910.0 m +(to) 55027 0.00 -1 s +( ) 55711 -22.00 32 s +2 sf +(:default) 65114 0.00 -1 s +5 sf +( to restore the server default state for) 106433 -18.86 32 s +( blanking.) 117698 -23.00 32 s +52832.0 78187.0 m +(If) 54710 0.00 -1 s +( ) 55336 -80.00 32 s +4 sf +(exposures) 66622 0.00 -1 s +5 sf +( is ) 69756 -80.00 32 s +2 sf +(:yes) 74457 0.00 -1 s +5 sf +(, exposures are enabled. If exposures are enabled, or if the server) 146845 -72.73 32 s +( is) 149352 -81.00 32 s +52832.0 81348.0 m +(capable) 61450 0.00 -1 s +( of regenerating) 79326 6.00 32 s +( screen contents without sending ) 116891 4.40 32 s +2 sf +(:exposure) 128647 0.00 -1 s +5 sf +( events, the screen) 149352 5.33 32 s +52832.0 84509.0 m +(saver) 58786 0.00 -1 s +( will display some) 78908 -164.67 32 s +( server\036dependent image when activated. Frequently, this image) 149352 -247.57 32 s +52832.0 87670.0 m +(will consist) 65766 0.00 32 s +( of a repeating animation sequence, in) 107506 -188.00 32 s +( which case ) 120811 -188.67 32 s +4 sf +(period) 128179 0.00 -1 s +5 sf +( specifies the \(non\036) 149352 -125.67 32 s +52832.0 90830.0 m +(negative\)) 63331 0.00 -1 s +( number of) 75219 -247.00 32 s +( seconds for each repetition. A ) 109168 -206.33 32 s +4 sf +(period) 116536 0.00 -1 s +5 sf +( of zero is a hint that no repeti\036) 149352 -247.50 32 s +52832.0 93991.0 m +(tion) 57222 0.00 -1 s +( should occur.) 73039 -47.00 32 s +4 sf +52832.0 100268.0 m +(display) 60984 0.00 -1 s +( ) 61664 -26.00 32 s +5 sf +(\037 A ) 67884 -25.50 32 s +2 sf +(display) 76510 0.00 -1 s +5 sf +(.) 77216 0.00 -1 s +4 sf +52832.0 105054.0 m +(timeout) 61296 0.00 -1 s +5 sf +( \037 Specifies the delay until timeout takes over.) 114763 -27.75 32 s +4 sf +52832.0 109841.0 m +(period) 60200 0.00 -1 s +5 sf +( \037 Specifies the periodic change interval, if used.) 116366 -32.63 32 s +4 sf +52832.0 114627.0 m +(blanking) 62708 0.00 -1 s +5 sf +( \037 Specifies whether) 86966 -38.00 32 s +( the blanking option is available.) 123613 -38.60 32 s +4 sf +52832.0 119414.0 m +(exposures) 64118 0.00 -1 s +( ) 64782 -42.00 32 s +5 sf +(\037 Specifies whether exposures are allowed during blanking.) 133299 -41.57 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 14 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Control Functions) 36960 -14.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(14\036182) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s16.ps +++ cmucl-20a-20090928/own-work/clx/s16.ps @@ -0,0 +1,2681 @@ +%!PS-Adobe-2.0 +%%Title: s16.ps +%%Pages: 6 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 8 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps12b /ILtimsb 12 map + /timsps10b /ILtimsb 10 map + /timsps10i /ILtimsi 10 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 8 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(16\036185) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 6 declareFont +6 sf +20410.0 39376.0 m +94713.0 39466.0 m +(ERRORS) 115877 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +0.0 sw +/drawmode PL_SET def +139403 39315 av +140504 36265 as +140504 36265 as +140504 32833 as +140504 32833 as +140504 29783 as +140504 29783 as +140504 26351 as +143442 26351 as +143442 27876 as +146747 27876 as +146747 25588 as +144543 23300 as +139403 23300 as +137200 25588 as +137200 37028 as +139403 39315 as +fp +newpath +139403 39315 av +140504 36265 as +newpath +270.0 sw +140504 36265 av +140504 32833 as +[] 0 setdash +dp +newpath +0.0 sw +140504 32833 av +140504 29783 as +newpath +270.0 sw +140504 29783 av +140504 26351 as +143442 26351 as +143442 27876 as +146747 27876 as +146747 25588 as +144543 23300 as +139403 23300 as +137200 25588 as +137200 37028 as +139403 39315 as +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +144543 39315 av +139403 39315 as +139403 39315 as +140504 36265 as +140504 36265 as +143442 36265 as +143442 32833 as +140504 32833 as +140504 32833 as +140504 29783 as +140504 29783 as +144543 29783 as +146747 32070 as +146747 37028 as +144543 39315 as +fp +newpath +144543 39315 av +139403 39315 as +[] 0 setdash +dp +newpath +0.0 sw +139403 39315 av +140504 36265 as +newpath +270.0 sw +140504 36265 av +143442 36265 as +143442 32833 as +140504 32833 as +[] 0 setdash +dp +newpath +0.0 sw +140504 32833 av +140504 29783 as +newpath +270.0 sw +140504 29783 av +144543 29783 as +146747 32070 as +146747 37028 as +144543 39315 as +[] 0 setdash +dp +0.0 sw +newpath +136098 23300 av +136098 23300 as +newpath +136098 43891 av +136098 43891 as +newpath +147848 43891 av +147848 43891 as +newpath +147848 23300 av +147848 23300 as +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +135296 39315 av +135296 23300 as +132359 23300 as +129421 26351 as +129421 27876 as +131991 27876 as +131991 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +129054 23300 av +129054 23300 as +newpath +129054 43891 av +129054 43891 as +newpath +136765 43891 av +136765 43891 as +newpath +136765 23300 av +136765 23300 as +149351.0 39376.0 m +6 sf +/timsps10 3 declareFont +3 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 7 declareFont +7 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(16.1) 57771 0.00 -1 s +3 sf +() 57771 0.00 -1 s +59966.0 h +(CLX error conditions are hierarchial. The base error condition is) 149352 1834.33 32 s +52832.0 50032.0 m +2 sf +(x\036error) 61605 0.00 -1 s +3 sf +(,) 62311 0.00 -1 s +( and all other conditions are built on top of ) 111103 -11.70 32 s +2 sf +(x\036error) 119876 0.00 -1 s +3 sf +(. ) 121277 -11.00 32 s +2 sf +(x\036error) 130050 0.00 -1 s +3 sf +( can be built on a) 149352 -11.60 32 s +52832.0 53193.0 m +(lower\036level) 65680 0.00 -1 s +( condition that is implementation dependent \(this is probably) 132894 -181.00 32 s +( the ) 137391 -181.50 32 s +2 sf +(error) 143814 0.00 -1 s +3 sf +( con\036) 149352 -182.00 32 s +52832.0 56354.0 m +(dition\).) 61062 0.00 -1 s +2 sf +34544.0 62631.0 m +(define\036condition) 54139 0.00 -1 s +3 sf +( ) 54810 -35.00 32 s +/timsps10i 5 declareFont +5 sf +(name) 60922 0.00 -1 s +3 sf +( \() 62532 -35.00 32 s +5 sf +(parent\036types) 76638 0.00 -1 s +3 sf +(*\)) 78988 0.00 -1 s +( [\({) 82891 -36.00 32 s +5 sf +(slot\036specifier) 97625 0.00 -1 s +3 sf +(*}\) {) 103356 -35.00 32 s +5 sf +(option) 110568 0.00 -1 s +3 sf +(*}] ) 114943 -36.00 32 s +2 sf +142014.0 h +3 sf +(Macro) 149379 0.00 -1 s +52832.0 67350.0 m +(Any) 57691 0.00 -1 s +( new condition type must be defined with the ) 107724 -179.89 32 s +2 sf +(define\036condition) 127319 0.00 -1 s +3 sf +( macro. A condition) 149352 -179.67 32 s +52832.0 70510.0 m +(type) 57691 0.00 -1 s +( has a name, parent types, report message, and any number of slot items. See the ) 144490 -286.75 32 s +5 sf +(Lisp) 149352 0.00 -1 s +52832.0 73671.0 m +(Reference) 64114 0.00 -1 s +3 sf +( manual for further information regarding) 110825 -45.00 32 s +( ) 111485 -46.00 32 s +2 sf +(define\036condition) 131080 0.00 -1 s +3 sf +(.) 131786 0.00 -1 s +52832.0 79948.0 m +(The) 57220 0.00 -1 s +( following are the predefined error conditions that can occur in CLX.) 134767 -31.64 32 s +2 sf +34544.0 86225.0 m +(access\036error) 49272 0.00 -1 s +52832.0 h +137408.0 h +( ) 138063 -51.00 32 s +3 sf +(Condition) 149352 0.00 -1 s +52832.0 90943.0 m +(An) 56280 0.00 -1 s +( ) 56949 -37.00 32 s +2 sf +(access\036error) 71677 0.00 -1 s +3 sf +( can occur for several) 95817 -37.00 32 s +( reasons:) 105732 -38.00 32 s +/symbb8 4 declareFont +4 sf +52832.0 97491.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(A) 59949 0.00 -1 s +( client attempted to grab a) 87863 -295.00 32 s +( key/button combination already grabbed by another cli\036) 149352 -295.57 32 s +57912.0 100652.0 m +(ent) 61360 0.00 -1 s +4 sf +52832.0 107199.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(A) 59949 0.00 -1 s +( client attempted to free a colormap entry that it did not already allocate) 140569 -25.62 32 s +4 sf +52832.0 113747.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(A) 59949 0.00 -1 s +( client attempted to store into a read\036only colormap entry) 124042 -27.56 32 s +4 sf +52832.0 120294.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(A) 59949 0.00 -1 s +( client attempted) 78234 -262.00 32 s +( to modify the access control list from other than the local \(or oth\036) 149352 -262.54 32 s +57912.0 123455.0 m +(erwise) 65276 0.00 -1 s +( authorized\)) 78796 -35.00 32 s +( host) 84170 -36.00 32 s +4 sf +52832.0 130003.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(A) 59949 0.00 -1 s +( client attempted to select an event) 98864 -19.00 32 s +( type that another client has already selected,) 149352 -19.57 32 s +57912.0 133164.0 m +(and,) 62693 0.00 -1 s +( that at most, one client can select at a time) 110970 -23.80 32 s +52832.0 139440.0 m +(An) 56280 0.00 -1 s +( ) 56930 -56.00 32 s +2 sf +(access\036error) 71658 0.00 -1 s +3 sf +( is a special case of the more general ) 113240 -55.56 32 s +2 sf +(request\036error) 129536 0.00 -1 s +3 sf +( \(see page 16\036189) 149352 -55.67 32 s +52832.0 142601.0 m +(for) 56121 0.00 -1 s +( information on) 73585 -46.00 32 s +( ) 74244 -47.00 32 s +2 sf +(request\036error) 90540 0.00 -1 s +3 sf +(\).) 92185 0.00 -1 s +2 sf +34544.0 148878.0 m +(alloc\036error) 47549 0.00 -1 s +52832.0 h +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 153597.0 m +(The) 57220 0.00 -1 s +( server failed to allocate the requested resource or server memory. ) 132148 -26.91 32 s +52832.0 159873.0 m +(An) 56280 0.00 -1 s +( ) 56772 -214.00 32 s +2 sf +(alloc\036error) 69777 0.00 -1 s +3 sf +( is a special case of the more general ) 109933 -214.00 32 s +2 sf +(request\036error) 126229 0.00 -1 s +3 sf +( \(see page 16\036189 for) 149352 -213.75 32 s +52832.0 163034.0 m +(information) 66154 0.00 -1 s +( on ) 70248 -70.00 32 s +2 sf +(request\036error) 86544 0.00 -1 s +3 sf +(\).) 88189 0.00 -1 s +2 sf +34544.0 169311.0 m +(atom\036error) 48017 0.00 -1 s +52832.0 h +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 174030.0 m +(A) 54869 0.00 -1 s +( value for an ) 69638 -30.00 32 s +5 sf +(atom) 75281 0.00 -1 s +3 sf +( argument does not name a defined atom. ) 122304 -29.63 32 s +52832.0 180306.0 m +(An) 56280 0.00 -1 s +( ) 56739 -247.00 32 s +2 sf +(atom\036error) 70212 0.00 -1 s +3 sf +( is a special case) 87876 -247.00 32 s +( of the more general ) 110068 -247.60 32 s +2 sf +(request\036error) 126364 0.00 -1 s +3 sf +( \(see page 16\036189 for) 149352 -247.50 32 s +52832.0 183467.0 m +(information) 66154 0.00 -1 s +( on ) 70248 -70.00 32 s +2 sf +(request\036error) 86544 0.00 -1 s +3 sf +(\).) 88189 0.00 -1 s +2 sf +34544.0 189744.0 m +(closed\036display) 51477 0.00 -1 s +52832.0 h +3 sf +(Condition) 64121 0.00 -1 s +52832.0 194462.0 m +(The) 57220 0.00 -1 s +( ) 57881 -45.00 32 s +2 sf +(closed\036display) 74814 0.00 -1 s +3 sf +( condition) 86135 -45.00 32 s +( is signaled when trying to read or write a closed display) 149352 -45.55 32 s +52832.0 197623.0 m +(\(that) 58003 0.00 -1 s +( is, ) 61817 -93.00 32 s +2 sf +(close\036display) 77181 0.00 -1 s +3 sf +( has been) 87497 -93.00 32 s +( called on the ) 102955 -93.50 32 s +2 sf +(display) 111581 0.00 -1 s +3 sf +( object, or a server\036disconnect oc\036) 149352 -93.60 32 s +52832.0 200784.0 m +(curred\).) 61683 0.00 -1 s +( The ) 67433 -25.00 32 s +2 sf +(closed\036display) 84366 0.00 -1 s +3 sf +( object is reported with the error. ) 121965 -24.71 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Errors) 26353 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(16\036186) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(A ) 55832 257.00 32 s +2 sf +(closed\036display) 72765 0.00 -1 s +3 sf +( condition is a special case of the more general ) 128783 257.00 32 s +2 sf +(x\036error) 137556 0.00 -1 s +3 sf +( \(see) 143062 257.00 32 s +( page) 149352 256.00 32 s +52832.0 25739.0 m +(16\036190) 60826 0.00 -1 s +( for information on ) 82919 -41.00 32 s +2 sf +(x\036error) 91692 0.00 -1 s +3 sf +(\).) 93337 0.00 -1 s +2 sf +34544.0 32015.0 m +(colormap\036error) 53348 0.00 -1 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 36734.0 m +(A) 54869 0.00 -1 s +( value for a ) 68215 -33.00 32 s +/timsps10i 5 declareFont +5 sf +(colormap) 79031 0.00 -1 s +3 sf +( argument does not name a defined colormap. ) 131041 -33.00 32 s +52832.0 43011.0 m +(A) 54869 0.00 -1 s +( ) 55900 325.00 32 s +2 sf +(colormap\036error) 74704 0.00 -1 s +3 sf +( is a special case of the more general ) 119713 325.22 32 s +2 sf +(resource\036error) 137418 0.00 -1 s +3 sf +( \(see page) 149352 325.50 32 s +52832.0 46172.0 m +(16\036189) 60826 0.00 -1 s +( for information on ) 82860 -55.75 32 s +2 sf +(resource\036error) 100565 0.00 -1 s +3 sf +(\).) 102210 0.00 -1 s +2 sf +34544.0 52448.0 m +(connection\036failure) 56487 0.00 -1 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 57167.0 m +(Signaled) 62708 0.00 -1 s +( when an X11 server refuses) 95172 83.00 32 s +( a connection. The following items are reported) 149352 82.43 32 s +52832.0 60328.0 m +(along) 59102 0.00 -1 s +( with the error:) 75884 -21.67 32 s +/symbb8 4 declareFont +4 sf +52832.0 66875.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(major\036version) 73900 0.00 -1 s +3 sf +( \037 The major version of the X server code.) 122891 -24.89 32 s +4 sf +52832.0 73423.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(minor\036version) 73900 0.00 -1 s +3 sf +( \037 The minor version of the X server code.) 123049 -24.89 32 s +4 sf +52832.0 79970.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(host) 62616 0.00 -1 s +3 sf +( \037 The host name for the X server.) 102503 -20.00 32 s +4 sf +52832.0 86518.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(display) 66064 0.00 -1 s +( \037 ) 69923 -31.00 32 s +3 sf +(The display on which) 94206 -31.00 32 s +( the error occurred.) 115734 -31.67 32 s +4 sf +52832.0 93066.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(reason) 65594 0.00 -1 s +3 sf +( \037 A string indicating why the connection failed.) 121378 -31.88 32 s +52832.0 99342.0 m +(A) 54869 0.00 -1 s +( ) 55361 -214.00 32 s +2 sf +(connection\036failure) 77304 0.00 -1 s +3 sf +( is a special case of the more general) 116968 -214.00 32 s +( ) 117459 -215.00 32 s +2 sf +(x\036error) 126232 0.00 -1 s +3 sf +( \(see page 16\036190 for) 149352 -214.50 32 s +52832.0 102503.0 m +(information) 66154 0.00 -1 s +( on) 69626 -56.00 32 s +( ) 70275 -57.00 32 s +2 sf +(x\036error) 79048 0.00 -1 s +3 sf +(\).) 80693 0.00 -1 s +2 sf +34544.0 108780.0 m +(cursor\036error) 49743 0.00 -1 s +3 sf +( ) 50348 -101.00 32 s +52832.0 h +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 113498.0 m +(A) 54869 0.00 -1 s +( value for) 65626 -28.00 32 s +( a ) 68234 -28.50 32 s +5 sf +(cursor) 75603 0.00 -1 s +3 sf +( argument does not name a defined cursor.) 123365 -28.57 32 s +52832.0 119775.0 m +(A) 54869 0.00 -1 s +( ) 55483 -92.00 32 s +2 sf +(cursor\036error) 70682 0.00 -1 s +3 sf +( is a special case of the more general ) 111939 -91.67 32 s +2 sf +(resource\036error) 129644 0.00 -1 s +3 sf +( \(see page 16\036189) 149352 -91.67 32 s +52832.0 122936.0 m +(for) 56121 0.00 -1 s +( information on ) 74212 -57.00 32 s +2 sf +(resource\036error) 91917 0.00 -1 s +3 sf +(\).) 93562 0.00 -1 s +2 sf +34544.0 129213.0 m +(device\036busy) 48653 0.00 -1 s +3 sf +( ) 49287 -72.00 32 s +2 sf +52832.0 h +3 sf +138108.0 h +(Condition) 149397 0.00 -1 s +52832.0 133931.0 m +(Signaled) 62708 0.00 -1 s +( by \() 68185 152.00 32 s +2 sf +(setf) 72414 0.00 -1 s +3 sf +( \() 74212 153.00 32 s +2 sf +(pointer\036mapping) 94592 0.00 -1 s +3 sf +( ) 95450 152.00 32 s +5 sf +(display) 103602 0.00 -1 s +3 sf +(\) ) 105400 153.00 32 s +2 sf +(mapping) 116063 0.00 -1 s +3 sf +(\) when the ) 129137 152.33 32 s +2 sf +(set\036pointer\036map\036) 149352 0.00 -1 s +52832.0 137092.0 m +(ping) 58165 0.00 -1 s +3 sf +( request returns a busy status. A similar condition occurs in ) 122472 -295.91 32 s +2 sf +(set\036modifier\036mapping) 148646 0.00 -1 s +3 sf +(,) 149352 0.00 -1 s +52832.0 140253.0 m +(but) 56438 0.00 -1 s +( in this case, it returns) 81391 37.00 32 s +( a boolean indicating success, rather than signaling an error.) 149352 36.44 32 s +52832.0 143414.0 m +(The) 57220 0.00 -1 s +( ) 57898 -28.00 32 s +2 sf +(device\036busy) 72007 0.00 -1 s +3 sf +( condition) 83345 -28.00 32 s +( returns the display object as part of the error.) 134496 -28.56 32 s +52832.0 149691.0 m +(A) 54869 0.00 -1 s +( ) 55394 -181.00 32 s +2 sf +(device\036busy) 69503 0.00 -1 s +3 sf +( condition is a special case of the more general ) 121141 -181.00 32 s +2 sf +(x\036error) 129914 0.00 -1 s +3 sf +( \(see page 16\036190) 149352 -181.67 32 s +52832.0 152852.0 m +(for) 56121 0.00 -1 s +( information on) 73603 -37.00 32 s +( ) 74271 -38.00 32 s +2 sf +(x\036error) 83044 0.00 -1 s +3 sf +(\).) 84689 0.00 -1 s +2 sf +34544.0 159128.0 m +(drawable\036error) 53193 0.00 -1 s +( ) 53780 -119.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 163847.0 m +(A) 54869 0.00 -1 s +( value for a ) 68219 -32.00 32 s +5 sf +(drawable) 78880 0.00 -1 s +3 sf +( argument does not name a defined window or pixmap. ) 141495 -32.00 32 s +52832.0 170124.0 m +(A) 54869 0.00 -1 s +( ) 55913 338.00 32 s +2 sf +(drawable\036error) 74562 0.00 -1 s +3 sf +( is a special case of the more general ) 119687 338.11 32 s +2 sf +(resource\036error) 137392 0.00 -1 s +3 sf +( \(see page) 149352 338.50 32 s +52832.0 173284.0 m +(16\036189) 60826 0.00 -1 s +( for information on ) 82860 -55.75 32 s +2 sf +(resource\036error) 100565 0.00 -1 s +3 sf +(\).) 102210 0.00 -1 s +2 sf +34544.0 179561.0 m +(font\036error) 46764 0.00 -1 s +( ) 47413 -57.00 32 s +52832.0 h +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 184280.0 m +(A) 54869 0.00 -1 s +( value for a ) 68235 -28.00 32 s +5 sf +(font) 72625 0.00 -1 s +3 sf +( or ) 76331 -28.00 32 s +5 sf +(gcontext) 85891 0.00 -1 s +3 sf +( argument does not name a defined font. ) 131832 -27.63 32 s +52832.0 190556.0 m +(A) 54869 0.00 -1 s +( ) 55417 -158.00 32 s +2 sf +(font\036error) 67637 0.00 -1 s +3 sf +( is a special case of the more general ) 108299 -157.78 32 s +2 sf +(resource\036error) 126004 0.00 -1 s +3 sf +( \(see page 16\036189 for) 149352 -157.50 32 s +52832.0 193717.0 m +(information) 66154 0.00 -1 s +( on ) 70216 -86.00 32 s +2 sf +(resource\036error) 87921 0.00 -1 s +3 sf +(\).) 89566 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +142985.0 8195.0 m +(Errors) 149018 0.00 -1 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(16\036187) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(gcontext\036error) 52092 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 52697 -101.00 32 s +2 sf +52832.0 h +3 sf +(Condition) 64121 0.00 -1 s +52832.0 27297.0 m +(A) 54869 0.00 -1 s +( value for a ) 68211 -34.00 32 s +/timsps10i 5 declareFont +5 sf +(gcontext) 77771 0.00 -1 s +3 sf +( argument does not name a defined GContext. ) 130093 -33.50 32 s +52832.0 33573.0 m +(A) 54869 0.00 -1 s +( ) 55303 -272.00 32 s +2 sf +(gcontext\036error) 72851 0.00 -1 s +3 sf +( is a special) 85124 -272.00 32 s +( case of the more general ) 112482 -272.50 32 s +2 sf +(resource\036error) 130187 0.00 -1 s +3 sf +( \(see page 16\036189) 149352 -272.67 32 s +52832.0 36734.0 m +(for) 56121 0.00 -1 s +( information on ) 74212 -57.00 32 s +2 sf +(resource\036error) 91917 0.00 -1 s +3 sf +(\).) 93562 0.00 -1 s +2 sf +34544.0 43011.0 m +(id\036choice\036error) 52721 0.00 -1 s +( ) 53329 -98.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 47729.0 m +(The) 57220 0.00 -1 s +( value chosen) 72275 -153.00 32 s +( for a resource identifier is either not included in the range assigned to) 149352 -153.54 32 s +52832.0 50890.0 m +(the) 56280 0.00 -1 s +( client or is already in use. Under normal circumstances, this cannot occur and should) 149352 -248.79 32 s +52832.0 54051.0 m +(be) 55496 0.00 -1 s +( considered a server or CLX) 87284 -21.00 32 s +( library error. ) 103045 -21.67 32 s +52832.0 60328.0 m +(An) 56280 0.00 -1 s +( ) 57246 260.00 32 s +2 sf +(id\036choice\036error) 75423 0.00 -1 s +3 sf +( is a special case of the more general ) 119845 260.00 32 s +2 sf +(resource\036error) 137550 0.00 -1 s +3 sf +( \(see) 143059 260.00 32 s +( page) 149352 259.00 32 s +52832.0 63489.0 m +(16\036189) 60826 0.00 -1 s +( for information on ) 82860 -55.75 32 s +2 sf +(resource\036error) 100565 0.00 -1 s +3 sf +(\).) 102210 0.00 -1 s +2 sf +34544.0 69765.0 m +(implementation\036error) 60871 0.00 -1 s +( ) 61479 -98.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 74484.0 m +(The) 57220 0.00 -1 s +( server does not implement some aspect of the request. A server that generates this) 149352 -75.00 32 s +52832.0 77645.0 m +(error) 58313 0.00 -1 s +( for a core request is deficient. As such, this error is not listed for any of the requests.) 149352 -275.83 32 s +52832.0 80806.0 m +(However,) 63879 0.00 -1 s +( clients should be prepared to receive) 105079 -134.00 32 s +( such errors and either handle or discard) 149352 -134.57 32 s +52832.0 83967.0 m +(them.) 59181 0.00 -1 s +( ) 59854 -33.00 32 s +52832.0 90243.0 m +(An) 56280 0.00 -1 s +( ) 57077 91.00 32 s +2 sf +(implementation\036error) 83404 0.00 -1 s +3 sf +( is a special case of the more general ) 126307 91.22 32 s +2 sf +(resource\036error) 144012 0.00 -1 s +3 sf +( \(see) 149352 91.00 32 s +52832.0 93404.0 m +(page) 58160 0.00 -1 s +( 16\036189 for information on ) 88843 -54.80 32 s +2 sf +(resource\036error) 106548 0.00 -1 s +3 sf +(\).) 108193 0.00 -1 s +2 sf +34544.0 99681.0 m +(length\036error) 49431 0.00 -1 s +( ) 50055 -82.00 32 s +52832.0 h +3 sf +138108.0 h +(Condition) 149397 0.00 -1 s +52832.0 104400.0 m +(The) 57220 0.00 -1 s +( length of a request is shorter or longer than that minimally required to contain the) 149352 -38.87 32 s +52832.0 107561.0 m +(arguments.) 65293 0.00 -1 s +( This) 70990 -26.00 32 s +( usually means an internal CLX error. ) 114221 -26.57 32 s +52832.0 113837.0 m +(A) 54869 0.00 -1 s +( ) 55507 -68.00 32 s +2 sf +(length\036error) 70394 0.00 -1 s +3 sf +( is a special case of the more general ) 111867 -67.67 32 s +2 sf +(resource\036error) 129572 0.00 -1 s +3 sf +( \(see page 16\036189) 149352 -67.67 32 s +52832.0 116998.0 m +(for) 56121 0.00 -1 s +( information on ) 74212 -57.00 32 s +2 sf +(resource\036error) 91917 0.00 -1 s +3 sf +(\).) 93562 0.00 -1 s +2 sf +34544.0 123275.0 m +(lookup\036error) 50219 0.00 -1 s +3 sf +( ) 50823 -102.00 32 s +2 sf +52832.0 h +3 sf +138108.0 h +(Condition) 149397 0.00 -1 s +52832.0 127993.0 m +(CLX) 58475 0.00 -1 s +( has the option of caching different resource types \(see) 120129 -2.00 32 s +( ) 120832 -3.00 32 s +2 sf +(*clx\036cached\036types*) 143558 0.00 -1 s +3 sf +(\) in a) 149352 -2.50 32 s +52832.0 131154.0 m +(hash) 58005 0.00 -1 s +( table by resource ID. When looking up an object in the hash table, if the type of the) 149352 -193.67 32 s +52832.0 134315.0 m +(object) 59728 0.00 -1 s +( is wrong, a ) 73470 -33.00 32 s +2 sf +(lookup\036error) 89145 0.00 -1 s +3 sf +( is signaled. ) 103158 -32.67 32 s +52832.0 140592.0 m +(For) 56751 0.00 -1 s +( example: The cursor with ID 123 is interned in the hash table. An event is received) 149352 -114.81 32 s +52832.0 143753.0 m +(with) 57848 0.00 -1 s +( a field for window 123. When 123 is looked up in the hash table, a cursor is found.) 149352 -154.78 32 s +52832.0 146914.0 m +(Since) 59102 0.00 -1 s +( a window was expected, a ) 89500 -93.00 32 s +2 sf +(lookup\036error) 105175 0.00 -1 s +3 sf +( is signaled. This error indicates a prob\036) 149352 -93.00 32 s +52832.0 150074.0 m +(lem) 57064 0.00 -1 s +( with the extension code being) 90257 -243.00 32 s +( used. The following items are reported along with the) 149352 -243.56 32 s +52832.0 153235.0 m +(error:) 59097 0.00 -1 s +/symbb8 4 declareFont +4 sf +52832.0 159783.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(id) 60107 0.00 -1 s +3 sf +( \037 The resource ID.) 83289 -22.75 32 s +4 sf +52832.0 166330.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(display) 66064 0.00 -1 s +3 sf +( \037 The display being used.) 96926 -35.80 32 s +4 sf +52832.0 172878.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(type) 62613 0.00 -1 s +3 sf +( \037 The resource) 81390 -36.00 32 s +( type.) 87624 -37.00 32 s +4 sf +52832.0 179426.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(object) 64808 0.00 -1 s +3 sf +( \037 The ) 73989 -49.00 32 s +2 sf +(resource) 84332 0.00 -1 s +3 sf +( object.) 92591 -49.00 32 s +52832.0 185702.0 m +(A) 54869 0.00 -1 s +( ) 55318 -257.00 32 s +2 sf +(lookup\036error) 70993 0.00 -1 s +3 sf +( is a special case of) 91416 -257.00 32 s +( the more general ) 110760 -257.50 32 s +2 sf +(x\036error) 119533 0.00 -1 s +3 sf +( \(see page 16\036190 for infor\036) 149352 -257.60 32 s +52832.0 188863.0 m +(mation) 60670 0.00 -1 s +( on) 64141 -57.00 32 s +( ) 64789 -58.00 32 s +2 sf +(x\036error) 73562 0.00 -1 s +3 sf +(\).) 75207 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Errors) 26353 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(16\036188) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(match\036error ) 50055 -79.00 32 s +52832.0 h +138108.0 h +/timsps10 3 declareFont +3 sf +(Condition) 149397 0.00 -1 s +52832.0 27297.0 m +(In) 55182 0.00 -1 s +( a graphics request, the root and depth of the GContext does not match that of the draw\036) 149352 -287.82 32 s +52832.0 30457.0 m +(able.) 58239 0.00 -1 s +( An ) 63295 98.00 32 s +2 sf +(:input\036only) 76778 0.00 -1 s +3 sf +( window is used as a drawable. Some argument or pair of argu\036) 149352 98.33 32 s +52832.0 33618.0 m +(ments) 59573 0.00 -1 s +( has the) 67685 -255.00 32 s +( correct type and range but fails to match in some other way required by the) 149352 -255.53 32 s +52832.0 36779.0 m +(request.) 61687 0.00 -1 s +( An ) 66273 -137.00 32 s +2 sf +(:input\036only) 79756 0.00 -1 s +3 sf +( window) 89416 -137.00 32 s +( locks this attribute. The values do not exist for an ) 145121 -137.55 32 s +2 sf +(:in\036) 149352 0.00 -1 s +52832.0 39940.0 m +(put\036only) 63023 0.00 -1 s +3 sf +( window.) 73483 -43.00 32 s +( ) 74145 -44.00 32 s +52832.0 46217.0 m +(A) 54869 0.00 -1 s +( ) 55328 -247.00 32 s +2 sf +(match\036error) 70212 0.00 -1 s +3 sf +( is a special case) 87876 -247.00 32 s +( of the more general ) 110068 -247.60 32 s +2 sf +(request\036error) 126364 0.00 -1 s +3 sf +( \(see page 16\036189 for) 149352 -247.50 32 s +52832.0 49378.0 m +(information) 66154 0.00 -1 s +( on ) 70248 -70.00 32 s +2 sf +(request\036error) 86544 0.00 -1 s +3 sf +(\).) 88189 0.00 -1 s +2 sf +34544.0 55654.0 m +(missing\036parameter) 57269 0.00 -1 s +( ) 57912 -63.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 60373.0 m +(One) 57533 0.00 -1 s +( or more of the required) 83365 -209.00 32 s +( keyword parameters is missing or ) 121608 -209.50 32 s +2 sf +(nil) 124745 0.00 -1 s +3 sf +(. The missing parame\036) 149352 -209.67 32 s +52832.0 63534.0 m +(ters) 56906 0.00 -1 s +( are reported along with the) 87911 -21.00 32 s +( error.) 94782 -22.00 32 s +52832.0 69810.0 m +(A) 54869 0.00 -1 s +( ) 55386 -189.00 32 s +2 sf +(missing\036parameter) 78111 0.00 -1 s +3 sf +( condition is a special case of the more general ) 129673 -188.60 32 s +2 sf +(x\036error) 138446 0.00 -1 s +3 sf +( \(see page) 149352 -188.50 32 s +52832.0 72971.0 m +(16\036190) 60826 0.00 -1 s +( for information on ) 82919 -41.00 32 s +2 sf +(x\036error) 91692 0.00 -1 s +3 sf +(\).) 93337 0.00 -1 s +2 sf +34544.0 79248.0 m +(name\036error) 48489 0.00 -1 s +3 sf +( ) 49107 -88.00 32 s +52832.0 h +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 83967.0 m +(A) 54869 0.00 -1 s +( font or color of the specified name does not exist. ) 112008 -21.00 32 s +52832.0 90243.0 m +(A) 54869 0.00 -1 s +( ) 55395 -180.00 32 s +2 sf +(name\036error) 69340 0.00 -1 s +3 sf +( is a special case of the) 94122 -180.00 32 s +( more general ) 109800 -180.67 32 s +2 sf +(request\036error) 126096 0.00 -1 s +3 sf +( \(see page 16\036189 for) 149352 -180.50 32 s +52832.0 93404.0 m +(information) 66154 0.00 -1 s +( on ) 70248 -70.00 32 s +2 sf +(request\036error) 86544 0.00 -1 s +3 sf +(\).) 88189 0.00 -1 s +2 sf +34544.0 99681.0 m +(pixmap\036error) 51000 0.00 -1 s +3 sf +( ) 51613 -93.00 32 s +2 sf +52832.0 h +3 sf +(Condition) 64121 0.00 -1 s +52832.0 104400.0 m +(A) 54869 0.00 -1 s +( value for a ) 68216 -32.75 32 s +/timsps10i 5 declareFont +5 sf +(pixmap) 76523 0.00 -1 s +3 sf +( argument does not name a defined pixmap. ) 126345 -32.50 32 s +52832.0 110676.0 m +(A) 54869 0.00 -1 s +( ) 55296 -279.00 32 s +2 sf +(pixmap\036error) 71752 0.00 -1 s +3 sf +( is a special case of the more general ) 111323 -279.00 32 s +2 sf +(resource\036error) 129028 0.00 -1 s +3 sf +(. \(See page 16\036189) 149352 -278.67 32 s +52832.0 113837.0 m +(for) 56121 0.00 -1 s +( information on ) 74212 -57.00 32 s +2 sf +(resource\036error) 91917 0.00 -1 s +3 sf +(.\)) 93562 0.00 -1 s +2 sf +34544.0 120114.0 m +(reply\036length\036error) 56640 0.00 -1 s +3 sf +( \() 58219 -66.00 32 s +2 sf +(x\036error) 66992 0.00 -1 s +3 sf +(\) \() 69510 -66.00 32 s +5 sf +(slots*) 76096 0.00 -1 s +3 sf +(\)) 77035 0.00 -1 s +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 124833.0 m +(The) 57220 0.00 -1 s +( reply to a request has an unexpected length. The following items) 128714 -198.00 32 s +( are reported along) 149352 -198.67 32 s +52832.0 127993.0 m +(with) 57848 0.00 -1 s +( the error:) 68953 -10.00 32 s +/symbb8 4 declareFont +4 sf +52832.0 134541.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(reply\036length) 71704 0.00 -1 s +3 sf +( \037 The) 80250 -38.00 32 s +( actual reply length.) 102548 -38.67 32 s +4 sf +52832.0 141089.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(expected\036length) 75776 0.00 -1 s +3 sf +( \037 The expected reply length.) 109818 -57.00 32 s +4 sf +52832.0 147636.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(display) 66064 0.00 -1 s +3 sf +( \037 The display on which the error occurred.) 116050 -30.88 32 s +52832.0 153913.0 m +(A) 54869 0.00 -1 s +( ) 55350 -225.00 32 s +2 sf +(reply\036length\036error) 77446 0.00 -1 s +3 sf +( is a special case of the more general ) 117503 -225.00 32 s +2 sf +(x\036error) 126276 0.00 -1 s +3 sf +( \(see) 131300 -225.00 32 s +( page 16\036190 for) 149352 -225.67 32 s +52832.0 157074.0 m +(information) 66154 0.00 -1 s +( on) 69626 -56.00 32 s +( ) 70275 -57.00 32 s +2 sf +(x\036error) 79048 0.00 -1 s +3 sf +(\).) 80693 0.00 -1 s +2 sf +34544.0 163350.0 m +(reply\036timeout) 50998 0.00 -1 s +( ) 51658 -46.00 32 s +52832.0 h +3 sf +(Condition) 64121 0.00 -1 s +52832.0 168069.0 m +(The) 57220 0.00 -1 s +( ) 57663 -263.00 32 s +2 sf +(*reply\036timeout*) 76939 0.00 -1 s +3 sf +( parameter specifies) 98978 -263.00 32 s +( the maximum number of seconds to wait for a) 149352 -263.56 32 s +52832.0 171230.0 m +(request) 60981 0.00 -1 s +( reply, or ) 72089 45.33 32 s +2 sf +(nil) 75226 0.00 -1 s +3 sf +( to wait forever \(the default\). When a reply has not been received) 149352 45.50 32 s +52832.0 174391.0 m +(after) 58000 0.00 -1 s +( *) 60192 75.00 32 s +2 sf +(reply\036timeout) 76646 0.00 -1 s +3 sf +(* seconds, the ) 93489 75.00 32 s +2 sf +(reply\036timeout) 109943 0.00 -1 s +3 sf +( condition is signaled. The) 140108 75.00 32 s +( ) 140888 74.00 32 s +5 sf +(timeout) 149352 0.00 -1 s +52832.0 177552.0 m +(period) 60200 0.00 -1 s +3 sf +( and ) 65627 -30.00 32 s +5 sf +(display) 73779 0.00 -1 s +3 sf +( are reported along with the error.) 111602 -30.00 32 s +52832.0 183828.0 m +(A) 54869 0.00 -1 s +( ) 55869 294.00 32 s +2 sf +(reply\036timeout) 72323 0.00 -1 s +3 sf +( condition is a special case of the) 111609 294.00 32 s +( more general ) 128709 293.33 32 s +2 sf +(x\036error) 137482 0.00 -1 s +3 sf +( \(see page) 149352 293.50 32 s +52832.0 186989.0 m +(16\036190) 60826 0.00 -1 s +( for information on ) 82919 -41.00 32 s +2 sf +(x\036error) 91692 0.00 -1 s +3 sf +(\).) 93337 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +142985.0 8195.0 m +(Errors) 149018 0.00 -1 s +/timsps10b 2 declareFont +2 sf +141019.0 208619.0 m +(16\036189) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(request\036error ) 53554 -109.00 32 s +138108.0 h +/timsps10 3 declareFont +3 sf +(Condition) 149397 0.00 -1 s +52832.0 27297.0 m +(The) 57220 0.00 -1 s +( following) 68875 -23.00 32 s +( items are reported along with the error:) 113611 -23.57 32 s +52832.0 33573.0 m +(The) 57220 0.00 -1 s +( major or minor opcode) 83754 -28.00 32 s +( does not specify a valid request. ) 121175 -28.57 32 s +/symbb8 4 declareFont +4 sf +52832.0 40121.0 m +(\267) 53872 0.00 -1 s +57912.0 h +/timsps10i 5 declareFont +5 sf +(display) 66064 0.00 -1 s +3 sf +( \037 The display on which the error occurred.) 116050 -30.88 32 s +4 sf +52832.0 46668.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(error\036key) 68568 0.00 -1 s +3 sf +( \037 The error \(sub\)type.) 95346 -25.00 32 s +4 sf +52832.0 53216.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(major) 64653 0.00 -1 s +3 sf +( \037 The major) 80449 -38.00 32 s +( opcode.) 89972 -39.00 32 s +4 sf +52832.0 59763.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(minor) 64653 0.00 -1 s +3 sf +( \037 The minor opcode.) 90130 -38.25 32 s +4 sf +52832.0 66311.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(sequence) 68255 0.00 -1 s +3 sf +( \037 The actual sequence number.) 105122 -56.00 32 s +4 sf +52832.0 72858.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(current\036sequence) 77502 0.00 -1 s +3 sf +( \037 The current sequence number.) 115621 -56.00 32 s +52832.0 79135.0 m +(A) 54869 0.00 -1 s +( ) 55718 143.00 32 s +2 sf +(request\036error) 74131 0.00 -1 s +3 sf +( condition is a special case of the more general ) 129009 143.00 32 s +2 sf +(x\036error) 137782 0.00 -1 s +3 sf +( \(see page) 149352 143.50 32 s +52832.0 82296.0 m +(16\036190) 60826 0.00 -1 s +( for information on ) 82919 -41.00 32 s +2 sf +(x\036error) 91692 0.00 -1 s +3 sf +(\).) 93337 0.00 -1 s +2 sf +34544.0 88573.0 m +(resource\036error) 54366 0.00 -1 s +( ) 54932 -140.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 93291.0 m +(All) 56437 0.00 -1 s +( X11 errors for incorrect resource IDs are built on top of) 118929 -96.00 32 s +( ) 119538 -97.00 32 s +2 sf +(resource\036error) 137243 0.00 -1 s +3 sf +(. These are) 149352 -96.50 32 s +52832.0 96452.0 m +2 sf +(colormap\036error) 71636 0.00 -1 s +3 sf +(,) 72342 0.00 -1 s +( ) 73798 750.00 32 s +2 sf +(cursor\036error) 88997 0.00 -1 s +3 sf +(, ) 91159 750.00 32 s +2 sf +(drawable\036error) 109808 0.00 -1 s +3 sf +(,) 110514 0.00 -1 s +( ) 111969 749.00 32 s +2 sf +(font\036error) 124189 0.00 -1 s +3 sf +(, ) 126351 750.00 32 s +2 sf +(gcontext\036error) 143899 0.00 -1 s +3 sf +(, ) 146060 749.00 32 s +2 sf +(id\036) 149352 0.00 -1 s +52832.0 99613.0 m +(choice\036error) 67717 0.00 -1 s +3 sf +(,) 68423 0.00 -1 s +( ) 68989 -140.00 32 s +2 sf +(pixmap\036error) 85445 0.00 -1 s +3 sf +( and ) 90652 -140.00 32 s +2 sf +(window\036error) 107421 0.00 -1 s +3 sf +(. ) 108693 -140.00 32 s +2 sf +(resource\036error) 126398 0.00 -1 s +3 sf +( is never signaled di\036) 149352 -139.50 32 s +52832.0 102774.0 m +(rectly.) 59962 0.00 -1 s +( ) 60644 -24.00 32 s +52832.0 109051.0 m +(A) 54869 0.00 -1 s +( ) 55933 358.00 32 s +2 sf +(resource\036error) 75755 0.00 -1 s +3 sf +( is a special case of the more general) 119995 358.00 32 s +( ) 121058 357.00 32 s +2 sf +(request\036error) 137354 0.00 -1 s +3 sf +( \(see page) 149352 357.50 32 s +52832.0 112212.0 m +(16\036189) 60826 0.00 -1 s +( for information on ) 82891 -48.00 32 s +2 sf +(request\036error) 99187 0.00 -1 s +3 sf +(\).) 100832 0.00 -1 s +2 sf +34544.0 118488.0 m +(sequence\036error) 52723 0.00 -1 s +( ) 53306 -123.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 123207.0 m +(All) 56437 0.00 -1 s +( X11 request replies contain the sequence number of their request. If a reply's se\036) 149352 82.21 32 s +52832.0 126368.0 m +(quence) 60824 0.00 -1 s +( does not match the request count, a ) 100069 -238.00 32 s +2 sf +(sequence\036error) 118248 0.00 -1 s +3 sf +( is signaled. A ) 134151 -237.75 32 s +2 sf +(sequence\036er\036) 149352 0.00 -1 s +52832.0 129529.0 m +(ror) 56749 0.00 -1 s +3 sf +( usually indicates a locking problem with a multi\036processing Lisp. The following) 149352 110.36 32 s +52832.0 132690.0 m +(items) 58946 0.00 -1 s +( are) 63077 -20.00 32 s +( reported along with the error:) 96904 -20.60 32 s +4 sf +52832.0 139237.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(display) 66064 0.00 -1 s +3 sf +( \037 The display on which the error occurred.) 116050 -30.88 32 s +4 sf +52832.0 145785.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(req\036sequence) 72956 0.00 -1 s +3 sf +( \037 The) 81492 -43.00 32 s +( sequence number in the reply.) 115914 -43.60 32 s +4 sf +52832.0 152332.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(msg\036sequence) 73740 0.00 -1 s +3 sf +( \037 The current sequence) 101895 -53.00 32 s +( number.) 111873 -54.00 32 s +52832.0 158609.0 m +(A) 54869 0.00 -1 s +( ) 55646 71.00 32 s +2 sf +(sequence\036error) 73825 0.00 -1 s +3 sf +( condition) 85262 71.00 32 s +( is a special case of the more general ) 127978 70.44 32 s +2 sf +(x\036error) 136751 0.00 -1 s +3 sf +(. \(See page) 149352 70.50 32 s +52832.0 161770.0 m +(16\036190) 60826 0.00 -1 s +( for information on ) 82919 -41.00 32 s +2 sf +(x\036error) 91692 0.00 -1 s +3 sf +(.\)) 93337 0.00 -1 s +2 sf +34544.0 168046.0 m +(server\036disconnect) 55702 0.00 -1 s +( ) 56309 -99.00 32 s +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 172765.0 m +(The) 57220 0.00 -1 s +( connection to the server was lost. The display on which the error occurred is re\036) 149352 92.20 32 s +52832.0 175926.0 m +(ported) 60041 0.00 -1 s +( along with the) 76809 -28.00 32 s +( error.) 83673 -29.00 32 s +52832.0 182203.0 m +(A) 54869 0.00 -1 s +( ) 55416 -159.00 32 s +2 sf +(server\036disconnect) 76574 0.00 -1 s +3 sf +( condition is a special case of the more general ) 128436 -158.60 32 s +2 sf +(x\036error) 137209 0.00 -1 s +3 sf +(. \(See page) 149352 -158.50 32 s +52832.0 185364.0 m +(16\036190) 60826 0.00 -1 s +( for information on ) 82919 -41.00 32 s +2 sf +(x\036error) 91692 0.00 -1 s +3 sf +(.\)) 93337 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Errors) 26353 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(16\036190) 28314 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(unexpected\036reply) 55391 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 55970 -127.00 32 s +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 27297.0 m +(A) 54869 0.00 -1 s +( reply was found when none was expected. This indicates a problem with the extension) 149352 -276.86 32 s +52832.0 30457.0 m +(code.) 58866 0.00 -1 s +( The following items are reported along) 103530 -27.00 32 s +( with the error:) 120294 -27.67 32 s +/symbb8 4 declareFont +4 sf +52832.0 37005.0 m +(\267) 53872 0.00 -1 s +57912.0 h +/timsps10i 5 declareFont +5 sf +(display) 66064 0.00 -1 s +3 sf +( \037 The display on which the error occurred.) 116050 -30.88 32 s +4 sf +52832.0 43553.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(req\036sequence) 72956 0.00 -1 s +3 sf +( \037 The) 81492 -43.00 32 s +( sequence number in the reply.) 115914 -43.60 32 s +4 sf +52832.0 50100.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(msg\036sequence) 73740 0.00 -1 s +3 sf +( \037 The current sequence) 101895 -53.00 32 s +( number.) 111873 -54.00 32 s +4 sf +52832.0 56648.0 m +(\267) 53872 0.00 -1 s +57912.0 h +5 sf +(length) 64966 0.00 -1 s +3 sf +( \037 The) 73528 -30.00 32 s +( message length of the reply.) 105822 -30.60 32 s +52832.0 62924.0 m +(An) 56280 0.00 -1 s +( ) 58864 1878.00 32 s +2 sf +(unexpected\036reply) 79711 0.00 -1 s +3 sf +( condition is a special) 111678 1878.00 32 s +( case of the more general) 149352 1877.40 32 s +52832.0 66085.0 m +2 sf +(x\036error) 61605 0.00 -1 s +3 sf +(.) 62311 0.00 -1 s +( \(See page 16\036190 for information on) 104046 -45.00 32 s +( ) 104706 -46.00 32 s +2 sf +(x\036error) 113479 0.00 -1 s +3 sf +(.\)) 115124 0.00 -1 s +2 sf +34544.0 72362.0 m +(unknown\036error) 53199 0.00 -1 s +( ) 53770 -135.00 32 s +3 sf +(\() 54709 0.00 -1 s +2 sf +(request\036error) 71005 0.00 -1 s +3 sf +(\) \() 73454 -135.00 32 s +2 sf +(error\036code) 86302 0.00 -1 s +3 sf +(\)) 87241 0.00 -1 s +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 77081.0 m +(An) 56280 0.00 -1 s +( error was received from the server with an unknown error code. This indicates a) 149352 138.43 32 s +52832.0 80241.0 m +(problem) 62236 0.00 -1 s +( with the extension code. The undefined error code is reported.) 132712 -36.80 32 s +52832.0 86518.0 m +(An) 56280 0.00 -1 s +( ) 57225 239.00 32 s +2 sf +(unknown\036error) 75880 0.00 -1 s +3 sf +( is a special case of the more general ) 120117 239.44 32 s +2 sf +(request\036error) 136413 0.00 -1 s +3 sf +(. \(See page) 149352 239.50 32 s +52832.0 89679.0 m +(16\036189) 60826 0.00 -1 s +( for information on ) 82891 -48.00 32 s +2 sf +(request\036error) 99187 0.00 -1 s +3 sf +(.\)) 100832 0.00 -1 s +2 sf +34544.0 95956.0 m +(value\036error) 48334 0.00 -1 s +3 sf +( \() 49887 -92.00 32 s +2 sf +(request\036error) 66183 0.00 -1 s +3 sf +(\) \() 68675 -92.00 32 s +2 sf +(value) 75103 0.00 -1 s +3 sf +(\)) 76042 0.00 -1 s +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 100674.0 m +(Some) 59260 0.00 -1 s +( numeric) 69115 -97.00 32 s +( value falls outside the range of values accepted by the request. Unless a) 149352 -97.54 32 s +52832.0 103835.0 m +(specific) 61607 0.00 -1 s +( range is specified for an argument, the full range defined by the argument's type) 149352 -264.86 32 s +52832.0 106996.0 m +(is) 54714 0.00 -1 s +( accepted. Any argument defined as a set of alternatives can generate this error. The) 149352 -1.64 32 s +52832.0 110157.0 m +(erroneous) 63958 0.00 -1 s +( value is reported.) 84057 -40.00 32 s +52832.0 116434.0 m +(A) 54869 0.00 -1 s +( ) 55322 -253.00 32 s +2 sf +(value\036error) 69112 0.00 -1 s +3 sf +( is a special case of the) 93456 -253.00 32 s +( more general ) 108915 -253.67 32 s +2 sf +(request\036error) 125211 0.00 -1 s +3 sf +(. \(See page 16\036189 for) 149352 -253.50 32 s +52832.0 119594.0 m +(information) 66154 0.00 -1 s +( on ) 70248 -70.00 32 s +2 sf +(request\036error) 86544 0.00 -1 s +3 sf +(.\)) 88189 0.00 -1 s +2 sf +34544.0 125871.0 m +(window\036error) 51313 0.00 -1 s +3 sf +( \() 52770 -188.00 32 s +2 sf +(resource\036error) 70475 0.00 -1 s +3 sf +(\)) 71414 0.00 -1 s +2 sf +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 130590.0 m +(A) 54869 0.00 -1 s +( value for a ) 68219 -32.00 32 s +5 sf +(window) 77000 0.00 -1 s +3 sf +( argument does not name a defined window. ) 127452 -32.00 32 s +52832.0 136866.0 m +(A) 54869 0.00 -1 s +( ) 55272 -303.00 32 s +2 sf +(window\036error) 72041 0.00 -1 s +3 sf +( is a special case of the more general ) 111396 -303.00 32 s +2 sf +(resource\036error) 129101 0.00 -1 s +3 sf +(. \(See page 16\036189) 149352 -303.00 32 s +52832.0 140027.0 m +(for) 56121 0.00 -1 s +( information on ) 74212 -57.00 32 s +2 sf +(resource\036error) 91917 0.00 -1 s +3 sf +(.\)) 93562 0.00 -1 s +2 sf +34544.0 146304.0 m +(x\036error) 45434 0.00 -1 s +52832.0 h +138108.0 h +3 sf +(Condition) 149397 0.00 -1 s +52832.0 151023.0 m +(This) 57849 0.00 -1 s +( is the most general error condition upon which all other conditions are) 137610 -28.00 32 s +( defined.) 147455 -29.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/general.ps +++ cmucl-20a-20090928/own-work/clx/general.ps @@ -0,0 +1,2642 @@ +%!PS-Adobe-2.0 +%%Title: general.ps +%%Pages: 7 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 7 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /helvps18b /ILhelvpsb 18 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps10i /ILtimsi 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Times-Italic /ILhelvpsb ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 7 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10 3 declareFont +3 sf +149321.0 8984.0 m +/timsps8i 1 declareFont +1 sf +135467.0 8737.0 m +(General ) 143413 -32.00 32 s +( Index) 148969 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036213) 149013 0.00 -1 s +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +149013 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/helvps18b 4 declareFont +4 sf +20320.0 29193.0 m +(General) 37811 0.00 -1 s +20320.0 43553.0 m +(A) 23987 0.00 -1 s +3 sf +20320.0 50258.0 m +(access) 27528 0.00 -1 s +( control list, 14\036179) 49694 -31.67 32 s +20320.0 55383.0 m +(arc\036mode) 30974 0.00 -1 s +( attribute of) 44063 -38.00 32 s +( graphics context, 5\03655) 69810 -38.67 32 s +20320.0 60508.0 m +(arcs,) 25569 0.00 -1 s +( drawing, 6\03674\0376\03675) 49987 -56.00 32 s +20320.0 65634.0 m +(area) 25018 0.00 -1 s +( of) 28036 -38.00 32 s +( a window, 6\03669\0376\03671) 54254 -38.67 32 s +20320.0 70759.0 m +(atom,) 26669 0.00 -1 s +( 11\036111\03711\036112) 46059 -126.00 32 s +20320.0 75884.0 m +(attribute) 29723 0.00 -1 s +( name, 13\036161) 45833 -57.00 32 s +20320.0 81009.0 m +(authorization) 35209 0.00 -1 s +22871.0 84396.0 m +(data) 27572 0.00 -1 s +( of display, 2\03624) 45968 -34.00 32 s +22871.0 87782.0 m +(name) 28983 0.00 -1 s +( of display, 2\03624) 47368 -37.67 32 s +20320.0 92908.0 m +(auto\036repeat) 33011 0.00 -1 s +( keys, 14\036170\03714\036173) 58928 -92.00 32 s +4 sf +20320.0 105664.0 m +(B) 23708 0.00 -1 s +3 sf +20320.0 112370.0 m +(background) 33642 0.00 -1 s +( attribute) 43643 -108.00 32 s +22871.0 115756.0 m +(graphics) 32431 0.00 -1 s +( context, 5\03656) 47910 -59.00 32 s +22871.0 119143.0 m +(window,) 32668 0.00 -1 s +( 4\03638) 38473 -73.00 32 s +20320.0 124268.0 m +(backing\036pixel) 35836 0.00 -1 s +( attribute of window,) 59372 -44.00 32 s +( 4\03639) 65205 -45.00 32 s +20320.0 129393.0 m +(backing\036planes) 37403 0.00 -1 s +( attribute of window, 4\03639) 66762 -46.75 32 s +20320.0 134518.0 m +(backing\036store) 35678 0.00 -1 s +( attribute of window, 4\03639) 65069 -38.75 32 s +20320.0 139644.0 m +(backing\036stores) 36776 0.00 -1 s +( attribute of screen, 3\03632) 64302 -34.00 32 s +20320.0 144769.0 m +(bell,) 25258 0.00 -1 s +( 14\036170\03714\036173) 44659 -115.00 32 s +20320.0 149894.0 m +(bit\036gravity) 32231 0.00 -1 s +( attribute of window,) 55812 -29.00 32 s +( 4\03639) 61660 -30.00 32 s +20320.0 155019.0 m +(bit) 23299 0.00 -1 s +( vector, keyboard, 14\036170\03714\036173) 62969 -73.67 32 s +20320.0 160144.0 m +(bitmap,) 28864 0.00 -1 s +( 1\0362) 33280 -51.00 32 s +22871.0 163531.0 m +(format) 30392 0.00 -1 s +( of display, 2\03624) 48813 -25.67 32 s +20320.0 168656.0 m +(black\036pixel) 33014 0.00 -1 s +( attribute of screen,) 54690 -36.00 32 s +( 3\03632) 60531 -37.00 32 s +20320.0 173781.0 m +(border) 27684 0.00 -1 s +( attribute of window, 4\03640) 57099 -32.75 32 s +20320.0 178906.0 m +(border\036width) 35050 0.00 -1 s +( attribute of window, 4\03637) 64460 -34.00 32 s +20320.0 184032.0 m +(button,) 28238 0.00 -1 s +( grabbing,) 39581 -100.00 32 s +( 12\036132\03712\036133) 58996 -101.00 32 s +20320.0 189157.0 m +(:button\036press) 35054 0.00 -1 s +( event,) 42520 -58.00 32 s +( 12\036136) 51161 -59.00 32 s +20320.0 194282.0 m +(:button\036release) 37088 0.00 -1 s +( event,) 44542 -70.00 32 s +( 12\036136) 53171 -71.00 32 s +22871.0 197668.0 m +(example,) 33137 0.00 -1 s +( 1\0369) 37524 -80.00 32 s +20320.0 202794.0 m +(byte) 25179 0.00 -1 s +( order of display, 2\03624) 50213 -30.75 32 s +4 sf +88234.0 29193.0 m +41092.0 v +(C) 91901 0.00 -1 s +3 sf +88234.0 46917.0 m +(cap\036style) 98420 0.00 -1 s +( attribute of graphics context, 5\03656) 137273 -35.00 32 s +88234.0 51500.0 m +(character,) 99278 0.00 -1 s +( 8\03689\0378\03698) 113047 -103.00 32 s +90785.0 54819.0 m +(attributes,) 101992 0.00 -1 s +( 8\03689,) 108527 -49.00 32 s +( 8\03696\0378\03697) 122349 -50.00 32 s +88234.0 59402.0 m +(:circulate\036notify) 106411 0.00 -1 s +( event, 12\036147) 122507 -64.00 32 s +88234.0 62518.0 m +68162.0 v +(:circulate\036request) 107820 0.00 -1 s +( event,) 115276 -68.00 32 s +( 12\036152) 123907 -69.00 32 s +88234.0 72746.0 m +(class,) 94426 0.00 -1 s +( window, 4\03640) 110721 -43.00 32 s +88234.0 77329.0 m +(classes) 96071 0.00 -1 s +( of visual types supported, 3\03631) 131516 -28.00 32 s +88234.0 81912.0 m +(client,) 95209 0.00 -1 s +( 1\0362) 99636 -40.00 32 s +90785.0 85231.0 m +(communications) 109439 0.00 -1 s +( events, 12\036155\03712\036157) 137363 -107.00 32 s +90785.0 88550.0 m +(termination,) 104500 0.00 -1 s +( 14\036176\03714\036178) 123884 -132.00 32 s +88234.0 93133.0 m +(:client\036message) 105787 0.00 -1 s +( event, 12\036155) 121875 -68.00 32 s +88234.0 97717.0 m +(clip\036mask) 99362 0.00 -1 s +( attribute of graphics context, 5\03657) 138221 -33.80 32 s +88234.0 102300.0 m +(clip\036x) 94816 0.00 -1 s +( attribute of graphics context,) 127838 -32.00 32 s +( 5\03658) 133683 -33.00 32 s +88234.0 106883.0 m +(clip\036y attribute of graphics context, 5\03658) 133683 -32.20 32 s +88234.0 111467.0 m +(CLX) 93877 0.00 -1 s +90785.0 114785.0 m +(error) 96266 0.00 -1 s +( conditions, 16\036185\03716\036190) 128806 -73.00 32 s +90785.0 118104.0 m +(examples,) 102149 0.00 -1 s +( 1\0363\0371\03611) 114515 -95.00 32 s +93314.0 121423.0 m +(calculating) 105695 0.00 -1 s +( menu size, 1\0366) 122801 -45.67 32 s +93314.0 124742.0 m +(creating) 102402 0.00 -1 s +( menu window,) 119783 -49.00 32 s +( 1\0365) 124200 -50.00 32 s +93314.0 128061.0 m +(creating) 102402 0.00 -1 s +( subwindows,) 117869 -54.00 32 s +( 1\0365) 122281 -55.00 32 s +93314.0 131380.0 m +(definition) 104286 0.00 -1 s +( of menu structure, 1\0363) 129958 -27.75 32 s +93314.0 134699.0 m +(drawing/redrawing) 114782 0.00 -1 s +( menus, 1\0367) 127903 -63.00 32 s +93314.0 138018.0 m +(main) 98957 0.00 -1 s +( client program, 1\03610) 122665 -38.67 32 s +93314.0 141337.0 m +(menu) 99584 0.00 -1 s +( processing of user input,) 127915 -30.00 32 s +( 1\0368) 132351 -31.00 32 s +90785.0 144656.0 m +(overview,) 101990 0.00 -1 s +( 1\0361\0371\03622) 114356 -95.00 32 s +90785.0 147975.0 m +(xatom) 97839 0.00 -1 s +( objects,) 107185 -60.00 32 s +( 11\036111) 115824 -61.00 32 s +88234.0 152558.0 m +(color,) 94738 0.00 -1 s +( 9\03699\0379\036108) 109931 -90.00 32 s +90785.0 155877.0 m +(allocating,) 102619 0.00 -1 s +( 9\036103\0379\036105) 119188 -125.00 32 s +90785.0 159196.0 m +(changing,) 101836 0.00 -1 s +( 9\03699,) 108325 -95.00 32 s +( 9\036105\0379\036106) 124923 -96.00 32 s +90785.0 162515.0 m +(creating,) 100579 0.00 -1 s +( 9\03699) 106387 -70.00 32 s +90785.0 165834.0 m +(finding, 9\036105) 106861 -70.00 32 s +88234.0 170417.0 m +(colormap,) 99597 0.00 -1 s +( 9\03699\0379\036108) 114763 -117.00 32 s +90785.0 173736.0 m +(accessors,) 102147 0.00 -1 s +( 9\036107) 109367 -69.00 32 s +90785.0 177055.0 m +(attribute) 100188 0.00 -1 s +( of window, 4\03640) 119527 -32.67 32 s +90785.0 180374.0 m +(creating,) 100579 0.00 -1 s +( 9\036101\0379\036102) 117156 -117.00 32 s +90785.0 183693.0 m +(installing,) 101995 0.00 -1 s +( 9\036102\0379\036103) 118601 -88.00 32 s +90785.0 187012.0 m +(maximum) 102229 0.00 -1 s +( number for screen,) 124052 -39.00 32 s +( 3\03633) 129890 -40.00 32 s +90785.0 190331.0 m +(minimum) 101760 0.00 -1 s +( number for screen, 3\03633) 129438 -35.00 32 s +90785.0 193650.0 m +(screen) 97992 0.00 -1 s +( default,) 107193 -46.00 32 s +( 3\03632) 113024 -47.00 32 s +88234.0 198233.0 m +(:colormap\036notify) 107354 0.00 -1 s +( event,) 114806 -72.00 32 s +( 12\036153) 123433 -73.00 32 s +88234.0 202816.0 m +(complete) 98578 0.00 -1 s +( resource class,) 115641 -49.00 32 s +( 13\036163) 124291 -50.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(General ) 28266 -32.00 32 s +( Index) 33822 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +148474 207264 av +21709 207262 as +[] 0 setdash +dp +121920.0 211598.0 m +(CLX) 126069 0.00 -1 s +( Programmer's Reference) 149465 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19898.0 211327.0 m +(Index\036214) 31970 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(complete) 30664 0.00 -1 s +( resource name,) 48327 -62.00 32 s +( 13\036163) 56964 -63.00 32 s +20320.0 27297.0 m +(conditions,) 32784 0.00 -1 s +( CLX, 16\036185) 48407 -66.00 32 s +20320.0 32015.0 m +(:configure\036notify) 39595 0.00 -1 s +( event, 12\036148) 55677 -71.00 32 s +20320.0 36734.0 m +(:configure\036request) 41004 0.00 -1 s +( event,) 48453 -75.00 32 s +( 12\036153) 57077 -76.00 32 s +20320.0 41453.0 m +(control,) 29019 0.00 -1 s +( 14\036169\03714\036182) 48407 -128.00 32 s +22871.0 44772.0 m +(client) 29140 0.00 -1 s +( termination,) 43485 -76.00 32 s +( 14\036176\03714\036178) 62924 -77.00 32 s +22871.0 48091.0 m +(grabbing) 32902 0.00 -1 s +( the server,) 45265 -48.00 32 s +( 14\036169) 53916 -49.00 32 s +22871.0 51410.0 m +(host) 27575 0.00 -1 s +( access,) 36122 -73.00 32 s +( 14\036179\03714\036180) 55564 -74.00 32 s +22871.0 54729.0 m +(keyboard,) 34077 0.00 -1 s +( 14\036170\03714\036173) 53419 -174.00 32 s +22871.0 58047.0 m +(pointer,) 31570 0.00 -1 s +( 14\036169\03714\036170) 50958 -128.00 32 s +22871.0 61366.0 m +(screen) 30078 0.00 -1 s +( saver, 14\036180\03714\036182) 56806 -77.00 32 s +20320.0 66085.0 m +(:create\036notify) 35518 0.00 -1 s +( event,) 42978 -64.00 32 s +( 12\036149) 51613 -65.00 32 s +20320.0 70804.0 m +(cursor,) 28077 0.00 -1 s +( 10\036107\03710\036110) 47481 -112.00 32 s +22871.0 74123.0 m +(attribute) 32274 0.00 -1 s +( of window, 4\03641) 51613 -32.67 32 s +/helvps18b 4 declareFont +4 sf +20320.0 85344.0 m +(D) 23987 0.00 -1 s +3 sf +20320.0 91417.0 m +(dash\036offset) 32856 0.00 -1 s +( attribute of graphics context, 5\03658) 71730 -30.80 32 s +20320.0 96136.0 m +(dashes) 27844 0.00 -1 s +( attribute of) 40939 -35.00 32 s +( graphics context, 5\03658) 66695 -35.67 32 s +20320.0 100855.0 m +(default) 28155 0.00 -1 s +( colormap of screen, 3\03632) 56919 -38.00 32 s +20320.0 105574.0 m +(depth) 26590 0.00 -1 s +( attribute of window, 4\03637) 55993 -35.75 32 s +20320.0 110292.0 m +(depths of screen, 3\03632) 45133 -36.00 32 s +20320.0 115011.0 m +(:destroy\036notify) 37090 0.00 -1 s +( event,) 44554 -60.00 32 s +( 12\036149) 53193 -61.00 32 s +20320.0 119730.0 m +(destroying) 32233 0.00 -1 s +( windows,) 43780 -54.00 32 s +( 4\03649) 49603 -55.00 32 s +20320.0 124449.0 m +(device) 27685 0.00 -1 s +( events,) 36235 -72.00 32 s +( 12\036119) 44862 -73.00 32 s +22871.0 127768.0 m +(events) 30081 0.00 -1 s +( returned, 12\036119) 49468 -63.00 32 s +20320.0 132486.0 m +(display,) 29178 0.00 -1 s +( 1\0362, 2\03623\0372\03630) 48113 -55.00 32 s +22871.0 135805.0 m +(attributes,) 34078 0.00 -1 s +( 2\03624\0372\03629) 47887 -63.00 32 s +22871.0 139124.0 m +(authorization) 37760 0.00 -1 s +25400.0 142443.0 m +(data,) 30807 0.00 -1 s +( 2\03624) 36621 -64.00 32 s +25400.0 145762.0 m +(name,) 32218 0.00 -1 s +( 2\03624) 38021 -75.00 32 s +22871.0 149081.0 m +(bitmap) 30709 0.00 -1 s +( format,) 39607 -35.00 32 s +( 2\03624) 45449 -36.00 32 s +22871.0 152400.0 m +(byte) 27730 0.00 -1 s +( order,) 35053 -42.00 32 s +( 2\03624) 40888 -43.00 32 s +22871.0 155719.0 m +(closing,) 31729 0.00 -1 s +( 2\03629) 37547 -60.00 32 s +22871.0 159038.0 m +(error) 28352 0.00 -1 s +( handler,) 38188 -38.00 32 s +( 2\03625) 44027 -39.00 32 s +22871.0 162357.0 m +(image) 29767 0.00 -1 s +( leftmost bit, 2\03625) 49919 -23.67 32 s +22871.0 165676.0 m +(keycode) 32274 0.00 -1 s +25400.0 168995.0 m +(maximum) 36844 0.00 -1 s +( value,) 44307 -61.00 32 s +( 2\03626) 50123 -62.00 32 s +25400.0 172314.0 m +(minimum) 36375 0.00 -1 s +( value, 2\03626) 49671 -53.00 32 s +25400.0 175633.0 m +(range,) 32373 0.00 -1 s +( 2\03625) 38179 -72.00 32 s +22871.0 178951.0 m +(motion) 30867 0.00 -1 s +( buffer size,) 44207 -29.00 32 s +( 2\03626) 50055 -30.00 32 s +22871.0 182270.0 m +(number,) 32197 0.00 -1 s +( 2\03624) 37998 -77.00 32 s +22871.0 185589.0 m +(opening,) 32669 0.00 -1 s +( 2\03623) 38450 -97.00 32 s +22871.0 188908.0 m +(output) 30083 0.00 -1 s +( buffer management, 2\03629) 59222 -56.00 32 s +22871.0 192227.0 m +(pixmap) 31336 0.00 -1 s +( formats, 2\03626) 47165 -40.00 32 s +22871.0 195546.0 m +(property) 32430 0.00 -1 s +( list, 2\03627) 43124 -23.00 32 s +22871.0 198865.0 m +(protocol) 32275 0.00 -1 s +25400.0 202184.0 m +(major) 31982 0.00 -1 s +( version,) 41664 -37.00 32 s +( 2\03627) 47504 -38.00 32 s +93314.0 22578.0 m +(minor version, 2\03627) 115576 -37.50 32 s +93314.0 25897.0 m +(version,) 102327 0.00 -1 s +( 2\03627) 108148 -57.00 32 s +90785.0 29216.0 m +(request) 98934 0.00 -1 s +( maximum length, 2\03626) 125284 -48.00 32 s +90785.0 32535.0 m +(resource\036id) 103476 0.00 -1 s +93314.0 35854.0 m +(base,) 99035 0.00 -1 s +( 2\03627) 104851 -62.00 32 s +93314.0 39172.0 m +(mask,) 99977 0.00 -1 s +( 2\03628) 105800 -55.00 32 s +90785.0 42491.0 m +(roots,) 97134 0.00 -1 s +( 2\03628) 102977 -35.00 32 s +90785.0 45810.0 m +(server) 97678 0.00 -1 s +( resource ID, 2\03628) 118127 -26.67 32 s +90785.0 49129.0 m +(vendor,) 99327 0.00 -1 s +( 2\03628) 105122 -83.00 32 s +93314.0 52448.0 m +(name,) 100132 0.00 -1 s +( 2\03628) 105935 -75.00 32 s +90785.0 55767.0 m +(version) 99092 0.00 -1 s +( number, 2\03628) 114898 -52.00 32 s +90785.0 59086.0 m +(window) 99876 0.00 -1 s +( object, 4\03641) 113950 -56.00 32 s +88234.0 63692.0 m +(do\036not\036propagate\036mask) 114562 0.00 -1 s +( attribute of window,) 138083 -49.00 32 s +( 4\03641) 143911 -50.00 32 s +88234.0 68298.0 m +(drawable,) 99281 0.00 -1 s +( 1\0362,) 104389 -65.00 32 s +( 4\03635\0374\03652) 118195 -66.00 32 s +90785.0 71617.0 m +(geometry) 101442 0.00 -1 s +93314.0 74936.0 m +(reader) 100362 0.00 -1 s +( and setf functions, 4\03645) 127587 -32.00 32 s +93314.0 78255.0 m +(values,) 101230 0.00 -1 s +( batching, 4\03643) 118104 -67.00 32 s +88234.0 82860.0 m +(drawing) 97480 0.00 -1 s +90785.0 86179.0 m +(arcs,) 96034 0.00 -1 s +( 6\03674) 101871 -41.00 32 s +90785.0 89498.0 m +(glyphs,) 99017 0.00 -1 s +( 6\03675\0376\03680) 112799 -90.00 32 s +90785.0 92817.0 m +(lines,) 96821 0.00 -1 s +( 6\03671\0376\03673) 110631 -62.00 32 s +90785.0 96136.0 m +(points,) 98390 0.00 -1 s +( 6\03671) 104219 -49.00 32 s +90785.0 99455.0 m +(rectangles,) 102930 0.00 -1 s +( 6\03673) 108735 -73.00 32 s +90785.0 102774.0 m +(text,) 95723 0.00 -1 s +( 6\03675) 101555 -46.00 32 s +4 sf +88234.0 113498.0 m +(E) 91622 0.00 -1 s +3 sf +88234.0 119369.0 m +(:enter\036notify) 102337 0.00 -1 s +( event, 12\036138) 118443 -59.00 32 s +90785.0 122688.0 m +(example,) 101051 0.00 -1 s +( 1\0369) 105438 -80.00 32 s +88234.0 127294.0 m +(error) 93715 0.00 -1 s +( conditions, CLX, 16\036185\03716\036190) 133277 -59.67 32 s +88234.0 131899.0 m +(error) 93715 0.00 -1 s +( handler of display, 2\03625) 121265 -29.00 32 s +88234.0 136505.0 m +(event,) 95052 0.00 -1 s +( 1\0362,) 100141 -84.00 32 s +( 12\036119\03712\036160) 119572 -85.00 32 s +90785.0 139824.0 m +(:button\036press,) 106225 0.00 -1 s +( 12\036136) 114853 -72.00 32 s +90785.0 143143.0 m +(:button\036release,) 108259 0.00 -1 s +( 12\036136) 116863 -96.00 32 s +93314.0 146462.0 m +(example,) 103580 0.00 -1 s +( 1\0369) 107967 -80.00 32 s +90785.0 149781.0 m +(:circulate\036notify,) 109668 0.00 -1 s +( 12\036147) 118285 -83.00 32 s +90785.0 153100.0 m +(:circulate\036request,) 111077 0.00 -1 s +( 12\036152) 119685 -92.00 32 s +90785.0 156419.0 m +(client) 97054 0.00 -1 s +( communications, 12\036155\03712\036157) 136438 -99.00 32 s +90785.0 159738.0 m +(:client\036message,) 109044 0.00 -1 s +( 12\036155) 117653 -91.00 32 s +90785.0 163057.0 m +(:colormap\036notify,) 110611 0.00 -1 s +( 12\036153) 119211 -100.00 32 s +90785.0 166376.0 m +(:configure\036notify,) 110766 0.00 -1 s +( 12\036148) 119369 -97.00 32 s +90785.0 169695.0 m +(:configure\036request,) 112175 0.00 -1 s +( 12\036153) 120769 -106.00 32 s +90785.0 173014.0 m +(:create\036notify,) 106689 0.00 -1 s +( 12\036149) 115305 -84.00 32 s +90785.0 176332.0 m +(:destroy\036notify,) 108261 0.00 -1 s +( 12\036149) 116885 -76.00 32 s +90785.0 179651.0 m +(device,) 98856 0.00 -1 s +( 12\036119) 107448 -108.00 32 s +93314.0 182970.0 m +(events) 100524 0.00 -1 s +( returned, 12\036119) 119911 -63.00 32 s +90785.0 186289.0 m +(:enter\036notify,) 105594 0.00 -1 s +( 12\036138) 114221 -73.00 32 s +93314.0 189608.0 m +(example,) 103580 0.00 -1 s +( 1\0369) 107967 -80.00 32 s +90785.0 192927.0 m +(:exposure,) 102462 0.00 -1 s +( 12\036145) 111060 -102.00 32 s +93314.0 196246.0 m +(example,) 103580 0.00 -1 s +( 1\0369) 107967 -80.00 32 s +90785.0 199565.0 m +(exposure,) 101678 0.00 -1 s +( 12\036145\03712\036147) 121040 -154.00 32 s +90785.0 202884.0 m +(:focus\036in,) 101521 0.00 -1 s +( 12\036140) 110157 -64.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +135467.0 8737.0 m +(General ) 143413 -32.00 32 s +( Index) 148969 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036215) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +22871.0 22578.0 m +(:focus\036out,) 35018 0.00 -1 s +( 12\036140) 43643 -75.00 32 s +22871.0 25964.0 m +(grabbing) 32902 0.00 -1 s +25400.0 29351.0 m +(button,) 33318 0.00 -1 s +( 12\036132\03712\036133) 52697 -137.00 32 s +25400.0 32738.0 m +(key,) 30181 0.00 -1 s +( 12\036134\03712\036160) 49558 -139.00 32 s +25400.0 36124.0 m +(keyboard,) 36606 0.00 -1 s +( 12\036133\03712\036134) 55948 -174.00 32 s +25400.0 39511.0 m +(pointer,) 34099 0.00 -1 s +( 12\036130\03712\036131) 53487 -128.00 32 s +22871.0 42898.0 m +(:graphics\036exposure,) 45047 0.00 -1 s +( 12\036146) 53622 -125.00 32 s +22871.0 46284.0 m +(:gravity\036notify,) 40033 0.00 -1 s +( 12\036150) 48655 -78.00 32 s +22871.0 49671.0 m +(input,) 29378 0.00 -1 s +( 1\0362) 33799 -46.00 32 s +22871.0 53058.0 m +(input) 28672 0.00 -1 s +( focus, 12\036140\03712\036143) 55564 -74.00 32 s +22871.0 56444.0 m +(:key\036press, 12\036136) 43801 -73.00 32 s +22871.0 59831.0 m +(:key\036release,) 37208 0.00 -1 s +( 12\036136) 45810 -98.00 32 s +22871.0 63218.0 m +(keyboard,) 34077 0.00 -1 s +( 12\036136\03712\036140) 53419 -174.00 32 s +25400.0 66604.0 m +(state,) 31278 0.00 -1 s +( 12\036144) 39918 -60.00 32 s +22871.0 69991.0 m +(:keymap\036notify,) 40974 0.00 -1 s +( 12\036144) 49558 -116.00 32 s +22871.0 73378.0 m +(:leave\036notify,) 37994 0.00 -1 s +( 12\036138) 46601 -93.00 32 s +25400.0 76764.0 m +(example,) 35666 0.00 -1 s +( 1\0369) 40053 -80.00 32 s +22871.0 80151.0 m +(managing) 34000 0.00 -1 s +25400.0 83538.0 m +(event) 31512 0.00 -1 s +( queue, 12\036124\03712\036125) 58973 -103.00 32 s +25400.0 86924.0 m +(input) 31201 0.00 -1 s +( focus, 12\036128\03712\036129) 58093 -74.00 32 s +22871.0 90311.0 m +(:map\036notify,) 36899 0.00 -1 s +( 12\036150) 45517 -82.00 32 s +22871.0 93698.0 m +(:map\036request,) 38308 0.00 -1 s +( 12\036154) 46917 -91.00 32 s +22871.0 97084.0 m +(:mapping\036notify,) 41916 0.00 -1 s +( 12\036144) 50506 -110.00 32 s +22871.0 100471.0 m +(:motion\036notify,) 40036 0.00 -1 s +( 12\036137) 48655 -81.00 32 s +22871.0 103858.0 m +(:no\036exposure,) 38309 0.00 -1 s +( 12\036146) 46894 -115.00 32 s +22871.0 107244.0 m +(pointer,) 31570 0.00 -1 s +( 12\036136\03712\036140) 50958 -128.00 32 s +25400.0 110631.0 m +(position,) 35200 0.00 -1 s +( 12\036126\03712\036128) 54593 -123.00 32 s +25400.0 114018.0 m +(state,) 31278 0.00 -1 s +( 12\036144) 39918 -60.00 32 s +22871.0 117404.0 m +(processing,) 35646 0.00 -1 s +( 12\036122\03712\036124) 55022 -140.00 32 s +22871.0 120791.0 m +(:property\036notify,) 41599 0.00 -1 s +( 12\036155) 50213 -86.00 32 s +22871.0 124178.0 m +(:reparent\036notify, 12\036151) 49897 -86.00 32 s +22871.0 127564.0 m +(:resize\036request,) 40029 0.00 -1 s +( 12\036154) 48655 -74.00 32 s +22871.0 130951.0 m +(selecting,) 33608 0.00 -1 s +( 12\036120\03712\036121) 52990 -134.00 32 s +22871.0 134338.0 m +(:selection\036clear,) 40813 0.00 -1 s +( 12\036155) 49423 -90.00 32 s +22871.0 137724.0 m +(:selection\036notify,) 42071 0.00 -1 s +( 12\036156) 50687 -84.00 32 s +22871.0 141111.0 m +(:selection\036request,) 43480 0.00 -1 s +( 12\036156) 52087 -93.00 32 s +22871.0 144498.0 m +(sending,) 32356 0.00 -1 s +( 12\036125\03712\036126) 51726 -146.00 32 s +22871.0 147884.0 m +(side\036effect,) 35483 0.00 -1 s +( 12\036119) 44117 -66.00 32 s +25400.0 151271.0 m +(events) 32610 0.00 -1 s +( returned, 12\036119) 51997 -63.00 32 s +22871.0 154658.0 m +(structure) 32743 0.00 -1 s +( control, 12\036152\03712\036154) 61524 -70.00 32 s +22871.0 158044.0 m +(types,) 29534 0.00 -1 s +( 12\036135\03712\036158) 48926 -124.00 32 s +25400.0 161431.0 m +(declaring,) 36605 0.00 -1 s +( 12\036157) 45201 -104.00 32 s +22871.0 164818.0 m +(:unmap\036notify,) 39721 0.00 -1 s +( 12\036151) 48316 -105.00 32 s +22871.0 168204.0 m +(:visibility\036notify,) 42075 0.00 -1 s +( 12\036152) 50732 -43.00 32 s +22871.0 171591.0 m +(window) 31962 0.00 -1 s +( state, 12\036147\03712\036152) 57912 -75.00 32 s +20320.0 176784.0 m +(event) 26432 0.00 -1 s +( mask) 33031 -64.00 32 s +22871.0 180171.0 m +(keywords,) 34548 0.00 -1 s +( 12\036121) 43146 -102.00 32 s +25400.0 183557.0 m +(event) 31512 0.00 -1 s +( types selected, 12\036121) 57212 -54.67 32 s +22871.0 186944.0 m +(root) 27416 0.00 -1 s +( of screen, 3\03632) 44885 -28.00 32 s +20320.0 192137.0 m +(event\036mask,) 34034 0.00 -1 s +( attribute of window, 4\03641) 63421 -39.75 32 s +20320.0 197330.0 m +(event) 26432 0.00 -1 s +( masks, window, 4\03638) 51139 -47.00 32 s +20320.0 202523.0 m +(examples,) 31684 0.00 -1 s +( CLX. ) 39343 -51.00 32 s +/timsps10i 5 declareFont +5 sf +(See ) 43915 -51.00 32 s +3 sf +(CLX) 49558 0.00 -1 s +( examples) 60870 -52.00 32 s +88234.0 22578.0 m +(:exposure) 99205 0.00 -1 s +( event,) 106656 -73.00 32 s +( 12\036145) 115282 -74.00 32 s +90785.0 25897.0 m +(example,) 101051 0.00 -1 s +( 1\0369) 105438 -80.00 32 s +88234.0 30525.0 m +(exposure) 98421 0.00 -1 s +( events,) 106948 -95.00 32 s +( 12\036145\03712\036147) 126368 -96.00 32 s +88234.0 35154.0 m +(exposures) 99519 0.00 -1 s +( attribute of graphics context, 5\03659) 138357 -38.00 32 s +88234.0 39782.0 m +(extensions,) 100854 0.00 -1 s +( 15\036183\03715\036184) 120227 -143.00 32 s +/helvps18b 4 declareFont +4 sf +88234.0 50642.0 m +(F) 91337 0.00 -1 s +3 sf +88234.0 56557.0 m +(fill\036rule) 96851 0.00 -1 s +( attribute of graphics context, 5\03659) 135760 -23.80 32 s +88234.0 61186.0 m +(fill\036style attribute of graphics) 121156 -23.00 32 s +( context,) 130853 -22.00 32 s +( 5\03660) 136708 -23.00 32 s +88234.0 65814.0 m +(:focus\036in) 98264 0.00 -1 s +( event,) 105734 -54.00 32 s +( 12\036140) 114379 -55.00 32 s +88234.0 70443.0 m +(:focus\036out) 99675 0.00 -1 s +( event, 12\036140) 115779 -60.00 32 s +88234.0 75071.0 m +(font,) 93485 0.00 -1 s +( 8\03689\0378\03698) 107290 -67.00 32 s +90785.0 78390.0 m +(attribute) 100188 0.00 -1 s +( of graphics context, 5\03661) 128964 -35.75 32 s +90785.0 81709.0 m +(attributes,) 101992 0.00 -1 s +( 8\03691\0378\03695) 115801 -63.00 32 s +90785.0 85028.0 m +(character) 101123 0.00 -1 s +( attributes, 8\03689,) 119538 -41.00 32 s +( 8\03696) 125374 -42.00 32 s +90785.0 88347.0 m +(closing,) 99643 0.00 -1 s +( 8\03689) 105461 -60.00 32 s +90785.0 91666.0 m +(listing,) 98547 0.00 -1 s +( 8\03690\0378\03691) 112370 -49.00 32 s +90785.0 94985.0 m +(opening,) 100583 0.00 -1 s +( 8\03689\0378\03690) 114334 -121.00 32 s +90785.0 98304.0 m +(querying) 100816 0.00 -1 s +( text size,) 111460 -47.00 32 s +( 8\03697\0378\03698) 125284 -48.00 32 s +88234.0 102932.0 m +(foreground) 100770 0.00 -1 s +( attribute of graphics context, 5\03661) 139598 -40.00 32 s +88234.0 107561.0 m +(function) 97638 0.00 -1 s +( attribute of graphics context, 5\03661) 136483 -36.60 32 s +90785.0 110879.0 m +(logical) 98465 0.00 -1 s +( operation codes, 5\03662) 123388 -52.00 32 s +4 sf +88234.0 121739.0 m +(G) 92185 0.00 -1 s +3 sf +88234.0 127655.0 m +(glyphs,) 96466 0.00 -1 s +( 8\03689) 102277 -67.00 32 s +90785.0 130974.0 m +(drawing,) 100737 0.00 -1 s +( 6\03675\0376\03680) 114515 -94.00 32 s +88234.0 135602.0 m +(grab) 93248 0.00 -1 s +( types, 12\036120) 109209 -54.00 32 s +88234.0 140231.0 m +(grabbing) 98265 0.00 -1 s +90785.0 143550.0 m +(button,) 98703 0.00 -1 s +( 12\036132\03712\036133) 118082 -137.00 32 s +90785.0 146868.0 m +(key,) 95566 0.00 -1 s +( 12\036134\03712\036160) 114944 -138.00 32 s +90785.0 150187.0 m +(keyboard,) 101991 0.00 -1 s +( 12\036133\03712\036134) 121333 -174.00 32 s +90785.0 153506.0 m +(pointer,) 99484 0.00 -1 s +( 12\036130\03712\036131) 118872 -128.00 32 s +90785.0 156825.0 m +(server,) 98384 0.00 -1 s +( 14\036169) 107019 -65.00 32 s +88234.0 161454.0 m +(graphics,) 98500 0.00 -1 s +( 6\03669\0376\03680) 112279 -93.00 32 s +90785.0 164773.0 m +(area,) 96189 0.00 -1 s +( 6\03669\0376\03671) 109976 -85.00 32 s +90785.0 168092.0 m +(drawing) 100031 0.00 -1 s +93314.0 171410.0 m +(arcs,) 98563 0.00 -1 s +( 6\03674\0376\03675) 112370 -65.00 32 s +93314.0 174729.0 m +(glyphs,) 101546 0.00 -1 s +( 6\03675\0376\03680) 115327 -91.00 32 s +93314.0 178048.0 m +(lines,) 99350 0.00 -1 s +( 6\03671\0376\03673) 113160 -62.00 32 s +93314.0 181367.0 m +(points,) 100919 0.00 -1 s +( 6\03671) 106748 -49.00 32 s +93314.0 184686.0 m +(rectangles,) 105459 0.00 -1 s +( 6\03673) 111263 -74.00 32 s +93314.0 188005.0 m +(text,) 98252 0.00 -1 s +( 6\03675\0376\03680) 112054 -70.00 32 s +90785.0 191324.0 m +(plane,) 97603 0.00 -1 s +( 6\03669\0376\03671) 111376 -99.00 32 s +88234.0 195953.0 m +(graphics) 97794 0.00 -1 s +( context, 5\03653\0375\03668) 121243 -71.00 32 s +90785.0 199271.0 m +(attribute) 100188 0.00 -1 s +93314.0 202590.0 m +(arc\036mode,) 104674 0.00 -1 s +( 5\03655) 110473 -79.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(General ) 28266 -32.00 32 s +( Index) 33822 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +148474 207264 av +21709 207262 as +[] 0 setdash +dp +121920.0 211598.0 m +(CLX) 126069 0.00 -1 s +( Programmer's Reference) 149465 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19898.0 211327.0 m +(Index\036216) 31970 0.00 -1 s +/timsps10 3 declareFont +3 sf +25400.0 22578.0 m +(background,) 39428 0.00 -1 s +( 5\03656) 45178 -128.00 32 s +25400.0 25942.0 m +(cap\036style,) 36292 0.00 -1 s +( 5\03656) 42108 -62.00 32 s +25400.0 29306.0 m +(clip\036mask,) 37234 0.00 -1 s +( 5\03657) 43056 -56.00 32 s +25400.0 32670.0 m +(clip\036x,) 32688 0.00 -1 s +( 5\03658) 38518 -48.00 32 s +25400.0 36034.0 m +(clip\036y, 5\03658) 38518 -48.00 32 s +25400.0 39398.0 m +(dash\036offset,) 38642 0.00 -1 s +( 5\03658) 44478 -42.00 32 s +25400.0 42762.0 m +(dashes,) 33630 0.00 -1 s +( 5\03658) 39443 -65.00 32 s +25400.0 46126.0 m +(exposures,) 37391 0.00 -1 s +( 5\03659) 43191 -78.00 32 s +25400.0 49490.0 m +(fill\036rule,) 34723 0.00 -1 s +( 5\03659) 40595 -6.00 32 s +25400.0 52855.0 m +(fill\036style,) 35666 0.00 -1 s +( 5\03660) 41543 -1.00 32 s +25400.0 56219.0 m +(font,) 30651 0.00 -1 s +( 5\03661) 36486 -43.00 32 s +25400.0 59583.0 m +(foreground,) 38642 0.00 -1 s +( 5\03661) 44433 -87.00 32 s +25400.0 62947.0 m +(function,) 35510 0.00 -1 s +( 5\03661) 41317 -71.00 32 s +27951.0 66311.0 m +(logical) 35631 0.00 -1 s +( operation codes, 5\03662) 60554 -52.00 32 s +25400.0 69675.0 m +(join\036style,) 36765 0.00 -1 s +( 5\03662) 42604 -39.00 32 s +25400.0 73039.0 m +(line\036style, 5\03663) 42446 -39.00 32 s +25400.0 76403.0 m +(line\036width,) 37704 0.00 -1 s +( 5\03663) 43530 -52.00 32 s +25400.0 79767.0 m +(plane\036mask,) 39114 0.00 -1 s +( 5\03664) 44907 -85.00 32 s +25400.0 83131.0 m +(stipple,) 33631 0.00 -1 s +( 5\03665) 39466 -43.00 32 s +27951.0 86495.0 m +(best,) 33203 0.00 -1 s +( 5\03667) 39037 -44.00 32 s +25400.0 89860.0 m +(subwindow\036mode,) 46326 0.00 -1 s +( 5\03666) 52087 -117.00 32 s +25400.0 93224.0 m +(tile,) 29711 0.00 -1 s +( 5\03666) 35560 -29.00 32 s +27951.0 96588.0 m +(best,) 33203 0.00 -1 s +( 5\03667) 39037 -44.00 32 s +25400.0 99952.0 m +(ts\036x,) 30338 0.00 -1 s +( 5\03667) 36192 -24.00 32 s +25400.0 103316.0 m +(ts\036y, 5\03667) 36192 -24.00 32 s +22871.0 106680.0 m +(attributes,) 34078 0.00 -1 s +( 5\03655\0375\03667) 47887 -63.00 32 s +22871.0 110044.0 m +(cache,) 30000 0.00 -1 s +( 5\03668) 35786 -92.00 32 s +22871.0 113408.0 m +(components,) 37215 0.00 -1 s +( default values, 5\03655) 60079 -59.00 32 s +22871.0 116772.0 m +(copying,) 32669 0.00 -1 s +( 5\03667) 38450 -97.00 32 s +22871.0 120136.0 m +(creating,) 32665 0.00 -1 s +( 5\03654\0375\03655) 46442 -95.00 32 s +22871.0 123500.0 m +(destroying,) 35490 0.00 -1 s +( 5\03668) 41295 -73.00 32 s +22871.0 126865.0 m +(local) 28356 0.00 -1 s +( cache mode, 5\03656) 48881 -54.67 32 s +20320.0 131854.0 m +(:graphics\036exposure) 41790 0.00 -1 s +( event, 12\036146) 57844 -85.00 32 s +20320.0 136844.0 m +(gravity) 28313 0.00 -1 s +( attribute of window, 4\03641) 57731 -32.00 32 s +20320.0 141834.0 m +(:gravity\036notify) 36776 0.00 -1 s +( event,) 44239 -61.00 32 s +( 12\036150) 52877 -62.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 154071.0 m +(H) 24271 0.00 -1 s +3 sf +20320.0 160551.0 m +(height) 27374 0.00 -1 s +22871.0 163915.0 m +(attribute) 32274 0.00 -1 s +( of window, 4\03637) 51613 -32.67 32 s +22871.0 167279.0 m +(screen,) 30784 0.00 -1 s +( 3\03633) 36599 -63.00 32 s +22871.0 170643.0 m +(screen) 30078 0.00 -1 s +( in millimeters,) 47202 -21.00 32 s +( 3\03633) 53058 -22.00 32 s +20320.0 175633.0 m +(host,) 25730 0.00 -1 s +( managing access, 14\036179\03714\036180) 65476 -75.00 32 s +4 sf +20320.0 187870.0 m +(I) 22296 0.00 -1 s +3 sf +20320.0 194350.0 m +(ID,) 24002 0.00 -1 s +( window, 4\03642) 40301 -41.00 32 s +20320.0 199339.0 m +(image,) 27922 0.00 -1 s +( 7\03681\0377\03688) 41701 -93.00 32 s +22871.0 202703.0 m +(leftmost) 32119 0.00 -1 s +( bit) 35787 -17.00 32 s +( of display, 2\03625) 54232 -17.67 32 s +88234.0 22578.0 m +(input) 94035 0.00 -1 s +90785.0 25897.0 m +(event,) 97603 0.00 -1 s +( 1\0362) 102006 -64.00 32 s +90785.0 29216.0 m +(focus) 96897 0.00 -1 s +( events,) 105441 -78.00 32 s +( 12\036140\03712\036143) 124878 -79.00 32 s +4 sf +88234.0 39963.0 m +(J) 90774 0.00 -1 s +3 sf +88234.0 45833.0 m +(join\036style) 98893 0.00 -1 s +( attribute of graphics context,) 131923 -30.00 32 s +( 5\03662) 137770 -31.00 32 s +4 sf +88234.0 56580.0 m +(K) 92185 0.00 -1 s +3 sf +88234.0 62450.0 m +(key) 92309 0.00 -1 s +90785.0 65769.0 m +(auto\036repeat,) 104182 0.00 -1 s +( 14\036170\03714\036173) 123546 -152.00 32 s +90785.0 69088.0 m +(click,) 96976 0.00 -1 s +( 14\036170\03714\036173) 116366 -126.00 32 s +90785.0 72407.0 m +(grabbing,) 101522 0.00 -1 s +( 12\036134\03712\036160) 120881 -157.00 32 s +88234.0 77013.0 m +(:key\036press) 99831 0.00 -1 s +( event, 12\036136) 115937 -59.00 32 s +88234.0 81619.0 m +(:key\036release) 101865 0.00 -1 s +( event,) 109318 -71.00 32 s +( 12\036136) 117946 -72.00 32 s +88234.0 86225.0 m +(keyboard) 98734 0.00 -1 s +90785.0 89543.0 m +(bell,) 95723 0.00 -1 s +( 14\036170) 104355 -68.00 32 s +90785.0 92862.0 m +(bit) 93764 0.00 -1 s +( vector,) 102158 -69.00 32 s +( 14\036170\03714\036173) 121604 -70.00 32 s +90785.0 96181.0 m +(control,) 99484 0.00 -1 s +( 14\036170\03714\036173) 118872 -128.00 32 s +90785.0 99500.0 m +(encodings,) 102934 0.00 -1 s +( 14\036173\03714\036176) 122281 -169.00 32 s +90785.0 102819.0 m +(events,) 98701 0.00 -1 s +( 12\036136\03712\036140) 118082 -135.00 32 s +90785.0 106138.0 m +(grabbing,) 101522 0.00 -1 s +( 12\036133\03712\036134) 120881 -157.00 32 s +90785.0 109457.0 m +(mapping,) 101367 0.00 -1 s +( 14\036170\03714\036173,) 121457 -132.00 32 s +( 14\036174\03714\036175) 140840 -133.00 32 s +90785.0 112776.0 m +(state) 95957 0.00 -1 s +( event,) 103429 -52.00 32 s +( 12\036144) 112076 -53.00 32 s +88234.0 117382.0 m +(keycode) 97637 0.00 -1 s +90785.0 120701.0 m +(maximum) 102229 0.00 -1 s +( value of display,) 121547 -40.00 32 s +( 2\03626) 127384 -41.00 32 s +90785.0 124020.0 m +(minimum) 101760 0.00 -1 s +( value of display, 2\03626) 126932 -36.00 32 s +90785.0 127339.0 m +(range) 97052 0.00 -1 s +( of display, 2\03625) 115440 -36.67 32 s +88234.0 131945.0 m +(keycodes,) 99441 0.00 -1 s +( 14\036173\03714\036174) 118782 -175.00 32 s +90785.0 135263.0 m +(usage,) 97917 0.00 -1 s +( 14\036175\03714\036176) 117292 -141.00 32 s +88234.0 139869.0 m +(:keymap\036notify) 105631 0.00 -1 s +( event,) 113075 -80.00 32 s +( 12\036144) 121694 -81.00 32 s +88234.0 144475.0 m +(keysyms,) 98817 0.00 -1 s +( 14\036173\03714\036174) 118195 -138.00 32 s +90785.0 147794.0 m +(usage,) 97917 0.00 -1 s +( 14\036175\03714\036176) 117292 -141.00 32 s +4 sf +88234.0 158541.0 m +(L) 91622 0.00 -1 s +3 sf +88234.0 164411.0 m +(:leave\036notify) 102651 0.00 -1 s +( event, 12\036138) 118737 -69.00 32 s +90785.0 167730.0 m +(example,) 101051 0.00 -1 s +( 1\0369) 105438 -80.00 32 s +88234.0 172336.0 m +(line\036style) 98735 0.00 -1 s +( attribute of graphics context,) 131765 -30.00 32 s +( 5\03663) 137612 -31.00 32 s +88234.0 176942.0 m +(line\036width) 99832 0.00 -1 s +( attribute of graphics context, 5\03663) 138695 -33.00 32 s +88234.0 181548.0 m +(lines,) 94270 0.00 -1 s +( drawing,) 104874 -54.00 32 s +( 6\03671\0376\03673) 118691 -55.00 32 s +4 sf +88234.0 192295.0 m +(M) 93029 0.00 -1 s +3 sf +88234.0 198165.0 m +(:map\036notify) 101556 0.00 -1 s +( event,) 109017 -63.00 32 s +( 12\036150) 117653 -64.00 32 s +88234.0 202771.0 m +(:map\036request) 102965 0.00 -1 s +( event, 12\036154) 119053 -68.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +135467.0 8737.0 m +(General ) 143413 -32.00 32 s +( Index) 148969 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036217) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(map) 25179 0.00 -1 s +( state of window, 4\03642) 50371 -30.75 32 s +20320.0 27251.0 m +(:mapping\036notify) 38659 0.00 -1 s +( event, 12\036144) 54729 -77.00 32 s +20320.0 31925.0 m +(mapping) 30196 0.00 -1 s +( windows, 4\03647\0374\03649) 55519 -75.00 32 s +20320.0 36599.0 m +(motion) 28316 0.00 -1 s +( buffer size of display,) 53528 -25.00 32 s +( 2\03626) 59380 -26.00 32 s +20320.0 41272.0 m +(:motion\036notify) 36779 0.00 -1 s +( event, 12\036137) 52877 -63.00 32 s +20320.0 45946.0 m +(mouse,) 28394 0.00 -1 s +( behavior,) 39580 -99.00 32 s +( 14\036170\03714\036173) 58996 -100.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 56919.0 m +(N) 23987 0.00 -1 s +3 sf +20320.0 62879.0 m +(:no\036exposure) 35052 0.00 -1 s +( event, 12\036146) 51116 -80.00 32 s +20320.0 67553.0 m +(number) 28940 0.00 -1 s +( of display,) 41484 -38.00 32 s +( 2\03624) 47323 -39.00 32 s +4 sf +20320.0 78526.0 m +(O) 24271 0.00 -1 s +3 sf +20320.0 84486.0 m +(obscuring) 31449 0.00 -1 s +( window, 1\0362) 46307 -56.00 32 s +20320.0 89160.0 m +(output buffer management,) 50849 -56.00 32 s +( 2\03629) 56670 -57.00 32 s +20320.0 93833.0 m +(override\036redirect) 39276 0.00 -1 s +( attribute of window, 4\03642) 68682 -35.00 32 s +4 sf +20320.0 104806.0 m +(P) 23423 0.00 -1 s +3 sf +20320.0 110767.0 m +(path) 25179 0.00 -1 s +( list,) 30009 -32.00 32 s +( 13\036161) 38676 -33.00 32 s +20320.0 115440.0 m +(pixmap,) 29491 0.00 -1 s +( 1\0362,) 34600 -64.00 32 s +( 4\03635\0374\03652) 48407 -65.00 32 s +22871.0 118759.0 m +(formats) 31490 0.00 -1 s +( of display, 2\03626) 49919 -23.00 32 s +20320.0 123433.0 m +(plane,) 27138 0.00 -1 s +( 6\03669\0376\03671) 40911 -99.00 32 s +20320.0 128106.0 m +(plane\036mask) 33328 0.00 -1 s +( attribute of) 46415 -39.00 32 s +( graphics context, 5\03664) 72159 -39.67 32 s +20320.0 132780.0 m +(pointer) 28313 0.00 -1 s +22871.0 136099.0 m +(button) 30083 0.00 -1 s +25400.0 139418.0 m +(obtaining,) 36766 0.00 -1 s +( 14\036170\03714\036173) 56128 -154.00 32 s +25400.0 142737.0 m +(setting,) 33631 0.00 -1 s +( 14\036170\03714\036173) 53035 -112.00 32 s +22871.0 146056.0 m +(control,) 31570 0.00 -1 s +( 14\036169\03714\036170) 50958 -128.00 32 s +22871.0 149375.0 m +(events,) 30787 0.00 -1 s +( 12\036136\03712\036140) 50168 -135.00 32 s +22871.0 152694.0 m +(grabbing,) 33608 0.00 -1 s +( 12\036130\03712\036131) 52967 -157.00 32 s +22871.0 156012.0 m +(position,) 32671 0.00 -1 s +( 12\036126\03712\036128) 52064 -123.00 32 s +22871.0 159331.0 m +(state) 28043 0.00 -1 s +( event,) 35515 -52.00 32 s +( 12\036144) 44162 -53.00 32 s +20320.0 164005.0 m +(points,) 27925 0.00 -1 s +( drawing, 6\03671) 44365 -48.00 32 s +20320.0 168679.0 m +(property,) 30585 0.00 -1 s +( 11\036112\03711\036115) 49965 -136.00 32 s +20320.0 173352.0 m +(property) 29879 0.00 -1 s +( list) 34025 -10.00 32 s +22871.0 176671.0 m +(display,) 31729 0.00 -1 s +( 2\03627) 37547 -60.00 32 s +22871.0 179990.0 m +(screen,) 30784 0.00 -1 s +( 3\03633) 36599 -63.00 32 s +22871.0 183309.0 m +(window,) 32668 0.00 -1 s +( 4\03643) 38473 -73.00 32 s +20320.0 187983.0 m +(:property\036notify) 38342 0.00 -1 s +( event,) 45801 -65.00 32 s +( 12\036155) 54435 -66.00 32 s +20320.0 192656.0 m +(protocol) 29724 0.00 -1 s +22871.0 195975.0 m +(major) 29453 0.00 -1 s +( version of display,) 51002 -28.00 32 s +( 2\03627) 56851 -29.00 32 s +22871.0 199294.0 m +(minor version of display, 2\03627) 57009 -28.25 32 s +22871.0 202613.0 m +(version) 31178 0.00 -1 s +( of display, 2\03627) 49581 -31.67 32 s +4 sf +88234.0 24271.0 m +(R) 91901 0.00 -1 s +3 sf +88234.0 30164.0 m +(rectangles,) 100379 0.00 -1 s +( drawing, 6\03673) 116795 -60.00 32 s +88234.0 34792.0 m +(:reparent\036notify) 105940 0.00 -1 s +( event,) 113399 -65.00 32 s +( 12\036151) 122033 -66.00 32 s +88234.0 39421.0 m +(reply,) 94738 0.00 -1 s +( 1\0362) 99162 -43.00 32 s +88234.0 44049.0 m +(representation) 104218 0.00 -1 s +( type, standard conversions, 4\03645) 141314 -52.75 32 s +88234.0 48678.0 m +(request) 96383 0.00 -1 s +( maximum length) 116221 -36.00 32 s +( of display, 2\03626) 134609 -36.67 32 s +88234.0 53306.0 m +(:resize\036request) 104686 0.00 -1 s +( event,) 112151 -59.00 32 s +( 12\036154) 120791 -60.00 32 s +88234.0 57935.0 m +(resource,) 98497 0.00 -1 s +( 13\036161\03713\036168) 117879 -134.00 32 s +90785.0 61254.0 m +(accessing,) 102305 0.00 -1 s +( 13\036163\03713\036166) 121672 -149.00 32 s +90785.0 64572.0 m +(binding, 13\036161\03713\036162) 119482 -148.00 32 s +93314.0 67891.0 m +(examples,) 104678 0.00 -1 s +( 13\036162) 113273 -105.00 32 s +90785.0 71210.0 m +(complete) 101129 0.00 -1 s +( class,) 107971 -56.00 32 s +( 13\036163) 116614 -57.00 32 s +90785.0 74529.0 m +(complete) 101129 0.00 -1 s +( name, 13\036163) 117201 -76.00 32 s +90785.0 77848.0 m +(database,) 101207 0.00 -1 s +( 13\036161, 13\036162\03713\036163) 129913 -108.00 32 s +93314.0 81167.0 m +(files,) 98878 0.00 -1 s +( 13\036166) 107538 -40.00 32 s +90785.0 84486.0 m +(matching,) 101993 0.00 -1 s +( 13\036164) 110586 -107.00 32 s +90785.0 87805.0 m +(name,) 97603 0.00 -1 s +( 13\036161) 106206 -97.00 32 s +90785.0 91124.0 m +(search) 97992 0.00 -1 s +( table,) 104833 -56.00 32 s +( 13\036165) 113476 -57.00 32 s +90785.0 94443.0 m +(server,) 98384 0.00 -1 s +( 13\036161) 107019 -65.00 32 s +88234.0 99071.0 m +(resource\036id) 100925 0.00 -1 s +90785.0 102390.0 m +(base) 95800 0.00 -1 s +( of display,) 108354 -33.00 32 s +( 2\03627) 114198 -34.00 32 s +90785.0 105709.0 m +(mask) 96742 0.00 -1 s +( of display, 2\03628) 115147 -31.00 32 s +88234.0 110338.0 m +(root,) 93485 0.00 -1 s +( 1\0362) 97920 -32.00 32 s +90785.0 113657.0 m +(depth) 97055 0.00 -1 s +( of screen, 3\03634) 114492 -38.67 32 s +90785.0 116975.0 m +(display,) 99643 0.00 -1 s +( 2\03628) 105461 -60.00 32 s +90785.0 120294.0 m +(event) 96897 0.00 -1 s +( mask of screen,) 115130 -35.00 32 s +( 3\03632) 120972 -36.00 32 s +90785.0 123613.0 m +(visual) 97526 0.00 -1 s +( type of screen, 3\03634) 120520 -31.00 32 s +90785.0 126932.0 m +(window) 99876 0.00 -1 s +( of screen,) 111475 -38.00 32 s +( 3\03633) 117314 -39.00 32 s +4 sf +88234.0 137747.0 m +(S) 91058 0.00 -1 s +3 sf +88234.0 143640.0 m +(save\036under attribute of window, 4\03643) 130003 -39.00 32 s +88234.0 148268.0 m +(save\036unders\036p) 104061 0.00 -1 s +( attribute of screen, 3\03634) 131583 -35.00 32 s +88234.0 152897.0 m +(screen,) 96147 0.00 -1 s +( 1\0362,) 101264 -56.00 32 s +( 3\03631\0373\03634) 115079 -57.00 32 s +90785.0 156216.0 m +(attributes,) 101992 0.00 -1 s +( 3\03631\0373\03634) 115801 -63.00 32 s +90785.0 159535.0 m +(backing\036stores) 107241 0.00 -1 s +( attribute,) 118009 -47.00 32 s +( 3\03632) 123839 -48.00 32 s +90785.0 162854.0 m +(black\036pixel) 103479 0.00 -1 s +( attribute,) 114243 -51.00 32 s +( 3\03632) 120069 -52.00 32 s +90785.0 166172.0 m +(colormap,) 102148 0.00 -1 s +( default,) 111337 -58.00 32 s +( 3\03632) 117156 -59.00 32 s +90785.0 169491.0 m +(colormaps) 102540 0.00 -1 s +( maximum number, 3\03633) 130432 -56.00 32 s +90785.0 172810.0 m +(colormaps) 102540 0.00 -1 s +( minimum number,) 124153 -50.00 32 s +( 3\03633) 129980 -51.00 32 s +90785.0 176129.0 m +(depths,) 98859 0.00 -1 s +( 3\03632) 104671 -66.00 32 s +90785.0 179448.0 m +(event) 96897 0.00 -1 s +( mask root, 3\03632) 115282 -37.67 32 s +90785.0 182767.0 m +(height,) 98545 0.00 -1 s +( 3\03633) 104355 -68.00 32 s +90785.0 186086.0 m +(height) 97839 0.00 -1 s +( in millimeters, 3\03633) 120814 -23.00 32 s +90785.0 189405.0 m +(property list, 3\03633) 111038 -23.00 32 s +90785.0 192724.0 m +(root) 95330 0.00 -1 s +( depth, 3\03634) 108802 -44.00 32 s +90785.0 196043.0 m +(root) 95330 0.00 -1 s +( visual type, 3\03634) 114831 -31.67 32 s +90785.0 199362.0 m +(root) 95330 0.00 -1 s +( window, 3\03633) 111625 -43.00 32 s +90785.0 202681.0 m +(save\036unders\036p) 106612 0.00 -1 s +( attribute, 3\03634) 123207 -49.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(General ) 28266 -32.00 32 s +( Index) 33822 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +148474 207264 av +21709 207262 as +[] 0 setdash +dp +121920.0 211598.0 m +(CLX) 126069 0.00 -1 s +( Programmer's Reference) 149465 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19898.0 211327.0 m +(Index\036218) 31970 0.00 -1 s +/timsps10 3 declareFont +3 sf +22871.0 22578.0 m +(saver,) 29531 0.00 -1 s +( 14\036180\03714\036182) 48926 -121.00 32 s +22871.0 25897.0 m +(white) 29140 0.00 -1 s +( pixel, 3\03634) 41995 -39.00 32 s +22871.0 29216.0 m +(width,) 30004 0.00 -1 s +( 3\03634) 35831 -51.00 32 s +22871.0 32535.0 m +(width) 29298 0.00 -1 s +( in millimeters,) 46430 -17.00 32 s +( 3\03634) 52290 -18.00 32 s +20320.0 37253.0 m +(selection,) 31057 0.00 -1 s +( 11\036115\03711\036118) 50439 -134.00 32 s +20320.0 41972.0 m +(:selection\036clear) 37556 0.00 -1 s +( event,) 45013 -67.00 32 s +( 12\036155) 53645 -68.00 32 s +20320.0 46691.0 m +(:selection\036notify) 38814 0.00 -1 s +( event,) 46274 -64.00 32 s +( 12\036156) 54909 -65.00 32 s +20320.0 51410.0 m +(:selection\036request) 40223 0.00 -1 s +( event, 12\036156) 56309 -69.00 32 s +20320.0 56128.0 m +(server) 27213 0.00 -1 s +22871.0 59447.0 m +(grabbing,) 33608 0.00 -1 s +( 14\036169) 42198 -110.00 32 s +22871.0 62766.0 m +(resource,) 33134 0.00 -1 s +( 13\036161) 41746 -88.00 32 s +22871.0 66085.0 m +(resource) 32428 0.00 -1 s +( ID of display,) 48652 -26.00 32 s +( 2\03628) 54503 -27.00 32 s +20320.0 70804.0 m +(shell) 25650 0.00 -1 s +22871.0 74123.0 m +(popping) 32121 0.00 -1 s +( down,) 39728 -75.00 32 s +( 208) 44591 -76.00 32 s +22871.0 77442.0 m +(popping) 32121 0.00 -1 s +( up,) 36288 -67.00 32 s +( 208) 41159 -68.00 32 s +20320.0 82161.0 m +(side\036effect) 32226 0.00 -1 s +( events,) 40797 -51.00 32 s +( 12\036119) 49445 -52.00 32 s +22871.0 85479.0 m +(events) 30081 0.00 -1 s +( returned, 12\036119) 49468 -63.00 32 s +20320.0 90198.0 m +(stacking) 29725 0.00 -1 s +( order of window, 4\03645\0374\03646) 63647 -42.00 32 s +20320.0 94917.0 m +(stacking) 29725 0.00 -1 s +( priority of window,) 52360 -31.00 32 s +( 4\03643) 58206 -32.00 32 s +20320.0 99636.0 m +(stipple) 27845 0.00 -1 s +22871.0 102955.0 m +(attribute) 32274 0.00 -1 s +( of graphics context, 5\03665) 61050 -35.75 32 s +22871.0 106274.0 m +(best,) 28123 0.00 -1 s +( graphics context, 5\03667) 53848 -46.00 32 s +20320.0 110992.0 m +(structure) 30192 0.00 -1 s +( control events, 12\036152\03712\036154) 66853 -58.67 32 s +20320.0 115711.0 m +(subwindow\036mode) 40540 0.00 -1 s +( attribute of graphics context, 5\03666) 79338 -46.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 126842.0 m +(T) 23708 0.00 -1 s +3 sf +20320.0 132870.0 m +(text) 24552 0.00 -1 s +22871.0 136189.0 m +(drawing,) 32823 0.00 -1 s +( 6\03675\0376\03680) 46601 -94.00 32 s +22871.0 139508.0 m +(size) 27259 0.00 -1 s +( querying, 8\03697\0378\03698) 52448 -63.00 32 s +20320.0 144227.0 m +(tile,) 24631 0.00 -1 s +( 1\0362) 29080 -18.00 32 s +22871.0 147546.0 m +(attribute) 32274 0.00 -1 s +( of graphics context, 5\03666) 61050 -35.75 32 s +22871.0 150865.0 m +(best,) 28123 0.00 -1 s +( graphics context, 5\03667) 53848 -46.00 32 s +20320.0 155583.0 m +(ts\036x) 24552 0.00 -1 s +( attribute of graphics context,) 57594 -27.00 32 s +( 5\03667) 63444 -28.00 32 s +20320.0 160302.0 m +(ts\036y attribute of graphics context, 5\03667) 63444 -27.20 32 s +4 sf +20320.0 171433.0 m +(U) 23987 0.00 -1 s +3 sf +20320.0 177461.0 m +(:unmap\036notify) 36464 0.00 -1 s +( event, 12\036151) 52538 -75.00 32 s +20320.0 182180.0 m +(unmapping) 33018 0.00 -1 s +( windows,) 44533 -86.00 32 s +( 4\03647\0374\03649) 58318 -87.00 32 s +4 sf +20320.0 193311.0 m +(V) 23987 0.00 -1 s +3 sf +20320.0 199339.0 m +(vendor) 28156 0.00 -1 s +22871.0 202658.0 m +(display,) 31729 0.00 -1 s +( 2\03628) 37547 -60.00 32 s +90785.0 22578.0 m +(name) 96897 0.00 -1 s +( of display, 2\03628) 115282 -37.67 32 s +88234.0 27116.0 m +(version) 96541 0.00 -1 s +( number) 105832 -35.00 32 s +( of display, 2\03628) 124223 -35.67 32 s +88234.0 31654.0 m +(:visibility\036notify) 106732 0.00 -1 s +( event, 12\036152) 122868 -44.00 32 s +88234.0 36192.0 m +(visual) 94975 0.00 -1 s +( type) 100507 -33.00 32 s +( of window, 4\03643) 119843 -33.67 32 s +88234.0 40730.0 m +(visual types,) 102310 -34.00 32 s +( classes supported, 3\03631) 129168 -34.67 32 s +88234.0 45268.0 m +(visuals,) 96779 0.00 -1 s +( 3\03631) 102616 -41.00 32 s +4 sf +88234.0 55699.0 m +(W) 93314 0.00 -1 s +3 sf +88234.0 61434.0 m +(white) 94503 0.00 -1 s +( pixel of screen, 3\03634) 118285 -30.00 32 s +88234.0 65972.0 m +(width) 94661 0.00 -1 s +90785.0 69269.0 m +(attribute) 100188 0.00 -1 s +( of window, 4\03637) 119527 -32.67 32 s +90785.0 72565.0 m +(screen,) 98698 0.00 -1 s +( 3\03634) 104513 -63.00 32 s +90785.0 75861.0 m +(screen) 97992 0.00 -1 s +( in millimeters,) 115116 -21.00 32 s +( 3\03634) 120972 -22.00 32 s +88234.0 80399.0 m +(window,) 98031 0.00 -1 s +( 4\03635\0374\03652) 111805 -98.00 32 s +90785.0 83696.0 m +(attribute) 100188 0.00 -1 s +93314.0 86992.0 m +(background,) 107342 0.00 -1 s +( 4\03638) 113092 -128.00 32 s +93314.0 90289.0 m +(backing\036pixel,) 109536 0.00 -1 s +( 4\03639) 115305 -109.00 32 s +93314.0 93585.0 m +(backing\036planes,) 111103 0.00 -1 s +( 4\03639) 116863 -118.00 32 s +93314.0 96881.0 m +(backing\036store,) 109378 0.00 -1 s +( 4\03639) 115169 -87.00 32 s +93314.0 100178.0 m +(bit\036gravity,) 105931 0.00 -1 s +( 4\03639) 111760 -49.00 32 s +93314.0 103474.0 m +(border,) 101384 0.00 -1 s +( 4\03640) 107199 -63.00 32 s +93314.0 106770.0 m +(border\036width,) 108750 0.00 -1 s +( 4\03637) 114560 -68.00 32 s +93314.0 110067.0 m +(colormap,) 104677 0.00 -1 s +( 4\03640) 110473 -82.00 32 s +93314.0 113363.0 m +(cursor,) 101071 0.00 -1 s +( 4\03641) 106906 -43.00 32 s +93314.0 116659.0 m +(depth,) 100290 0.00 -1 s +( 4\03637) 106093 -75.00 32 s +93314.0 119956.0 m +(do\036not\036propagate\036mask,) 120348 0.00 -1 s +( 4\03641) 126097 -129.00 32 s +93314.0 123252.0 m +(event\036mask,) 107028 0.00 -1 s +( 4\03641) 112821 -85.00 32 s +93314.0 126548.0 m +(gravity,) 102013 0.00 -1 s +( 4\03641) 107832 -59.00 32 s +93314.0 129845.0 m +(height,) 101074 0.00 -1 s +( 4\03637) 106883 -69.00 32 s +93314.0 133141.0 m +(override\036redirect,) 112976 0.00 -1 s +( 4\03642) 118782 -72.00 32 s +93314.0 136438.0 m +(save\036under,) 106399 0.00 -1 s +( 4\03643) 112189 -88.00 32 s +93314.0 139734.0 m +(width,) 100447 0.00 -1 s +( 4\03637) 106274 -51.00 32 s +90785.0 143030.0 m +(attributes,) 101992 0.00 -1 s +( 4\03637) 107832 -38.00 32 s +93314.0 146327.0 m +(batching,) 103738 0.00 -1 s +( 2\03629, 4\03643) 116072 -64.00 32 s +93314.0 149623.0 m +(reader) 100362 0.00 -1 s +( and setf functions, 4\03645) 127587 -32.00 32 s +90785.0 152919.0 m +(class,) 96977 0.00 -1 s +( 4\03640) 102819 -36.00 32 s +90785.0 156216.0 m +(creating,) 100579 0.00 -1 s +( 4\03635) 106387 -70.00 32 s +90785.0 159512.0 m +(destroying,) 103404 0.00 -1 s +( 4\03649) 109209 -73.00 32 s +90785.0 162808.0 m +(display) 98937 0.00 -1 s +( object,) 107196 -49.00 32 s +( 4\03641) 113024 -50.00 32 s +90785.0 166105.0 m +(event) 96897 0.00 -1 s +( masks, 4\03638) 111150 -46.00 32 s +90785.0 169401.0 m +(hierarchy,) 102145 0.00 -1 s +( 4\03646\0374\03647) 115914 -103.00 32 s +90785.0 172697.0 m +(ID,) 94467 0.00 -1 s +( 4\03642) 100313 -32.00 32 s +90785.0 175994.0 m +(map) 95644 0.00 -1 s +( state,) 102193 -35.00 32 s +( 4\03642) 108035 -36.00 32 s +90785.0 179290.0 m +(mapping,) 101367 0.00 -1 s +( 4\03647\0374\03649) 115124 -115.00 32 s +90785.0 182586.0 m +(obscure,) 100267 0.00 -1 s +( 1\0362) 104671 -63.00 32 s +90785.0 185883.0 m +(property) 100344 0.00 -1 s +( list, 4\03643) 111038 -23.00 32 s +90785.0 189179.0 m +(stacking) 100190 0.00 -1 s +( order,) 107497 -58.00 32 s +( 4\03645\0374\03646) 121310 -59.00 32 s +90785.0 192476.0 m +(stacking) 100190 0.00 -1 s +( priority, 4\03643) 115869 -37.00 32 s +90785.0 195772.0 m +(state) 95957 0.00 -1 s +( events,) 104508 -71.00 32 s +( 12\036147\03712\036152) 123952 -72.00 32 s +90785.0 199068.0 m +(unmapping,) 104189 0.00 -1 s +( 4\03647\0374\03649) 117924 -137.00 32 s +90785.0 202365.0 m +(visual) 97526 0.00 -1 s +( type, 4\03643) 109593 -41.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +135467.0 8737.0 m +(General ) 143413 -32.00 32 s +( Index) 148969 -33.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036219) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +22871.0 22578.0 m +(x) 24282 0.00 -1 s +( coordinate, 4\03638) 43372 -55.00 32 s +22871.0 25784.0 m +(y coordinate, 4\03638) 43372 -55.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 33641.0 m +(X) 23987 0.00 -1 s +3 sf +20320.0 38292.0 m +(X) 22357 0.00 -1 s +( server, reset operations, 14\036177) 58431 -32.75 32 s +88234.0 22578.0 m +(X) 90271 0.00 -1 s +( Window System, overview,) 122202 -42.00 32 s +( 1\0361\0371\0363) 133209 -43.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/functions.ps +++ cmucl-20a-20090928/own-work/clx/functions.ps @@ -0,0 +1,2127 @@ +%!PS-Adobe-2.0 +%%Title: functions.ps +%%Pages: 6 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 5 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /helvps18b /ILhelvpsb 18 map + /timsps8i /ILtimsi 8 map + /timsps10b /ILtimsb 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Times-Italic /ILhelvpsb ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 5 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +134112.0 8737.0 m +(Function Index) 148381 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036221) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +149013 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/helvps18b 4 declareFont +4 sf +20320.0 29238.0 m +(Functions) 41767 0.00 -1 s +20320.0 41656.0 m +(A) 23987 0.00 -1 s +3 sf +20320.0 47662.0 m +(xlib:access\036control,) 42340 0.00 -1 s +( 14\036179) 50935 -105.00 32 s +20320.0 52358.0 m +(xlib:access\036hosts,) 40149 0.00 -1 s +( 14\036179) 48768 -81.00 32 s +20320.0 57054.0 m +(xlib:activate\036screen\036saver,) 50014 0.00 -1 s +( 14\036180) 58589 -125.00 32 s +20320.0 61750.0 m +(xlib:add\036access\036host,) 44065 0.00 -1 s +( 14\036179) 52651 -114.00 32 s +20320.0 66446.0 m +(xlib:add\036resource,) 40771 0.00 -1 s +( 13\036162) 49355 -116.00 32 s +20320.0 71142.0 m +(xlib:add\036to\036save\036set,) 43437 0.00 -1 s +( 14\036178) 52042 -95.00 32 s +20320.0 75839.0 m +(xlib:alloc\036color,) 38422 0.00 -1 s +( 9\036103) 45630 -81.00 32 s +20320.0 80535.0 m +(xlib:alloc\036color\036cells,) 44533 0.00 -1 s +( 9\036103) 51748 -74.00 32 s +20320.0 85231.0 m +(xlib:alloc\036color\036planes,) 46571 0.00 -1 s +( 9\036104) 53758 -102.00 32 s +20320.0 89927.0 m +(xlib:allow\036events,) 40618 0.00 -1 s +( 12\036158) 49220 -98.00 32 s +20320.0 94623.0 m +(xlib:atom\036name,) 38894 0.00 -1 s +( 11\036112) 47481 -113.00 32 s +4 sf +20320.0 105709.0 m +(B) 23708 0.00 -1 s +3 sf +20320.0 111715.0 m +(xlib:bell,) 30432 0.00 -1 s +( 14\036170) 39060 -72.00 32 s +4 sf +20320.0 122800.0 m +(C) 23987 0.00 -1 s +3 sf +20320.0 128806.0 m +(xlib:change\036active\036pointer\036grab,) 56754 0.00 -1 s +( 12\036131) 65272 -182.00 32 s +20320.0 133502.0 m +(xlib:change\036keyboard\036control,) 54563 0.00 -1 s +( 14\036171) 63060 -203.00 32 s +20320.0 138198.0 m +(xlib:change\036keyboard\036mapping,) 56446 0.00 -1 s +( 14\036174) 64911 -235.00 32 s +20320.0 142895.0 m +(xlib:change\036pointer\036control,) 52056 0.00 -1 s +( 14\036169) 60599 -157.00 32 s +20320.0 147591.0 m +(xlib:change\036property,) 44690 0.00 -1 s +( 11\036113) 53238 -152.00 32 s +20320.0 152287.0 m +(xlib:char\036ascent,) 39047 0.00 -1 s +( 8\03696) 44839 -86.00 32 s +20320.0 156983.0 m +(xlib:char\036attributes,) 42496 0.00 -1 s +( 8\03696) 48316 -58.00 32 s +20320.0 161679.0 m +(xlib:char\036descent,) 40458 0.00 -1 s +( 8\03696) 46239 -97.00 32 s +20320.0 166376.0 m +(xlib:char\036left\036bearing,) 45156 0.00 -1 s +( 8\03696) 50958 -76.00 32 s +20320.0 171072.0 m +(xlib:char\036right\036bearing,) 46725 0.00 -1 s +( 8\03696) 52516 -87.00 32 s +20320.0 175768.0 m +(xlib:char\036width,) 38422 0.00 -1 s +( 8\03697) 44230 -70.00 32 s +20320.0 180464.0 m +(xlib:circulate\036window\036down,) 53153 0.00 -1 s +( 4\03645) 58905 -126.00 32 s +20320.0 185160.0 m +(xlib:circulate\036window\036up,) 49705 0.00 -1 s +( 4\03646) 55474 -109.00 32 s +20320.0 189856.0 m +(xlib:clear\036area,) 37319 0.00 -1 s +( 6\03669) 43124 -73.00 32 s +20320.0 194553.0 m +(xlib:close\036display,) 41090 0.00 -1 s +( 2\03630, 5\03657) 53442 -55.00 32 s +22871.0 197872.0 m +(example,) 33137 0.00 -1 s +( 1\03610) 38924 -91.00 32 s +20320.0 202568.0 m +(xlib:close\036down\036mode,) 46417 0.00 -1 s +( 14\036178) 54977 -140.00 32 s +4 sf +88234.0 29238.0 m +3 sf +35176.0 v +(xlib:close\036font,) 105397 0.00 -1 s +( 8\03690) 111218 -57.00 32 s +88234.0 39827.0 m +(xlib:color\036blue,) 105710 0.00 -1 s +( 9\036100) 112912 -87.00 32 s +88234.0 44478.0 m +(xlib:color\036green,) 107118 0.00 -1 s +( 9\036100) 114311 -96.00 32 s +88234.0 49129.0 m +(xlib:color\036p,) 102262 0.00 -1 s +( 9\036100) 109480 -71.00 32 s +88234.0 53780.0 m +(xlib:color\036red,) 104454 0.00 -1 s +( 9\036100) 111670 -73.00 32 s +88234.0 58431.0 m +(xlib:color\036rgb, 9\036100) 111828 -73.00 32 s +88234.0 63082.0 m +(xlib:colormap\036display,) 113862 0.00 -1 s +( 9\036107) 121040 -111.00 32 s +88234.0 67733.0 m +(xlib:colormap\036equal,) 111822 0.00 -1 s +( 9\036107) 118985 -126.00 32 s +88234.0 72384.0 m +(xlib:colormap\036id,) 107905 0.00 -1 s +( 9\036107) 115102 -92.00 32 s +88234.0 77035.0 m +(xlib:colormap\036p,) 107121 0.00 -1 s +( 9\036107) 114311 -99.00 32 s +88234.0 81686.0 m +(xlib:colormap\036plist,) 110571 0.00 -1 s +( 9\036107) 117788 -72.00 32 s +88234.0 86337.0 m +(xlib:convert\036selection,) 113546 0.00 -1 s +( 11\036116) 122123 -123.00 32 s +88234.0 90988.0 m +(xlib:copy\036area,) 105237 0.00 -1 s +( 6\03670) 111015 -100.00 32 s +88234.0 95639.0 m +(xlib:copy\036colormap\036and\036free,) 121533 0.00 -1 s +( 9\036102) 128671 -151.00 32 s +88234.0 100290.0 m +(xlib:copy\036gcontext,) 110257 0.00 -1 s +( 5\03667) 116005 -130.00 32 s +88234.0 104941.0 m +(xlib:copy\036gcontext\036components,) 124834 0.00 -1 s +( 5\03668) 130522 -190.00 32 s +88234.0 109592.0 m +(xlib:copy\036image,) 107435 0.00 -1 s +( 7\03685) 113205 -108.00 32 s +88234.0 114243.0 m +(xlib:copy\036plane,) 106651 0.00 -1 s +( 6\03670) 112415 -114.00 32 s +88234.0 118894.0 m +(xlib:create\036colormap,) 112445 0.00 -1 s +( 9\036101) 119617 -117.00 32 s +88234.0 123545.0 m +(xlib:create\036cursor,) 108839 0.00 -1 s +( 10\036107) 117450 -89.00 32 s +88234.0 128197.0 m +(xlib:create\036gcontext,) 111506 0.00 -1 s +( 5\03654) 117269 -115.00 32 s +90785.0 131515.0 m +(example,) 101051 0.00 -1 s +( 1\0365) 105438 -80.00 32 s +88234.0 136166.0 m +(xlib:create\036glyph\036cursor,) 116206 0.00 -1 s +( 10\036108) 124787 -119.00 32 s +88234.0 140817.0 m +(xlib:create\036image,) 108684 0.00 -1 s +( 7\03683) 114469 -93.00 32 s +88234.0 145469.0 m +(xlib:create\036pixmap,) 110253 0.00 -1 s +( 4\03650) 116027 -104.00 32 s +88234.0 150120.0 m +(xlib:create\036window,) 110879 0.00 -1 s +( 4\03635) 116659 -98.00 32 s +90785.0 153438.0 m +(example,) 101051 0.00 -1 s +( 1\0365,) 106172 -52.00 32 s +( 1\0366) 110586 -53.00 32 s +88234.0 158089.0 m +(xlib:cursor\036display,) 110256 0.00 -1 s +( 10\036109) 118872 -84.00 32 s +88234.0 162741.0 m +(xlib:cursor\036equal,) 108216 0.00 -1 s +( 10\036109) 116817 -99.00 32 s +88234.0 167392.0 m +(xlib:cursor\036id,) 104299 0.00 -1 s +( 10\036109) 112934 -65.00 32 s +88234.0 172043.0 m +(xlib:cursor\036p,) 103515 0.00 -1 s +( 10\036109) 112144 -71.00 32 s +88234.0 176694.0 m +(xlib:cursor\036plist,) 106965 0.00 -1 s +( 10\036109) 115621 -44.00 32 s +4 sf +88234.0 187576.0 m +(D) 91901 0.00 -1 s +3 sf +88234.0 193514.0 m +(xlib:declare\036event,) 109311 0.00 -1 s +( 12\036157) 117879 -132.00 32 s +88234.0 198165.0 m +(xlib:define\036condition, 16\036185) 121333 -131.00 32 s +88234.0 202816.0 m +(xlib:delete\036property,) 111350 0.00 -1 s +( 11\036113) 119933 -117.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Function Index) 34589 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +148440 207266 av +21675 207264 as +[] 0 setdash +dp +121885.0 211600.0 m +(CLX) 126034 0.00 -1 s +( Programmer's Reference) 149430 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19864.0 211329.0 m +(Index\036222) 31936 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(xlib:delete\036resource,) 43434 0.00 -1 s +( 13\036163) 52019 -115.00 32 s +20320.0 27274.0 m +(xlib:destroy\036subwindows,) 49555 0.00 -1 s +( 4\03649) 55338 -95.00 32 s +20320.0 31970.0 m +(xlib:destroy\036window,) 44537 0.00 -1 s +( 4\03649) 50326 -89.00 32 s +22871.0 35289.0 m +(example,) 33137 0.00 -1 s +( 1\0366) 37524 -80.00 32 s +20320.0 39985.0 m +(xlib:discard\036current\036event,) 50329 0.00 -1 s +( 12\036124) 58905 -124.00 32 s +20320.0 44681.0 m +(xlib:discard\036font\036info,) 45317 0.00 -1 s +( 8\03690) 51139 -56.00 32 s +20320.0 49378.0 m +(xlib:display\036after\036function,) 50802 0.00 -1 s +( 2\03629) 56602 -78.00 32 s +20320.0 54074.0 m +(xlib:display\036authorization\036data,) 55820 0.00 -1 s +( 2\03624) 61570 -128.00 32 s +20320.0 58770.0 m +(xlib:display\036authorization\036name,) 57231 0.00 -1 s +( 2\03624) 62969 -140.00 32 s +20320.0 63466.0 m +(xlib:display\036bitmap\036format,) 51589 0.00 -1 s +( 2\03624) 57393 -74.00 32 s +20320.0 68162.0 m +(xlib:display\036byte\036order,) 47042 0.00 -1 s +( 2\03624) 52832 -88.00 32 s +20320.0 72858.0 m +(xlib:display\036display,) 43443 0.00 -1 s +( 2\03624) 49242 -79.00 32 s +20320.0 77555.0 m +(xlib:display\036error\036handler,) 50173 0.00 -1 s +( 2\03625) 55970 -81.00 32 s +20320.0 82251.0 m +(xlib:display\036finish\036output,) 49869 0.00 -1 s +( 2\03629) 55677 -70.00 32 s +20320.0 86947.0 m +(xlib:display\036force\036output,) 49237 0.00 -1 s +( 2\03629) 55022 -93.00 32 s +20320.0 91643.0 m +(xlib:display\036image\036lsb\036first\036p,) 54252 0.00 -1 s +( 2\03625) 60102 -28.00 32 s +20320.0 96339.0 m +(xlib:display\036keycode\036range,) 51900 0.00 -1 s +( 2\03625) 57618 -160.00 32 s +20320.0 101036.0 m +(xlib:display\036max\036keycode,) 50492 0.00 -1 s +( 2\03626) 56219 -151.00 32 s +20320.0 105732.0 m +(xlib:display\036max\036request\036length,) 57231 0.00 -1 s +( 2\03626) 62992 -117.00 32 s +20320.0 110428.0 m +(xlib:display\036min\036keycode,) 50023 0.00 -1 s +( 2\03626) 55767 -134.00 32 s +20320.0 115124.0 m +(xlib:display\036motion\036buffer\036size,) 56445 0.00 -1 s +( 2\03626) 62247 -76.00 32 s +20320.0 119820.0 m +(xlib:display\036p,) 36702 0.00 -1 s +( 2\03626) 42514 -66.00 32 s +20320.0 124516.0 m +(xlib:display\036pixmap\036formats,) 53314 0.00 -1 s +( 2\03626) 59109 -83.00 32 s +20320.0 129213.0 m +(xlib:display\036plist,) 40152 0.00 -1 s +( 2\03627) 45991 -39.00 32 s +20320.0 133909.0 m +(xlib:display\036protocol\036major\036version,) 61462 0.00 -1 s +( 2\03627) 67237 -103.00 32 s +20320.0 138605.0 m +(xlib:display\036protocol\036minor\036version, 2\03627) 67395 -103.00 32 s +20320.0 143301.0 m +(xlib:display\036protocol\036version,) 53941 0.00 -1 s +( 2\03627) 59718 -101.00 32 s +20320.0 147997.0 m +(xlib:display\036resource\036id\036base,) 53936 0.00 -1 s +( 2\03627) 59718 -96.00 32 s +20320.0 152694.0 m +(xlib:display\036resource\036id\036mask) 54172 0.00 -1 s +( , 2\03628) 61366 -48.00 32 s +20320.0 157390.0 m +(xlib:display\036roots,) 40934 0.00 -1 s +( 2\03628) 46759 -53.00 32 s +22871.0 160709.0 m +(example,) 33137 0.00 -1 s +( 1\03610) 38924 -91.00 32 s +20320.0 165405.0 m +(xlib:display\036vendor,) 43127 0.00 -1 s +( 2\03628) 48903 -102.00 32 s +20320.0 170101.0 m +(xlib:display\036vendor\036name,) 50178 0.00 -1 s +( 2\03628) 55925 -131.00 32 s +20320.0 174797.0 m +(xlib:display\036version\036number,) 53157 0.00 -1 s +( 2\03628) 58928 -107.00 32 s +20320.0 179493.0 m +(xlib:display\036xid,) 38897 0.00 -1 s +( 2\03628) 44704 -71.00 32 s +20320.0 184190.0 m +(xlib:draw\036arc,) 36224 0.00 -1 s +( 6\03674) 42040 -62.00 32 s +20320.0 188886.0 m +(xlib:draw\036arcs,) 37322 0.00 -1 s +( 6\03675) 43146 -54.00 32 s +20320.0 193582.0 m +(xlib:draw\036glyph,) 39207 0.00 -1 s +( 6\03676) 44998 -87.00 32 s +20320.0 198278.0 m +(xlib:draw\036glyphs,) 40305 0.00 -1 s +( 6\03676) 46104 -79.00 32 s +20320.0 202974.0 m +(xlib:draw\036image\036glyph,) 47042 0.00 -1 s +( 6\03677) 52809 -111.00 32 s +88234.0 22578.0 m +(xlib:draw\036image\036glyphs,) 116054 0.00 -1 s +( 6\03678) 121830 -102.00 32 s +90785.0 25897.0 m +(example,) 101051 0.00 -1 s +( 1\0368) 105438 -80.00 32 s +88234.0 30548.0 m +(xlib:draw\036line,) 104925 0.00 -1 s +( 6\03672) 110744 -59.00 32 s +88234.0 35199.0 m +(xlib:draw\036lines,) 106023 0.00 -1 s +( 6\03672) 111850 -51.00 32 s +88234.0 39850.0 m +(xlib:draw\036point,) 106494 0.00 -1 s +( 6\03671) 112302 -70.00 32 s +88234.0 44501.0 m +(xlib:draw\036points,) 107592 0.00 -1 s +( 6\03671) 113408 -62.00 32 s +88234.0 49152.0 m +(xlib:draw\036rectangle,) 111034 0.00 -1 s +( 6\03673) 116817 -95.00 32 s +88234.0 53803.0 m +(xlib:draw\036rectangles,) 112132 0.00 -1 s +( 6\03673) 117924 -86.00 32 s +88234.0 58454.0 m +(xlib:draw\036segments,) 111196 0.00 -1 s +( 6\03673) 116998 -76.00 32 s +88234.0 63105.0 m +(xlib:drawable\036border\036width,) 120124 0.00 -1 s +( 4\03637) 125894 -108.00 32 s +88234.0 67756.0 m +(xlib:drawable\036depth,) 111664 0.00 -1 s +( 4\03637) 117427 -115.00 32 s +88234.0 72407.0 m +(xlib:drawable\036display,) 113546 0.00 -1 s +( 4\03635) 119324 -100.00 32 s +90785.0 75726.0 m +(example,) 101051 0.00 -1 s +( 1\0369) 105438 -80.00 32 s +88234.0 80377.0 m +(xlib:drawable\036equal,) 111506 0.00 -1 s +( 4\03635) 117269 -115.00 32 s +88234.0 85028.0 m +(xlib:drawable\036height,) 112448 0.00 -1 s +( 4\03637) 118217 -109.00 32 s +90785.0 88347.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +88234.0 92998.0 m +(xlib:drawable\036id,) 107589 0.00 -1 s +( 4\03635) 113386 -81.00 32 s +88234.0 97649.0 m +(xlib:drawable\036p,) 106805 0.00 -1 s +( 4\03635) 112595 -88.00 32 s +88234.0 102300.0 m +(xlib:drawable\036plist,) 110255 0.00 -1 s +( 4\03635) 116072 -61.00 32 s +88234.0 106951.0 m +(xlib:drawable\036root,) 109939 0.00 -1 s +( 4\03646) 115734 -83.00 32 s +88234.0 111602.0 m +(xlib:drawable\036width,) 111821 0.00 -1 s +( 4\03637) 117608 -91.00 32 s +90785.0 114921.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +88234.0 119572.0 m +(xlib:drawable\036x,) 106805 0.00 -1 s +( 4\03638) 112595 -88.00 32 s +90785.0 122891.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +88234.0 127542.0 m +(xlib:drawable\036y,) 106805 0.00 -1 s +( 4\03638) 112595 -88.00 32 s +90785.0 130861.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +/helvps18b 4 declareFont +4 sf +88234.0 141788.0 m +(E) 91622 0.00 -1 s +3 sf +88234.0 147726.0 m +(xlib:event\036case,) 106022 0.00 -1 s +( 12\036123) 114605 -117.00 32 s +90785.0 151045.0 m +(example,) 101051 0.00 -1 s +( 1\0369) 105438 -80.00 32 s +88234.0 155696.0 m +(xlib:event\036cond,) 106651 0.00 -1 s +( 12\036123) 115214 -137.00 32 s +88234.0 160347.0 m +(xlib:event\036listen,) 107279 0.00 -1 s +( 12\036125) 115892 -87.00 32 s +4 sf +88234.0 171275.0 m +(F) 91337 0.00 -1 s +3 sf +88234.0 177213.0 m +(xlib:find\036atom,) 105241 0.00 -1 s +( 11\036112) 113860 -81.00 32 s +88234.0 181864.0 m +(xlib:font\036all\036chars\036exist\036p,) 117931 0.00 -1 s +( 8\03691) 123771 -38.00 32 s +88234.0 186515.0 m +(xlib:font\036ascent,) 106650 0.00 -1 s +( 8\03691) 112460 -68.00 32 s +90785.0 189834.0 m +(example,) 101051 0.00 -1 s +( 1\0367,) 106172 -52.00 32 s +( 1\0368) 110586 -53.00 32 s +88234.0 194485.0 m +(xlib:font\036default\036char,) 113228 0.00 -1 s +( 8\03691) 119030 -76.00 32 s +88234.0 199136.0 m +(xlib:font\036descent,) 108061 0.00 -1 s +( 8\03692) 113860 -79.00 32 s +90785.0 202455.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +134112.0 8737.0 m +(Function Index) 148381 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036223) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(xlib:font\036direction,) 41714 0.00 -1 s +( 8\03692) 47526 -66.00 32 s +20320.0 27387.0 m +(xlib:font\036display,) 39836 0.00 -1 s +( 8\03692) 45652 -62.00 32 s +20320.0 32196.0 m +(xlib:font\036equal,) 37796 0.00 -1 s +( 8\03692) 43598 -76.00 32 s +20320.0 37005.0 m +(xlib:font\036id,) 33879 0.00 -1 s +( 8\03692) 39714 -43.00 32 s +20320.0 41814.0 m +(xlib:font\036max\036byte1,) 43752 0.00 -1 s +( 8\03692) 49536 -94.00 32 s +20320.0 46623.0 m +(xlib:font\036max\036byte2, 8\03692) 49536 -94.00 32 s +20320.0 51432.0 m +(xlib:font\036max\036char,) 42338 0.00 -1 s +( 8\03693) 48136 -80.00 32 s +20320.0 56241.0 m +(xlib:font\036min\036byte1,) 43283 0.00 -1 s +( 8\03693) 49084 -77.00 32 s +20320.0 61050.0 m +(xlib:font\036min\036byte2, 8\03693) 49084 -77.00 32 s +20320.0 65859.0 m +(xlib:font\036min\036char,) 41869 0.00 -1 s +( 8\03693) 47684 -63.00 32 s +20320.0 70668.0 m +(xlib:font\036name,) 37796 0.00 -1 s +( 8\03693) 43598 -76.00 32 s +20320.0 75478.0 m +(xlib:font\036p,) 33095 0.00 -1 s +( 8\03693) 38924 -49.00 32 s +20320.0 80287.0 m +(xlib:font\036path,) 36543 0.00 -1 s +( 8\03690) 42356 -65.00 32 s +20320.0 85096.0 m +(xlib:font\036plist,) 36545 0.00 -1 s +( 8\03693) 42401 -22.00 32 s +20320.0 89905.0 m +(xlib:font\036properties,) 42967 0.00 -1 s +( 8\03694) 48791 -54.00 32 s +20320.0 94714.0 m +(xlib:font\036property,) 41243 0.00 -1 s +( 8\03694) 47052 -69.00 32 s +20320.0 99523.0 m +(xlib:force\036gcontext\036changes,) 52681 0.00 -1 s +( 5\03668) 58409 -150.00 32 s +20320.0 104332.0 m +(xlib:free\036colormap,) 42180 0.00 -1 s +( 9\036102) 49378 -91.00 32 s +20320.0 109141.0 m +(xlib:free\036colors,) 38419 0.00 -1 s +( 9\036104) 45652 -56.00 32 s +20320.0 113950.0 m +(xlib:free\036cursor,) 38574 0.00 -1 s +( 10\036108) 47210 -64.00 32 s +20320.0 118759.0 m +(xlib:free\036gcontext,) 41241 0.00 -1 s +( 5\03668) 47030 -89.00 32 s +20320.0 123568.0 m +(xlib:free\036pixmap,) 39988 0.00 -1 s +( 4\03650) 45788 -78.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 135128.0 m +(G) 24271 0.00 -1 s +3 sf +20320.0 141337.0 m +(xlib:gcontext\036arc\036mode,) 47511 0.00 -1 s +( 5\03655) 53261 -128.00 32 s +20320.0 146146.0 m +(xlib:gcontext\036background,) 50179 0.00 -1 s +( 5\03656) 55880 -177.00 32 s +22871.0 149487.0 m +(example,) 33137 0.00 -1 s +( 1\0366,) 38258 -52.00 32 s +( 1\0368) 42672 -53.00 32 s +20320.0 154297.0 m +(xlib:gcontext\036cache\036p,) 45630 0.00 -1 s +( 5\03656) 51364 -144.00 32 s +20320.0 159106.0 m +(xlib:gcontext\036cap\036style,) 47043 0.00 -1 s +( 5\03656) 52809 -112.00 32 s +20320.0 163915.0 m +(xlib:gcontext\036clip\036x,) 43439 0.00 -1 s +( 5\03658) 49220 -97.00 32 s +20320.0 168724.0 m +(xlib:gcontext\036clip\036y, 5\03658) 49220 -97.00 32 s +20320.0 173533.0 m +(xlib:gcontext\036dash\036offset,) 49393 0.00 -1 s +( 5\03658) 55180 -91.00 32 s +20320.0 178342.0 m +(xlib:gcontext\036dashes,) 44381 0.00 -1 s +( 5\03658) 50145 -114.00 32 s +20320.0 183151.0 m +(xlib:gcontext\036display,) 45009 0.00 -1 s +( 5\03659) 50777 -110.00 32 s +20320.0 187960.0 m +(xlib:gcontext\036equal,) 42969 0.00 -1 s +( 5\03659) 48723 -124.00 32 s +20320.0 192769.0 m +(xlib:gcontext\036exposures,) 48142 0.00 -1 s +( 5\03659) 53893 -127.00 32 s +20320.0 197578.0 m +(xlib:gcontext\036fill\036rule,) 45474 0.00 -1 s +( 5\03659) 51297 -55.00 32 s +20320.0 202387.0 m +(xlib:gcontext\036fill\036style,) 46417 0.00 -1 s +( 5\03660) 52245 -50.00 32 s +88234.0 22578.0 m +(xlib:gcontext\036font,) 109316 0.00 -1 s +( 5\03661) 115102 -92.00 32 s +90785.0 25897.0 m +(example,) 101051 0.00 -1 s +( 1\0367,) 106172 -52.00 32 s +( 1\0368) 110586 -53.00 32 s +88234.0 30548.0 m +(xlib:gcontext\036foreground,) 117307 0.00 -1 s +( 5\03661) 123049 -136.00 32 s +90785.0 33867.0 m +(example,) 101051 0.00 -1 s +( 1\0368) 105438 -80.00 32 s +88234.0 38518.0 m +(xlib:gcontext\036function,) 114175 0.00 -1 s +( 5\03661) 119933 -120.00 32 s +88234.0 43169.0 m +(xlib:gcontext\036id,) 106966 0.00 -1 s +( 5\03662) 112753 -91.00 32 s +88234.0 47820.0 m +(xlib:gcontext\036join\036style,) 115430 0.00 -1 s +( 5\03662) 121220 -88.00 32 s +88234.0 52471.0 m +(xlib:gcontext\036line\036style, 5\03663) 121062 -88.00 32 s +88234.0 57122.0 m +(xlib:gcontext\036line\036width,) 116369 0.00 -1 s +( 5\03663) 122146 -101.00 32 s +88234.0 61773.0 m +(xlib:gcontext\036p,) 106182 0.00 -1 s +( 5\03664) 111963 -97.00 32 s +88234.0 66424.0 m +(xlib:gcontext\036plane\036mask,) 117779 0.00 -1 s +( 5\03664) 123523 -134.00 32 s +88234.0 71075.0 m +(xlib:gcontext\036plist,) 109632 0.00 -1 s +( 5\03665) 115440 -70.00 32 s +88234.0 75726.0 m +(xlib:gcontext\036stipple,) 112296 0.00 -1 s +( 5\03665) 118082 -92.00 32 s +88234.0 80377.0 m +(xlib:gcontext\036subwindow\036mode,) 124991 0.00 -1 s +( 5\03666) 130703 -166.00 32 s +88234.0 85028.0 m +(xlib:gcontext\036tile,) 108376 0.00 -1 s +( 5\03666) 114176 -78.00 32 s +88234.0 89679.0 m +(xlib:gcontext\036ts\036x,) 109003 0.00 -1 s +( 5\03667) 114808 -73.00 32 s +88234.0 94330.0 m +(xlib:gcontext\036ts\036y, 5\03667) 114808 -73.00 32 s +88234.0 98981.0 m +(xlib:get\036image,) 105397 0.00 -1 s +( 7\03685) 111196 -79.00 32 s +88234.0 103632.0 m +(xlib:get\036property,) 108060 0.00 -1 s +( 11\036114) 116659 -101.00 32 s +88234.0 108283.0 m +(xlib:get\036raw\036image,) 110565 0.00 -1 s +( 7\03687) 116366 -77.00 32 s +88234.0 112934.0 m +(xlib:get\036resources,) 109156 0.00 -1 s +( 13\036165) 117766 -90.00 32 s +88234.0 117585.0 m +(xlib:get\036search\036resource,) 116204 0.00 -1 s +( 13\036166) 124787 -117.00 32 s +88234.0 122236.0 m +(xlib:get\036search\036table,) 112132 0.00 -1 s +( 13\036165) 120723 -109.00 32 s +88234.0 126887.0 m +(xlib:global\036pointer\036position,) 120133 0.00 -1 s +( 12\036126) 128716 -117.00 32 s +88234.0 131538.0 m +(xlib:grab\036button,) 107279 0.00 -1 s +( 12\036132) 115869 -110.00 32 s +88234.0 136189.0 m +(xlib:grab\036keyboard,) 110567 0.00 -1 s +( 12\036133,) 119871 -102.00 32 s +( 12\036134) 128468 -103.00 32 s +88234.0 140840.0 m +(xlib:grab\036pointer,) 108060 0.00 -1 s +( 12\036130) 116659 -101.00 32 s +88234.0 145491.0 m +(xlib:grab\036server,) 106960 0.00 -1 s +( 14\036169) 115576 -84.00 32 s +4 sf +88234.0 156419.0 m +(H) 92185 0.00 -1 s +3 sf +88234.0 162357.0 m +(xlib:handler\036function,) 112919 0.00 -1 s +( 12\036122) 121491 -128.00 32 s +4 sf +88234.0 173284.0 m +(I) 90210 0.00 -1 s +3 sf +88234.0 179222.0 m +(xlib:image\036blue\036mask,) 113704 0.00 -1 s +( 7\03681) 119482 -100.00 32 s +88234.0 183873.0 m +(xlib:image\036depth,) 108219 0.00 -1 s +( 7\03681) 113995 -102.00 32 s +88234.0 188524.0 m +(xlib:image\036green\036mask,) 115112 0.00 -1 s +( 7\03681) 120881 -109.00 32 s +88234.0 193175.0 m +(xlib:image\036height,) 109003 0.00 -1 s +( 7\03682) 114785 -96.00 32 s +88234.0 197826.0 m +(xlib:image\036name,) 108061 0.00 -1 s +( 7\03682) 113837 -102.00 32 s +88234.0 202478.0 m +(xlib:image\036plist,) 106810 0.00 -1 s +( 7\03682) 112641 -47.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Function Index) 34589 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +148440 207266 av +21675 207264 as +[] 0 setdash +dp +121885.0 211600.0 m +(CLX) 126034 0.00 -1 s +( Programmer's Reference) 149430 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19864.0 211329.0 m +(Index\036224) 31936 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(xlib:image\036red\036mask,) 44534 0.00 -1 s +( 7\03682) 50326 -86.00 32 s +20320.0 27274.0 m +(xlib:image\036width,) 40462 0.00 -1 s +( 7\03682) 46262 -78.00 32 s +20320.0 31970.0 m +(xlib:image\036x\036hot,) 39991 0.00 -1 s +( 7\03682) 45788 -81.00 32 s +20320.0 36666.0 m +(xlib:image\036xy\036bitmap\036list,) 50023 0.00 -1 s +( 7\03683) 55835 -66.00 32 s +20320.0 41362.0 m +(xlib:image\036y\036hot,) 39991 0.00 -1 s +( 7\03682) 45788 -81.00 32 s +20320.0 46059.0 m +(xlib:image\036z\036bits\036per\036pixel,) 51428 0.00 -1 s +( 7\03683) 57235 -71.00 32 s +20320.0 50755.0 m +(xlib:image\036z\036pixarray,) 45628 0.00 -1 s +( 7\03683) 51410 -96.00 32 s +20320.0 55451.0 m +(xlib:input\036focus,) 39052 0.00 -1 s +( 12\036129) 47662 -90.00 32 s +20320.0 60147.0 m +(xlib:install\036colormap,) 44694 0.00 -1 s +( 9\036102) 51906 -77.00 32 s +20320.0 64843.0 m +(xlib:installed\036colormaps,) 48456 0.00 -1 s +( 9\036102) 55654 -91.00 32 s +20320.0 69540.0 m +(xlib:intern\036atom,) 39364 0.00 -1 s +( 11\036112) 47978 -86.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 80625.0 m +(K) 24271 0.00 -1 s +3 sf +20320.0 86631.0 m +(xlib:keyboard\036control,) 45632 0.00 -1 s +( 14\036172) 54187 -145.00 32 s +20320.0 91327.0 m +(xlib:keyboard\036mapping,) 47515 0.00 -1 s +( 14\036175) 56038 -177.00 32 s +20320.0 96023.0 m +(xlib:keycode\036character,) 46880 0.00 -1 s +( 14\036176) 55406 -174.00 32 s +20320.0 100719.0 m +(xlib:keycode\036keysym, 14\036175) 53848 -173.00 32 s +20320.0 105416.0 m +(xlib:kill\036client,) 37171 0.00 -1 s +( 14\036178) 45810 -61.00 32 s +20320.0 110112.0 m +(xlib:kill\036temporary\036clients,) 50804 0.00 -1 s +( 14\036178) 59425 -79.00 32 s +4 sf +20320.0 121198.0 m +(L) 23708 0.00 -1 s +3 sf +20320.0 127203.0 m +(xlib:list\036extensions,) 42503 0.00 -1 s +( 15\036183) 51139 -64.00 32 s +20320.0 131899.0 m +(xlib:list\036font\036names,) 43283 0.00 -1 s +( 8\03691) 49129 -32.00 32 s +20320.0 136596.0 m +(xlib:list\036fonts,) 36232 0.00 -1 s +( 8\03691) 42108 -2.00 32 s +20320.0 141292.0 m +(xlib:list\036properties,) 41872 0.00 -1 s +( 11\036114) 50529 -43.00 32 s +20320.0 145988.0 m +(xlib:lookup\036color,) 40776 0.00 -1 s +( 9\036105) 47955 -110.00 32 s +4 sf +20320.0 157074.0 m +(M) 25115 0.00 -1 s +3 sf +20320.0 163079.0 m +(xlib:make\036color,) 39049 0.00 -1 s +( 9\036100) 46239 -99.00 32 s +20320.0 167775.0 m +(xlib:make\036event\036keys,) 45475 0.00 -1 s +( 1\03616) 51229 -124.00 32 s +20320.0 172472.0 m +(xlib:make\036event\036mask,) 46259 0.00 -1 s +( 1\03616) 52019 -118.00 32 s +22871.0 175791.0 m +(example,) 33137 0.00 -1 s +( 1\0365,) 38258 -52.00 32 s +( 1\0366) 42672 -53.00 32 s +20320.0 180487.0 m +(xlib:make\036resource\036database,) 53463 0.00 -1 s +( 13\036162) 61999 -164.00 32 s +20320.0 185183.0 m +(xlib:make\036state\036keys,) 44535 0.00 -1 s +( 1\03620) 50326 -87.00 32 s +20320.0 189879.0 m +(xlib:make\036state\036mask,) 45319 0.00 -1 s +( 1\03620) 51116 -81.00 32 s +20320.0 194575.0 m +(xlib:map\036resource,) 41555 0.00 -1 s +( 13\036163) 50145 -110.00 32 s +20320.0 199271.0 m +(xlib:map\036subwindows,) 46107 0.00 -1 s +( 4\03649) 51884 -101.00 32 s +22871.0 202590.0 m +(example,) 33137 0.00 -1 s +( 1\0367) 37524 -80.00 32 s +88234.0 22578.0 m +(xlib:map\036window,) 109003 0.00 -1 s +( 4\03648) 114785 -96.00 32 s +88234.0 27161.0 m +(xlib:max\036char\036ascent,) 112759 0.00 -1 s +( 8\03694) 118533 -104.00 32 s +88234.0 31744.0 m +(xlib:max\036char\036attributes,) 116208 0.00 -1 s +( 8\03694) 122010 -76.00 32 s +88234.0 36328.0 m +(xlib:max\036char\036descent,) 114170 0.00 -1 s +( 8\03694) 119933 -115.00 32 s +88234.0 40911.0 m +(xlib:max\036char\036left\036bearing,) 118868 0.00 -1 s +( 8\03694) 124652 -94.00 32 s +88234.0 45494.0 m +(xlib:max\036char\036right\036bearing,) 120437 0.00 -1 s +( 8\03694) 126210 -105.00 32 s +88234.0 50078.0 m +(xlib:max\036char\036width,) 112134 0.00 -1 s +( 8\03694) 117924 -88.00 32 s +88234.0 54661.0 m +(xlib:merge\036resources,) 112759 0.00 -1 s +( 13\036163) 121356 -103.00 32 s +88234.0 59244.0 m +(xlib:min\036char\036ascent) 111584 0.00 -1 s +( , 8\03695) 118782 -46.00 32 s +88234.0 63827.0 m +(xlib:min\036char\036attributes,) 115739 0.00 -1 s +( 8\03695) 121559 -58.00 32 s +88234.0 68411.0 m +(xlib:min\036char\036descent,) 113701 0.00 -1 s +( 8\03695) 119482 -97.00 32 s +88234.0 72994.0 m +(xlib:min\036char\036left\036bearing,) 118399 0.00 -1 s +( 8\03695) 124200 -77.00 32 s +88234.0 77577.0 m +(xlib:min\036char\036right\036bearing,) 119968 0.00 -1 s +( 8\03695) 125758 -88.00 32 s +88234.0 82161.0 m +(xlib:min\036char\036width,) 111665 0.00 -1 s +( 8\03695) 117472 -71.00 32 s +88234.0 86744.0 m +(xlib:modifier\036mapping,) 114645 0.00 -1 s +( 14\036172) 123230 -115.00 32 s +88234.0 91327.0 m +(xlib:motion\036events,) 110259 0.00 -1 s +( 12\036127) 118849 -110.00 32 s +4 sf +88234.0 101984.0 m +(O) 92185 0.00 -1 s +3 sf +88234.0 107831.0 m +(xlib:open\036display,) 108691 0.00 -1 s +( 2\03623) 114469 -100.00 32 s +90785.0 111150.0 m +(example,) 101051 0.00 -1 s +( 1\03610) 106838 -91.00 32 s +88234.0 115734.0 m +(xlib:open\036font,) 105084 0.00 -1 s +( 8\03690) 110880 -82.00 32 s +90785.0 119053.0 m +(example,) 101051 0.00 -1 s +( 1\03610) 106838 -91.00 32 s +4 sf +88234.0 129709.0 m +(P) 91337 0.00 -1 s +3 sf +88234.0 135557.0 m +(xlib:pixmap\036display,) 111670 0.00 -1 s +( 4\03650) 117450 -98.00 32 s +88234.0 140140.0 m +(xlib:pixmap\036equal,) 109630 0.00 -1 s +( 4\03650) 115395 -113.00 32 s +88234.0 144724.0 m +(xlib:pixmap\036id,) 105713 0.00 -1 s +( 4\03650) 111512 -79.00 32 s +88234.0 149307.0 m +(xlib:pixmap\036p,) 104929 0.00 -1 s +( 4\03651) 110721 -86.00 32 s +88234.0 153890.0 m +(xlib:pixmap\036plist,) 108379 0.00 -1 s +( 4\03651) 114198 -59.00 32 s +88234.0 158473.0 m +(xlib:pointer\036control,) 111039 0.00 -1 s +( 14\036170) 119640 -99.00 32 s +88234.0 163057.0 m +(xlib:pointer\036mapping,) 112922 0.00 -1 s +( 14\036170) 121491 -131.00 32 s +88234.0 167640.0 m +(xlib:pointer\036position,) 112140 0.00 -1 s +( 12\036126) 120746 -94.00 32 s +88234.0 172223.0 m +(xlib:process\036event,) 109628 0.00 -1 s +( 12\036122) 118217 -111.00 32 s +88234.0 176807.0 m +(xlib:put\036image,) 105555 0.00 -1 s +( 7\03686) 111354 -79.00 32 s +88234.0 181390.0 m +(xlib:put\036raw\036image,) 110723 0.00 -1 s +( 7\03688) 116524 -77.00 32 s +4 sf +88234.0 192047.0 m +(Q) 92185 0.00 -1 s +3 sf +88234.0 197894.0 m +(xlib:query\036best\036cursor,) 114014 0.00 -1 s +( 10\036109) 122620 -94.00 32 s +88234.0 202478.0 m +(xlib:query\036best\036stipple,) 114488 0.00 -1 s +( 5\03667) 120294 -72.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +134112.0 8737.0 m +(Function Index) 148381 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 207264 av +149013 207262 as +[] 0 setdash +dp +20320.0 211327.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +136941.0 h +(Index\036225) 149013 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(xlib:query\036best\036tile,) 42654 0.00 -1 s +( 5\03667) 48474 -58.00 32 s +20320.0 27387.0 m +(xlib:query\036colors,) 40460 0.00 -1 s +( 9\036105) 47662 -87.00 32 s +20320.0 32196.0 m +(xlib:query\036extension,) 44380 0.00 -1 s +( 15\036183) 52945 -135.00 32 s +20320.0 37005.0 m +(xlib:query\036keymap,) 42498 0.00 -1 s +( 14\036172) 51048 -150.00 32 s +20320.0 41814.0 m +(xlib:query\036pointer,) 41557 0.00 -1 s +( 12\036126) 50145 -112.00 32 s +22871.0 45156.0 m +(example,) 33137 0.00 -1 s +( 1\03610) 38924 -91.00 32 s +20320.0 49965.0 m +(xlib:query\036tree,) 37793 0.00 -1 s +( 4\03646) 43598 -73.00 32 s +20320.0 54774.0 m +(xlib:queue\036event,) 39990 0.00 -1 s +( 12\036124) 48542 -148.00 32 s +/helvps18b 4 declareFont +4 sf +20320.0 66288.0 m +(R) 23987 0.00 -1 s +3 sf +20320.0 72475.0 m +(xlib:read\036bitmap\036file,) 44532 0.00 -1 s +( 7\03687) 50348 -62.00 32 s +20320.0 77284.0 m +(xlib:read\036resources,) 42650 0.00 -1 s +( 13\036166) 51252 -98.00 32 s +20320.0 82093.0 m +(xlib:recolor\036cursor,) 42180 0.00 -1 s +( 10\036109) 50800 -80.00 32 s +20320.0 86902.0 m +(xlib:remove\036access\036host,) 48452 0.00 -1 s +( 14\036180) 57031 -121.00 32 s +20320.0 91711.0 m +(xlib:remove\036from\036save\036set) 50407 0.00 -1 s +( ,) 51769 -50.00 32 s +( 14\036178) 60418 -51.00 32 s +20320.0 96520.0 m +(xlib:reparent\036window,) 45473 0.00 -1 s +( 4\03646) 51252 -99.00 32 s +20320.0 101329.0 m +(xlib:reset\036screen\036saver,) 46566 0.00 -1 s +( 14\036180) 55180 -86.00 32 s +20320.0 106138.0 m +(xlib:rotate\036properties,) 44846 0.00 -1 s +( 11\036114) 53464 -82.00 32 s +4 sf +20320.0 117653.0 m +(S) 23144 0.00 -1 s +3 sf +20320.0 123839.0 m +(xlib:screen\036backing\036stores,) 50802 0.00 -1 s +( 3\03632) 56580 -100.00 32 s +20320.0 128648.0 m +(xlib:screen\036black\036pixel,) 47040 0.00 -1 s +( 3\03632) 52809 -109.00 32 s +22871.0 131990.0 m +(example,) 33137 0.00 -1 s +( 1\03610) 38924 -91.00 32 s +20320.0 136799.0 m +(xlib:screen\036default\036colormap,) 53777 0.00 -1 s +( 3\03632) 59538 -117.00 32 s +20320.0 141608.0 m +(xlib:screen\036depths,) 41714 0.00 -1 s +( 3\03632) 47504 -88.00 32 s +20320.0 146417.0 m +(xlib:screen\036event\036mask\036at\036open,) 56755 0.00 -1 s +( 3\03632) 62495 -138.00 32 s +20320.0 151226.0 m +(xlib:screen\036height,) 41400 0.00 -1 s +( 3\03633) 47188 -90.00 32 s +20320.0 156035.0 m +(xlib:screen\036height\036in\036millimeters,) 58326 0.00 -1 s +( 3\03633) 64143 -61.00 32 s +20320.0 160844.0 m +(xlib:screen\036max\036installed\036maps,) 56602 0.00 -1 s +( 3\03633) 62382 -98.00 32 s +20320.0 165653.0 m +(xlib:screen\036min\036installed\036maps,) 56133 0.00 -1 s +( 3\03633) 61931 -80.00 32 s +20320.0 170462.0 m +(xlib:screen\036p,) 35757 0.00 -1 s +( 3\03633) 41566 -69.00 32 s +20320.0 175271.0 m +(xlib:screen\036plist,) 39207 0.00 -1 s +( 3\03633) 45043 -42.00 32 s +20320.0 180080.0 m +(xlib:screen\036root,) 38891 0.00 -1 s +( 3\03633) 44704 -65.00 32 s +22871.0 183422.0 m +(example,) 33137 0.00 -1 s +( 1\03610) 38924 -91.00 32 s +20320.0 188231.0 m +(xlib:screen\036root\036depth,) 46100 0.00 -1 s +( 3\03634) 51884 -94.00 32 s +20320.0 193040.0 m +(xlib:screen\036root\036visual,) 46571 0.00 -1 s +( 3\03634) 52380 -69.00 32 s +20320.0 197849.0 m +(xlib:screen\036save\036unders\036p,) 50173 0.00 -1 s +( 3\03634) 55948 -103.00 32 s +20320.0 202658.0 m +(xlib:screen\036saver,) 40300 0.00 -1 s +( 14\036180) 48903 -97.00 32 s +88234.0 22578.0 m +(xlib:screen\036white\036pixel,) 115111 0.00 -1 s +( 3\03634) 120904 -85.00 32 s +90785.0 25897.0 m +(example,) 101051 0.00 -1 s +( 1\03610) 106838 -91.00 32 s +88234.0 30525.0 m +(xlib:screen\036width,) 108687 0.00 -1 s +( 3\03634) 114492 -73.00 32 s +88234.0 35154.0 m +(xlib:screen\036width\036in\036millimeters,) 125613 0.00 -1 s +( 3\03634) 131448 -43.00 32 s +88234.0 39782.0 m +(xlib:selection\036owner,) 112135 0.00 -1 s +( 11\036117) 120723 -112.00 32 s +88234.0 44410.0 m +(xlib:send\036event,) 106338 0.00 -1 s +( 12\036125) 114921 -117.00 32 s +88234.0 49039.0 m +(xlib:set\036input\036focus,) 111040 0.00 -1 s +( 12\036128) 119662 -78.00 32 s +88234.0 53667.0 m +(xlib:set\036modifier\036mapping,) 118719 0.00 -1 s +( 14\036172) 127316 -103.00 32 s +88234.0 58296.0 m +(xlib:set\036screen\036saver,) 112288 0.00 -1 s +( 14\036181) 120904 -84.00 32 s +88234.0 62924.0 m +(xlib:store\036color,) 106336 0.00 -1 s +( 9\036105) 113566 -59.00 32 s +88234.0 67553.0 m +(xlib:store\036colors,) 107434 0.00 -1 s +( 9\036106) 114673 -50.00 32 s +4 sf +88234.0 78322.0 m +(T) 91622 0.00 -1 s +3 sf +88234.0 84215.0 m +(xlib:text\036extents,) 107279 0.00 -1 s +( 8\03697) 113092 -65.00 32 s +90785.0 87534.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +88234.0 92162.0 m +(xlib:text\036width,) 105712 0.00 -1 s +( 8\03698) 111534 -56.00 32 s +88234.0 96791.0 m +(xlib:translate\036coordinates,) 117620 0.00 -1 s +( 4\03647) 123410 -88.00 32 s +88234.0 101419.0 m +(xlib:translate\036function,) 114016 0.00 -1 s +( 6\03678) 119820 -74.00 32 s +4 sf +88234.0 112189.0 m +(U) 91901 0.00 -1 s +3 sf +88234.0 118082.0 m +(xlib:ungrab\036button,) 110101 0.00 -1 s +( 12\036133) 118669 -132.00 32 s +88234.0 122710.0 m +(xlib:ungrab\036key,) 106964 0.00 -1 s +( 12\036135) 115531 -133.00 32 s +88234.0 127339.0 m +(xlib:ungrab\036keyboard,) 113389 0.00 -1 s +( 12\036134) 121920 -169.00 32 s +88234.0 131967.0 m +(xlib:ungrab\036pointer,) 110882 0.00 -1 s +( 12\036131) 119459 -123.00 32 s +88234.0 136596.0 m +(xlib:ungrab\036server,) 109782 0.00 -1 s +( 14\036169) 118375 -107.00 32 s +88234.0 141224.0 m +(xlib:uninstall\036colormap,) 115430 0.00 -1 s +( 9\036103) 122620 -99.00 32 s +88234.0 145852.0 m +(xlib:unmap\036subwindows,) 116843 0.00 -1 s +( 4\03649) 122597 -124.00 32 s +88234.0 150481.0 m +(xlib:unmap\036window,) 111825 0.00 -1 s +( 4\03649) 117585 -118.00 32 s +90785.0 153800.0 m +(example,) 101051 0.00 -1 s +( 1\0369) 105438 -80.00 32 s +4 sf +88234.0 164569.0 m +(W) 93314 0.00 -1 s +3 sf +88234.0 170462.0 m +(xlib:warp\036pointer,) 108686 0.00 -1 s +( 12\036127) 117292 -94.00 32 s +88234.0 175091.0 m +(xlib:warp\036pointer\036if\036inside,) 119028 0.00 -1 s +( 12\036127) 127655 -73.00 32 s +88234.0 179719.0 m +(xlib:warp\036pointer\036relative,) 118086 0.00 -1 s +( 12\036127) 126684 -102.00 32 s +88234.0 184348.0 m +(xlib:warp\036pointer\036relative\036if\036inside,) 128428 0.00 -1 s +( 12\036128) 137047 -81.00 32 s +88234.0 188976.0 m +(xlib:window\036all\036event\036masks) 121304 0.00 -1 s +( , 4\03638) 128490 -52.00 32 s +88234.0 193604.0 m +(xlib:window\036background,) 117466 0.00 -1 s +( 4\03638) 123184 -160.00 32 s +88234.0 198233.0 m +(xlib:window\036backing\036pixel,) 119660 0.00 -1 s +( 4\03639) 125397 -141.00 32 s +88234.0 202861.0 m +(xlib:window\036backing\036planes,) 121227 0.00 -1 s +( 4\03639) 126955 -150.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Function Index) 34589 -27.00 32 s +541.0 sw +0.0 0.0 m +newpath +148440 207266 av +21675 207264 as +[] 0 setdash +dp +121885.0 211600.0 m +(CLX) 126034 0.00 -1 s +( Programmer's Reference) 149430 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19864.0 211329.0 m +(Index\036226) 31936 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +(xlib:window\036backing\036store,) 51588 0.00 -1 s +( 4\03639) 57348 -118.00 32 s +20320.0 27387.0 m +(xlib:window\036bit\036gravity,) 48141 0.00 -1 s +( 4\03639) 53938 -81.00 32 s +20320.0 32196.0 m +(xlib:window\036border,) 43594 0.00 -1 s +( 4\03640) 49378 -94.00 32 s +20320.0 37005.0 m +(xlib:window\036class,) 41716 0.00 -1 s +( 4\03640) 47526 -68.00 32 s +20320.0 41814.0 m +(xlib:window\036colormap,) 46887 0.00 -1 s +( 4\03640) 52651 -114.00 32 s +20320.0 46623.0 m +(xlib:window\036colormap\036installed\036p,) 59738 0.00 -1 s +( 4\03640) 65498 -118.00 32 s +20320.0 51432.0 m +(xlib:window\036cursor,) 43281 0.00 -1 s +( 4\03641) 49084 -75.00 32 s +20320.0 56241.0 m +(xlib:window\036display,) 44382 0.00 -1 s +( 4\03641) 50168 -92.00 32 s +20320.0 61050.0 m +(xlib:window\036do\036not\036propagate\036mask,) 62558 0.00 -1 s +( 4\03641) 68275 -161.00 32 s +20320.0 65859.0 m +(xlib:window\036equal,) 42342 0.00 -1 s +( 4\03641) 48113 -107.00 32 s +20320.0 70668.0 m +(xlib:window\036event\036mask,) 49238 0.00 -1 s +( 4\03641) 54999 -117.00 32 s +20320.0 75478.0 m +(xlib:window\036gravity,) 44223 0.00 -1 s +( 4\03641) 50010 -91.00 32 s +20320.0 80287.0 m +(xlib:window\036id,) 38425 0.00 -1 s +( 4\03642) 44230 -73.00 32 s +20320.0 85096.0 m +(xlib:window\036map\036state,) 47200 0.00 -1 s +( 4\03642) 52990 -88.00 32 s +88234.0 22578.0 m +(xlib:window\036override\036redirect,) 123100 0.00 -1 s +( 4\03642) 128874 -104.00 32 s +88234.0 27229.0 m +(xlib:window\036p,) 105555 0.00 -1 s +( 4\03643) 111354 -79.00 32 s +88234.0 31880.0 m +(xlib:window\036plist,) 109005 0.00 -1 s +( 4\03643) 114831 -52.00 32 s +88234.0 36531.0 m +(xlib:window\036priority,) 112607 0.00 -1 s +( 4\03643) 118420 -65.00 32 s +88234.0 41182.0 m +(xlib:window\036save\036under,) 116523 0.00 -1 s +( 4\03643) 122281 -120.00 32 s +88234.0 45833.0 m +(xlib:window\036visual,) 110885 0.00 -1 s +( 4\03643) 116682 -81.00 32 s +88234.0 50484.0 m +(xlib:with\036display,) 108221 0.00 -1 s +( 2\03629) 114040 -59.00 32 s +88234.0 55135.0 m +(xlib:with\036event\036queue,) 113859 0.00 -1 s +( 12\036125) 122417 -142.00 32 s +88234.0 59786.0 m +(xlib:with\036gcontext,) 109787 0.00 -1 s +( 5\03668) 115576 -89.00 32 s +90785.0 63105.0 m +(example,) 101051 0.00 -1 s +( 1\0368) 105438 -80.00 32 s +88234.0 67756.0 m +(xlib:with\036server\036grabbed,) 116990 0.00 -1 s +( 14\036169) 125578 -112.00 32 s +88234.0 72407.0 m +(xlib:with\036state,) 105241 0.00 -1 s +( 4\03643) 111083 -36.00 32 s +90785.0 75726.0 m +(example,) 101051 0.00 -1 s +( 1\0367) 105438 -80.00 32 s +88234.0 80377.0 m +(xlib:write\036bitmap\036file,) 113387 0.00 -1 s +( 7\03687) 119233 -32.00 32 s +88234.0 85028.0 m +(xlib:write\036resources,) 111505 0.00 -1 s +( 13\036167) 120136 -69.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/contents.ps +++ cmucl-20a-20090928/own-work/clx/contents.ps @@ -0,0 +1,1183 @@ +%!PS-Adobe-2.0 +%%Title: contents.ps +%%Pages: 4 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 7 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps8i /ILtimsi 8 map + /timsps12b /ILtimsb 12 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /symbb10 /ILsymbb 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 7 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps8i 1 declareFont +1 sf +20320.0 208619.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +148229.0 h +(i) 149013 0.00 -1 s +/timsps18b 3 declareFont +3 sf +84825.0 24271.0 m +31902.0 v +39534.0 v +79474.0 47165.0 m +(CLX) 90196 0.00 -1 s +55564.0 54796.0 m +(Common LISP X) 93097 2.00 32 s +( Interface) 114108 1.00 32 s +/symbb10 5 declareFont +5 sf +58815.0 162605.0 m +(\343) 61044 0.00 -1 s +/timsps10 4 declareFont +4 sf +( 1988, 1989 Texas Instruments) 95756 -42.00 32 s +( Incorporated) 110834 -43.00 32 s +20320.0 170846.0 m +(Permission) 32862 0.00 -1 s +( is granted to any individual or institution to use, copy, modify and distribute this document, provided that) 149352 -193.00 32 s +20320.0 174007.0 m +(this) 24397 0.00 -1 s +( complete copyright and permission notice is maintained, intact, in all copies and supporting documentation.) 149465 194.14 32 s +20320.0 177168.0 m +(Texas) 27059 0.00 -1 s +( Instruments Incorporated makes no representations about the suitability of) 113862 249.00 32 s +( this document or the software) 149352 248.40 32 s +20320.0 180329.0 m +(described) 31133 0.00 -1 s +( herein for any purpose. It is provided "as is" without express or implied warranty.) 124584 -23.93 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +/timsps8i 1 declareFont +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +/timsps10b 2 declareFont +2 sf +20378.0 209161.0 m +(ii) 21946 0.00 -1 s +/timsps18b 3 declareFont +3 sf +92975.0 24271.0 m +(ACKNOWLEDGMENTS) 149414 0.00 -1 s +/timsps10 4 declareFont +4 sf +20320.0 28380.0 m +0.0 0.0 m +newpath +20455 26756 av +149013 26754 as +[] 0 setdash +dp +149352.0 28380.0 m +20320.0 38721.0 m +30480.0 h +(Primary) 39570 0.00 -1 s +( Interface) 50268 -32.00 32 s +( Author:) 59718 -33.00 32 s +20320.0 42424.0 m +30480.0 h +35560.0 h +(Robert) 43240 0.00 -1 s +( W.) 47282 -34.00 32 s +( Scheifler) 58138 -35.00 32 s +20320.0 46126.0 m +30480.0 h +35560.0 h +40640.0 h +(MIT) 45812 0.00 -1 s +( Laboratory for Computer Science) 84351 -43.00 32 s +20320.0 49829.0 m +30480.0 h +35560.0 h +40640.0 h +(545) 44873 0.00 -1 s +( Technology Square, Room 418) 80580 -67.75 32 s +20320.0 53532.0 m +30480.0 h +35560.0 h +40640.0 h +(Cambridge,) 53885 0.00 -1 s +( MA 02139) 68162 -37.00 32 s +20320.0 57235.0 m +30480.0 h +35560.0 h +40640.0 h +(rws@zermatt.lcs.mit.edu) 68865 0.00 -1 s +20320.0 63782.0 m +30480.0 h +(Primary) 39570 0.00 -1 s +( Implementation) 58096 -48.00 32 s +( Author:) 67530 -49.00 32 s +20320.0 67485.0 m +30480.0 h +35560.0 h +(LaMott) 44025 0.00 -1 s +( Oren) 50326 -45.00 32 s +20320.0 71188.0 m +30480.0 h +35560.0 h +40640.0 h +(Texas) 47379 0.00 -1 s +( Instruments) 61366 -42.00 32 s +20320.0 74890.0 m +30480.0 h +35560.0 h +40640.0 h +(PO) 44246 0.00 -1 s +( Box 655474, MS 238) 69065 -48.00 32 s +20320.0 78593.0 m +30480.0 h +35560.0 h +40640.0 h +(Dallas,) 48555 0.00 -1 s +( TX) 52996 -26.00 32 s +( 75265) 62089 -26.67 32 s +20320.0 82296.0 m +30480.0 h +35560.0 h +40640.0 h +(oren@csc.ti.com) 59696 0.00 -1 s +20320.0 88844.0 m +30480.0 h +(Design) 38474 0.00 -1 s +( Contributors:) 54187 -42.00 32 s +20320.0 92546.0 m +30480.0 h +35560.0 h +(Dan) 40261 0.00 -1 s +( Cerys, BBN) 54683 -40.00 32 s +20320.0 96249.0 m +30480.0 h +35560.0 h +(Scott) 41361 0.00 -1 s +( Fahlman, CMU) 59673 -55.00 32 s +20320.0 99952.0 m +30480.0 h +35560.0 h +(Kerry) 42139 0.00 -1 s +( Kimbrough, Texas Instruments) 77916 -39.67 32 s +20320.0 103655.0 m +30480.0 h +35560.0 h +(Chris) 41674 0.00 -1 s +( Lindblad,) 53242 -33.00 32 s +( MIT) 59086 -34.00 32 s +20320.0 107357.0 m +30480.0 h +35560.0 h +(Rob) 40264 0.00 -1 s +( MacLachlan, CMU) 62766 -74.00 32 s +20320.0 111060.0 m +30480.0 h +35560.0 h +(Mike) 41517 0.00 -1 s +( McMahon,) 54617 -69.00 32 s +( Symbolics) 67169 -70.00 32 s +20320.0 114763.0 m +30480.0 h +35560.0 h +(David) 42456 0.00 -1 s +( Moon,) 50547 -63.00 32 s +( Symbolics) 63105 -64.00 32 s +20320.0 118466.0 m +30480.0 h +35560.0 h +(LaMott) 44025 0.00 -1 s +( Oren, Texas Instruments) 72452 -33.00 32 s +20320.0 122168.0 m +30480.0 h +35560.0 h +(Daniel) 43082 0.00 -1 s +( Weinreb, Symbolics) 66717 -57.00 32 s +20320.0 125871.0 m +30480.0 h +35560.0 h +(John) 40891 0.00 -1 s +( Wroclawski,) 55905 -32.00 32 s +( MIT) 61750 -33.00 32 s +20320.0 129574.0 m +30480.0 h +35560.0 h +(Richard) 44493 0.00 -1 s +( Zippel,) 53210 -62.00 32 s +( Symbolics) 65769 -63.00 32 s +20320.0 136121.0 m +30480.0 h +(Documentation) 47878 0.00 -1 s +( Contributors:) 63534 -99.00 32 s +20320.0 139824.0 m +30480.0 h +35560.0 h +(Keith) 41829 0.00 -1 s +( Cessna, Texas) 58615 -33.00 32 s +( Instruments) 72610 -34.00 32 s +20320.0 143527.0 m +30480.0 h +35560.0 h +(Kerry) 42139 0.00 -1 s +( Kimbrough, Texas Instruments) 77916 -39.67 32 s +20320.0 147230.0 m +30480.0 h +35560.0 h +(Mike) 41517 0.00 -1 s +( Myjak) 49536 -55.00 32 s +20320.0 150932.0 m +30480.0 h +35560.0 h +(LaMott) 44025 0.00 -1 s +( Oren, Texas Instruments) 72452 -33.00 32 s +20320.0 154635.0 m +30480.0 h +35560.0 h +(Dan) 40261 0.00 -1 s +( Stenger, Texas Instruments) 71639 -42.67 32 s +20320.0 181503.0 m +(The) 24708 0.00 -1 s +( X Window System is a trademark of MIT.) 73039 -22.88 32 s +20320.0 188050.0 m +(UNIX is a trademark of AT&T Bell Laboratories.) 76426 -22.57 32 s +20320.0 194598.0 m +(ULTRIX,) 31369 0.00 -1 s +( ULTRIX-32, ULTRIX-32m, ULTRIX-32w, and VAX/VMS are trademarks) 123102 521.00 32 s +( of Digital Equipment) 149352 520.33 32 s +20320.0 198301.0 m +(Corporation.) 34662 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps8i 1 declareFont +1 sf +20320.0 208619.0 m +(CLX Programmer's Reference) 47961 0.00 32 s +/timsps10b 2 declareFont +2 sf +146661.0 h +(iii) 149013 0.00 -1 s +/timsps18b 3 declareFont +3 sf +121446.0 24271.0 m +(CONTENTS) 149386 0.00 -1 s +/timsps10 4 declareFont +4 sf +20320.0 28380.0 m +0.0 0.0 m +newpath +20455 26756 av +149013 26754 as +[] 0 setdash +dp +149352.0 28380.0 m +2 sf +20320.0 36689.0 m +(Section) 29098 0.00 -1 s +60960.0 h +(Title) 66602 0.00 -1 s +4 sf +20320.0 40234.0 m +0.0 0.0 m +newpath +20455 38610 av +149013 38608 as +[] 0 setdash +dp +149352.0 40234.0 m +2 sf +20320.0 48542.0 m +(1) 21731 0.00 -1 s +60960.0 h +(INTRODUCTION TO) 88274 -41.00 32 s +( CLX) 94894 -42.00 32 s +20320.0 55428.0 m +(2) 21731 0.00 -1 s +60960.0 h +(DISPLAYS) 74913 0.00 -1 s +20320.0 62315.0 m +(3) 21731 0.00 -1 s +60960.0 h +(SCREENS) 73973 0.00 -1 s +20320.0 69201.0 m +(4) 21731 0.00 -1 s +60960.0 h +(WINDOWS) 75540 0.00 -1 s +( AND) 82321 -36.00 32 s +( PIXMAPS) 95843 -37.00 32 s +20320.0 76087.0 m +(5) 21731 0.00 -1 s +60960.0 h +(GRAPHICS) 75852 0.00 -1 s +( CONTEXTS) 91982 -97.00 32 s +20320.0 82973.0 m +(6) 21731 0.00 -1 s +60960.0 h +(GRAPHIC) 74283 0.00 -1 s +( OPERATIONS) 93562 -83.00 32 s +20320.0 89860.0 m +(7) 21731 0.00 -1 s +60960.0 h +(IMAGES) 72405 0.00 -1 s +20320.0 96746.0 m +(8) 21731 0.00 -1 s +60960.0 h +(FONTS) 70367 0.00 -1 s +( AND) 77121 -63.00 32 s +( CHARACTERS) 97513 -64.00 32 s +20320.0 103632.0 m +(9) 21731 0.00 -1 s +60960.0 h +(COLORS) 72875 0.00 -1 s +20320.0 110518.0 m +(10) 23142 0.00 -1 s +60960.0 h +(CURSORS) 74441 0.00 -1 s +20320.0 117404.0 m +(11) 23142 0.00 -1 s +60960.0 h +(ATOMS,) 72013 0.00 -1 s +( PROPERTIES, AND SELECTIONS) 116817 -64.67 32 s +20320.0 124291.0 m +(12) 23142 0.00 -1 s +60960.0 h +(EVENTS) 72249 0.00 -1 s +( AND INPUT) 88460 -45.00 32 s +20320.0 131177.0 m +(13) 23142 0.00 -1 s +60960.0 h +(RESOURCES) 78205 0.00 -1 s +20320.0 138063.0 m +(14) 23142 0.00 -1 s +60960.0 h +(CONTROL) 75225 0.00 -1 s +( FUNCTIONS) 92456 -91.00 32 s +20320.0 144949.0 m +(15) 23142 0.00 -1 s +60960.0 h +(EXTENSIONS) 79148 0.00 -1 s +20320.0 151836.0 m +(16) 23142 0.00 -1 s +60960.0 h +(ERRORS) 72717 0.00 -1 s +20320.0 158722.0 m +(A) 22357 0.00 -1 s +60960.0 h +(PROTOCOL) 77107 0.00 -1 s +( VS. CLX FUNCTION) 104400 -46.67 32 s +20320.0 161544.0 m +60960.0 h +(CROSS\036REFERENCE) 88706 0.00 -1 s +( LISTING) 101058 -115.00 32 s +20320.0 168430.0 m +(B) 22202 0.00 -1 s +60960.0 h +(GLOSSARY) 76481 0.00 -1 s +20320.0 175316.0 m +60960.0 h +(INDEX) 70051 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +541.0 sw +0.0 0.0 m +newpath +20862 204826 av +149013 204823 as +[] 0 setdash +dp +/timsps8i 1 declareFont +1 sf +121536.0 209160.0 m +(CLX Programmer's Reference) 149081 -48.00 32 s +/timsps10b 2 declareFont +2 sf +19751.0 209161.0 m +(iv) 21946 0.00 -1 s +/timsps18b 3 declareFont +3 sf +149352.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/condition.ps +++ cmucl-20a-20090928/own-work/clx/condition.ps @@ -0,0 +1,943 @@ +%!PS-Adobe-2.0 +%%Title: condition.ps +%%Pages: 1 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 5 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /helvps18b /ILhelvpsb 18 map + /timsps8i /ILtimsi 8 map + /timsps10b /ILtimsb 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Times-Italic /ILhelvpsb ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 5 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Conditions ) 30801 -16.00 32 s +( Index) 36373 -17.00 32 s +541.0 sw +0.0 0.0 m +newpath +148473 207264 av +20320 207262 as +[] 0 setdash +dp +120832.0 211327.0 m +(CLX Programmer's Reference) 148473 0.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 h +(Index\036220) 32392 0.00 -1 s +/timsps10 3 declareFont +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +149013 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/helvps18b 4 declareFont +4 sf +20320.0 29170.0 m +(Conditions) 44027 0.00 -1 s +20320.0 43010.0 m +(A) 23987 0.00 -1 s +3 sf +20320.0 49535.0 m +(xlib:access\036error,) 39828 0.00 -1 s +( 16\036185) 48452 -76.00 32 s +20320.0 54548.0 m +(xlib:alloc\036error,) 38105 0.00 -1 s +( 16\036185) 46736 -69.00 32 s +20320.0 59560.0 m +(xlib:atom\036error, 16\036185) 46894 -69.00 32 s +4 sf +20320.0 71887.0 m +(C) 23987 0.00 -1 s +3 sf +20320.0 78412.0 m +(xlib:closed\036display,) 42501 0.00 -1 s +( 16\036185) 51094 -107.00 32 s +20320.0 83425.0 m +(xlib:colormap\036error,) 43277 0.00 -1 s +( 16\036186) 51884 -93.00 32 s +20320.0 88437.0 m +(xlib:connection\036failure,) 46884 0.00 -1 s +( 16\036186) 55451 -133.00 32 s +20320.0 93449.0 m +(xlib:cursor\036error,) 39671 0.00 -1 s +( 16\036186) 48316 -55.00 32 s +4 sf +20320.0 105777.0 m +(D) 23987 0.00 -1 s +3 sf +20320.0 112301.0 m +(xlib:device\036busy,) 39835 0.00 -1 s +( 16\036186) 48407 -128.00 32 s +20320.0 117314.0 m +(xlib:drawable\036error,) 42961 0.00 -1 s +( 16\036186) 51568 -93.00 32 s +4 sf +20320.0 129641.0 m +(F) 23423 0.00 -1 s +3 sf +20320.0 136166.0 m +(xlib:font\036error,) 37165 0.00 -1 s +( 16\036186) 45810 -55.00 32 s +4 sf +20320.0 148494.0 m +(G) 24271 0.00 -1 s +3 sf +20320.0 155019.0 m +(xlib:gcontext\036error,) 42338 0.00 -1 s +( 16\036187) 50935 -103.00 32 s +4 sf +20320.0 167346.0 m +(I) 22296 0.00 -1 s +3 sf +20320.0 173871.0 m +(xlib:id\036choice\036error,) 43119 0.00 -1 s +( 16\036187) 51726 -93.00 32 s +20320.0 178883.0 m +(xlib:implementation\036error,) 50333 0.00 -1 s +( 16\036187) 58928 -105.00 32 s +4 sf +20320.0 191211.0 m +(L) 23708 0.00 -1 s +3 sf +20320.0 197736.0 m +(xlib:length\036error,) 39674 0.00 -1 s +( 16\036187) 48294 -80.00 32 s +20320.0 202748.0 m +(xlib:lookup\036error,) 40459 0.00 -1 s +( 16\036187) 49062 -97.00 32 s +4 sf +88234.0 29170.0 m +40775.0 v +(M) 93029 0.00 -1 s +3 sf +88234.0 46510.0 m +(xlib:match\036error,) 107430 0.00 -1 s +( 16\036188) 116050 -80.00 32 s +88234.0 51025.0 m +(xlib:missing\036parameter,) 115114 0.00 -1 s +( 16\036188) 123726 -88.00 32 s +4 sf +88234.0 61434.0 m +(N) 91901 0.00 -1 s +3 sf +88234.0 67169.0 m +(xlib:name\036error,) 106646 0.00 -1 s +( 16\036188) 115260 -86.00 32 s +4 sf +88234.0 77577.0 m +(P) 91337 0.00 -1 s +3 sf +88234.0 83312.0 m +(xlib:pixmap\036error,) 108999 0.00 -1 s +( 16\036188) 117608 -91.00 32 s +4 sf +88234.0 93720.0 m +(R) 91901 0.00 -1 s +3 sf +88234.0 99455.0 m +(xlib:reply\036length\036error,) 114325 0.00 -1 s +( 16\036188) 122936 -89.00 32 s +88234.0 103970.0 m +(xlib:reply\036timeout,) 109473 0.00 -1 s +( 16\036188) 118082 -91.00 32 s +88234.0 108486.0 m +(xlib:request\036error,) 108683 0.00 -1 s +( 16\036189) 117314 -69.00 32 s +88234.0 113001.0 m +(xlib:resource\036error,) 110091 0.00 -1 s +( 16\036189) 118714 -77.00 32 s +4 sf +88234.0 123410.0 m +(S) 91058 0.00 -1 s +3 sf +88234.0 129145.0 m +(xlib:sequence\036error,) 110877 0.00 -1 s +( 16\036189) 119459 -118.00 32 s +88234.0 133660.0 m +(xlib:server\036disconnect, 16\036189) 122597 -118.00 32 s +4 sf +88234.0 144068.0 m +(U) 91901 0.00 -1 s +3 sf +88234.0 149803.0 m +(xlib:unexpected\036reply,) 113702 0.00 -1 s +( 16\036190) 122236 -166.00 32 s +88234.0 154319.0 m +(xlib:unknown\036error,) 111037 0.00 -1 s +( 16\036190) 119617 -120.00 32 s +4 sf +88234.0 164727.0 m +(V) 91901 0.00 -1 s +3 sf +88234.0 170462.0 m +(xlib:value\036error,) 106646 0.00 -1 s +( 16\036190) 115260 -86.00 32 s +4 sf +88234.0 180870.0 m +(W) 93314 0.00 -1 s +3 sf +88234.0 186605.0 m +(xlib:window\036error, 16\036190) 118240 -85.00 32 s +4 sf +88234.0 197013.0 m +(X) 91901 0.00 -1 s +3 sf +88234.0 202748.0 m +(xlib:x\036error,) 101945 0.00 -1 s +( 16\036190) 110586 -59.00 32 s +eop + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s02.ps +++ cmucl-20a-20090928/own-work/clx/s02.ps @@ -0,0 +1,3370 @@ +%!PS-Adobe-2.0 +%%Title: s02.ps +%%Pages: 8 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map + /courps8 /ILcourps 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +/Courier /ILcourps ILEncoding ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(2\03623) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 8 declareFont +8 sf +20410.0 39376.0 m +90762.0 39466.0 m +(DISPLAYS) 115878 0.00 -1 s +115846.0 45065.0 m +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +146023 39315 av +146023 36265 as +139178 36265 as +146023 30545 as +146023 25588 as +143285 23300 as +136897 23300 as +134159 25588 as +134159 27876 as +138266 27876 as +138266 26351 as +141916 26351 as +141916 29783 as +134159 36265 as +134159 39315 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +133703 43891 av +133703 43891 as +newpath +133703 23300 av +133703 23300 as +newpath +146935 23300 av +146935 23300 as +newpath +146935 43891 av +146935 43891 as +149351.0 39376.0 m +8 sf +/timsps10 3 declareFont +3 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 5 declareFont +5 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(2.1) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(A particular X server, together with its screens and input devices, is called a ) 145120 3.29 32 s +/timsps10i 4 declareFont +4 sf +(dis\036) 149352 0.00 -1 s +52832.0 50032.0 m +(play) 57691 0.00 -1 s +3 sf +(.) 58397 0.00 -1 s +( The CLX ) 70360 -62.00 32 s +2 sf +(display) 78986 0.00 -1 s +3 sf +( object contains all the) 104132 -62.00 32 s +( information about the particular display) 149352 -62.60 32 s +52832.0 53193.0 m +(and) 56907 0.00 -1 s +( its screens, as well as the state that is needed to communicate with the display over a) 149352 -223.59 32 s +52832.0 56354.0 m +(particular) 63643 0.00 -1 s +( connection.) 77327 -110.00 32 s +2 sf +() 77327 0.00 -1 s +79677.0 h +() 79677 0.00 -1 s +3 sf +52832.0 62631.0 m +(Before) 60509 0.00 -1 s +( your program can use a display, you must establish a) 119560 -138.00 32 s +( connection to the X server) 149352 -138.60 32 s +52832.0 65792.0 m +(driving) 60983 0.00 -1 s +( your display. Once you have established a connection, you then can use the CLX) 149352 -271.64 32 s +52832.0 68953.0 m +(macros) 60981 0.00 -1 s +( and functions discussed in this section to) 107435 -49.00 32 s +( return information about the display.) 149352 -49.60 32 s +52832.0 72113.0 m +(This) 57849 0.00 -1 s +( section discusses how to:) 86937 -18.00 32 s +( ) 87624 -19.00 32 s +/symbb8 7 declareFont +7 sf +52832.0 78661.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Open) 64024 0.00 -1 s +( \(connect\) a display) 86096 -35.00 32 s +( ) 86766 -36.00 32 s +7 sf +52832.0 85209.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Obtain) 65592 0.00 -1 s +( information about a display ) 97965 -30.80 32 s +7 sf +52832.0 91756.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Access) 65904 0.00 -1 s +( and change display attributes ) 99974 -36.00 32 s +7 sf +52832.0 98304.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Close) 64340 0.00 -1 s +( \(disconnect\) a display ) 90401 -28.75 32 s +20320.0 105303.0 m +0.0 0.0 m +newpath +20455 103679 av +148878 103677 as +[] 0 setdash +dp +149352.0 105303.0 m +5 sf +20320.0 108689.0 m +(Opening) 32740 0.00 -1 s +( the) 38111 11.00 32 s +52832.0 h +2 sf +(2.2) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( ) 63614 -35.00 32 s +2 sf +(open\036display) 78981 0.00 -1 s +3 sf +( function is used to) 100319 -35.00 32 s +( open a connection to an X server.) 138628 -35.57 32 s +5 sf +20320.0 112076.0 m +(Display) 31233 0.00 -1 s +52832.0 h +3 sf +( ) 53532 -6.00 32 s +2 sf +34544.0 118353.0 m +(open\036display) 49911 0.00 -1 s +( ) 50570 -47.00 32 s +4 sf +(host &) 58128 -47.00 32 s +3 sf +(key ) 62863 -46.00 32 s +2 sf +(:display) 72428 0.00 -1 s +3 sf +( ) 73087 -47.00 32 s +2 sf +(:protocol) 84057 0.00 -1 s +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 121514.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 124674.0 m +( display ) 63036 -22.00 32 s +3 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +3 sf +(. ) 83041 -22.00 32 s +52832.0 129393.0 m +(Returns) 61610 0.00 -1 s +( a ) 63819 -228.00 32 s +2 sf +(display) 72445 0.00 -1 s +3 sf +( that serves as the connection to the X server and contains all the infor\036) 149352 -227.64 32 s +52832.0 132554.0 m +(mation) 60670 0.00 -1 s +( about that X server. ) 84215 -24.60 32 s +4 sf +52832.0 138831.0 m +(host) 57536 0.00 -1 s +( \037 ) 61431 -13.00 32 s +3 sf +(Specifies the name of the ) 90598 -13.00 32 s +4 sf +(host) 95302 0.00 -1 s +3 sf +( machine on which the server executes. A string) 149352 -12.88 32 s +57912.0 141992.0 m +(must) 63400 0.00 -1 s +( be acceptable as a ) 85066 -8.00 32 s +4 sf +(host) 89770 0.00 -1 s +3 sf +(, but otherwise the possible types are not constrained) 149352 -7.75 32 s +57912.0 145153.0 m +(and) 61987 0.00 -1 s +( will likely be very system dependent.) 104674 -31.00 32 s +( ) 105348 -32.00 32 s +2 sf +52832.0 149939.0 m +(:display) 62397 0.00 -1 s +3 sf +( \037 An integer that specifies which display device on the ) 124207 -259.00 32 s +4 sf +(host) 128911 0.00 -1 s +3 sf +( should be used for) 149352 -258.75 32 s +57912.0 153100.0 m +(this) 61989 0.00 -1 s +( connection. This) 81032 -237.00 32 s +( is needed since multiple displays can be controlled by a single) 149352 -237.55 32 s +57912.0 156261.0 m +(X) 59949 0.00 -1 s +( server. The default is display 0 \(zero\).) 103465 -19.00 32 s +( ) 104151 -20.00 32 s +2 sf +52832.0 162537.0 m +(:protocol) 63802 0.00 -1 s +( ) 64231 -277.00 32 s +3 sf +(\037) 67053 0.00 -1 s +2 sf +( ) 67482 -277.00 32 s +3 sf +(A keyword argument that specifies which network protocol should be) 143751 -277.00 32 s +( used) 149352 -278.00 32 s +57912.0 165698.0 m +(for) 61201 0.00 -1 s +( connecting to the server \(for example, ) 103784 -253.00 32 s +2 sf +(:tcp) 108484 0.00 -1 s +3 sf +(, ) 109643 -253.00 32 s +2 sf +(:dna) 115131 0.00 -1 s +3 sf +(, or ) 119093 -253.00 32 s +2 sf +(:chaos) 126774 0.00 -1 s +3 sf +(\). The) 133260 -253.00 32 s +( set of possible) 149352 -253.67 32 s +57912.0 168859.0 m +(values) 65122 0.00 -1 s +( and the default value are) 93392 -35.00 32 s +( implementation specific. ) 122597 -35.67 32 s +52832.0 175136.0 m +(Authorization,) 69211 0.00 -1 s +( if any, is assumed to come) 98833 -171.00 32 s +( from the environment. After a successful call) 149352 -171.57 32 s +52832.0 178297.0 m +(to) 55027 0.00 -1 s +( ) 55702 -31.00 32 s +2 sf +(open\036display) 71069 0.00 -1 s +3 sf +(, all screens on the display can be used by the client application. ) 143640 -30.69 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Displays) 28237 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(2\03624) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 5 declareFont +5 sf +20320.0 26687.0 m +(Display ) 32083 3.00 32 s +52832.0 h +2 sf +(2.3) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( complete set of display attributes is discussed in the following) 149352 1555.30 32 s +2 sf +5 sf +20320.0 30074.0 m +(Attributes) 35176 0.00 -1 s +52832.0 h +3 sf +(paragraphs.) 65917 0.00 -1 s +2 sf +34544.0 36350.0 m +(display\036authorization\036data) 66681 0.00 -1 s +3 sf +( ) 67258 -129.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 75410 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 39511.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 42672.0 m +( authorization\036data ) 76040 -25.00 32 s +3 sf +(\037 Type ) 86024 -24.50 32 s +2 sf +(string) 93078 0.00 -1 s +3 sf +(. ) 94465 -25.00 32 s +52832.0 47391.0 m +(Returns) 61610 0.00 -1 s +( the authorization data string for ) 99056 76.00 32 s +4 sf +(display) 107208 0.00 -1 s +3 sf +( that was transmitted to the server by) 149352 75.43 32 s +52832.0 50552.0 m +2 sf +(open\036display) 68199 0.00 -1 s +3 sf +( during connection setup. The data is) 109458 -60.00 32 s +( specific to the particular authoriza\036) 149352 -60.60 32 s +52832.0 53713.0 m +(tion) 57222 0.00 -1 s +( protocol that was used. The ) 88549 -200.00 32 s +2 sf +(display\036authorization\036name) 121939 0.00 -1 s +3 sf +( function returns the pro\036) 149352 -199.50 32 s +52832.0 56873.0 m +(tocol) 58475 0.00 -1 s +( used.) 65028 -32.00 32 s +( ) 65701 -33.00 32 s +4 sf +52832.0 63150.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 67937.0 m +(display\036authorization\036name) 67934 0.00 -1 s +3 sf +( ) 68500 -140.00 32 s +4 sf +(display) 76652 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 71097.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 74258.0 m +( authorization\036name ) 77130 -26.67 32 s +3 sf +(\037 Type ) 87110 -26.50 32 s +2 sf +(string) 94164 0.00 -1 s +3 sf +(. ) 95549 -27.00 32 s +52832.0 78977.0 m +(Returns) 61610 0.00 -1 s +( the authorization protocol namestring for ) 107984 -238.50 32 s +4 sf +(display) 116136 0.00 -1 s +3 sf +( that was transmitted by ) 142611 -238.60 32 s +2 sf +(open\036) 149352 0.00 -1 s +52832.0 82138.0 m +(display) 61458 0.00 -1 s +3 sf +( to the server during connection setup. The ) 110219 -27.88 32 s +4 sf +(authorization\036name) 132479 0.00 -1 s +3 sf +( indicates what) 149352 -27.50 32 s +52832.0 85299.0 m +(authorization) 67721 0.00 -1 s +( protocol the client expects the server to) 110893 -270.00 32 s +( use. Specification of valid authori\036) 149352 -270.60 32 s +52832.0 88460.0 m +(zation) 59728 0.00 -1 s +( mechanisms is not part of the X protocol. A server that implements a different) 149352 48.07 32 s +52832.0 91621.0 m +(protocol) 62236 0.00 -1 s +( than the) 71565 -195.00 32 s +( client expects, or a server that only implements the host\036based mecha\036) 149352 -195.55 32 s +52832.0 94782.0 m +(nism,) 59026 0.00 -1 s +( can simply ignore this information. If) 100596 -243.00 32 s +( both name and data strings are empty, this is) 149352 -243.56 32 s +52832.0 97942.0 m +(to) 55027 0.00 -1 s +( be interpreted as \177no explicit) 88148 -37.00 32 s +( authorization.") 105664 -38.00 32 s +4 sf +52832.0 104219.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 109006.0 m +(display\036bitmap\036format) 61973 0.00 -1 s +/courps8 6 declareFont +6 sf +( ) 63262 -68.00 32 s +4 sf +(display) 71414 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 112166.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 115327.0 m +( ) 53516 -22.00 32 s +( bitmap\036format ) 71185 -22.50 32 s +3 sf +(\037 Type ) 81173 -22.50 32 s +2 sf +(bitmap\036format) 99037 0.00 -1 s +3 sf +(. ) 100426 -23.00 32 s +52832.0 120046.0 m +(Returns) 61610 0.00 -1 s +( the ) 66416 -27.00 32 s +4 sf +(bitmap\036format) 82718 0.00 -1 s +3 sf +( information for the specified ) 116358 -27.00 32 s +4 sf +(display) 124510 0.00 -1 s +3 sf +(.) 125216 0.00 -1 s +4 sf +52832.0 126323.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 131109.0 m +(display\036byte\036order) 56959 0.00 -1 s +3 sf +( ) 57549 -116.00 32 s +4 sf +(display) 65701 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 134270.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 137431.0 m +( byte\036order ) 66846 -5.00 32 s +3 sf +(\037 Either ) 77965 -5.00 32 s +2 sf +(:lsbfirst) 87368 0.00 -1 s +3 sf +( or ) 91121 -4.50 32 s +2 sf +(:msbfirst) 102090 0.00 -1 s +3 sf +(. ) 103497 -5.00 32 s +52832.0 142150.0 m +(Returns) 61610 0.00 -1 s +( the ) 66332 -69.00 32 s +4 sf +(byte\036order) 78243 0.00 -1 s +3 sf +( to be employed in communication with the server for the) 142446 -69.00 32 s +( given) 149352 -70.00 32 s +52832.0 145311.0 m +4 sf +(display) 60984 0.00 -1 s +3 sf +(.) 61690 0.00 -1 s +( The possible values are) 88719 -22.00 32 s +( as follows: ) 102368 -22.67 32 s +/symbb8 7 declareFont +7 sf +52832.0 151858.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:lsbfirst) 67315 0.00 -1 s +3 sf +( \037) 70835 -8.00 32 s +( Values are transmitted least significant byte first.) 126887 -8.57 32 s +7 sf +52832.0 158406.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:msbfirst) 68881 0.00 -1 s +3 sf +( \037) 72400 -9.00 32 s +( Values are transmitted most significant byte first.) 128761 -9.57 32 s +52832.0 164682.0 m +(Except) 60668 0.00 -1 s +( where explicitly noted in the protocol, all 16\036bit and 32\036bit quantities sent by the) 149352 -210.00 32 s +52832.0 167843.0 m +(client) 59101 0.00 -1 s +( must be transmitted with this ) 93260 -3.00 32 s +4 sf +(byte\036order) 105171 0.00 -1 s +3 sf +(, and all 16\036bit and 32\036bit quantities) 145519 -3.00 32 s +( re\036) 149352 -4.00 32 s +52832.0 171004.0 m +(turned) 60041 0.00 -1 s +( by the server are transmitted with this ) 103922 -20.50 32 s +4 sf +(byte\036order) 115833 0.00 -1 s +3 sf +(. ) 117224 -21.00 32 s +4 sf +52832.0 177281.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 182067.0 m +(display\036display) 52735 0.00 -1 s +3 sf +( ) 53372 -69.00 32 s +4 sf +(display) 61524 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 185228.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 188389.0 m +( display\036number ) 72572 -30.00 32 s +3 sf +(\037 Type ) 82545 -30.00 32 s +2 sf +(integer) 91007 0.00 -1 s +3 sf +(.) 91713 0.00 -1 s +( ) 92388 -31.00 32 s +52832.0 193108.0 m +(Returns) 61610 0.00 -1 s +( the ) 66418 -26.00 32 s +4 sf +(display\036number) 84130 0.00 -1 s +3 sf +( for the host associated with ) 116265 -26.00 32 s +4 sf +(display) 124417 0.00 -1 s +3 sf +(. ) 125803 -26.00 32 s +4 sf +52832.0 199384.0 m +(display \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +139531.0 7925.0 m +(Displays) 147448 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(2\03625) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(display\036error\036handler) 60879 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 61433 -152.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 69585 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( error\036handler ) 70540 -28.67 32 s +3 sf +(\037 Type ) 80516 -28.50 32 s +2 sf +(function) 90549 0.00 -1 s +3 sf +( or ) 94254 -28.50 32 s +2 sf +(sequence) 105071 0.00 -1 s +3 sf +(. ) 106454 -29.00 32 s +52832.0 33686.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73278 -160.00 32 s +2 sf +(setf) 77507 0.00 -1 s +3 sf +(\) sets the ) 87767 -159.33 32 s +4 sf +(error\036handler) 103443 0.00 -1 s +3 sf +( function for the given ) 128586 -159.60 32 s +4 sf +(display) 136738 0.00 -1 s +3 sf +(. CLX calls) 149352 -159.50 32 s +52832.0 36847.0 m +(\(one) 57846 0.00 -1 s +( of\) the display error handler functions to handle server errors returned to the con\036) 149352 -68.57 32 s +52832.0 40008.0 m +(nection.) 61845 0.00 -1 s +( The default error handler, ) 92577 66.00 32 s +2 sf +(default\036error\036handler) 118750 0.00 -1 s +3 sf +(, signals conditions as they) 149352 66.25 32 s +52832.0 43169.0 m +(occur.) 59805 0.00 -1 s +( See Section 16, Errors, for a list of the conditions that CLX can signal. For more) 149352 -129.81 32 s +52832.0 46330.0 m +(information) 66154 0.00 -1 s +( about errors and error handling, refer to the section entitled Common Lisp) 149352 -100.58 32 s +52832.0 49490.0 m +(Condition) 64121 0.00 -1 s +( System in the ) 80734 -41.00 32 s +4 sf +(Lisp Reference) 97544 -40.00 32 s +3 sf +( manual.) 107222 -41.00 32 s +52832.0 55767.0 m +(If) 54710 0.00 -1 s +( the value of ) 69226 -54.50 32 s +4 sf +(error\036handler) 84902 0.00 -1 s +3 sf +( is a sequence, it is expected to contain a handler function) 149352 -54.55 32 s +52832.0 58928.0 m +(for) 56121 0.00 -1 s +( each specific error. The error code is used as an index into the sequence to fetch the) 149352 -112.00 32 s +52832.0 62089.0 m +(appropriate) 65681 0.00 -1 s +( handler function. If this element is a function, it is called for all errors. Any) 149352 -137.73 32 s +52832.0 65250.0 m +(results) 60199 0.00 -1 s +( returned by the handler are ignored since it is assumed the) 126557 -2.00 32 s +( handler either takes) 149352 -2.67 32 s +52832.0 68411.0 m +(care) 57530 0.00 -1 s +( of the error) 70738 -63.00 32 s +( completely or else signals. The arguments passed to the handler func\036) 149352 -63.55 32 s +52832.0 71572.0 m +(tion) 57222 0.00 -1 s +( are the ) 66461 76.00 32 s +2 sf +(display) 75087 0.00 -1 s +3 sf +( object, a symbol naming the type of error, and a set of keyword\036) 149352 76.00 32 s +52832.0 74732.0 m +(value) 58944 0.00 -1 s +( argument pairs that vary depending on the type of error. For all core errors, the) 149352 45.27 32 s +52832.0 77893.0 m +(keyword\036value) 69756 0.00 -1 s +( argument pairs are: ) 92795 -39.00 32 s +2 sf +52832.0 84170.0 m +(:current\036sequence) 74616 0.00 -1 s +3 sf +83312.0 h +2 sf +(card16) 91620 0.00 -1 s +3 sf +52832.0 87331.0 m +2 sf +(:major) 61135 0.00 -1 s +3 sf +83312.0 h +2 sf +(card8) 90209 0.00 -1 s +3 sf +52832.0 90492.0 m +2 sf +(:minor) 61138 0.00 -1 s +3 sf +83312.0 h +2 sf +(card16) 91620 0.00 -1 s +3 sf +52832.0 93653.0 m +2 sf +(:sequence) 64588 0.00 -1 s +3 sf +83312.0 h +2 sf +(card16) 91620 0.00 -1 s +3 sf +( ) 92253 -73.00 32 s +52832.0 99929.0 m +(For) 56751 0.00 -1 s +( ) 57304 -153.00 32 s +2 sf +(colormap) 68746 0.00 -1 s +3 sf +(, ) 70005 -153.00 32 s +2 sf +(cursor) 77842 0.00 -1 s +3 sf +(, ) 79101 -153.00 32 s +2 sf +(drawable) 90388 0.00 -1 s +3 sf +(, ) 91647 -153.00 32 s +2 sf +(font) 96505 0.00 -1 s +3 sf +(, ) 97764 -153.00 32 s +2 sf +(gcontext) 107950 0.00 -1 s +3 sf +(,) 108656 0.00 -1 s +( ) 109208 -154.00 32 s +2 sf +(id\036choice) 120023 0.00 -1 s +3 sf +(, ) 121282 -153.00 32 s +2 sf +(pixmap) 130376 0.00 -1 s +3 sf +(, and ) 136262 -153.50 32 s +2 sf +(window) 145669 0.00 -1 s +3 sf +( er\036) 149352 -154.00 32 s +52832.0 103090.0 m +(rors,) 57925 0.00 -1 s +( the keyword\036value pairs are the core error pairs plus: ) 118849 -19.60 32 s +2 sf +52832.0 109367.0 m +(:resource\036id) 67406 0.00 -1 s +3 sf +83312.0 h +2 sf +(card32) 91620 0.00 -1 s +( ) 92253 -73.00 32 s +3 sf +52832.0 115643.0 m +(For) 56751 0.00 -1 s +( ) 57438 -19.00 32 s +2 sf +(:atom) 64488 0.00 -1 s +3 sf +( errors, the keyword\036value pairs are the core error pairs plus: ) 133390 -19.00 32 s +2 sf +52832.0 121920.0 m +(:atom\036id) 63174 0.00 -1 s +3 sf +83312.0 h +2 sf +(card32) 91620 0.00 -1 s +( ) 92253 -73.00 32 s +3 sf +52832.0 128197.0 m +(For) 56751 0.00 -1 s +( ) 57436 -21.00 32 s +2 sf +(:value) 64803 0.00 -1 s +3 sf +( errors, the keyword\036value pairs are the core error pairs plus: ) 133683 -21.00 32 s +2 sf +52832.0 134473.0 m +(:value) 60199 0.00 -1 s +3 sf +83312.0 h +2 sf +(card32) 91620 0.00 -1 s +3 sf +( ) 92253 -73.00 32 s +4 sf +52832.0 140750.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 145536.0 m +(display\036image\036lsb\036first\036p) 64168 0.00 -1 s +3 sf +( ) 64842 -32.00 32 s +4 sf +(display) 72994 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 148697.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 151858.0 m +( image\036lsb\036first\036p ) 73852 -21.00 32 s +3 sf +(\037) 76674 0.00 -1 s +( Type ) 83842 -21.50 32 s +2 sf +(boolean) 93250 0.00 -1 s +3 sf +(. ) 95346 -11.00 32 s +52832.0 156577.0 m +(Although) 63492 0.00 -1 s +( the server is generally responsible for byte swapping communication data to) 149352 -81.55 32 s +52832.0 159738.0 m +(match) 59728 0.00 -1 s +( the client, images \(pixmaps/bitmaps\) are always) 113869 -159.00 32 s +( transmitted and received in for\036) 149352 -159.60 32 s +52832.0 162899.0 m +(mats) 58162 0.00 -1 s +( \(including byte order\) specified by) 98400 70.00 32 s +( the server. Within images for each scan\036line) 149352 69.43 32 s +52832.0 166060.0 m +(unit) 57222 0.00 -1 s +( in bitmaps or for each pixel value in pixmaps, the leftmost bit in the image as dis\036) 149352 -48.71 32 s +52832.0 169220.0 m +(played) 60355 0.00 -1 s +( on the screen is either the least or most significant bit in) 123794 -30.00 32 s +( the unit. For the given) 149352 -30.60 32 s +52832.0 172381.0 m +4 sf +(display) 60984 0.00 -1 s +3 sf +(,) 61690 0.00 -1 s +( ) 62221 -175.00 32 s +2 sf +(display\036image\036lsb\036first\036p) 91845 0.00 -1 s +3 sf +( returns non\036) 105914 -175.00 32 s +2 sf +(nil) 109051 0.00 -1 s +3 sf +( if the leftmost bit is the least signifi\036) 149352 -174.63 32 s +52832.0 175542.0 m +(cant) 57533 0.00 -1 s +( bit;) 61990 -12.00 32 s +( otherwise, it returns ) 85843 -12.50 32 s +2 sf +(nil) 88980 0.00 -1 s +3 sf +(. ) 90379 -13.00 32 s +4 sf +52832.0 181819.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 186605.0 m +(display\036keycode\036range) 61664 0.00 -1 s +( ) 62200 -170.00 32 s +4 sf +(display) 70352 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 189766.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 192927.0 m +( min\036keycode) 68408 -47.00 32 s +3 sf +(, ) 69773 -47.00 32 s +4 sf +(max\036keycode ) 85159 -47.00 32 s +3 sf +(\037 Type ) 95099 -46.50 32 s +2 sf +(card8) 101996 0.00 -1 s +3 sf +(. ) 103361 -47.00 32 s +52832.0 197646.0 m +(Returns) 61610 0.00 -1 s +( ) 62922 606.00 32 s +4 sf +(min\036keycode) 77180 0.00 -1 s +3 sf +( and ) 83879 606.00 32 s +4 sf +(max\036keycode) 98606 0.00 -1 s +3 sf +( as multiple values. See the ) 133676 606.33 32 s +2 sf +(display\036max\036) 149352 0.00 -1 s +52832.0 200807.0 m +(keycode) 62551 0.00 -1 s +3 sf +( and ) 67928 -55.00 32 s +2 sf +(display\036min\036keycode) 92854 0.00 -1 s +3 sf +( functions for additional information.) 134564 -54.75 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Displays) 28237 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(2\03626) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 4 declareFont +4 sf +52832.0 22578.0 m +(display \037 ) 64855 -25.00 32 s +/timsps10 3 declareFont +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 27364.0 m +(display\036max\036keycode) 59939 0.00 -1 s +( ) 60507 -138.00 32 s +4 sf +(display) 68659 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 30525.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 33686.0 m +( ) 53499 -39.00 32 s +( max\036keycode ) 69559 -39.50 32 s +3 sf +(\037 Type ) 79513 -39.50 32 s +2 sf +(card8) 86410 0.00 -1 s +3 sf +(. ) 87782 -40.00 32 s +52832.0 38405.0 m +(Returns) 61610 0.00 -1 s +( the maximum keycode value for the specified ) 117124 317.00 32 s +4 sf +(display) 125276 0.00 -1 s +3 sf +(. This value is never) 149352 317.00 32 s +52832.0 41566.0 m +(greater) 60664 0.00 -1 s +( than 255. Not all keycodes in the allowed range are required) 126930 -231.00 32 s +( to have correspond\036) 149352 -231.67 32 s +52832.0 44727.0 m +(ing) 56438 0.00 -1 s +( keys. ) 63669 -30.00 32 s +4 sf +52832.0 51003.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 55790.0 m +(display\036max\036request\036length) 67618 0.00 -1 s +( ) 68206 -118.00 32 s +4 sf +(display) 76358 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 58951.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 62111.0 m +( max\036request\036length ) 76784 -35.67 32 s +3 sf +(\037 Type ) 86746 -35.50 32 s +2 sf +(card16) 95054 0.00 -1 s +3 sf +(. ) 96430 -36.00 32 s +52832.0 66830.0 m +(Returns) 61610 0.00 -1 s +( the maximum length of a request, in four\036byte units, that is accepted by the) 149352 165.14 32 s +52832.0 69991.0 m +(specified) 63018 0.00 -1 s +( ) 63704 -20.00 32 s +4 sf +(display) 71856 0.00 -1 s +3 sf +(. Requests larger than this generate a length) 120933 -20.00 32 s +( error, and the server will) 149352 -20.60 32 s +52832.0 73152.0 m +(read) 57688 0.00 -1 s +( and simply discard the) 83879 3.00 32 s +( entire request. This length is always at least 4096 \(that is,) 149352 2.45 32 s +52832.0 76313.0 m +(requests) 62079 0.00 -1 s +( of length up to and including 16384 bytes are accepted by all servers\).) 141608 -31.69 32 s +4 sf +52832.0 82590.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 87376.0 m +(display\036min\036keycode) 59470 0.00 -1 s +3 sf +( ) 60055 -121.00 32 s +4 sf +(display) 68207 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 90537.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 93698.0 m +( ) 53502 -36.00 32 s +( min\036keycode ) 69099 -36.50 32 s +3 sf +(\037 Type ) 79059 -36.50 32 s +2 sf +(card8) 85956 0.00 -1 s +3 sf +(. ) 87331 -37.00 32 s +52832.0 98417.0 m +(Returns) 61610 0.00 -1 s +( the minimum keycode value for the specified ) 113711 -51.00 32 s +4 sf +(display) 121863 0.00 -1 s +3 sf +(.) 122569 0.00 -1 s +( This value is never less) 149352 -51.60 32 s +52832.0 101577.0 m +(than) 57691 0.00 -1 s +( eight. Not all keycodes in the allowed range are required to have corresponding) 149352 94.23 32 s +52832.0 104738.0 m +(keys.) 58711 0.00 -1 s +( ) 59380 -37.00 32 s +4 sf +52832.0 111015.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 115801.0 m +(display\036motion\036buffer\036size) 66361 0.00 -1 s +/courps8 6 declareFont +6 sf +( ) 67642 -76.00 32 s +4 sf +(display) 75794 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 118962.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 122123.0 m +( motion\036buffer\036size ) 75560 -26.67 32 s +3 sf +(\037 Type ) 85540 -26.50 32 s +2 sf +(card32) 93848 0.00 -1 s +3 sf +(. ) 95233 -27.00 32 s +52832.0 126842.0 m +(Returns) 61610 0.00 -1 s +( the approximate size of the motion buffer for the specified ) 127974 -86.55 32 s +4 sf +(display) 136126 0.00 -1 s +3 sf +(. The server) 149352 -86.50 32 s +52832.0 130003.0 m +(can) 56749 0.00 -1 s +( retain the recent history of pointer motion at) 106904 -59.00 32 s +( a finer granularity than is reported by) 149352 -59.57 32 s +52832.0 133164.0 m +2 sf +(:motion\036notify) 70227 0.00 -1 s +3 sf +( events. Such history is available) 106893 -66.00 32 s +( through the ) 121037 -66.67 32 s +2 sf +(motion\036events) 137963 0.00 -1 s +3 sf +( function. ) 149352 -66.50 32 s +4 sf +52832.0 139440.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 144227.0 m +(display\036p) 45678 0.00 -1 s +3 sf +( ) 46328 -56.00 32 s +4 sf +(display) 54480 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 147388.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 150549.0 m +( display\036p ) 65353 -33.00 32 s +3 sf +(\037 Type ) 75320 -33.00 32 s +2 sf +(boolean) 84728 0.00 -1 s +3 sf +(.) 85434 0.00 -1 s +52832.0 155267.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67470 -18.00 32 s +2 sf +(nil) 70607 0.00 -1 s +3 sf +( if ) 73706 -18.00 32 s +4 sf +(display) 81858 0.00 -1 s +3 sf +( is a ) 87059 -17.33 32 s +2 sf +(display) 95685 0.00 -1 s +3 sf +( object; otherwise, returns ) 125630 -17.50 32 s +2 sf +(nil) 128767 0.00 -1 s +3 sf +(. ) 130161 -18.00 32 s +2 sf +34544.0 161544.0 m +(display\036pixmap\036formats) 63543 0.00 -1 s +3 sf +( ) 64165 -84.00 32 s +4 sf +(display) 72317 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 164705.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 167866.0 m +( pixmap\036formats ) 72771 -16.00 32 s +3 sf +(\037 Type) 82082 -16.00 32 s +( ) 82771 -17.00 32 s +2 sf +(list) 86376 0.00 -1 s +3 sf +(.) 87082 0.00 -1 s +52832.0 172585.0 m +(Returns) 61610 0.00 -1 s +( the list of ) 73670 -3.00 32 s +2 sf +(pixmap\036format) 92006 0.00 -1 s +4 sf +( ) 92709 -3.00 32 s +3 sf +(values for the given) 115035 -3.00 32 s +( ) 115737 -4.00 32 s +4 sf +(display) 123889 0.00 -1 s +3 sf +(. This list contains one) 149352 -3.50 32 s +52832.0 175745.0 m +(entry) 58630 0.00 -1 s +( for each depth value. The entry describes the format used to represent images of) 149352 -29.79 32 s +52832.0 178906.0 m +(that) 57064 0.00 -1 s +( depth. An entry for a depth is included if any screen supports that depth, and all) 149352 105.38 32 s +52832.0 182067.0 m +(screens) 61137 0.00 -1 s +( supporting that depth must support \(only\) the format for that depth. ) 138221 -22.92 32 s +4 sf +52832.0 188344.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +139531.0 7925.0 m +(Displays) 147448 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(2\03627) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(display\036plist) 49283 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 49963 -26.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 58115 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( plist ) 59793 -6.00 32 s +3 sf +(\037) 62615 0.00 -1 s +( Type ) 69813 -6.50 32 s +2 sf +(list) 73418 0.00 -1 s +3 sf +(. ) 74823 -7.00 32 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73131 -209.00 32 s +2 sf +(setf) 77360 0.00 -1 s +3 sf +(\)) 78299 0.00 -1 s +( sets the property list for the specified ) 119884 -209.50 32 s +4 sf +(display) 128036 0.00 -1 s +3 sf +(. This function pro\036) 149352 -209.67 32 s +52832.0 36779.0 m +(vides) 58789 0.00 -1 s +( a hook where extensions can add data.) 102548 -40.86 32 s +4 sf +52832.0 43056.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 47842.0 m +(display\036protocol\036major\036version) 72161 0.00 -1 s +( ) 72722 -145.00 32 s +4 sf +(display) 80874 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 51003.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 54164.0 m +( protocol\036major\036version ) 81338 -34.00 32 s +3 sf +(\037 Type ) 91304 -33.50 32 s +2 sf +(card16) 99612 0.00 -1 s +3 sf +(. ) 100990 -34.00 32 s +52832.0 58883.0 m +(Returns) 61610 0.00 -1 s +( the major version number of the X protocol associated with the specified ) 145120 -8.62 32 s +4 sf +(dis\036) 149352 0.00 -1 s +52832.0 62044.0 m +(play) 57691 0.00 -1 s +3 sf +(.) 58397 0.00 -1 s +( In general, the major version would increment for incompatible changes. The) 145590 -74.00 32 s +( re\036) 149352 -75.00 32 s +52832.0 65205.0 m +(turned) 60041 0.00 -1 s +( protocol version number indicates the protocol the server actually supports. This) 149352 -202.64 32 s +52832.0 68366.0 m +(might) 59417 0.00 -1 s +( not equal the version supported by the client. The server can \(but need not\) refuse) 149352 -200.73 32 s +52832.0 71526.0 m +(connections) 66312 0.00 -1 s +( from clients that offer a different version than the server supports. A server) 149352 -182.62 32 s +52832.0 74687.0 m +(can) 56749 0.00 -1 s +( \(but need not\) support more than one) 99082 -32.00 32 s +( version simultaneously. ) 127203 -32.67 32 s +4 sf +52832.0 80964.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 85750.0 m +(display\036protocol\036minor\036version) 72164 0.00 -1 s +( ) 72722 -148.00 32 s +4 sf +(display) 80874 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 88911.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 92072.0 m +( protocol\036minor\036version ) 81338 -34.00 32 s +3 sf +(\037 Type ) 91304 -33.50 32 s +2 sf +(card16) 99612 0.00 -1 s +3 sf +(. ) 100990 -34.00 32 s +52832.0 96791.0 m +(Returns) 61610 0.00 -1 s +( the minor protocol revision) 93561 111.00 32 s +( number associated with the specified ) 137328 110.50 32 s +4 sf +(display) 145480 0.00 -1 s +3 sf +(. In) 149352 110.00 32 s +52832.0 99952.0 m +(general,) 61842 0.00 -1 s +( the minor version would increment for small) 111311 -244.00 32 s +( upward compatible changes in the) 149352 -244.60 32 s +52832.0 103113.0 m +(X) 54869 0.00 -1 s +( protocol.) 65657 -28.00 32 s +( ) 66334 -29.00 32 s +4 sf +52832.0 109389.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 114176.0 m +(display\036protocol\036version) 63858 0.00 -1 s +( ) 64436 -128.00 32 s +4 sf +(display) 72588 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 117337.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +52832.0 120498.0 m +( ) 54168 -38.00 32 s +4 sf +(protocol\036major\036version) 80658 0.00 -1 s +3 sf +(,) 81364 0.00 -1 s +4 sf +( protocol\036minor\036version ) 109190 -38.00 32 s +3 sf +(\037 Type ) 119147 -38.00 32 s +2 sf +(card16) 127455 0.00 -1 s +3 sf +(. ) 128829 -38.00 32 s +52832.0 125216.0 m +(Returns) 61610 0.00 -1 s +( ) 62046 -270.00 32 s +4 sf +(protocol\036major\036version ) 88972 -270.00 32 s +3 sf +(and ) 93484 -269.00 32 s +4 sf +(protocol\036minor\036version) 119974 0.00 -1 s +3 sf +( as multiple values. See the) 149352 -269.60 32 s +52832.0 128377.0 m +2 sf +(display\036protocol\036major\036version) 90449 0.00 -1 s +3 sf +( and ) 96232 148.00 32 s +2 sf +(display\036protocol\036minor\036version) 133852 0.00 -1 s +3 sf +( functions for) 149352 148.50 32 s +52832.0 131538.0 m +(additional) 64118 0.00 -1 s +( information.) 78774 -78.00 32 s +4 sf +52832.0 137815.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 142601.0 m +(display\036resource\036id\036base) 64014 0.00 -1 s +( ) 64594 -126.00 32 s +4 sf +(display) 72746 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 145762.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 148923.0 m +( resource\036id\036base ) 73975 -32.00 32 s +3 sf +(\037 Type ) 83944 -32.00 32 s +2 sf +(resource\036id) 97579 0.00 -1 s +3 sf +(.) 98285 0.00 -1 s +( ) 98958 -33.00 32 s +52832.0 153642.0 m +(Returns) 61610 0.00 -1 s +( the ) 66052 -209.00 32 s +4 sf +(resource\036id\036base) 85173 0.00 -1 s +3 sf +( value that was returned from the server during) 136474 -209.00 32 s +( connection) 149352 -210.00 32 s +52832.0 156803.0 m +(setup) 58789 0.00 -1 s +( for the specified ) 77560 -244.00 32 s +4 sf +(display) 85712 0.00 -1 s +3 sf +(.) 86418 0.00 -1 s +( This is used in combination with the ) 126949 -244.50 32 s +4 sf +(resource\036id\036mask) 146696 0.00 -1 s +3 sf +( to) 149352 -245.00 32 s +52832.0 159964.0 m +(construct) 63176 0.00 -1 s +( valid IDs for this connection. ) 97446 -22.83 32 s +4 sf +52832.0 166240.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Displays) 28237 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(2\03628) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(display\036resource\036id\036mask ) 65700 -117.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 73852 0.00 -1 s +2 sf +139373.0 h +/timsps10 3 declareFont +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 25739.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 28900.0 m +( resource\036id\036mask ) 74604 -31.00 32 s +3 sf +(\037 Type ) 84575 -31.00 32 s +2 sf +(resource\036id) 98210 0.00 -1 s +3 sf +(. ) 99591 -31.00 32 s +52832.0 33618.0 m +(Returns) 61610 0.00 -1 s +( the ) 65966 -252.00 32 s +4 sf +(resource\036id\036mask) 85713 0.00 -1 s +3 sf +( that was returned from the server during connection setup) 149352 -251.89 32 s +52832.0 36779.0 m +(for) 56121 0.00 -1 s +( the specified ) 71570 -101.00 32 s +4 sf +(display) 79722 0.00 -1 s +3 sf +(. The ) 86026 -101.00 32 s +4 sf +(resource\036id\036mask) 105773 0.00 -1 s +3 sf +( contains a single contiguous) 137977 -101.00 32 s +( set of bits) 149352 -101.67 32 s +52832.0 39940.0 m +(\(at) 55808 0.00 -1 s +( least 18\) which the client uses to allocate resource IDs for) 121474 -36.00 32 s +( types ) 128770 -36.50 32 s +2 sf +(window) 138177 0.00 -1 s +3 sf +(, ) 139552 -37.00 32 s +2 sf +(pixmap) 148646 0.00 -1 s +3 sf +(,) 149352 0.00 -1 s +52832.0 43101.0 m +2 sf +(cursor) 60669 0.00 -1 s +3 sf +(,) 61375 0.00 -1 s +( ) 62018 -63.00 32 s +2 sf +(font) 66876 0.00 -1 s +3 sf +(, ) 68225 -63.00 32 s +2 sf +(gcontext) 78411 0.00 -1 s +3 sf +(, and ) 84478 -63.00 32 s +2 sf +(colormap) 95920 0.00 -1 s +3 sf +( by choosing a value with \(only\) some subset of) 149352 -63.56 32 s +52832.0 46262.0 m +(these) 58631 0.00 -1 s +( bits set, and ) 72272 -294.00 32 s +2 sf +(or) 74936 0.00 -1 s +3 sf +(ing it with the ) 90222 -294.00 32 s +4 sf +(resource\036id\036base) 109343 0.00 -1 s +3 sf +(. Only) 116104 -294.00 32 s +( values constructed in this way) 149352 -294.60 32 s +52832.0 49423.0 m +(can) 56749 0.00 -1 s +( be used to name newly created server resources over this connection. Server re\036) 149352 155.15 32 s +52832.0 52584.0 m +(source) 60197 0.00 -1 s +( IDs never have the top three bits set. The client is not) 119859 -103.00 32 s +( restricted to linear or con\036) 149352 -103.60 32 s +52832.0 55745.0 m +(tiguous) 61142 0.00 -1 s +( allocation of server resource IDs. Once an ID has been freed, it can be reused,) 149352 -32.87 32 s +52832.0 58905.0 m +(but) 56438 0.00 -1 s +( this) 61195 -26.00 32 s +( should not be necessary. ) 90063 -26.60 32 s +52832.0 65182.0 m +(An) 56280 0.00 -1 s +( ID must be unique with respect to the) 97899 -186.00 32 s +( IDs of all other server resources, not just other) 149352 -186.56 32 s +52832.0 68343.0 m +(server) 59725 0.00 -1 s +( resources of the same type. However, note) 106423 -281.00 32 s +( that the value spaces of server resource) 149352 -281.57 32 s +52832.0 71504.0 m +(identifiers,) 64978 0.00 -1 s +( atoms, visualids, and keysyms are) 103422 -134.00 32 s +( distinguished by context, and as such are) 149352 -134.57 32 s +52832.0 74665.0 m +(not) 56438 0.00 -1 s +( required to be disjoint \(for example,) 98321 71.00 32 s +( a given numeric value might be both a valid) 149352 70.44 32 s +52832.0 77826.0 m +(window) 61923 0.00 -1 s +( ID,) 66280 -31.00 32 s +( a valid atom, and a valid keysym.\)) 105641 -31.57 32 s +4 sf +52832.0 84102.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 88889.0 m +(display\036roots) 50221 0.00 -1 s +3 sf +( ) 50866 -61.00 32 s +4 sf +(display) 59018 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 92050.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 95210.0 m +( roots ) 60732 -6.67 32 s +3 sf +(\037 A list of screens. ) 83899 -6.60 32 s +52832.0 99929.0 m +(Returns) 61610 0.00 -1 s +( a list of all the ) 79043 -20.83 32 s +2 sf +(screen) 86722 0.00 -1 s +3 sf +( structures available for the given ) 124998 -20.50 32 s +4 sf +(display) 133150 0.00 -1 s +3 sf +(. ) 134541 -21.00 32 s +4 sf +52832.0 106206.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 110992.0 m +(display\036vendor) 52575 0.00 -1 s +( ) 53169 -112.00 32 s +4 sf +(display) 61321 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 114153.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 117314.0 m +( vendor\036name) 69048 -42.00 32 s +3 sf +(, ) 70418 -42.00 32 s +4 sf +(release\036number ) 88792 -42.00 32 s +3 sf +(\037 Type ) 98741 -42.00 32 s +2 sf +(card32) 107049 0.00 -1 s +3 sf +(.) 107755 0.00 -1 s +( ) 108418 -43.00 32 s +52832.0 122033.0 m +(Returns) 61610 0.00 -1 s +( ) 62155 -161.00 32 s +4 sf +(vendor\036name) 77043 0.00 -1 s +3 sf +( and ) 82208 -161.00 32 s +4 sf +(release\036number) 99918 0.00 -1 s +3 sf +( as multiple values.) 121226 -161.00 32 s +( See the ) 130382 -161.67 32 s +2 sf +(display\036vendor\036) 149352 0.00 -1 s +52832.0 125194.0 m +(name) 59415 0.00 -1 s +3 sf +( and ) 64802 -50.00 32 s +2 sf +(display\036release\036number) 93174 0.00 -1 s +3 sf +( functions for additional) 120219 -50.00 32 s +( information.) 134902 -51.00 32 s +4 sf +52832.0 131470.0 m +(display) 60984 0.00 -1 s +( \037 ) 64855 -25.00 32 s +3 sf +(A ) 67573 -25.00 32 s +2 sf +(display) 76199 0.00 -1 s +3 sf +( object. ) 85163 -25.00 32 s +2 sf +34544.0 136257.0 m +(display\036vendor\036name) 60097 0.00 -1 s +( ) 60665 -138.00 32 s +4 sf +(display) 68817 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 139418.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 142579.0 m +( ) 53510 -28.00 32 s +( vendor\036name ) 69753 -28.50 32 s +3 sf +(\037 Type ) 79729 -28.50 32 s +2 sf +(string) 86783 0.00 -1 s +3 sf +(. ) 88166 -29.00 32 s +52832.0 147297.0 m +(Returns) 61610 0.00 -1 s +( a string that provides some vendor identification of the X server implementa\036) 149352 -15.75 32 s +52832.0 150458.0 m +(tion) 57222 0.00 -1 s +( associated with the specified ) 90866 -26.80 32 s +4 sf +(display) 99018 0.00 -1 s +3 sf +(. ) 100403 -27.00 32 s +4 sf +52832.0 156735.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 161521.0 m +(display\036version\036number) 63390 0.00 -1 s +( ) 63961 -135.00 32 s +4 sf +(display) 72113 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 164682.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 167843.0 m +( version\036number ) 72716 -34.00 32 s +3 sf +(\037 Type ) 82681 -34.00 32 s +2 sf +(card16) 90989 0.00 -1 s +3 sf +(.) 91695 0.00 -1 s +( ) 92366 -35.00 32 s +52832.0 172562.0 m +(Returns) 61610 0.00 -1 s +( the X protocol version number for this implementation of CLX. ) 134699 -24.64 32 s +4 sf +52832.0 178839.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +2 sf +34544.0 183625.0 m +(display\036xid) 47873 0.00 -1 s +( ) 48518 -61.00 32 s +4 sf +(display) 56670 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 186786.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 189947.0 m +( resource\036allocator ) 76028 -27.67 32 s +3 sf +(\037 Type ) 86006 -27.50 32 s +2 sf +(function) 96039 0.00 -1 s +3 sf +(. ) 97423 -28.00 32 s +52832.0 194666.0 m +(Returns) 61610 0.00 -1 s +( the function that is used to allocate server resource IDs for this ) 133553 -18.00 32 s +4 sf +(display) 141705 0.00 -1 s +3 sf +(.) 142411 0.00 -1 s +( ) 143098 -19.00 32 s +4 sf +52832.0 200942.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +139531.0 7925.0 m +(Displays) 147448 0.00 -1 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(2\03629) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(with\036display) 49438 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 50093 -51.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 58245 0.00 -1 s +3 sf +( &body ) 67395 -50.50 32 s +4 sf +(body) 72881 0.00 -1 s +2 sf +142014.0 h +3 sf +(Macro) 149379 0.00 -1 s +2 sf +3 sf +52832.0 27297.0 m +(This) 57849 0.00 -1 s +( macro is for use in a multi\036process environment. ) 112905 -117.67 32 s +2 sf +(with\036display) 127799 0.00 -1 s +3 sf +( provides exclusive) 149352 -117.50 32 s +52832.0 30457.0 m +(access) 60040 0.00 -1 s +( to the local ) 74222 57.50 32 s +2 sf +(display) 82848 0.00 -1 s +3 sf +( object for multiple request generation. It need not provide) 149352 57.44 32 s +52832.0 33618.0 m +(immediate) 64744 0.00 -1 s +( exclusive access for replies. That is, if another process) 125764 -125.00 32 s +( is waiting for a reply) 149352 -125.60 32 s +52832.0 36779.0 m +(\(while) 60040 0.00 -1 s +( not in a ) 69986 17.00 32 s +2 sf +(with\036display) 84880 0.00 -1 s +3 sf +(\), then) 92107 17.00 32 s +( synchronization need not \(but can\) occur immedi\036) 149352 16.43 32 s +52832.0 39940.0 m +(ately.) 59023 0.00 -1 s +( Except where noted, all routines effectively contain an implicit ) 134458 294.40 32 s +2 sf +(with\036display) 149352 0.00 -1 s +3 sf +52832.0 43101.0 m +(where) 59725 0.00 -1 s +( needed, so that correct synchronization is always provided at the interface level) 149352 -60.75 32 s +52832.0 46262.0 m +(on) 55654 0.00 -1 s +( a per\036call basis. Nested uses of) 90675 -80.00 32 s +( this macro work correctly. This macro does not pre\036) 149352 -80.56 32 s +52832.0 49423.0 m +(vent) 57691 0.00 -1 s +( concurrent event processing) 89923 -44.00 32 s +( \(see ) 95789 -44.50 32 s +2 sf +(with\036event\036queue) 116634 0.00 -1 s +3 sf +(\). ) 118940 -45.00 32 s +4 sf +52832.0 55699.0 m +(display) 60984 0.00 -1 s +( \037) 64178 -21.00 32 s +( ) 64862 -22.00 32 s +3 sf +(A ) 67584 -21.00 32 s +2 sf +(display) 76210 0.00 -1 s +3 sf +(. ) 77600 -22.00 32 s +20320.0 61208.0 m +0.0 0.0 m +newpath +20455 59584 av +148878 59582 as +[] 0 setdash +dp +149352.0 61208.0 m +/timsps12b 5 declareFont +5 sf +20320.0 64595.0 m +(Managing) 34995 0.00 -1 s +( the) 40368 13.00 32 s +( ) 41227 12.00 32 s +52832.0 h +2 sf +(2.4) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(Most) 64357 0.00 -1 s +( CLX functions cause output requests to be generated to an X) 149352 1421.27 32 s +5 sf +20320.0 67982.0 m +(Output) 30857 0.00 -1 s +( Buffer) 41114 8.00 32 s +52832.0 h +3 sf +(server.) 60431 0.00 -1 s +( Output requests) 78538 -195.00 32 s +( are not transmitted immediately but instead are stored in an ) 144807 -195.55 32 s +4 sf +(out\036) 149352 0.00 -1 s +52832.0 71143.0 m +(put) 56438 0.00 -1 s +( buffer) 63943 58.00 32 s +3 sf +( for) 67996 58.00 32 s +( the appropriate display. Requests in the output buffer are typically sent) 149352 57.45 32 s +52832.0 74303.0 m +(only) 57849 0.00 -1 s +( when the buffer is filled. Alternatively, buffered requests can be sent prior to proc\036) 149352 -180.86 32 s +52832.0 77464.0 m +(essing) 59887 0.00 -1 s +( an event in the input event queue \(see paragraph 12.3,) 122907 142.00 32 s +( Processing Events\). In) 149352 141.33 32 s +52832.0 80625.0 m +(either) 59256 0.00 -1 s +( case, CLX sends the output buffer automatically without explicit instructions) 149352 239.30 32 s +52832.0 83786.0 m +(from) 58316 0.00 -1 s +( the client application.) 83312 -28.00 32 s +( ) 83989 -29.00 32 s +52832.0 90063.0 m +(However,) 63879 0.00 -1 s +( in some cases, explicit control over the output buffer is needed, typically to) 149352 -14.69 32 s +52832.0 93224.0 m +(ensure) 60197 0.00 -1 s +( that the X server is in a consistent state before proceeding) 125159 -86.00 32 s +( further. The ) 139787 -86.67 32 s +2 sf +(display\036) 149352 0.00 -1 s +52832.0 96385.0 m +(force\036output) 67876 0.00 -1 s +3 sf +( and ) 73337 -13.00 32 s +2 sf +(display\036finish\036output) 98580 0.00 -1 s +3 sf +( functions allow a client program to synchro\036) 149352 -12.86 32 s +52832.0 99545.0 m +(nize) 57533 0.00 -1 s +( with buffered output requests.) 91959 -33.75 32 s +2 sf +34544.0 105822.0 m +(display\036after\036function) 60876 0.00 -1 s +( ) 61500 -82.00 32 s +4 sf +(display) 69652 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 108983.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +4 sf +52832.0 112144.0 m +( after\036function ) 70399 -23.00 32 s +3 sf +(\037 Type) 79703 -23.00 32 s +( ) 80385 -24.00 32 s +2 sf +(function) 90418 0.00 -1 s +3 sf +( or ) 94133 -23.50 32 s +2 sf +(null) 98839 0.00 -1 s +3 sf +(.) 99545 0.00 -1 s +52832.0 116930.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73533 -75.00 32 s +2 sf +(setf) 77762 0.00 -1 s +3 sf +(\) sets the ) 88275 -75.00 32 s +4 sf +(after\036function) 103793 0.00 -1 s +3 sf +( for the given ) 119324 -75.00 32 s +4 sf +(display) 127476 0.00 -1 s +3 sf +(. If ) 131322 -75.00 32 s +4 sf +(after\036function) 146840 0.00 -1 s +3 sf +( is) 149352 -76.00 32 s +52832.0 120091.0 m +(non\036) 58004 0.00 -1 s +2 sf +(nil) 61141 0.00 -1 s +3 sf +(,) 61847 0.00 -1 s +( it is a function that is called after every protocol) 114125 -258.00 32 s +( request is generated, even those) 149352 -258.60 32 s +52832.0 123252.0 m +(inside) 59573 0.00 -1 s +( an explicit ) 73470 217.00 32 s +2 sf +(with\036display) 88364 0.00 -1 s +3 sf +(, but never called from inside the ) 127817 217.29 32 s +4 sf +(after\036function) 143335 0.00 -1 s +3 sf +(. The) 149352 217.00 32 s +52832.0 126413.0 m +(function) 62236 0.00 -1 s +( is called inside the effective ) 95096 -9.00 32 s +2 sf +(with\036display) 109990 0.00 -1 s +3 sf +( for the associated request. The) 145053 -9.00 32 s +( de\036) 149352 -10.00 32 s +52832.0 129574.0 m +(fault) 58003 0.00 -1 s +( value is ) 67635 -160.00 32 s +2 sf +(nil) 70772 0.00 -1 s +3 sf +(. This can be set, for example, to #') 109385 -160.00 32 s +2 sf +(display\036force\036output) 133994 0.00 -1 s +3 sf +( or #') 139787 -159.50 32 s +2 sf +(display\036) 149352 0.00 -1 s +52832.0 132735.0 m +(finish\036outpu) 67571 0.00 -1 s +3 sf +(t.) 69061 0.00 -1 s +( ) 69743 -24.00 32 s +4 sf +52832.0 139011.0 m +(display) 60984 0.00 -1 s +( ) 61661 -29.00 32 s +3 sf +(\037 A ) 67875 -28.50 32 s +2 sf +(display) 76501 0.00 -1 s +3 sf +( object.) 84780 -29.00 32 s +2 sf +34544.0 143798.0 m +(display\036force\036output) 59153 0.00 -1 s +3 sf +( ) 59762 -97.00 32 s +4 sf +(display) 67914 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 148517.0 m +(Forces) 60355 0.00 -1 s +( any buffered output to be sent to the X server.) 112686 -25.60 32 s +4 sf +52832.0 154793.0 m +(display) 60984 0.00 -1 s +( ) 61661 -29.00 32 s +3 sf +(\037 A ) 67875 -28.50 32 s +2 sf +(display) 76501 0.00 -1 s +3 sf +( object.) 84780 -29.00 32 s +2 sf +34544.0 159580.0 m +(display\036finish\036output) 59787 0.00 -1 s +3 sf +( ) 60439 -54.00 32 s +4 sf +(display) 68591 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 164298.0 m +(Forces) 60355 0.00 -1 s +( any buffered output to be sent to the X) 105060 47.00 32 s +( server and then waits until all requests) 149352 46.43 32 s +52832.0 167459.0 m +(have) 58160 0.00 -1 s +( been) 63930 -264.00 32 s +( received and processed. Any errors generated are read and handled by the dis\036) 149352 -264.54 32 s +52832.0 170620.0 m +(play) 57691 0.00 -1 s +( error) 63871 -7.00 32 s +( handler. Any events generated by output requests are read and stored in the) 149352 -7.54 32 s +52832.0 173781.0 m +(event) 58944 0.00 -1 s +( queue.) 66988 -107.00 32 s +4 sf +52832.0 180058.0 m +(display) 60984 0.00 -1 s +( ) 61661 -29.00 32 s +3 sf +(\037 A ) 67875 -28.50 32 s +2 sf +(display) 76501 0.00 -1 s +3 sf +( object.) 84780 -29.00 32 s +20320.0 185567.0 m +0.0 0.0 m +newpath +20455 183943 av +148878 183941 as +[] 0 setdash +dp +149352.0 185567.0 m +5 sf +20320.0 188953.0 m +(Closing) 31233 0.00 -1 s +( the) 36599 6.00 32 s +52832.0 h +2 sf +(2.5) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(To) 61690 0.00 -1 s +( close or disconnect a display from the) 104998 -27.00 32 s +( X server, use ) 121110 -27.50 32 s +2 sf +(close\036display) 136474 0.00 -1 s +3 sf +(. ) 137858 -28.00 32 s +2 sf +() 137858 0.00 -1 s +140208.0 h +() 140208 0.00 -1 s +5 sf +20320.0 192340.0 m +(Display) 31233 0.00 -1 s +52832.0 h +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8737.0 m +(Displays) 28237 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(2\03630) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(close\036display) 49908 0.00 -1 s +/timsps10 3 declareFont +3 sf +( ) 50550 -64.00 32 s +/timsps10i 4 declareFont +4 sf +(display) 58702 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +52832.0 27297.0 m +(Closes) 60358 0.00 -1 s +( the connection to the X server for the specified ) 113574 -117.00 32 s +4 sf +(display) 121726 0.00 -1 s +3 sf +(. It destroys all server re\036) 149352 -116.60 32 s +52832.0 30457.0 m +(sources) 61295 0.00 -1 s +( \() 62644 -296.00 32 s +2 sf +(window) 72051 0.00 -1 s +3 sf +(, ) 73167 -296.00 32 s +2 sf +(font) 78025 0.00 -1 s +3 sf +(, ) 79141 -296.00 32 s +2 sf +(pixmap) 88235 0.00 -1 s +3 sf +(, ) 89351 -296.00 32 s +2 sf +(colormap) 100793 0.00 -1 s +3 sf +(, ) 101909 -296.00 32 s +2 sf +(cursor) 109746 0.00 -1 s +3 sf +(, and ) 115348 -295.50 32 s +2 sf +(gcontext) 125534 0.00 -1 s +3 sf +(\), that the client appli\036) 149352 -295.50 32 s +52832.0 33618.0 m +(cation) 59728 0.00 -1 s +( has created on this display, unless the close down mode) 120975 -232.00 32 s +( of the server resource has) 149352 -232.60 32 s +52832.0 36779.0 m +(been) 58160 0.00 -1 s +( changed \(see ) 75040 272.00 32 s +2 sf +(set\036close\036down\036mode) 100115 0.00 -1 s +3 sf +(\). Therefore, these server resources should) 149352 272.20 32 s +52832.0 39940.0 m +(never) 59099 0.00 -1 s +( be referenced again. In addition,) 96570 50.00 32 s +( this function discards any output requests that) 149352 49.43 32 s +52832.0 43101.0 m +(have) 58160 0.00 -1 s +( been buffered but have not yet been sent.) 104972 -36.00 32 s +( ) 105641 -37.00 32 s +4 sf +52832.0 49378.0 m +(display) 60984 0.00 -1 s +( \037 ) 64845 -30.00 32 s +3 sf +(A ) 67559 -29.00 32 s +2 sf +(display) 76185 0.00 -1 s +3 sf +( object.) 84463 -30.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/s01.ps +++ cmucl-20a-20090928/own-work/clx/s01.ps @@ -0,0 +1,7551 @@ +%!PS-Adobe-2.0 +%%Title: s01.ps +%%Pages: 22 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 11 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /courps8 /ILcourps 8 map + /timsps12b /ILtimsb 12 map + /timsps10b /ILtimsb 10 map + /symbb8 /ILsymbb 8 map + /symbb10 /ILsymbb 10 map + /symba10 /ILsymba 10 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Courier /ILcourps ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +/Symbol /ILsymba -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 11 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +145252.0 208619.0 m +(1\0361) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 10 declareFont +10 sf +20410.0 39376.0 m +54683.0 39466.0 m +(INTRODUCTION TO CLX) 115846 -35.00 32 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +146213 39165 av +146213 23571 as +142601 23571 as +138988 26541 as +138988 28026 as +142149 28026 as +142149 39165 as +closepath +fp +[] 0 setdash +dp +0.0 sw +newpath +138537 23571 av +138537 23571 as +newpath +138537 43620 av +138537 43620 as +newpath +148019 43620 av +148019 43620 as +newpath +148019 23571 av +148019 23571 as +149351.0 39376.0 m +10 sf +/timsps10 3 declareFont +3 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 7 declareFont +7 sf +20320.0 46871.0 m +(Introduction) 38756 0.00 -1 s +52832.0 h +2 sf +(1.1) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(This) 63572 0.00 -1 s +( manual assumes a basic understanding of window systems and the) 138246 -104.00 32 s +( Common) 149352 -105.00 32 s +52832.0 50032.0 m +(Lisp) 57849 0.00 -1 s +( programming language. To provide an introduction to the Common) 134142 -75.00 32 s +( Lisp X Inter\036) 149352 -75.67 32 s +52832.0 53193.0 m +(face) 57530 0.00 -1 s +( \(CLX\) programming, this section) 95908 -26.00 32 s +( discusses the following:) 123654 -26.67 32 s +125849.0 h +() 125849 0.00 -1 s +/symbb8 6 declareFont +6 sf +52832.0 59741.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Overview of the X Window) 89310 -26.00 32 s +( System) 98301 -25.00 32 s +( ) 98981 -26.00 32 s +6 sf +52832.0 66288.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Naming) 67003 0.00 -1 s +( and argument conventions) 97335 -52.00 32 s +( ) 97988 -53.00 32 s +6 sf +52832.0 72836.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Programming) 73430 0.00 -1 s +( considerations) 90383 -54.00 32 s +( ) 91034 -55.00 32 s +20320.0 79835.0 m +270.0 sw +/drawmode PL_CLEAR def +0.0 0.0 m +newpath +24384 78210 av +149013 78210 as +[] 0 setdash +dp +541.0 sw +/drawmode PL_SET def +newpath +148878 78210 av +20455 78210 as +[] 0 setdash +dp +149352.0 79835.0 m +7 sf +20320.0 83222.0 m +(The) 25965 0.00 -1 s +( X) 29256 -1.00 32 s +( Window) 42333 -2.00 32 s +52832.0 h +2 sf +(1.2) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( X Window System was developed at the Massachusetts Institute of) 139124 -31.60 32 s +7 sf +20320.0 86608.0 m +(System) 30663 0.00 -1 s +52832.0 h +3 sf +(Technology) 66312 0.00 -1 s +( \(MIT\) and first released in) 95875 -215.00 32 s +( 1985. Since then, the X Window System has be\036) 149352 -215.56 32 s +52832.0 89769.0 m +(come) 58944 0.00 -1 s +( an industry\036standard product available on virtually every type of) 135453 342.00 32 s +( bit\036mapped) 149352 341.00 32 s +52832.0 92930.0 m +(workstation.) 66861 0.00 -1 s +( The current version of X, Version 11, has been implemented for several) 149352 56.33 32 s +52832.0 96091.0 m +(different) 62545 0.00 -1 s +( computer architectures, for a wide variety of display hardware, and also for) 149352 90.08 32 s +52832.0 99252.0 m +(many) 59102 0.00 -1 s +( different operating systems. X Version) 103180 -87.00 32 s +( 11 represents the fulfillment of the origi\036) 149352 -87.57 32 s +52832.0 102413.0 m +(nal) 56280 0.00 -1 s +( design goals proposed by MIT, as follows:) 105004 -26.71 32 s +107199.0 h +() 107199 0.00 -1 s +6 sf +52832.0 108960.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Portable) 67316 0.00 -1 s +( \037 Support virtually any bitmap display and any interactive input device) 149352 -30.82 32 s +57912.0 112121.0 m +(\(including) 69511 0.00 -1 s +( keyboards, mice, tablets, joysticks, and touch screens\). Make it easy to) 149352 -66.55 32 s +57912.0 115282.0 m +(implement) 69982 0.00 -1 s +( the window system on different operating) 117608 -30.00 32 s +( systems.) 127926 -31.00 32 s +6 sf +52832.0 121830.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Device\036Independent) 80790 0.00 -1 s +( Applications) 95671 -246.00 32 s +( \037 Avoid rewriting, recompiling, or even relink\036) 149352 -246.57 32 s +57912.0 124991.0 m +(ing) 61518 0.00 -1 s +( in order to use different display/input hardware. Make it easy) 129344 -200.00 32 s +( for an application) 149352 -200.67 32 s +57912.0 128151.0 m +(to) 60107 0.00 -1 s +( work on both monochrome and color) 102491 -42.00 32 s +( hardware.) 114356 -43.00 32 s +6 sf +52832.0 134699.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Network) 67784 0.00 -1 s +( Transparent \037 Let an application run on one computer while using an\036) 149352 44.33 32 s +57912.0 137860.0 m +(other) 63710 0.00 -1 s +( computer's display, even if the other computer has a different operating sys\036) 149352 -105.58 32 s +57912.0 141021.0 m +(tem) 62144 0.00 -1 s +( or hardware architecture.) 91011 -40.00 32 s +6 sf +52832.0 147568.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Multitasking) 72336 0.00 -1 s +( \037 Support multiple applications being displayed simultaneously.) 146665 -42.00 32 s +6 sf +52832.0 154116.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(No) 61360 0.00 -1 s +( User Interface Policy \037 Since no one agrees on what constitutes the best user) 149352 -51.71 32 s +57912.0 157277.0 m +(interface,) 68487 0.00 -1 s +( make it possible for a broad range of user interface styles \(or policies\) to) 149352 -123.71 32 s +57912.0 160438.0 m +(be) 60576 0.00 -1 s +( implemented, external to the window system) 111703 -35.00 32 s +( and to the application programs.) 148675 -35.60 32 s +6 sf +52832.0 166985.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Cheap) 65122 0.00 -1 s +( Windows \037 Windows should be) 103321 5.00 32 s +( abundant, and ubiquitous. Provide over\036) 149352 4.40 32 s +57912.0 170146.0 m +(lapping) 66377 0.00 -1 s +( windows and a simple mechanism for window hierarchy.) 131358 -37.75 32 s +6 sf +52832.0 176694.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(High\036Performance) 78909 0.00 -1 s +( Graphics \037 Provide powerful interfaces for synthesizing 2\036D) 149352 9.00 32 s +57912.0 179855.0 m +(images) 65906 0.00 -1 s +( \(geometric primitives, high\036quality text with multiple typefaces,) 143879 693.00 32 s +( and) 149352 692.00 32 s +57912.0 183015.0 m +(scanned) 67002 0.00 -1 s +( images\).) 77261 -86.00 32 s +6 sf +52832.0 189563.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Extensible) 69825 0.00 -1 s +( \037 Include a mechanism for adding new capabilities. Allow separate) 149352 155.10 32 s +57912.0 192724.0 m +(sites) 62929 0.00 -1 s +( to develop independent extensions without becoming) 124154 67.00 32 s +( incompatible with re\036) 149352 66.33 32 s +57912.0 195885.0 m +(mote) 63555 0.00 -1 s +( applications.) 78526 -78.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\0362) 24081 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(Some) 59260 0.00 -1 s +( of these goals lead directly to the basic X) 105142 -153.00 32 s +( architecture \037 the client\036server model.) 149352 -153.60 32 s +52832.0 25739.0 m +(The) 57220 0.00 -1 s +( basic window system is implemented by the X ) 109354 -208.00 32 s +/timsps10i 5 declareFont +5 sf +(server) 116407 0.00 -1 s +3 sf +( program. An application pro\036) 149352 -207.75 32 s +52832.0 28900.0 m +(gram) 58630 0.00 -1 s +( \(the ) 64201 -114.00 32 s +5 sf +(client) 70470 0.00 -1 s +3 sf +(\) sends window system ) 96978 -114.00 32 s +5 sf +(requests) 106384 0.00 -1 s +3 sf +( to) 109171 -114.00 32 s +( the X server through a reliable two\036) 149352 -114.57 32 s +52832.0 32060.0 m +(way) 57533 0.00 -1 s +( byte\036stream.) 72232 -33.00 32 s +( ) 72904 -34.00 32 s +52832.0 38337.0 m +(In) 55182 0.00 -1 s +( general, the server and the) 86361 155.00 32 s +( client can be executing on separate host computers, in) 149352 154.44 32 s +52832.0 41498.0 m +(which) 59728 0.00 -1 s +( case the byte\036stream is implemented via some network protocol \(TCP, DEC\036) 149352 196.36 32 s +52832.0 44930.0 m +(net) 56280 0.00 -1 s +/symbb10 9 declareFont +9 sf +(\324) 58791 0.00 -1 s +3 sf +(,) 59497 0.00 -1 s +( Chaosnet, and so forth\). The X server, which is connected to several client pro\036) 149352 -24.86 32 s +52832.0 48091.0 m +(grams) 59728 0.00 -1 s +( running concurrently, executes client requests in round\036robin fashion. The server) 149352 -237.90 32 s +52832.0 51252.0 m +(is) 54714 0.00 -1 s +( responsible for drawing client graphics on the display screen and for making sure that) 149352 -203.86 32 s +52832.0 54412.0 m +(graphics) 62392 0.00 -1 s +( output to a window stays inside its) 101933 -29.00 32 s +( boundary.) 113973 -30.00 32 s +52832.0 60689.0 m +(The) 57220 0.00 -1 s +( other primary job of the X server is to channel input from the) 123967 -237.00 32 s +( keyboard, pointer, and) 149352 -237.67 32 s +52832.0 63850.0 m +(other) 58630 0.00 -1 s +( input devices back to the appropriate client programs. Input arrives at the) 142344 34.00 32 s +( client) 149352 33.00 32 s +52832.0 67011.0 m +(asynchronously) 70545 0.00 -1 s +( in the form of input ) 93334 -120.83 32 s +5 sf +(events) 100386 0.00 -1 s +3 sf +( representing up/down transitions of keys or) 149352 -120.50 32 s +52832.0 70172.0 m +(pointer) 60825 0.00 -1 s +( buttons, changes in the pointer position, and so on. In some cases, a request gen\036) 149352 -206.73 32 s +52832.0 73333.0 m +(erates) 59412 0.00 -1 s +( a return value \(or ) 79248 -217.00 32 s +5 sf +(reply) 85047 0.00 -1 s +3 sf +(\) from the server, which is another kind of client input.) 144790 -217.00 32 s +( Re\036) 149352 -218.00 32 s +52832.0 76494.0 m +(plies) 58162 0.00 -1 s +( and input events are received via the same byte\036stream connecting the client with) 149352 -92.77 32 s +52832.0 79654.0 m +(the) 56280 0.00 -1 s +( server.) 64550 -35.00 32 s +52832.0 86586.0 m +0.0 0.0 m +newpath +149013 85027 av +52967 85029 as +[] 0 setdash +dp +149352.0 86586.0 m +20320.0 89408.0 m +38111.0 h +2 sf +(Windows) 49401 0.00 -1 s +52832.0 h +(1.2.1) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The) 65060 0.00 -1 s +( X Window System supports one or more screens containing overlapping) 149352 168.40 32 s +52832.0 92569.0 m +(windows) 63021 0.00 -1 s +( and subwindows. A ) 86352 -105.00 32 s +5 sf +(screen) 93718 0.00 -1 s +3 sf +( is a) 98055 -105.00 32 s +( physical monitor and hardware, which can be) 149352 -105.57 32 s +52832.0 95730.0 m +(either) 59256 0.00 -1 s +( color or black and white. There can be multiple screens per display workstation. A) 149352 -270.79 32 s +52832.0 98891.0 m +(single) 59573 0.00 -1 s +( server can provide display services for any number of screens. A set of screens for) 149352 -262.87 32 s +52832.0 102052.0 m +(a) 54085 0.00 -1 s +( single user with) 72571 -30.00 32 s +( one keyboard and one mouse is called a ) 118616 -30.56 32 s +5 sf +(display) 126768 0.00 -1 s +3 sf +(.) 127474 0.00 -1 s +52832.0 108328.0 m +(All) 56437 0.00 -1 s +( windows in an X server are arranged in a strict hierarchy. At the top of the hierarchy) 149352 -185.71 32 s +52832.0 111489.0 m +(are) 56277 0.00 -1 s +( the ) 61423 143.00 32 s +5 sf +(root windows) 76855 143.00 32 s +3 sf +(, which cover each of the display screens. Each root window) 146622 143.00 32 s +( is) 149352 142.00 32 s +52832.0 114650.0 m +(either) 59256 0.00 -1 s +( partially or completely covered by child windows. All windows, except for root) 149352 -54.83 32 s +52832.0 117811.0 m +(windows,) 63727 0.00 -1 s +( have parents. Any window can in turn have its own children. In this way, an) 149352 -70.53 32 s +52832.0 120972.0 m +(application) 65371 0.00 -1 s +( program can create a window tree of arbitrary depth) 124527 -35.00 32 s +( on each screen.) 142443 -35.67 32 s +52832.0 127248.0 m +(A) 54869 0.00 -1 s +( child window can be larger than its parent. That is, part or all of the child window can) 149352 -176.00 32 s +52832.0 130409.0 m +(extend) 60355 0.00 -1 s +( beyond the boundaries of the parent. However, all output to a window is clipped) 149352 -170.57 32 s +52832.0 133570.0 m +(by) 55654 0.00 -1 s +( the boundaries of its parent window. If several children of a window have overlap\036) 149352 -29.86 32 s +52832.0 136731.0 m +(ping) 57849 0.00 -1 s +( locations, one of the children is considered to be on top of/or raised over the others,) 149352 -217.88 32 s +52832.0 139892.0 m +5 sf +(obscuring) 64120 0.00 -1 s +3 sf +( them. Window output to areas that are covered by other windows is sup\036) 149352 202.00 32 s +52832.0 143053.0 m +(pressed.) 62001 0.00 -1 s +( ) 62676 -31.00 32 s +52832.0 149329.0 m +(A) 54869 0.00 -1 s +( window has a border that is zero or more pixels in width and can be any pattern \(pix\036) 149352 -123.67 32 s +52832.0 152490.0 m +(map\)) 58630 0.00 -1 s +( or solid color. A window usually has a background pattern that is drawn by the X) 149352 -115.00 32 s +52832.0 155651.0 m +(server.) 60431 0.00 -1 s +( Each window has its own coordinate system.) 111280 -81.00 32 s +( Child windows obscure their par\036) 149352 -81.60 32 s +52832.0 158812.0 m +(ents) 57378 0.00 -1 s +( unless) 65169 30.00 32 s +( the child windows have no background. Graphics operations in the parent) 149352 29.45 32 s +52832.0 161973.0 m +(window) 61923 0.00 -1 s +( are usually clipped by the children.) 102052 -38.83 32 s +52832.0 168250.0 m +(X) 54869 0.00 -1 s +( also provides objects called ) 86742 -130.60 32 s +5 sf +(pixmaps) 96147 0.00 -1 s +3 sf +( for off\036screen storage of graphics. Single\036plane) 149352 -130.50 32 s +52832.0 171410.0 m +(pixmaps) 62395 0.00 -1 s +( \(that is, of depth 1\) are sometimes referred to as ) 118340 42.00 32 s +5 sf +(bitmaps) 127276 0.00 -1 s +3 sf +(. Both pixmaps and) 149352 42.00 32 s +52832.0 174571.0 m +(windows) 63021 0.00 -1 s +( can be used interchangeably in most graphics functions. Pixmaps are also) 143745 -271.00 32 s +( used) 149352 -272.00 32 s +52832.0 177732.0 m +(in) 55027 0.00 -1 s +( various graphics operations) 87268 167.00 32 s +( to define patterns, or ) 112865 166.40 32 s +5 sf +(tiles) 117568 0.00 -1 s +3 sf +(. Windows and pixmaps to\036) 149352 166.50 32 s +52832.0 180893.0 m +(gether) 59883 0.00 -1 s +( are referred to as) 79516 -27.00 32 s +( ) 80194 -28.00 32 s +5 sf +(drawables) 91953 0.00 -1 s +3 sf +(.) 92659 0.00 -1 s +52832.0 187825.0 m +0.0 0.0 m +newpath +149013 186266 av +52967 186268 as +[] 0 setdash +dp +149352.0 187825.0 m +20320.0 190647.0 m +33822.0 h +2 sf +(Input) 40566 0.00 -1 s +( Events) 49378 -46.00 32 s +52832.0 h +(1.2.2) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The) 65060 0.00 -1 s +( X input mechanism is conceptually simple yet quite powerful. Most events) 149352 -89.55 32 s +52832.0 193808.0 m +(are) 56277 0.00 -1 s +( attached to a particular window \(that is, contain an identifier for the window receiv\036) 149352 -163.79 32 s +52832.0 196969.0 m +(ing) 56438 0.00 -1 s +( the event\). A client program can receive multiple window input streams, all multi\036) 149352 -56.85 32 s +52832.0 200129.0 m +(plexed) 60355 0.00 -1 s +( over the single byte\036stream connection to the server.) 119865 -35.63 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +145252.0 208619.0 m +(1\0363) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(Clients) 60828 0.00 -1 s +( can tailor their input by expressing interest in only certain event types. The) 149352 250.23 32 s +52832.0 25739.0 m +(server) 59725 0.00 -1 s +( uses special event types to send important messages to the client. For) 138390 -9.00 32 s +( example,) 149352 -10.00 32 s +52832.0 28900.0 m +(the) 56280 0.00 -1 s +( client can elect) 73269 -214.00 32 s +( to receive an ) 88240 -214.50 32 s +2 sf +(:enter\036notify) 103438 0.00 -1 s +3 sf +( event when the pointer cursor moves into) 149352 -214.57 32 s +52832.0 32060.0 m +(a) 54085 0.00 -1 s +( certain window. Another vital message from the server is an ) 120792 -247.91 32 s +2 sf +(:exposure) 132548 0.00 -1 s +3 sf +( event. This is a) 149352 -247.50 32 s +52832.0 35221.0 m +(signal) 59573 0.00 -1 s +( to the) 66362 -133.00 32 s +( client indicating that at least some portion of the window has suddenly be\036) 149352 -133.54 32 s +52832.0 38382.0 m +(come) 58944 0.00 -1 s +( visible \(perhaps the user moved another window which had been overlapping it\).) 149352 -139.83 32 s +52832.0 41543.0 m +(The) 57220 0.00 -1 s +( client is then responsible for doing what is necessary to redisplay the window's im\036) 149352 -192.93 32 s +52832.0 44704.0 m +(age.) 57455 0.00 -1 s +( Client programs must be prepared to regenerate the contents of windows in this way) 149352 -276.64 32 s +52832.0 47865.0 m +(on) 55654 0.00 -1 s +( demand.) 65905 -95.00 32 s +52832.0 54142.0 m +(Input) 58788 0.00 -1 s +( is also subject to policy) 85844 -29.00 32 s +( decisions about which client window receives keyboard) 149352 -29.57 32 s +52832.0 57302.0 m +(and) 56907 0.00 -1 s +( pointer events. Since the pointer is free to roam between windows, just clicking on a) 149352 -237.60 32 s +52832.0 60463.0 m +(window) 61923 0.00 -1 s +( is) 64352 -159.00 32 s +( often enough to send a pointer event to that window. Keyboard events, how\036) 149352 -159.54 32 s +52832.0 63624.0 m +(ever,) 58394 0.00 -1 s +( must go to a keyboard) 82702 -296.00 32 s +( focus window which has to be designated in some other way.) 149352 -296.55 32 s +52832.0 66785.0 m +(Usually,) 62316 0.00 -1 s +( the arbiter of such input management policy is a program called the ) 140571 45.31 32 s +/timsps10i 5 declareFont +5 sf +(window) 149352 0.00 -1 s +52832.0 69946.0 m +(manager) 62864 0.00 -1 s +3 sf +(.) 63570 0.00 -1 s +( The window manager gives) 94785 -190.00 32 s +( the human user a way to make a window the key\036) 149352 -190.55 32 s +52832.0 73107.0 m +(board) 59257 0.00 -1 s +( focus, to manage the layout of windows on the screen, to represent windows with) 149352 -181.64 32 s +52832.0 76268.0 m +(icons,) 59495 0.00 -1 s +( and so forth. In fact, the window manager client determines most of the so\036called) 149352 -175.86 32 s +52832.0 79429.0 m +(look) 57849 0.00 -1 s +( and feel of the X Window System.) 97468 -28.00 32 s +20320.0 86428.0 m +270.0 sw +/drawmode PL_CLEAR def +0.0 0.0 m +newpath +24384 84803 av +149013 84803 as +[] 0 setdash +dp +541.0 sw +/drawmode PL_SET def +newpath +148878 84803 av +20455 84803 as +[] 0 setdash +dp +149352.0 86428.0 m +/timsps12b 7 declareFont +7 sf +20320.0 89814.0 m +(A) 22765 0.00 -1 s +( Quick Tour) 40663 11.00 32 s +52832.0 h +2 sf +(1.3) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( X Window) 78354 1122.00 32 s +( System is defined by the X Window System Protocol) 149352 1121.44 32 s +7 sf +20320.0 93201.0 m +(of) 23140 0.00 -1 s +( CLX) 31135 -1.00 32 s +52832.0 h +3 sf +(Specification,) 68427 0.00 -1 s +( a detailed description of the encoding and the meaning of requests and) 149352 56.00 32 s +52832.0 96362.0 m +(events) 60042 0.00 -1 s +( sent between a client and a server. This) 103248 -232.00 32 s +( standard protocol does not depend on any) 149352 -232.57 32 s +52832.0 99523.0 m +(particular) 63643 0.00 -1 s +( programming language. As a result,) 103679 -222.00 32 s +( each programming language must define) 149352 -222.60 32 s +52832.0 102684.0 m +(its) 55498 0.00 -1 s +( own functional interface for using the X protocol. The standard X interface used by) 149352 -74.79 32 s +52832.0 105845.0 m +(Common) 63337 0.00 -1 s +( Lisp programmers is called CLX.) 101967 14.00 32 s +( CLX is a set of data types, functions, and) 149352 13.44 32 s +52832.0 109006.0 m +(macros) 60981 0.00 -1 s +( which allow a Common Lisp client program to interact with an X server to send) 149352 -174.73 32 s +52832.0 112166.0 m +(requests) 62079 0.00 -1 s +( and to receive input events and replies.) 106520 -33.00 32 s +2 sf +() 106520 0.00 -1 s +108870.0 h +() 108870 0.00 -1 s +3 sf +52832.0 118443.0 m +(For) 56751 0.00 -1 s +( the most part, CLX functions are closely tied to) 108877 -252.00 32 s +( the underlying requests in the X pro\036) 149352 -252.57 32 s +52832.0 121604.0 m +(tocol.) 59181 0.00 -1 s +( Many CLX functions simply add requests to an) 111326 -262.00 32 s +( output buffer. These requests later) 149352 -262.60 32 s +52832.0 124765.0 m +(execute) 61450 0.00 -1 s +( asynchronously on the X display server. However, some functions of CLX) 145881 -55.00 32 s +( lie) 149352 -56.00 32 s +52832.0 127926.0 m +(outside) 60984 0.00 -1 s +( the) 65064 -74.00 32 s +( scope of the protocol\037for example, reading events and managing a client\036) 149352 -74.55 32 s +52832.0 131087.0 m +(side) 57378 0.00 -1 s +( event queue. CLX is also responsible for important batching and caching tasks that) 149352 -183.92 32 s +52832.0 134247.0 m +(minimize) 63491 0.00 -1 s +( network communication.) 92253 -79.00 32 s +52832.0 140524.0 m +(The) 57220 0.00 -1 s +( following paragraphs show an example of a CLX client program. All CLX) 142660 34.00 32 s +( func\036) 149352 33.00 32 s +52832.0 143685.0 m +(tions) 58320 0.00 -1 s +( and macros are shown in upper case. Note) 104593 -260.00 32 s +( that some of the terms used are unique to) 149352 -260.56 32 s +52832.0 146846.0 m +(X,) 55575 0.00 -1 s +( while other terms that are common to other window systems have different meanings) 149352 -243.69 32 s +52832.0 150007.0 m +(in) 55027 0.00 -1 s +( X. It may be helpful to refer to the glossary when) 109572 -171.00 32 s +( you are uncertain of a term's mean\036) 149352 -171.57 32 s +52832.0 153168.0 m +(ing) 56438 0.00 -1 s +( in the context of the X Window System.) 102390 -26.88 32 s +52832.0 160099.0 m +0.0 0.0 m +newpath +149013 158540 av +52967 158542 as +[] 0 setdash +dp +149352.0 160099.0 m +20320.0 162921.0 m +30638.0 h +2 sf +(A) 32675 0.00 -1 s +( Simple) 41654 -36.00 32 s +( Menu) 49378 -37.00 32 s +52832.0 h +(1.3.1) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The) 65060 0.00 -1 s +( example client program creates and displays) 114840 -167.00 32 s +( a simple pop\036up menu consist\036) 149352 -167.60 32 s +52832.0 166082.0 m +(ing) 56438 0.00 -1 s +( of) 59374 -120.00 32 s +( a column of strings\037a title string followed by selectable menu item strings. The) 149352 -120.54 32 s +52832.0 169243.0 m +(implementation) 70545 0.00 -1 s +( uses one window to represent the) 109571 130.00 32 s +( entire menu, plus a set of subwin\036) 149352 129.43 32 s +52832.0 172404.0 m +(dows,) 59495 0.00 -1 s +( one for each menu) 80051 -268.00 32 s +( item. Here is the definition of a structure which represents such) 149352 -268.55 32 s +52832.0 175565.0 m +(a) 54085 0.00 -1 s +( menu.) 61705 -62.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\0364) 24081 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/courps8 4 declareFont +4 sf +52832.0 22284.0 m +(\(defstruct) 66402 0.00 -1 s +( \(menu\)) 75861 -40.00 32 s +52832.0 24858.0 m +55880.0 h +(\177A) 58594 0.00 -1 s +( simple menu of text strings.") 99229 -15.00 32 s +52832.0 27432.0 m +55880.0 h +(\(title) 64022 0.00 -1 s +( \177Choose an) 78911 -19.00 32 s +( item:"\)) 89747 -20.00 32 s +52832.0 30006.0 m +55880.0 h +(item-alist) 69450 0.00 -1 s +( ;\(\(item-window) 107334 -8.00 32 s +( item-string\)\)) 126323 -9.00 32 s +52832.0 32580.0 m +55880.0 h +(window) 64022 0.00 -1 s +52832.0 35154.0 m +55880.0 h +(gcontext) 66736 0.00 -1 s +52832.0 37727.0 m +55880.0 h +(width) 62665 0.00 -1 s +52832.0 40301.0 m +55880.0 h +(title-width) 70807 0.00 -1 s +52832.0 42875.0 m +55880.0 h +(item-width) 69450 0.00 -1 s +52832.0 45449.0 m +55880.0 h +(item-height) 70807 0.00 -1 s +52832.0 48023.0 m +55880.0 h +(\(geometry-changed-p) 81663 0.00 -1 s +( t\)\) ;nil if unchanged) 111441 -19.00 32 s +( since displayed ) 134451 -19.67 32 s +/timsps10 3 declareFont +3 sf +52832.0 54006.0 m +(The) 57220 0.00 -1 s +( ) 58004 78.00 32 s +4 sf +(window) 66146 0.00 -1 s +3 sf +( slot will contain the ) 90290 78.60 32 s +2 sf +(window) 99697 0.00 -1 s +3 sf +( object that represents the menu. The ) 142567 78.43 32 s +4 sf +(item\036) 149352 0.00 -1 s +52832.0 57167.0 m +(alist) 59617 0.00 -1 s +3 sf +( represents the relationship between the menu items and) 121760 -128.00 32 s +( their associated subwin\036) 149352 -128.67 32 s +52832.0 60328.0 m +(dows.) 59495 0.00 -1 s +( Each entry in ) 74833 -280.00 32 s +4 sf +(item\036alist) 88403 0.00 -1 s +3 sf +( is a list whose) 103902 -280.00 32 s +( first element is a \(sub\)window object and) 149352 -280.57 32 s +52832.0 63489.0 m +(whose) 60042 0.00 -1 s +( second element is the corresponding item string. A ) 117169 -184.00 32 s +2 sf +(window) 126576 0.00 -1 s +3 sf +( object is an) 139584 -184.00 32 s +( instance) 149352 -185.00 32 s +52832.0 66650.0 m +(of) 55182 0.00 -1 s +( a CLX\036defined) 72309 -291.00 32 s +( data type which represents X windows. A ) 118489 -291.50 32 s +2 sf +(window) 127896 0.00 -1 s +3 sf +( object actually car\036) 149352 -291.67 32 s +52832.0 69810.0 m +(ries) 56906 0.00 -1 s +( two pieces of information:) 86750 -180.00 32 s +( an X window ID integer and a ) 120885 -180.50 32 s +2 sf +(display) 129511 0.00 -1 s +3 sf +( object. A ) 140726 -180.67 32 s +2 sf +(display) 149352 0.00 -1 s +3 sf +52832.0 72971.0 m +(is) 54714 0.00 -1 s +( another CLX\036defined data type that represents a connection to a specific X display) 149352 52.00 32 s +52832.0 76132.0 m +(server.) 60431 0.00 -1 s +( The ) 65927 -152.00 32 s +4 sf +(gcontext) 76783 0.00 -1 s +3 sf +( slot contains an instance of a CLX data type known as a ) 139475 -151.54 32 s +/timsps10i 5 declareFont +5 sf +(graphics) 149352 0.00 -1 s +52832.0 79293.0 m +(context) 60981 0.00 -1 s +3 sf +(.) 61687 0.00 -1 s +( A graphics context) 83115 -198.00 32 s +( is a set of display attribute values, such as foreground color,) 149352 -198.55 32 s +52832.0 82454.0 m +(fill) 56123 0.00 -1 s +( style, line style,) 73717 -276.00 32 s +( text font, and so forth. Each X graphics request \(and hence each CLX) 149352 -276.54 32 s +52832.0 85615.0 m +(graphics) 62392 0.00 -1 s +( function call\) must supply a graphics context to use in displaying the request.) 149352 -75.54 32 s +52832.0 88776.0 m +(The) 57220 0.00 -1 s +( menu's ) 66379 -280.00 32 s +4 sf +(gcontext) 77235 0.00 -1 s +3 sf +( will thus hold) 92623 -280.00 32 s +( all of the attribute values used during menu display.) 149352 -280.56 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +145252.0 208619.0 m +(1\0365) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(The) 57220 0.00 -1 s +( first thing to do is make an) 88042 -20.00 32 s +( instance of a ) 103634 -20.50 32 s +/courps8 4 declareFont +4 sf +(menu) 109062 0.00 -1 s +3 sf +( object:) 117427 -21.00 32 s +4 sf +30480.0 28561.0 m +(\(defun) 38622 0.00 -1 s +( create-menu) 54871 -35.00 32 s +( \(parent-window text-color background-color) 113115 -35.67 32 s +30480.0 31135.0 m +() 30480 0.00 -1 s +31837.0 h +(text-font\)) 45407 0.00 -1 s +30480.0 33709.0 m +33528.0 h +(\(make-menu) 47098 0.00 -1 s +30480.0 36282.0 m +33528.0 h +36170.0 h +(;;) 38884 0.00 -1 s +( Create menu graphics) 67327 -18.00 32 s +( context) 78164 -19.00 32 s +30480.0 38856.0 m +33528.0 h +36170.0 h +(:gcontext) 48383 0.00 -1 s +( \(CREATE-GCONTEXT :drawable) 84974 -24.00 32 s +( parent-window) 106612 -24.67 32 s +30480.0 41430.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +54864.0 h +58928.0 h +62992.0 h +67056.0 h +72746.0 h +(:foreground) 87673 0.00 -1 s +( text-color) 102548 -52.00 32 s +30480.0 44004.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +54864.0 h +58928.0 h +62992.0 h +67056.0 h +72746.0 h +(:background) 87673 0.00 -1 s +( background-color) 110676 -66.00 32 s +30480.0 46578.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +54864.0 h +58928.0 h +62992.0 h +67056.0 h +72746.0 h +(:font) 79531 0.00 -1 s +( ) 82231 -7.00 32 s +( text-font\)) 102548 -7.60 32 s +30480.0 49152.0 m +51726.0 v +33528.0 h +36170.0 h +(;;) 38884 0.00 -1 s +( Create menu) 55136 -16.00 32 s +( window) 64618 -17.00 32 s +30480.0 54300.0 m +33528.0 h +36170.0 h +(:window) 45669 0.00 -1 s +( \(CREATE-WINDOW) 68682 -18.67 32 s +30480.0 56873.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:parent) 60299 0.00 -1 s +( parent-window) 87376 -9.00 32 s +30480.0 59447.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:class ) 67036 -8.00 32 s +( ) 68386 -7.00 32 s +( :input-output) 87376 -8.00 32 s +30480.0 62021.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:x) 53514 0.00 -1 s +( 0 ;temporary value) 115824 -3.73 32 s +30480.0 64595.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:y 0 ;temporary value) 115824 -3.73 32 s +30480.0 67169.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:width ) 61648 -4.00 32 s +( 16 ;temporary value) 115824 -4.52 32 s +30480.0 69743.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:height 16 ;temporary value ) 118533 -4.50 32 s +30480.0 72317.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:border-width) 68441 0.00 -1 s +( 2) 71120 -35.00 32 s +30480.0 74890.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:border) 60299 0.00 -1 s +( text-color) 83312 -8.00 32 s +30480.0 77464.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:background) 65727 0.00 -1 s +( ) 68395 -23.00 32 s +( background-color) 91440 -24.00 32 s +30480.0 80038.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:save-under) 65727 0.00 -1 s +( ) 68415 -13.00 32 s +( :on) 73829 -14.00 32 s +30480.0 82612.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:override-redirect) 75226 0.00 -1 s +( :on ;override window mgr when positioning) 144272 -10.73 32 s +30480.0 85186.0 m +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +(:event-mask) 65727 0.00 -1 s +( \(MAKE-EVENT-MASK :leave-window ) 113115 -17.83 32 s +30480.0 87760.0 m +90334.0 v +33528.0 h +36170.0 h +42672.0 h +46736.0 h +50800.0 h +54864.0 h +58928.0 h +62992.0 h +67056.0 h +72746.0 h +79248.0 h +83312.0 h +87376.0 h +91440.0 h +( :exposure\)\)\)\)) 110405 -33.00 32 s +2 sf +52832.0 96317.0 m +(create\036window) 70540 0.00 -1 s +3 sf +( is one of the most important CLX functions, since it creates and returns) 149352 -195.54 32 s +52832.0 99478.0 m +(a) 54085 0.00 -1 s +( ) 54564 -227.00 32 s +2 sf +(window) 63971 0.00 -1 s +3 sf +( object. Several of its options are shown here. The) 118435 -227.00 32 s +( default window class is ) 145121 -227.60 32 s +2 sf +(:in\036) 149352 0.00 -1 s +52832.0 102639.0 m +(put\036output) 65844 0.00 -1 s +3 sf +(,) 66550 0.00 -1 s +( but X provides for ) 88351 -75.80 32 s +2 sf +(:input\036only) 101834 0.00 -1 s +3 sf +( windows, too. Every window must have a) 149352 -75.57 32 s +52832.0 105799.0 m +(parent) 59883 0.00 -1 s +( window, except for a system\036defined ) 103687 104.00 32 s +/timsps10i 5 declareFont +5 sf +(root window) 117982 104.00 32 s +3 sf +(, which represents an entire) 149352 104.25 32 s +52832.0 108960.0 m +(display) 60984 0.00 -1 s +( screen. The ) 75694 97.00 32 s +2 sf +(:event\036mask) 90425 0.00 -1 s +3 sf +( keyword value, a CLX ) 118027 97.00 32 s +2 sf +(event\036mask) 131819 0.00 -1 s +3 sf +( data type, says) 149352 96.33 32 s +52832.0 112121.0 m +(that) 57064 0.00 -1 s +( an input event will be received for the menu window) 116499 -91.00 32 s +( when the window is exposed) 149352 -91.60 32 s +52832.0 115282.0 m +(and) 56907 0.00 -1 s +( also when the pointer cursor leaves the window. The window border) 135249 26.00 32 s +( is a pattern\036) 149352 25.33 32 s +52832.0 118443.0 m +(filled) 58787 0.00 -1 s +( or \(as in this case\) a solid\036colored boundary which is maintained automatically by) 149352 -201.54 32 s +52832.0 121604.0 m +(the) 56280 0.00 -1 s +( X server; a client cannot draw in a window's border, since all graphics requests are) 149352 -95.67 32 s +52832.0 124765.0 m +(relative) 61293 0.00 -1 s +( to the origin \(upper\036left corner\) of the window's interior and are clipped by the) 149352 -124.57 32 s +52832.0 127926.0 m +(server) 59725 0.00 -1 s +( to this inside region. Turning on the ) 100894 -96.00 32 s +2 sf +(:save\036under) 115158 0.00 -1 s +3 sf +( option is a hint to the X server) 149352 -95.50 32 s +52832.0 131087.0 m +(that,) 57770 0.00 -1 s +( when this window is made visible, it may be more efficient to save the pixels it) 145059 -173.00 32 s +( ob\036) 149352 -174.00 32 s +52832.0 134247.0 m +(scures,) 60590 0.00 -1 s +( rather than require several client programs to refresh their windows when the) 149352 83.17 32 s +52832.0 137408.0 m +(pop\036up) 60826 0.00 -1 s +( menu disappears. This is a way to work around X's client\036managed refresh pol\036) 149352 -159.00 32 s +52832.0 140569.0 m +(icy) 56280 0.00 -1 s +( when only a) 70693 -29.00 32 s +( small amount of screen space is needed temporarily. ) 130929 -29.56 32 s +52832.0 146846.0 m +(Why) 58318 0.00 -1 s +( is ) 61362 -125.00 32 s +2 sf +(:override\036redirect) 82984 0.00 -1 s +3 sf +( turned on for) 98047 -125.00 32 s +( the menu window? This is actually a little un\036) 149352 -125.56 32 s +52832.0 150007.0 m +(usual,) 59495 0.00 -1 s +( because it prevents any window manager client from ) 119987 -61.78 32 s +5 sf +(redirecting) 132527 0.00 -1 s +3 sf +( the position of) 149352 -61.67 32 s +52832.0 153168.0 m +(the) 56280 0.00 -1 s +( menu when it is popped up. Remember that the window manager) 129261 -120.00 32 s +( represents the us\036) 149352 -120.67 32 s +52832.0 156329.0 m +(er's) 57061 0.00 -1 s +( policy for controlling the positions of his windows, so this kind of redirection is or\036) 149352 -169.93 32 s +52832.0 159489.0 m +(dinarily) 61609 0.00 -1 s +( correct. However, in this case, as a favor to the user, the menu avoids redirection) 149352 -278.80 32 s +52832.0 162650.0 m +(in) 55027 0.00 -1 s +( order to pop up the menu) 83482 -117.00 32 s +( at a very specific location; that is, under the pointer cursor.) 149352 -117.55 32 s +52832.0 168927.0 m +(What) 58944 0.00 -1 s +( about the item subwindows? The ) 96716 -158.00 32 s +4 sf +(menu\036set\036item\036list) 121142 0.00 -1 s +3 sf +( function in the) 137833 -158.00 32 s +( following) 149352 -159.00 32 s +52832.0 172088.0 m +(example) 62392 0.00 -1 s +( creates them whenever the menu's item list is changed. The upper\036left x and) 147378 -142.00 32 s +( y) 149352 -143.00 32 s +52832.0 175249.0 m +(coordinates) 65840 0.00 -1 s +( and the width and height are not important yet, because they are computed) 149352 -99.00 32 s +52832.0 178410.0 m +(just) 56909 0.00 -1 s +( before the menu is displayed. This function also calls ) 116907 -152.90 32 s +2 sf +(create\036window) 134615 0.00 -1 s +3 sf +(, demonstrat\036) 149352 -153.00 32 s +52832.0 181570.0 m +(ing) 56438 0.00 -1 s +( the equal treatment of parent and children windows in the X window hierarchy.) 146462 -31.69 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\0366) 24081 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/courps8 4 declareFont +4 sf +40640.0 22284.0 m +(\(defun) 48782 0.00 -1 s +( menu-set-item-list \(menu &rest item-strings\)) 109728 -29.75 32 s +40640.0 24858.0 m +43688.0 h +(;;) 46402 0.00 -1 s +( Assume the new items) 74847 -13.00 32 s +( will change the menu's width and height) 129032 -13.57 32 s +40640.0 27432.0 m +43688.0 h +(\(setf) 50473 0.00 -1 s +( \(menu-geometry-changed-p menu\)) 92480 -30.00 32 s +( t\)) 96520 -31.00 32 s +40640.0 30006.0 m +32580.0 v +43688.0 h +(;;) 46402 0.00 -1 s +( Destroy any existing item windows) 92456 -16.80 32 s +40640.0 35154.0 m +43688.0 h +(\(dolist) 53187 0.00 -1 s +( \(item \(menu-item-alist menu\)\)) 93811 -28.67 32 s +40640.0 37727.0 m +43688.0 h +( \(DESTROY-WINDOW \(first item\)\)\)) 87037 -18.75 32 s +40640.0 40301.0 m +42875.0 v +43688.0 h +(;;) 46402 0.00 -1 s +( Add \(item-window item-string\)) 87049 -21.00 32 s +( elements to item-alist) 118195 -21.67 32 s +40640.0 45449.0 m +43688.0 h +(\(setf) 50473 0.00 -1 s +( \(menu-item-alist) 73510 -32.00 32 s +( menu\)) 81619 -33.00 32 s +40640.0 48023.0 m +43688.0 h +48768.0 h +51410.0 h +(\(let) 56838 0.00 -1 s +( \(alist\)) 67666 -28.00 32 s +40640.0 50597.0 m +43688.0 h +48768.0 h +51410.0 h +( \(dolist \(item item-strings \(nreverse alist\)\)) 113724 -18.00 32 s +40640.0 53171.0 m +43688.0 h +48768.0 h +51410.0 h +( \(push \(list \(CREATE-WINDOW) 92050 -11.67 32 s +40640.0 55745.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :parent ) 86695 -9.00 32 s +( \(menu-window menu\)) 116501 -9.60 32 s +40640.0 58318.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :x 0 ) 94812 -4.00 32 s +( ;temporary value) 127339 -4.56 32 s +40640.0 60892.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :y 0 ;temporary value) 127339 -4.23 32 s +40640.0 63466.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :width) 83998 -5.00 32 s +( 16 ;temporary value) 127339 -5.53 32 s +40640.0 66040.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :height 16 ;temporary value) 127339 -5.81 32 s +40640.0 68614.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :background \(GCONTEXT-BACKGROUND \(menu-gcontext) 139541 -26.00 32 s +( menu\)\)) 149013 -27.00 32 s +40640.0 71188.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +( :event-mask) 90741 -26.00 32 s +( \(MAKE-EVENT-MASK) 113785 -25.00 32 s +( :enter-window) 132757 -26.00 32 s +40640.0 73762.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +77216.0 h +81280.0 h +85344.0 h +89408.0 h +93472.0 h +97536.0 h +101600.0 h +105664.0 h +109728.0 h +( :leave-window) 132757 -10.00 32 s +40640.0 76335.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +77216.0 h +81280.0 h +85344.0 h +89408.0 h +93472.0 h +97536.0 h +101600.0 h +105664.0 h +109728.0 h +( :button-press) 132757 -10.00 32 s +40640.0 78909.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +77216.0 h +81280.0 h +85344.0 h +89408.0 h +93472.0 h +97536.0 h +101600.0 h +105664.0 h +109728.0 h +( ) 113763 -12.00 32 s +( :button-release\)\)) 138176 -13.00 32 s +40640.0 81483.0 m +43688.0 h +48768.0 h +51410.0 h +60960.0 h +65024.0 h +69088.0 h +73152.0 h +(item\)) 79937 0.00 -1 s +40640.0 84057.0 m +43688.0 h +48768.0 h +( ) 50123 -2.00 32 s +51410.0 h +60960.0 h +65024.0 h +(alist\)\)\)\)\)) 78594 0.00 -1 s +/timsps10 3 declareFont +3 sf +52832.0 90695.0 m +0.0 0.0 m +newpath +149013 89136 av +52967 89138 as +[] 0 setdash +dp +149352.0 90695.0 m +20320.0 93517.0 m +36553.0 h +2 sf +(Displaying) 49411 0.00 -1 s +52832.0 h +(1.3.2) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(The) 65060 0.00 -1 s +( ) 68186 2420.00 32 s +4 sf +(menu\036recompute\036geometry) 99397 0.00 -1 s +3 sf +( function \(shown in the) 135255 2420.00 32 s +( following) 149352 2419.00 32 s +2 sf +3 sf +20320.0 96678.0 m +37908.0 h +2 sf +(the) 41669 0.00 -1 s +( Menu) 49378 -52.00 32 s +52832.0 h +3 sf +(example\)) 63331 0.00 -1 s +( handles the job of calculating the size) 104478 -291.00 32 s +( of the menu, based on its current item list) 149352 -291.56 32 s +52832.0 99839.0 m +(and) 56907 0.00 -1 s +( its current text font. CLX provides a way to inquire the geometrical properties of) 147490 -96.00 32 s +( a) 149352 -97.00 32 s +52832.0 103000.0 m +(font) 57377 0.00 -1 s +( object \(for example, its ascent and descent from the baseline\) and also a ) 140268 26.36 32 s +2 sf +(text\036ex\036) 149352 0.00 -1 s +52832.0 106161.0 m +(tents) 58630 0.00 -1 s +3 sf +( function. ) 70558 203.00 32 s +2 sf +(text\036extents) 84501 0.00 -1 s +3 sf +( returns the geometry of a given) 121768 203.00 32 s +( string as displayed in a) 149352 202.40 32 s +52832.0 109322.0 m +(given) 59102 0.00 -1 s +( font. Notice the use) 81805 -26.00 32 s +( of the ) 89641 -26.67 32 s +2 sf +(with\036state) 101549 0.00 -1 s +3 sf +( macro when setting a window's geometry) 149352 -26.50 32 s +52832.0 112482.0 m +(attributes.) 64039 0.00 -1 s +( CLX strives to preserve the familiar ) 106332 30.00 32 s +2 sf +(setf) 110561 0.00 -1 s +3 sf +( style of accessing individual win\036) 149352 30.40 32 s +52832.0 115643.0 m +(dow) 57691 0.00 -1 s +( attributes, even though an attribute access) 104982 -99.00 32 s +( actually involves sending a request to a) 149352 -99.57 32 s +52832.0 118804.0 m +(\(possibly) 63179 0.00 -1 s +( remote\) server and/or waiting for a reply. ) 111775 70.25 32 s +2 sf +(with\036state) 123683 0.00 -1 s +3 sf +( tells CLX to batch to\036) 149352 70.40 32 s +52832.0 121965.0 m +(gether) 59883 0.00 -1 s +( all read and write accesses to a given window, using a local cache to minimize the) 149352 -251.75 32 s +52832.0 125126.0 m +(number) 61452 0.00 -1 s +( of server requests. This CLX feature can result in a dramatic improvement in) 149352 22.00 32 s +52832.0 128287.0 m +(client) 59101 0.00 -1 s +( performance without burdening the programmer) 114116 -46.00 32 s +( interface.) 125350 -47.00 32 s +2 sf +() 125350 0.00 -1 s +127700.0 h +() 127700 0.00 -1 s +4 sf +52832.0 134564.0 m +(menu\036recompute\036geometry) 84043 0.00 -1 s +3 sf +( causes all the item subwindows to become ) 132953 -58.63 32 s +/timsps10i 5 declareFont +5 sf +(mapped) 141887 0.00 -1 s +3 sf +(. Map\036) 149352 -59.00 32 s +52832.0 137724.0 m +(ping) 57849 0.00 -1 s +( a window means attempting to make it visible on the screen. However, a subwin\036) 149352 -69.93 32 s +52832.0 140885.0 m +(dow) 57691 0.00 -1 s +( will not actually be ) 80753 -12.00 32 s +5 sf +(visible) 88120 0.00 -1 s +3 sf +( until it) 96250 -12.00 32 s +( and all of its ancestors are mapped. Even then,) 149352 -12.56 32 s +52832.0 144046.0 m +(another) 61294 0.00 -1 s +( window might be covering up the subwindow.) 114131 -43.57 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +145252.0 208619.0 m +(1\0367) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/courps8 4 declareFont +4 sf +30480.0 22284.0 m +(\(defun) 38622 0.00 -1 s +( menu-recompute-geometry \(menu\)) 80603 -43.00 32 s +30480.0 24858.0 m +( \(when \(menu-geometry-changed-p) 73838 -22.00 32 s +( menu\)) 81957 -23.00 32 s +30480.0 27432.0 m +( \(let* \(\(menu-font ) 61593 -14.00 32 s +( \(GCONTEXT-FONT \(menu-gcontext menu\)\)\)) 113115 -14.67 32 s +30480.0 30006.0 m +( \(title-width \(TEXT-EXTENTS menu-font \(menu-title menu\)\)\)) 119888 -11.00 32 s +30480.0 32580.0 m +( \(item-height \(+ \(FONT-ASCENT menu-font\)) 96859 -8.77 32 s +30480.0 35154.0 m +( ) 44010 -4.00 32 s +( \(FONT-DESCENT menu-font\)) 98213 -4.53 32 s +30480.0 37727.0 m +( *menu-item-margin*\)\)) 92795 -4.12 32 s +30480.0 40301.0 m +( \(item-width 0\)) 64347 -4.83 32 s +30480.0 42875.0 m +( \(items \(menu-item-alist menu\)\)) 92795 -5.94 32 s +30480.0 45449.0 m +( ) 41296 -5.00 32 s +( ) 42649 -4.00 32 s +( menu-width\)) 58928 -5.00 32 s +30480.0 48023.0 m +50597.0 v +( ;; Find max item string width) 76539 -7.90 32 s +30480.0 53171.0 m +( \(setf) 44010 -8.00 32 s +( item-width) 58928 -9.00 32 s +30480.0 55745.0 m +( ) 39937 -6.00 32 s +( \(+ *menu-item-margin*) 73829 -6.60 32 s +30480.0 58318.0 m +( \(dolist \(next-item items item-width\)) 98213 -6.88 32 s +30480.0 60892.0 m +( ) 41288 -6.00 32 s +( ) 42640 -5.00 32 s +( \(setf item-width \(max item-width ) 96859 -5.55 32 s +30480.0 63466.0 m +( ) 75096 -5.00 32 s +( ) 76449 -4.00 32 s +( \(TEXT-EXTENTS menu-font \(second next-item\)\)\)\)\)\)\)) 146981 -4.57 32 s +30480.0 66040.0 m +68614.0 v +( ;; Compute final menu width, taking margins into account) 113115 -10.92 32 s +30480.0 71188.0 m +( \(setf menu-width \(max title-width \(+ item-width *menu-item-margin*\)\)\)) 130725 -15.73 32 s +30480.0 73762.0 m +( ) 35868 -10.00 32 s +( \(let \(\(window \(menu-window menu\)\)\)) 84667 -10.60 32 s +30480.0 76335.0 m +( ) 31835 -2.00 32 s +30480.0 78909.0 m +33528.0 h +( ;; Update width and height of menu window ) 94488 -9.55 32 s +30480.0 81483.0 m +( \(WITH-STATE \(window\)) 64347 -9.67 32 s +30480.0 84057.0 m +( \(setf \(DRAWABLE-WIDTH) 68396 -10.00 32 s +( window\) menu-width) 95504 -10.67 32 s +30480.0 86631.0 m +( ) 46656 -9.00 32 s +( \(DRAWABLE-HEIGHT window\) \(* \(1+ \(length items\)\) item-height\)\)\)) 132080 -9.57 32 s +30480.0 89205.0 m +91779.0 v +33528.0 h +( ;; Update width, height, position of item) 93128 -12.00 32 s +( windows) 103971 -13.00 32 s +30480.0 94353.0 m +33528.0 h +( \(let \(\(item-left \(round \(- menu-width item-width\) 2\)\)) 114808 -10.77 32 s +30480.0 96926.0 m +( \(next-item-top \(- item-height \(round *menu-item-margin* 2\)\)\)\)) 128016 -10.50 32 s +30480.0 99500.0 m +( ) 35876 -8.00 32 s +( \(dolist \(next-item items\)) 73829 -8.60 32 s +30480.0 102074.0 m +( \(let \(\(window \(first next-item\)\)\)) 87376 -8.17 32 s +30480.0 104648.0 m +( \(WITH-STATE \(window\)) 72475 -6.00 32 s +30480.0 107222.0 m +( \(setf \(DRAWABLE-HEIGHT window\) item-height) 104987 -8.00 32 s +30480.0 109796.0 m +( \(DRAWABLE-WIDTH window\) item-width) 103632 -5.73 32 s +30480.0 112370.0 m +( ) 49408 -5.00 32 s +( ) 50761 -4.00 32 s +( \(DRAWABLE-X window\) item-left) 102277 -4.55 32 s +30480.0 114943.0 m +( ) 39944 -5.00 32 s +( \(DRAWABLE-Y window\) next-item-top\)\)\)) 111760 -5.53 32 s +30480.0 117517.0 m +( ) 35872 -9.00 32 s +( \(incf next-item-top item-height\)\)\)\)) 90085 -9.57 32 s +30480.0 120091.0 m +122665.0 v +( ;; Map) 45365 -7.00 32 s +( all item windows) 68411 -7.67 32 s +30480.0 125239.0 m +( ) 35856 -13.00 32 s +( \(MAP-SUBWINDOWS \(menu-window menu\)\)) 84667 -13.67 32 s +30480.0 127813.0 m +130387.0 v +( ;; Save item geometry) 65701 -7.63 32 s +30480.0 132961.0 m +( \(setf \(menu-item-width menu\) item-width) 100923 -7.56 32 s +30480.0 135534.0 m +( \(menu-item-height menu\) ) 77897 -6.00 32 s +( item-height) 102277 -6.57 32 s +30480.0 138108.0 m +( \(menu-width menu\) menu-width) 100923 -4.65 32 s +30480.0 140682.0 m +( \(menu-title-width menu\) ) 77897 -6.00 32 s +( title-width) 102277 -6.57 32 s +30480.0 143256.0 m +( \(menu-geometry-changed-p menu\) nil\)\)\)\)) 96859 -8.77 32 s +/timsps10 3 declareFont +3 sf +52832.0 149239.0 m +(Of) 55808 0.00 -1 s +( course, the sample client must know how to) 105154 -112.00 32 s +( draw/redraw the menu and its items, so) 149352 -112.57 32 s +52832.0 152400.0 m +(the) 56280 0.00 -1 s +( function ) 67032 -32.00 32 s +4 sf +(menu\036refresh) 83316 0.00 -1 s +3 sf +( is defined next to handle that task \(shown in the following) 149352 -31.91 32 s +52832.0 155561.0 m +(example\).) 64037 0.00 -1 s +( Note that the location of window output is given relative to) 130816 -64.00 32 s +( the window ori\036) 149352 -64.67 32 s +52832.0 158722.0 m +(gin.) 57144 0.00 -1 s +( Windows and subwindows have different coordinate systems. The location of the) 149352 -39.00 32 s +52832.0 161883.0 m +(origin) 59572 0.00 -1 s +( \(upper\036left) 72287 -54.00 32 s +( corner\) of a subwindow's coordinate system is given with respect to) 149352 -54.55 32 s +52832.0 165044.0 m +(its) 55498 0.00 -1 s +( parent window's coordinate system. Negative coordinates are valid, although) 143602 28.00 32 s +( only) 149352 27.00 32 s +52832.0 168204.0 m +(output) 60044 0.00 -1 s +( to the) 67051 -24.00 32 s +( +x/+y quadrant of a window's coordinate system will ever be visible.) 145830 -24.55 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\0368) 24081 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/courps8 4 declareFont +4 sf +52832.0 22284.0 m +(\(defun) 60974 0.00 -1 s +( menu-refresh) 78585 -30.00 32 s +( \(menu\)) 88053 -31.00 32 s +52832.0 24858.0 m +( \(let* \(\(gcontext \(menu-gcontext menu\)\)) 108373 -16.00 32 s +52832.0 27432.0 m +( \(baseline-y \(FONT-ASCENT \(GCONTEXT-FONT gcontext\)\)\)\)) 134112 -12.73 32 s +52832.0 30006.0 m +( ;; Show title centered in \177reverse-video") 112437 -12.88 32 s +52832.0 32580.0 m +( \(let \(\(fg \(GCONTEXT-BACKGROUND) 97528 -17.00 32 s +( gcontext\)\)) 112437 -18.00 32 s +52832.0 35154.0 m +( \(bg \(GCONTEXT-FOREGROUND gcontext\)\)\)) 113792 -9.55 32 s +52832.0 37727.0 m +( \(WITH-GCONTEXT \(gcontext :foreground fg :background bg\)) 134112 -14.00 32 s +52832.0 40301.0 m +( ) 58228 -8.00 32 s +( \(DRAW-IMAGE-GLYPHS) 86699 -8.67 32 s +52832.0 42875.0 m +( ) 59587 -6.00 32 s +( \(menu-window menu\)) 89408 -6.60 32 s +52832.0 45449.0 m +( ) 55538 -4.00 32 s +( gcontext) 75861 -4.57 32 s +52832.0 48023.0 m +( \(round \(- \(menu-width menu\)) 101600 -7.00 32 s +52832.0 50597.0 m +( ) 56888 -5.00 32 s +( \(menu-title-width menu\)\) 2\) ;start x) 128693 -5.52 32 s +52832.0 53171.0 m +( baseline-y ) 82650 -3.00 32 s +( ;start y) 128693 -3.52 32 s +52832.0 55745.0 m +( \(menu-title menu\)\)\)\)) 92117 -6.80 32 s +52832.0 58318.0 m +60892.0 v +( ;; Show each menu) 79906 -11.00 32 s +( item \(position is relative to item window\)) 138176 -11.57 32 s +52832.0 63466.0 m +( \(let \(\(box-margin \(round *menu-item-margin* ) 116506 -15.00 32 s +( 2\)\)\)) 123275 -16.00 32 s +52832.0 66040.0 m +( \(dolist) 69056 -12.00 32 s +( \(item \(menu-item-alist menu\)\)) 109728 -12.67 32 s +52832.0 68614.0 m +( ) 58228 -8.00 32 s +( \(DRAW-IMAGE-GLYPHS) 86699 -8.67 32 s +52832.0 71188.0 m +( ) 58236 -6.00 32 s +( \(first item\) gcontext) 93472 -6.57 32 s +52832.0 73762.0 m +( box-margin ) 82650 -3.00 32 s +( ;start x) 128693 -3.52 32 s +52832.0 76335.0 m +( \(+ baseline-y box-margin\) ;start) 125985 -5.00 32 s +( y) 128693 -6.00 32 s +52832.0 78909.0 m +( ) 59587 -6.00 32 s +( \(second item\)\)\)\)\)\)) 89408 -6.60 32 s +2 sf +52832.0 84892.0 m +(with\036gcontext) 69286 0.00 -1 s +/timsps10 3 declareFont +3 sf +( is a CLX macro that allows you temporarily to modify a graphics context) 149352 -261.77 32 s +52832.0 88053.0 m +(within) 60043 0.00 -1 s +( the dynamic scope of) 84365 -111.00 32 s +( the macro body. ) 103592 -111.50 32 s +2 sf +(draw\036image\036glyphs) 126791 0.00 -1 s +3 sf +( is a CLX text draw\036) 149352 -111.60 32 s +52832.0 91214.0 m +(ing) 56438 0.00 -1 s +( function which produces a terminal\036like rendering: foreground character on a back\036) 149352 -179.82 32 s +52832.0 94375.0 m +(ground) 60826 0.00 -1 s +( block. \(More sophisticated text rendering functions are) 125586 295.00 32 s +( also available.\) The) 149352 294.33 32 s +52832.0 97536.0 m +(strange) 60981 0.00 -1 s +( use of ) 68833 -126.00 32 s +/timsps10i 5 declareFont +5 sf +(glyphs) 76201 0.00 -1 s +3 sf +( instead of ) 88285 -126.00 32 s +5 sf +(string) 94871 0.00 -1 s +3 sf +( here actually highlights an important fact: X and) 149352 -125.75 32 s +52832.0 100697.0 m +(Common) 63337 0.00 -1 s +( Lisp have totally different concepts of a character. A Common Lisp character) 149352 -178.67 32 s +52832.0 103858.0 m +(is) 54714 0.00 -1 s +( an object whose implementation can comprehend a vast universe of text complexities) 149352 -212.00 32 s +52832.0 107019.0 m +(\(typefaces,) 65132 0.00 -1 s +( type styles, international character sets, symbols, and so) 127450 -195.00 32 s +( forth\). However, to) 149352 -195.67 32 s +52832.0 110180.0 m +(X,) 55575 0.00 -1 s +( a string is just a sequence of integer indexes into the array of bitmaps represented by a) 149352 -250.88 32 s +52832.0 113340.0 m +(CLX) 58475 0.00 -1 s +( font object. In general, ) 86517 201.00 32 s +2 sf +(draw\036image\036glyphs) 109716 0.00 -1 s +3 sf +(, ) 111329 201.00 32 s +2 sf +(text\036extents) 125272 0.00 -1 s +3 sf +(, and) 130960 201.00 32 s +( other CLX text) 149352 200.33 32 s +52832.0 116501.0 m +(functions) 63334 0.00 -1 s +( accept a ) 73219 -231.00 32 s +2 sf +(:translate) 84815 0.00 -1 s +3 sf +( keyword argument. Its value is a function which translates) 149352 -230.89 32 s +52832.0 119662.0 m +(the) 56280 0.00 -1 s +( characters of a) 73119 -106.00 32 s +( string argument into the appropriate font\036and\036index pairs needed by) 149352 -106.56 32 s +52832.0 122823.0 m +(CLX.) 59181 0.00 -1 s +( This example relies upon) 89549 303.00 32 s +( the default translation function, which simply uses) 149352 302.43 32 s +52832.0 125984.0 m +2 sf +(char\036code) 64743 0.00 -1 s +3 sf +( to compute an index into the current font.) 112008 -38.63 32 s +52832.0 132915.0 m +0.0 0.0 m +newpath +149013 131356 av +52967 131358 as +[] 0 setdash +dp +149352.0 132915.0 m +20320.0 135738.0 m +34928.0 h +2 sf +(Menu) 41983 0.00 -1 s +( Input) 49378 -55.00 32 s +52832.0 h +(1.3.3) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(Now) 66157 0.00 -1 s +( that a menu can be displayed, the sample client program) 129955 -39.00 32 s +( must define how) 149352 -39.67 32 s +52832.0 138898.0 m +(the) 56280 0.00 -1 s +( menu will process user input. The ) 96307 52.43 32 s +4 sf +(menu\036choose) 111234 0.00 -1 s +3 sf +( function \(shown in the following) 149352 52.40 32 s +52832.0 142059.0 m +(example\)) 63331 0.00 -1 s +( has the classic structure of an X client program. First, do some initialization) 149352 -20.77 32 s +52832.0 145220.0 m +(\(for) 57060 0.00 -1 s +( example, present the) 81371 110.00 32 s +( menu at a given location\). Then, enter an input event loop.) 149352 109.45 32 s +52832.0 148381.0 m +(Read) 58631 0.00 -1 s +( an input event, process it, and repeat the loop until a termination event is received.) 149352 -201.00 32 s +52832.0 151542.0 m +(The) 57220 0.00 -1 s +( ) 57754 -172.00 32 s +2 sf +(event\036case) 70133 0.00 -1 s +3 sf +( macro continues reading an event from) 113926 -172.00 32 s +( the menu window's display ob\036) 149352 -172.60 32 s +52832.0 154703.0 m +(ject) 56906 0.00 -1 s +( until one) 67333 -117.00 32 s +( of its clauses returns non\036) 96448 -117.60 32 s +2 sf +(nil) 99585 0.00 -1 s +3 sf +(. These clauses specify the action to be taken) 149352 -117.50 32 s +52832.0 157864.0 m +(for) 56121 0.00 -1 s +( each event type and also bind values from the event report) 120644 -183.00 32 s +( to local variables, such as) 149352 -183.60 32 s +52832.0 161025.0 m +(the) 56280 0.00 -1 s +( ) 57111 125.00 32 s +2 sf +(event\036window) 73882 0.00 -1 s +3 sf +( receiving the event. Notice that the ) 115670 125.57 32 s +2 sf +(:force\036output\036p) 134161 0.00 -1 s +3 sf +( option is en\036) 149352 125.33 32 s +52832.0 164186.0 m +(abled,) 59650 0.00 -1 s +( causing ) 69083 -300.00 32 s +2 sf +(event\036case) 81462 0.00 -1 s +3 sf +( to begin by sending any client requests which CLX has not yet) 149352 -299.50 32 s +52832.0 167346.0 m +(output) 60044 0.00 -1 s +( to the server. To improve performance, CLX quietly queues up requests and peri\036) 149352 -261.69 32 s +52832.0 170507.0 m +(odically) 61923 0.00 -1 s +( sends them off in a batch. However, in an interactive feedback loop such as this,) 149352 -263.53 32 s +52832.0 173668.0 m +(it) 54400 0.00 -1 s +( is important to) 71501 -22.00 32 s +( keep the display crisply up\036to\036date.) 111828 -22.60 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +145252.0 208619.0 m +(1\0369) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/courps8 4 declareFont +4 sf +45720.0 22578.0 m +2 sf +4 sf +(\(defun) 53862 0.00 -1 s +( menu-choose \(menu x y\)) 85005 -17.00 32 s +45720.0 25423.0 m +( ;; Display the menu so that first item is at x,y.) 114808 -9.92 32 s +45720.0 27996.0 m +( \(menu-present menu x y\)) 79587 -11.60 32 s +45720.0 30570.0 m +33144.0 v +( \(let \(\(items \(menu-item-alist) 89069 -15.00 32 s +( menu\)\)) 98552 -16.00 32 s +45720.0 35718.0 m +( \(mw \(menu-window menu\)\)) 93133 -5.86 32 s +45720.0 38292.0 m +( selected-item\)) 76877 -6.00 32 s +45720.0 40866.0 m +( ) 48430 -2.00 32 s +( ) 49784 -3.00 32 s +45720.0 43440.0 m +( ;;) 53826 -9.00 32 s +( Event processing loop) 83651 -9.67 32 s +45720.0 46014.0 m +( \(do \(\)) 59240 -10.00 32 s +( \(selected-item\)) 80941 -11.00 32 s +45720.0 48587.0 m +( \(EVENT-CASE \(\(DRAWABLE-DISPLAY mw\) :force-output-p t\)) 125645 -13.80 32 s +45720.0 51161.0 m +( ) 52480 -5.00 32 s +( \(:exposure) 70104 -5.67 32 s +45720.0 53735.0 m +( \(count\)) 68749 -4.00 32 s +45720.0 56309.0 m +( ;; Discard all but final :exposure then) 112085 -8.00 32 s +( display the menu) 135128 -8.67 32 s +45720.0 58883.0 m +( \(when \(zerop count\) \(menu-refresh menu\)\)) 113453 -8.36 32 s +45720.0 61457.0 m +( t\)) 61976 -2.80 32 s +45720.0 64031.0 m +66604.0 v +( \(:button-release) 78232 -7.00 32 s +45720.0 69178.0 m +( ) 48422 -6.00 32 s +( ) 49774 -5.00 32 s +( \(event-window\)) 78232 -5.57 32 s +45720.0 71752.0 m +( ;;Select an item) 80941 -5.08 32 s +45720.0 74326.0 m +( ) 56496 -10.00 32 s +( \(setf selected-item \(second \(assoc event-window items\)\)\)) 135128 -10.57 32 s +45720.0 76900.0 m +( t\)) 61976 -2.80 32 s +45720.0 79474.0 m +82048.0 v +( ) 49773 -6.00 32 s +( \(:enter-notify) 75523 -6.60 32 s +45720.0 84622.0 m +( ) 55191 -4.00 32 s +( \(window\)) 70104 -4.67 32 s +45720.0 87195.0 m +( ;;Highlight an item) 85005 -5.67 32 s +45720.0 89769.0 m +( \(menu-highlight-item menu \(find window items :key) 125633 -10.00 32 s +( #'first\)\)) 139192 -11.00 32 s +45720.0 92343.0 m +( t\)) 61976 -2.80 32 s +45720.0 94917.0 m +97491.0 v +( ) 49773 -6.00 32 s +( \(:leave-notify) 75523 -6.60 32 s +45720.0 100065.0 m +( \(window kind\)) 76877 -4.91 32 s +45720.0 102639.0 m +( ) 56536 -5.00 32 s +( \(if \(eql mw window\)) 85005 -5.60 32 s +45720.0 105212.0 m +( ) 59230 -6.00 32 s +( ;; Quit if pointer moved out of main menu window) 129709 -6.54 32 s +45720.0 107786.0 m +( \(setf selected-item \(when \(eq kind :ancestor\) :none\)\)) 136483 -7.80 32 s +45720.0 110360.0 m +( ;; Otherwise, unhighlight the item window left) 127000 -7.00 32 s +45720.0 112934.0 m +( \(menu-unhighlight-item menu \(find window items :key #'first\)\)\)) 148675 -8.85 32 s +45720.0 115508.0 m +( t\) ) 66040 -2.69 32 s +45720.0 118082.0 m +120656.0 v +( \(otherwise) 72813 -4.70 32 s +45720.0 123230.0 m +( \(\)) 64685 -2.75 32 s +45720.0 125803.0 m +( ;;Ignore and discard any other event) 110744 -6.59 32 s +45720.0 128377.0 m +( ) 60614 -3.00 32 s +( t\)\)\)) 67395 -4.00 32 s +45720.0 130951.0 m +133525.0 v +( ) 53832 -5.00 32 s +( ;; Erase the menu) 79587 -5.60 32 s +45720.0 136099.0 m +( ) 48422 -6.00 32 s +( \(UNMAP-WINDOW mw\)) 79587 -6.57 32 s +45720.0 138673.0 m +141247.0 v +( ;; Return selected item string, if any) 108035 -7.64 32 s +45720.0 143820.0 m +( \(unless \(eq selected-item :none\) selected-item\)\)\) ) 128355 -8.88 32 s +/timsps10 3 declareFont +3 sf +52832.0 149804.0 m +(The) 57220 0.00 -1 s +( event loop in ) 72720 -162.00 32 s +4 sf +(menu\036choose) 87647 0.00 -1 s +3 sf +( demonstrates an idiom used in) 121874 -162.00 32 s +( all X programs: the con\036) 149352 -162.60 32 s +52832.0 152964.0 m +(tents) 58162 0.00 -1 s +( of a window are displayed \(in this case, by calling ) 116205 4.18 32 s +4 sf +(menu\036refresh) 132489 0.00 -1 s +3 sf +(\) only when an) 149352 4.33 32 s +52832.0 156125.0 m +2 sf +(:exposure) 64588 0.00 -1 s +3 sf +( event) 71553 147.00 32 s +2 sf +( ) 72406 147.00 32 s +3 sf +(is received, signaling that the server has actually made the window) 149352 147.50 32 s +52832.0 159286.0 m +/timsps10i 5 declareFont +5 sf +(viewable) 62863 0.00 -1 s +3 sf +(.) 63569 0.00 -1 s +( The handling of ) 82747 -65.00 32 s +2 sf +(:exposure) 94503 0.00 -1 s +3 sf +( in ) 97980 -65.00 32 s +4 sf +(menu\036choose) 112907 0.00 -1 s +3 sf +( also implements a little trick) 145423 -65.00 32 s +( for) 149352 -66.00 32 s +52832.0 162447.0 m +(improving) 64589 0.00 -1 s +( efficiency. In general, when a window is exposed after being previously) 145032 -146.00 32 s +( ob\036) 149352 -147.00 32 s +52832.0 165608.0 m +(scured) 60197 0.00 -1 s +( \(perhaps only partially\), the server is free to send several ) 124426 -116.64 32 s +2 sf +(:exposure) 136182 0.00 -1 s +3 sf +( events, one) 149352 -116.50 32 s +52832.0 168769.0 m +(for) 56121 0.00 -1 s +( each rectangular tile of the exposed region. For small windows like this menu, it is) 149352 -49.53 32 s +52832.0 171930.0 m +(not) 56438 0.00 -1 s +( worth the trouble to redraw the image one tile at a time. So the code above just ig\036) 149352 -32.56 32 s +52832.0 175091.0 m +(nores) 58944 0.00 -1 s +( all but the last tile exposure and redraws everything in one call to ) 132362 -118.86 32 s +4 sf +(menu\036refresh) 148646 0.00 -1 s +3 sf +(.) 149352 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03610) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +37592.0 h +2 sf +(The) 42296 0.00 -1 s +( Main) 49378 -52.00 32 s +52832.0 h +(1.3.4) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(After) 66624 0.00 -1 s +( all the preceding build\036up and the other functions referenced) 149352 1521.11 32 s +2 sf +3 sf +20320.0 29216.0 m +37931.0 h +2 sf +( Program) 49378 -72.00 32 s +52832.0 h +3 sf +(\(but) 57377 0.00 -1 s +( not shown here\) have been implemented, the) 108814 26.00 32 s +( code for the main client program is) 149352 25.43 32 s +52832.0 32377.0 m +(very) 57846 0.00 -1 s +( small.) 65340 -32.00 32 s +/courps8 4 declareFont +4 sf +49784.0 38360.0 m +(\(defun) 57926 0.00 -1 s +( just-say-lisp \(host &optional \(font-name \177fg-16"\)\)) 127000 -26.60 32 s +49784.0 40934.0 m +( \(let* \(\(display ) 74158 -13.00 32 s +( \(OPEN-DISPLAY host\)\)) 103971 -13.67 32 s +49784.0 43507.0 m +( \(screen \(first \(DISPLAY-ROOTS) 105309 -8.00 32 s +( display\)\)\)) 120227 -9.00 32 s +49784.0 46081.0 m +( ) 56524 -9.00 32 s +( \(fg-color \(SCREEN-BLACK-PIXEL screen\)\)) 114808 -9.57 32 s +49784.0 48655.0 m +( \(bg-color \(SCREEN-WHITE-PIXEL screen\)\)) 114808 -9.33 32 s +49784.0 51229.0 m +( \(nice-font \(OPEN-FONT display font-name\)\)) 117517 -9.75 32 s +49784.0 53803.0 m +56377.0 v +( ;; Create a menu as a child of the root window.) 125645 -6.89 32 s +49784.0 58951.0 m +( ) 60576 -8.00 32 s +( \(a-menu \(create-menu \(SCREEN-ROOT screen\)) 121581 -8.57 32 s +49784.0 61524.0 m +( ) 79550 -4.00 32 s +( fg-color bg-color nice-font\)\)\)) 135128 -4.54 32 s +49784.0 64098.0 m +66672.0 v +( ) 52470 -14.00 32 s +( \(setf \(menu-title a-menu\) \177Please pick your favorite language:"\)) 141901 -14.56 32 s +49784.0 69246.0 m +( \(menu-set-item-list a-menu \177Fortran" \177APL" \177Forth") 122934 -16.00 32 s +( \177Lisp"\)) 133773 -17.00 32 s +49784.0 71820.0 m +74394.0 v +( ;; Bedevil the user until he picks a nice programming language) 139192 -11.00 32 s +49784.0 76968.0 m +( \(unwind-protect) 75523 -11.00 32 s +49784.0 79542.0 m +( \(loop) 67395 -3.75 32 s +49784.0 82115.0 m +( ;; Determine the current root window position of the pointer) 144611 -8.58 32 s +49784.0 84689.0 m +( ) 57860 -11.00 32 s +( \(multiple-value-bind \(x y\) \(QUERY-POINTER \(SCREEN-ROOT screen\)\)) 148675 -11.56 32 s +49784.0 87263.0 m +89837.0 v +( ) 53834 -7.00 32 s +( \(let \(\(choice \(menu-choose a-menu x y\)\)\)) 118872 -7.54 32 s +49784.0 92411.0 m +( ) 65984 -7.00 32 s +( \(when) 74120 -6.00 32 s +( \(string-equal \177Lisp" choice\)) 113453 -6.67 32 s +49784.0 94985.0 m +( \(return\)\)\)\)\)) 86363 -4.00 32 s +( ) 87715 -5.00 32 s +49784.0 97559.0 m +100132.0 v +102706.0 v +( \(CLOSE-DISPLAY display\)\)\)\)) 91779 -12.00 32 s +3 sf +52832.0 108689.0 m +(Note) 58317 0.00 -1 s +( that the main program event loop lies in the body of an ) 118567 -243.00 32 s +2 sf +(unwind\036protect) 137220 0.00 -1 s +3 sf +( form.) 143873 -243.00 32 s +( This) 149352 -244.00 32 s +52832.0 111850.0 m +(is) 54714 0.00 -1 s +( a good programming technique because, without this protection, an unexpected error) 149352 -166.91 32 s +52832.0 115011.0 m +(could) 59102 0.00 -1 s +( cause the program to terminate without freeing the ) 115342 -255.56 32 s +/timsps10i 5 declareFont +5 sf +(server resources) 133819 -255.00 32 s +3 sf +( it has created.) 149352 -255.67 32 s +52832.0 118172.0 m +(Server) 60196 0.00 -1 s +( resources are CLX objects which refer to) 105987 -186.00 32 s +( objects actually stored on the X server.) 149352 -186.57 32 s +52832.0 121333.0 m +(Examples) 63961 0.00 -1 s +( of these are ) 77252 -281.75 32 s +2 sf +(window) 86659 0.00 -1 s +3 sf +(,) 87365 0.00 -1 s +2 sf +( font) 92647 -282.00 32 s +3 sf +(,) 93353 0.00 -1 s +2 sf +( pixmap) 102872 -281.00 32 s +3 sf +(,) 103578 0.00 -1 s +2 sf +( cursor) 111839 -282.00 32 s +3 sf +(,) 112545 0.00 -1 s +2 sf +( colormap) 124412 -281.00 32 s +3 sf +(, and ) 130042 -281.50 32 s +2 sf +(gcontext ) 140652 -282.00 32 s +3 sf +(objects.) 149352 0.00 -1 s +52832.0 124494.0 m +(These) 59571 0.00 -1 s +( server resources are created and destroyed by user requests. Server resources cre\036) 149352 -229.58 32 s +52832.0 127655.0 m +(ated) 57533 0.00 -1 s +( by a client are also destroyed when its display connection is closed. If client re\036) 149352 102.33 32 s +52832.0 130816.0 m +(sources) 61295 0.00 -1 s +( are repeatedly created without being destroyed, then the server will eventually) 149352 -87.73 32 s +52832.0 133977.0 m +(run) 56593 0.00 -1 s +( out of memory and fail.) 83899 -25.00 32 s +52832.0 140253.0 m +(Most) 58634 0.00 -1 s +( server resources are potentially sharable between applications. In fact, windows) 149352 -2.60 32 s +52832.0 143414.0 m +(are) 56277 0.00 -1 s +( manipulated explicitly by window manager programs. Fonts and) 130193 40.00 32 s +( cursors are typi\036) 149352 39.33 32 s +52832.0 146575.0 m +(cally) 58317 0.00 -1 s +( shared automatically since the X server loads and unloads font storage as needed.) 149352 -123.00 32 s +52832.0 149736.0 m +2 sf +(gcontext) 63018 0.00 -1 s +3 sf +( objects are not ordinarily shared between client applications.) 131899 -39.75 32 s +52832.0 156667.0 m +0.0 0.0 m +newpath +149013 155108 av +52967 155110 as +[] 0 setdash +dp +149352.0 156667.0 m +20320.0 159489.0 m +36441.0 h +2 sf +(Debugging) 49455 0.00 -1 s +52832.0 h +(1.3.5) 58477 0.00 -1 s +3 sf +() 58477 0.00 -1 s +60672.0 h +(Typically,) 72193 0.00 -1 s +( most CLX programs do not need to control the buffering) 149352 1242.10 32 s +2 sf +3 sf +20320.0 162650.0 m +36621.0 h +2 sf +(With) 42735 0.00 -1 s +( CLX) 49378 -19.00 32 s +52832.0 h +3 sf +(of) 55182 0.00 -1 s +( output requests) 72845 -104.00 32 s +( directly. However, CLX programmers need to be aware of the asyn\036) 149352 -104.55 32 s +52832.0 165811.0 m +(chronous) 63177 0.00 -1 s +( nature of) 74242 126.00 32 s +( client\036server communication. It may be convenient to control the) 149352 125.44 32 s +52832.0 168972.0 m +(CLX) 58475 0.00 -1 s +( output buffer more directly, especially during) 110331 -43.00 32 s +( debugging.) 123613 -44.00 32 s +52832.0 175249.0 m +(A) 54869 0.00 -1 s +( client that wants a request to execute immediately) 110603 -165.00 32 s +( instead of asynchronously can fol\036) 149352 -165.60 32 s +52832.0 178410.0 m +(low) 57064 0.00 -1 s +( it with a call to) 73260 -288.00 32 s +( ) 73677 -289.00 32 s +2 sf +(display\036force\036output) 98286 0.00 -1 s +3 sf +(. This function ) 114666 -288.33 32 s +5 sf +(blocks) 121876 0.00 -1 s +3 sf +( \(does not return\) until all) 149352 -288.60 32 s +52832.0 181570.0 m +(previously) 64745 0.00 -1 s +( buffered output requests have been sent. Otherwise, the output buffer is al\036) 149352 -41.67 32 s +52832.0 184731.0 m +(ways) 58631 0.00 -1 s +( flushed by a call to any function which returns a value from the server or which) 149352 8.00 32 s +52832.0 187892.0 m +(waits) 58788 0.00 -1 s +( for input \(for example, ) 86637 147.00 32 s +2 sf +(get\036property) 101837 0.00 -1 s +3 sf +(\). Certain output requests can cause input) 149352 147.17 32 s +52832.0 191053.0 m +(events) 60042 0.00 -1 s +( to be sent. For example, ) 88988 69.00 32 s +2 sf +(map\036window) 104664 0.00 -1 s +3 sf +( can cause ) 117174 69.00 32 s +2 sf +(:exposure) 128930 0.00 -1 s +3 sf +( events to be sent.) 149352 69.25 32 s +52832.0 194214.0 m +(Synchronizing) 69291 0.00 -1 s +( output with the resulting input can be done with the ) 127247 -153.91 32 s +2 sf +(display\036finish\036out\036) 149352 0.00 -1 s +52832.0 197375.0 m +(put) 56909 0.00 -1 s +3 sf +( function. This function blocks) 90704 -232.00 32 s +( until all previously buffered output has been sent and) 149352 -232.56 32 s +52832.0 200536.0 m +(all) 55653 0.00 -1 s +( resulting) 66194 -40.00 32 s +( input events have been received.) 103451 -40.60 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 11 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(1\03611) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +52832.0 22578.0 m +(Functions) 63964 0.00 -1 s +( that return information from the server block until an explicit reply is received) 149352 -285.77 32 s +52832.0 25739.0 m +(or) 55182 0.00 -1 s +( an error occurs. If a nonblocking call results in an error, the) 121761 -107.00 32 s +( error is generally not re\036) 149352 -107.60 32 s +52832.0 28900.0 m +(ported) 60041 0.00 -1 s +( until later. All errors \(synchronous and asynchronous\) are processed by) 140998 -31.00 32 s +( calling) 149352 -32.00 32 s +52832.0 32060.0 m +(an) 55496 0.00 -1 s +( error handler defined for the display. If the handler is a sequence) 126342 -241.00 32 s +( it is expected to con\036) 149352 -241.60 32 s +52832.0 35221.0 m +(tain) 57064 0.00 -1 s +( handler functions specific to each error. The error code is) 124464 197.00 32 s +( used to index the se\036) 149352 196.40 32 s +52832.0 38382.0 m +(quence,) 61530 0.00 -1 s +( fetching the appropriate handler. Any results) 115727 504.00 32 s +( returned by the handler are) 149352 503.40 32 s +52832.0 41543.0 m +(ignored) 61452 0.00 -1 s +( since it is assumed that the) 91700 -106.00 32 s +( handler either takes care of the error completely, or) 149352 -106.56 32 s +52832.0 44704.0 m +(else) 57220 0.00 -1 s +( signals.) 66446 -25.00 32 s +20320.0 51703.0 m +270.0 sw +/drawmode PL_CLEAR def +0.0 0.0 m +newpath +24384 50078 av +149013 50078 as +[] 0 setdash +dp +541.0 sw +/drawmode PL_SET def +newpath +148878 50078 av +20455 50078 as +[] 0 setdash +dp +149352.0 51703.0 m +/timsps12b 7 declareFont +7 sf +20320.0 55090.0 m +(Naming) 31795 0.00 -1 s +( and) 38089 -12.00 32 s +52832.0 h +2 sf +(1.4) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(Throughout) 71879 0.00 -1 s +( CLX, a number) 94017 1266.00 32 s +( of conventions for naming and syntax of) 149352 1265.43 32 s +7 sf +20320.0 58476.0 m +(Argument) 35177 0.00 -1 s +2 sf +52832.0 h +3 sf +(the) 56280 0.00 -1 s +( CLX functions have been followed. These conventions are intended to) 149352 1274.00 32 s +7 sf +20320.0 61863.0 m +(Conventions) 38381 0.00 -1 s +52832.0 h +3 sf +(make) 58944 0.00 -1 s +( the syntax of the functions more predictable. ) 110494 -31.75 32 s +2 sf +() 110494 0.00 -1 s +112844.0 h +() 112844 0.00 -1 s +3 sf +52832.0 68140.0 m +(The) 57220 0.00 -1 s +( major naming conventions are as follows:) 105011 -29.00 32 s +( ) 105687 -30.00 32 s +/symbb8 6 declareFont +6 sf +52832.0 74687.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(To) 61047 0.00 -1 s +( better differentiate the CLX symbols from other symbols, they have all) 143203 116.00 32 s +( been) 149352 115.00 32 s +57912.0 77848.0 m +(placed) 65277 0.00 -1 s +( in the package XLIB. External symbols have been) 122396 -41.00 32 s +( explicitly exported. ) 145627 -41.67 32 s +6 sf +52832.0 84396.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( ) 62985 -21.00 32 s +/timsps10i 5 declareFont +5 sf +(display) 71137 0.00 -1 s +3 sf +( argument, where used, is) 99894 -21.00 32 s +( always first in the argument list. ) 137521 -21.57 32 s +6 sf +52832.0 90943.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(All) 61517 0.00 -1 s +( server resource objects, where used, occur at the) 115047 -224.00 32 s +( beginning of the argument list,) 149352 -224.60 32 s +57912.0 94104.0 m +(immediately) 72019 0.00 -1 s +( after the display variable. ) 101961 -30.00 32 s +6 sf +52832.0 100652.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(When) 64651 0.00 -1 s +( a graphics context \() 87138 -99.00 32 s +5 sf +(gcontext) 96698 0.00 -1 s +3 sf +(\) is present together with another type of server) 149352 -98.75 32 s +57912.0 103813.0 m +(resource) 67469 0.00 -1 s +( \(most commonly, a ) 91142 98.00 32 s +5 sf +(drawable) 101803 0.00 -1 s +3 sf +(\), the graphics context occurs in the argu\036) 149352 98.00 32 s +57912.0 106974.0 m +(ment) 63555 0.00 -1 s +( list after the other server resource.) 103861 175.00 32 s +( Drawables out rank all other server re\036) 149352 174.43 32 s +57912.0 110134.0 m +(sources.) 67081 0.00 -1 s +6 sf +52832.0 116682.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Source) 65748 0.00 -1 s +( arguments always precede the destination arguments in the argument list. ) 149352 -51.73 32 s +6 sf +52832.0 123230.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( ) 62977 -29.00 32 s +5 sf +(x) 64230 0.00 -1 s +3 sf +( argument always) 84077 -29.00 32 s +( precedes the ) 99425 -29.67 32 s +5 sf +(y) 100678 0.00 -1 s +3 sf +( argument in the argument list. ) 135850 -29.50 32 s +6 sf +52832.0 129777.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( ) 62974 -32.00 32 s +5 sf +(width) 69246 0.00 -1 s +3 sf +( argument always precedes the ) 104429 -31.80 32 s +5 sf +(height) 111483 0.00 -1 s +3 sf +( argument in the argument list. ) 146643 -31.50 32 s +6 sf +52832.0 136325.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Where) 65432 0.00 -1 s +( the ) 69820 -236.00 32 s +5 sf +(x) 71073 0.00 -1 s +3 sf +(, ) 72249 -236.00 32 s +5 sf +(y) 73502 0.00 -1 s +3 sf +(, ) 74678 -236.00 32 s +5 sf +(width) 80950 0.00 -1 s +3 sf +( and ) 85964 -236.50 32 s +5 sf +(height) 93018 0.00 -1 s +3 sf +( arguments are used together, the ) 129608 -236.50 32 s +5 sf +(x) 130861 0.00 -1 s +3 sf +( and ) 135875 -236.50 32 s +5 sf +(y) 137128 0.00 -1 s +3 sf +( arguments) 149352 -237.00 32 s +57912.0 139486.0 m +(always) 65748 0.00 -1 s +( precede the ) 79973 -38.00 32 s +5 sf +(width) 86245 0.00 -1 s +3 sf +( and) 90988 -38.00 32 s +( ) 91655 -39.00 32 s +5 sf +(height) 98709 0.00 -1 s +3 sf +( arguments. ) 112505 -38.50 32 s +6 sf +52832.0 145762.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Where) 65432 0.00 -1 s +( a ) 67601 -248.00 32 s +5 sf +(mask) 73400 0.00 -1 s +3 sf +( is accompanied) 91086 -248.00 32 s +( with a ) 98727 -248.67 32 s +5 sf +(structure) 108917 0.00 -1 s +3 sf +(, the mask always precedes the struc\036) 149352 -248.50 32 s +57912.0 148923.0 m +(ture) 62299 0.00 -1 s +( in the argument list. ) 86202 -16.60 32 s +20320.0 155651.0 m +270.0 sw +/drawmode PL_CLEAR def +0.0 0.0 m +newpath +24384 154026 av +149013 154026 as +[] 0 setdash +dp +541.0 sw +/drawmode PL_SET def +newpath +148878 154026 av +20455 154026 as +[] 0 setdash +dp +149352.0 155651.0 m +7 sf +20320.0 159038.0 m +(Programming) 40631 0.00 -1 s +52832.0 h +2 sf +(1.5) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( major programming considerations are as follows:) 120274 -32.00 32 s +( ) 120947 -33.00 32 s +2 sf +() 120947 0.00 -1 s +123297.0 h +() 123297 0.00 -1 s +7 sf +20320.0 162425.0 m +(Considerations) 42142 0.00 -1 s +52832.0 h +6 sf +165856.0 v +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Keyboards) 70136 0.00 -1 s +( are the greatest variable between different manufacturer's worksta\036) 149352 343.38 32 s +57912.0 169017.0 m +(tions.) 64106 0.00 -1 s +( If you want your program to be portable, you should be particularly conserva\036) 149352 -266.69 32 s +57912.0 172178.0 m +(tive) 62144 0.00 -1 s +( here.) 68386 -26.00 32 s +( ) 69065 -27.00 32 s +6 sf +52832.0 178455.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(Many) 64496 0.00 -1 s +( display systems have) 88419 -204.00 32 s +( limited amounts of off\036screen memory. If you can, you) 149352 -204.56 32 s +57912.0 181616.0 m +(should) 65438 0.00 -1 s +( minimize use of pixmaps and backing store. ) 116366 -31.75 32 s +6 sf +52832.0 187892.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( user should have control of his screen real\036estate. Therefore, you should) 142975 -125.00 32 s +( write) 149352 -126.00 32 s +57912.0 191053.0 m +(your) 63084 0.00 -1 s +( applications to react to window management,) 114739 -51.00 32 s +( rather than presume control of) 149352 -51.60 32 s +57912.0 194214.0 m +(the) 61360 0.00 -1 s +( entire screen. What you do inside of your top level) 118898 -38.00 32 s +( window, however, is up to) 149352 -38.60 32 s +57912.0 197375.0 m +(your) 63084 0.00 -1 s +( application. ) 77645 -48.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 12 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03612) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/symbb8 6 declareFont +6 sf +52832.0 22849.0 m +(\267) 53872 0.00 -1 s +57912.0 h +/timsps10 3 declareFont +3 sf +(Coordinates) 71549 0.00 -1 s +( and sizes in X are) 91397 -184.00 32 s +( actually 16\036bit quantities. They usually are declared) 149352 -184.57 32 s +57912.0 26010.0 m +(as) 60263 0.00 -1 s +( an ) 64525 93.00 32 s +2 sf +(int16) 70639 0.00 -1 s +3 sf +( in the functions. Values larger than 16 bits can be truncated silently.) 149352 93.50 32 s +57912.0 29170.0 m +(Sizes) 63869 0.00 -1 s +( \(width and height\) are) 89448 -31.00 32 s +( unsigned quantities. ) 113340 -31.67 32 s +6 sf +52832.0 35447.0 m +(\267) 53872 0.00 -1 s +57912.0 h +3 sf +(The) 62300 0.00 -1 s +( types ) 69365 -152.00 32 s +2 sf +(color) 75477 0.00 -1 s +3 sf +(, ) 76737 -152.00 32 s +2 sf +(colormap) 88179 0.00 -1 s +3 sf +(, ) 89439 -152.00 32 s +2 sf +(cursor) 97276 0.00 -1 s +3 sf +(, ) 98536 -152.00 32 s +2 sf +(display) 107162 0.00 -1 s +3 sf +(, ) 108422 -152.00 32 s +2 sf +(font) 113280 0.00 -1 s +3 sf +(, ) 114540 -152.00 32 s +2 sf +(gcontext) 124726 0.00 -1 s +3 sf +(,) 125432 0.00 -1 s +( ) 125985 -153.00 32 s +2 sf +(pixmap) 135079 0.00 -1 s +3 sf +(, ) 136339 -152.00 32 s +2 sf +(screen) 144018 0.00 -1 s +3 sf +(, and) 149352 -153.00 32 s +57912.0 38608.0 m +2 sf +(window) 67319 0.00 -1 s +3 sf +( are defined solely) 87887 -66.00 32 s +( by a functional interface. Even though they are treated) 149352 -66.56 32 s +57912.0 41769.0 m +(like) 62144 0.00 -1 s +( structures in this document, it is not specified whether they are implemented as) 149352 -212.77 32 s +57912.0 44930.0 m +(structures) 68882 0.00 -1 s +( or classes. Although some interfaces are described as) 128240 -172.00 32 s +( functions, they are) 149352 -172.67 32 s +57912.0 48091.0 m +(not) 61518 0.00 -1 s +( required to be defined using ) 93295 -216.00 32 s +2 sf +(defun.) 100900 0.00 -1 s +3 sf +( \(It is a requirement that they be functions as) 149352 -215.56 32 s +57912.0 51252.0 m +(opposed) 67318 0.00 -1 s +( to macros or special forms.\)) 99495 -22.00 32 s +( ) 100178 -23.00 32 s +20320.0 57980.0 m +270.0 sw +/drawmode PL_CLEAR def +0.0 0.0 m +newpath +24384 56355 av +149013 56355 as +[] 0 setdash +dp +541.0 sw +/drawmode PL_SET def +newpath +148878 56355 av +20455 56355 as +[] 0 setdash +dp +149352.0 57980.0 m +/timsps12b 7 declareFont +7 sf +20320.0 61366.0 m +(Data) 27278 0.00 -1 s +( Types) 36779 -1.00 32 s +52832.0 h +2 sf +(1.6) 56360 0.00 -1 s +3 sf +() 56360 0.00 -1 s +58555.0 h +(The) 62943 0.00 -1 s +( following are some data type definitions) 108985 -33.00 32 s +( that are commonly used in) 139463 -33.60 32 s +7 sf +20320.0 64753.0 m +52832.0 h +3 sf +(CLX) 58475 0.00 -1 s +( function) 68542 -43.00 32 s +( definitions.) 81980 -44.00 32 s +2 sf +34544.0 71030.0 m +(alist) 39560 0.00 -1 s +( ) 40216 -50.00 32 s +3 sf +(\() 41155 0.00 -1 s +/timsps10i 5 declareFont +5 sf +(key\036type\036and\036name datum\036type\036and\036name) 88350 -50.00 32 s +3 sf +(\)) 89289 0.00 -1 s +( ) 89944 -51.00 32 s +2 sf +('list) 94488 0.00 -1 s +3 sf +143595.0 h +(Type) 149394 0.00 -1 s +2 sf +52832.0 75748.0 m +(alist) 57848 0.00 -1 s +3 sf +( defines an association list. An association) 106541 160.00 32 s +( list is a sequence, containing zero or) 149352 159.43 32 s +52832.0 78909.0 m +(more) 58630 0.00 -1 s +( repetitions of the given) 86174 185.00 32 s +( elements with each of the elements expressed as \() 144651 184.44 32 s +5 sf +(type) 149352 0.00 -1 s +52832.0 82070.0 m +(name) 58944 0.00 -1 s +3 sf +(\).) 60589 0.00 -1 s +( ) 61254 -41.00 32 s +2 sf +34544.0 88347.0 m +(angle) 40972 0.00 -1 s +( ) 41650 -28.00 32 s +3 sf +(`\() 43528 0.00 -1 s +2 sf +(number) 53091 0.00 -1 s +3 sf +( ,\(* -2pi\) ,\(* 2pi\)\)) 73355 -28.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +2 sf +52832.0 93337.0 m +(angle) 59260 0.00 -1 s +3 sf +( defines an angle in units of radians and is bounded) 114523 -258.00 32 s +( by \(-2) 122001 -258.50 32 s +/symba10 8 declareFont +8 sf +(p) 123550 0.00 -1 s +3 sf +(\) and \(2) 131809 -258.50 32 s +8 sf +(p) 133358 0.00 -1 s +3 sf +(\). Note that we) 149352 -258.67 32 s +52832.0 96497.0 m +(are) 56277 0.00 -1 s +( explicitly using a different angle representation than what is actually transmitted in) 149352 -106.92 32 s +52832.0 99658.0 m +(the) 56280 0.00 -1 s +( protocol.) 67062 -34.00 32 s +( ) 67733 -35.00 32 s +2 sf +34544.0 105935.0 m +(arc\036seq) 43320 0.00 -1 s +( ) 43996 -30.00 32 s +3 sf +('\() 45874 0.00 -1 s +2 sf +(repeat\036seq) 58411 0.00 -1 s +3 sf +( \() 60026 -30.00 32 s +2 sf +(int16) 66140 0.00 -1 s +3 sf +( ) 66816 -30.00 32 s +5 sf +(x) 68069 0.00 -1 s +3 sf +(\) \() 70623 -30.00 32 s +2 sf +(int16) 76737 0.00 -1 s +3 sf +( ) 77413 -30.00 32 s +5 sf +(y) 78666 0.00 -1 s +3 sf +(\) \() 81220 -30.00 32 s +2 sf +(card16) 89528 0.00 -1 s +3 sf +( ) 90204 -30.00 32 s +5 sf +(width) 96476 0.00 -1 s +3 sf +(\) \() 99030 -30.00 32 s +2 sf +(card16) 107338 0.00 -1 s +3 sf +( ) 108014 -30.00 32 s +5 sf +(height) 115068 0.00 -1 s +3 sf +(\)) 116007 0.00 -1 s +( ) 116682 -31.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 109096.0 m +(\() 53771 0.00 -1 s +2 sf +(angle) 60199 0.00 -1 s +3 sf +( ) 60856 -49.00 32 s +5 sf +(angle1) 68537 0.00 -1 s +3 sf +(\) \() 71072 -49.00 32 s +2 sf +(angle) 77500 0.00 -1 s +3 sf +( ) 78156 -50.00 32 s +5 sf +(angle2) 85837 0.00 -1 s +3 sf +(\)\)) 87715 0.00 -1 s +2 sf +52832.0 113815.0 m +(arc\036seq) 61608 0.00 -1 s +3 sf +( defines a six\036tuple sequence of the form \() 109316 27.38 32 s +5 sf +(x) 110569 0.00 -1 s +3 sf +(, ) 112008 27.00 32 s +5 sf +(y) 113261 0.00 -1 s +3 sf +(, ) 114701 28.00 32 s +5 sf +(width) 120973 0.00 -1 s +3 sf +(, ) 122412 27.00 32 s +5 sf +(height) 129466 0.00 -1 s +3 sf +(, ) 130906 28.00 32 s +5 sf +(angle1) 138587 0.00 -1 s +3 sf +(, ) 140026 27.00 32 s +5 sf +(angle2) 147707 0.00 -1 s +3 sf +(\).) 149352 0.00 -1 s +52832.0 116975.0 m +(The) 57220 0.00 -1 s +( points ) 65017 -257.00 32 s +5 sf +(x) 66270 0.00 -1 s +3 sf +( and ) 71243 -257.00 32 s +5 sf +(y) 72496 0.00 -1 s +3 sf +( are) 76390 -257.00 32 s +( signed, 16\036bit quantities with a range from -32,768 to 32,767. The) 149352 -257.55 32 s +52832.0 120136.0 m +5 sf +(width) 59104 0.00 -1 s +3 sf +( and ) 64349 -121.00 32 s +5 sf +(height) 71403 0.00 -1 s +3 sf +( values are unsigned, 16\036bit quantities and range from 0 to 65,535. ) 145591 -120.58 32 s +5 sf +(an\036) 149352 0.00 -1 s +52832.0 123568.0 m +(gle1) 57691 0.00 -1 s +3 sf +( and ) 63122 -28.00 32 s +5 sf +(angle2) 70803 0.00 -1 s +3 sf +( are in units) 83965 -28.00 32 s +( of radians, and bounded by \(-2) 119612 -28.50 32 s +8 sf +(p) 121161 0.00 -1 s +3 sf +(\) and \(2) 129880 -28.50 32 s +8 sf +(p) 131429 0.00 -1 s +3 sf +(\). ) 133751 -29.00 32 s +2 sf +34544.0 129845.0 m +(array\036index) 48808 0.00 -1 s +( ) 49463 -51.00 32 s +3 sf +(`\() 51341 0.00 -1 s +2 sf +(integer) 59803 0.00 -1 s +3 sf +( 0 ,) 63231 -50.50 32 s +5 sf +(array\036dimension\036limit) 88153 0.00 -1 s +3 sf +(\)) 89092 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +2 sf +52832.0 134564.0 m +(array\036index) 67096 0.00 -1 s +3 sf +( defines a type which is a subtype of the integers and can be used to describe) 149352 -266.75 32 s +52832.0 137724.0 m +(all) 55653 0.00 -1 s +( variables that can be array indices. The range is inclusive because start and end array) 149352 -189.73 32 s +52832.0 140885.0 m +(index) 59102 0.00 -1 s +( specifiers can be one) 83290 -26.00 32 s +( \(1\) past the end. ) 102751 -26.60 32 s +2 sf +34544.0 147162.0 m +(bit\036gravity) 47395 0.00 -1 s +( ) 48048 -53.00 32 s +3 sf +(') 48987 0.00 -1 s +/courps8 4 declareFont +4 sf +(\() 50344 0.00 -1 s +2 sf +(member) 60372 0.00 -1 s +( ) 61024 -54.00 32 s +5 sf +(gravity*) 70429 0.00 -1 s +3 sf +(\)) 71368 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 151948.0 m +(A) 54869 0.00 -1 s +( keyword that specifies which region) 95017 -293.00 32 s +( of a window should be retained when the window) 149352 -293.56 32 s +52832.0 155109.0 m +(is) 54714 0.00 -1 s +( resized.) 64098 -19.00 32 s +5 sf +52832.0 161386.0 m +( gravity ) 62198 -20.00 32 s +3 sf +(\037 One of the) 77577 -20.00 32 s +( following:) 90018 -21.00 32 s +2 sf +52832.0 166172.0 m +(:center) 61291 0.00 -1 s +69088.0 h +(:north) 76768 0.00 -1 s +89408.0 h +(:south) 96933 0.00 -1 s +103632.0 h +109728.0 h +(:static) 117091 0.00 -1 s +3 sf +52832.0 169333.0 m +2 sf +(:east) 58472 0.00 -1 s +69088.0 h +(:north\036east) 82408 0.00 -1 s +89408.0 h +(:south\036east) 102573 0.00 -1 s +103632.0 h +(:west) 109898 0.00 -1 s +3 sf +52832.0 172494.0 m +2 sf +(:forget) 60977 0.00 -1 s +69088.0 h +(:north\036west) 83034 0.00 -1 s +89408.0 h +(:south\036west) 103199 0.00 -1 s +3 sf +52832.0 178771.0 m +(If) 54710 0.00 -1 s +( a window is reconfigured without changing its inside width) 122434 -8.00 32 s +( or height, then the con\036) 149352 -8.60 32 s +52832.0 181932.0 m +(tents) 58162 0.00 -1 s +( of the window moves with the window and are not lost. Otherwise, the contents of a) 149352 -286.56 32 s +52832.0 185093.0 m +(resized) 60823 0.00 -1 s +( window are either moved or lost, depending on its bit\036gravity attribute. See ) 144023 -237.77 32 s +2 sf +(win\036) 149352 0.00 -1 s +52832.0 188254.0 m +(dow\036bit\036gravity) 71639 0.00 -1 s +3 sf +(,) 72345 0.00 -1 s +( in paragraph 4.3, Window Attributes,) 115109 -37.00 32 s +( for additional information.) 145717 -37.67 32 s +2 sf +34544.0 194530.0 m +(bitmap) 43166 0.00 -1 s +( ) 43854 -18.00 32 s +3 sf +('\() 45732 0.00 -1 s +2 sf +(array bit) 56451 -18.00 32 s +3 sf +( \(* *\)\)) 63466 -18.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 199249.0 m +(Specifies) 63176 0.00 -1 s +( a two\036dimensional) 84757 -25.00 32 s +( array of bits.) 99726 -25.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 13 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(1\03613) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 21753 av +149352 21753 as +149352 21871 as +20320 21871 as +closepath +fp +/drawmode PL_SET def +20320.0 25400.0 m +2 sf +34544.0 28222.0 m +(bitmap\036format) 52408 0.00 -1 s +52832.0 h +3 sf +(Structure) 63175 0.00 -1 s +52832.0 32941.0 m +(A) 54869 0.00 -1 s +( structure that) 70345 -20.00 32 s +( describes the storage format of a bitmap.) 116908 -20.57 32 s +52832.0 39218.0 m +(The) 57220 0.00 -1 s +( ) 58108 182.00 32 s +2 sf +(bitmap\036format) 75972 0.00 -1 s +3 sf +( structure contains slots) 103088 182.00 32 s +( for ) 108152 181.50 32 s +2 sf +(unit) 113013 0.00 -1 s +3 sf +(, ) 114606 181.00 32 s +2 sf +(pad) 119155 0.00 -1 s +3 sf +(, and ) 125711 181.50 32 s +2 sf +(lsb\036first\036p) 137622 0.00 -1 s +3 sf +(. The ) 144491 181.50 32 s +2 sf +(unit) 149352 0.00 -1 s +3 sf +52832.0 42378.0 m +(member) 62078 0.00 -1 s +( indicates the) 77229 130.00 32 s +( unit of increments used to maintain the bitmap data. The units) 149352 129.45 32 s +52832.0 45539.0 m +(available for use are 8, 16, or 32 bits. The ) 101862 130.00 32 s +2 sf +(pad) 106411 0.00 -1 s +3 sf +( member indicates how many bits are) 149352 129.50 32 s +52832.0 48700.0 m +(needed) 60824 0.00 -1 s +( to pad the left edge of the scan\036line. The ) 105451 -231.70 32 s +2 sf +(lsb\036first\036p) 117362 0.00 -1 s +3 sf +( member is a predicate which) 149352 -231.60 32 s +52832.0 51861.0 m +(indicates) 62863 0.00 -1 s +( the ordering of) 80272 -22.00 32 s +( bits with the bitmap unit.) 109164 -22.60 32 s +2 sf +34544.0 58138.0 m +(unit) 39405 0.00 -1 s +52832.0 h +3 sf +123230.0 h +(Slot) 127778 0.00 -1 s +( of ) 131488 -26.00 32 s +2 sf +(bitmap\036format) 149352 0.00 -1 s +3 sf +52832.0 62857.0 m +(Type:) 59415 0.00 -1 s +( \() 61022 -38.00 32 s +2 sf +(member ) 71718 -38.00 32 s +3 sf +(8 16 32\).) 81754 -38.00 32 s +52832.0 69133.0 m +(The) 57220 0.00 -1 s +( size of a contiguous grouping of bits, which can be 8, 16, or) 125217 -27.00 32 s +( 32. The default is 8.) 148359 -27.60 32 s +2 sf +34544.0 75410.0 m +(pad) 39093 0.00 -1 s +52832.0 h +3 sf +123230.0 h +(Slot) 127778 0.00 -1 s +( of ) 131488 -26.00 32 s +2 sf +(bitmap\036format) 149352 0.00 -1 s +3 sf +52832.0 80129.0 m +(Type:) 59415 0.00 -1 s +( \() 61022 -38.00 32 s +2 sf +(member ) 71718 -38.00 32 s +3 sf +(8 16 32\).) 81754 -38.00 32 s +52832.0 86405.0 m +(The) 57220 0.00 -1 s +( number of bits to left\036pad the scan\036line, which can be 8, 16, or 32. The default is 8.) 149352 -119.67 32 s +2 sf +34544.0 92682.0 m +(lsb\036first\036p) 46455 0.00 -1 s +52832.0 h +3 sf +123230.0 h +(Slot) 127778 0.00 -1 s +( of ) 131488 -26.00 32 s +2 sf +(bitmap\036format) 149352 0.00 -1 s +3 sf +52832.0 97401.0 m +(Type:) 59415 0.00 -1 s +( ) 60013 -108.00 32 s +2 sf +(boolean) 69421 0.00 -1 s +3 sf +(.) 70127 0.00 -1 s +52832.0 103677.0 m +(A) 54869 0.00 -1 s +( predicate indicating whether the least significant bit comes) 121809 -18.00 32 s +( first \() 128667 -18.50 32 s +2 sf +(true) 133681 0.00 -1 s +3 sf +(\) or not \() 143577 -18.67 32 s +2 sf +(nil) 146714 0.00 -1 s +3 sf +(\).) 148359 0.00 -1 s +20320.0 109954.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 109129 av +149352 109129 as +149352 109247 as +20320 109247 as +closepath +fp +/drawmode PL_SET def +20320.0 112776.0 m +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 14 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03614) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(boolean) 43952 0.00 -1 s +( ) 44640 -18.00 32 s +/timsps10 3 declareFont +3 sf +('\() 46518 0.00 -1 s +2 sf +(or) 49182 0.00 -1 s +3 sf +( ) 49870 -18.00 32 s +2 sf +(nil) 53007 0.00 -1 s +3 sf +( \() 54634 -18.00 32 s +2 sf +(not) 58553 0.00 -1 s +3 sf +( ) 59241 -18.00 32 s +2 sf +(nil) 62378 0.00 -1 s +3 sf +(\)\)) 64256 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +2 sf +52832.0 27297.0 m +(boolean) 62240 0.00 -1 s +3 sf +( defines a type which) 86029 -48.00 32 s +( is all inclusive. It is used for variables that can take on a) 149352 -48.54 32 s +52832.0 30457.0 m +(true) 57219 0.00 -1 s +( \(non\036) 64024 -12.00 32 s +2 sf +(nil) 67161 0.00 -1 s +3 sf +(\) or false \() 78798 -12.00 32 s +2 sf +(nil) 81935 0.00 -1 s +3 sf +(\) value.) 90386 -12.00 32 s +( ) 91079 -13.00 32 s +2 sf +34544.0 36734.0 m +(boole\036constant) 52100 0.00 -1 s +( ) 52736 -70.00 32 s +3 sf +(`\() 54614 0.00 -1 s +2 sf +(member) 64642 0.00 -1 s +3 sf +( ) 65277 -71.00 32 s +/timsps10i 5 declareFont +5 sf +(value) 71389 0.00 -1 s +3 sf +(*\)) 73739 0.00 -1 s +142895.0 h +( Type) 149352 -48.00 32 s +2 sf +52832.0 41453.0 m +(boole-constant) 70860 0.00 -1 s +3 sf +( defines a) 81450 -112.00 32 s +( type that is a set of the values associated with the 16 boolean) 149352 -112.54 32 s +52832.0 44614.0 m +(operation\036code) 69756 0.00 -1 s +( constants for the Common Lisp language. It is used for the set of allowed) 149352 -276.86 32 s +52832.0 47775.0 m +(source) 60197 0.00 -1 s +( and destination combination functions in a graphics context. ) 129303 -37.56 32 s +5 sf +52832.0 54051.0 m +(value) 58944 0.00 -1 s +( \037 ) 62812 -26.50 32 s +3 sf +(One of the following:) 87105 -26.67 32 s +2 sf +52832.0 60328.0 m +(boole\0361) 61610 0.00 -1 s +65024.0 h +75184.0 h +(boole\036c1) 85215 0.00 -1 s +95504.0 h +(boole\036nand) 108989 0.00 -1 s +115824.0 h +(boole\036xor) 127266 0.00 -1 s +52832.0 63489.0 m +(boole\0362) 61610 0.00 -1 s +65024.0 h +75184.0 h +(boole\036c2) 85215 0.00 -1 s +95504.0 h +(boole\036nor) 107104 0.00 -1 s +115824.0 h +52832.0 66650.0 m +(boole\036and) 64748 0.00 -1 s +65024.0 h +(boole\036clr) 75681 0.00 -1 s +83312.0 h +(boole\036orc1) 96007 0.00 -1 s +105664.0 h +52832.0 69810.0 m +(boole\036andc1) 67412 0.00 -1 s +75184.0 h +(boole\036eqv) 86784 0.00 -1 s +95504.0 h +(boole\036orc2) 108199 0.00 -1 s +115824.0 h +52832.0 72971.0 m +(boole\036andc2) 67412 0.00 -1 s +75184.0 h +(boole\036ior) 85999 0.00 -1 s +95504.0 h +(boole\036set) 106161 0.00 -1 s +3 sf +115824.0 h +2 sf +34544.0 79248.0 m +(card8) 41441 0.00 -1 s +( ) 42088 -59.00 32 s +3 sf +('\() 43966 0.00 -1 s +2 sf +(unsigned\036byte) 60899 0.00 -1 s +3 sf +( 8\)) 63895 -60.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 83967.0 m +(An) 56280 0.00 -1 s +( unsigned integer value that is a maximum of eight bits long. This gives) 135418 -135.00 32 s +( a number of) 149352 -135.67 32 s +52832.0 87128.0 m +(this) 56909 0.00 -1 s +( type a range from 0 to 255. ) 88798 -20.88 32 s +2 sf +34544.0 93404.0 m +(card16) 42852 0.00 -1 s +( ) 43488 -70.00 32 s +3 sf +('\() 45366 0.00 -1 s +2 sf +(unsigned\036byte) 62299 0.00 -1 s +3 sf +( 16\)) 66695 -71.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 98123.0 m +(An) 56280 0.00 -1 s +( unsigned integer value that is a maximum of 16 bits long. This gives a number of this) 149352 -242.59 32 s +52832.0 101284.0 m +(type) 57691 0.00 -1 s +( a range) 66567 -28.00 32 s +( from 0 to 65,535. ) 87511 -28.60 32 s +2 sf +34544.0 107561.0 m +(card29) 42852 0.00 -1 s +( ) 43488 -70.00 32 s +3 sf +('\() 45366 0.00 -1 s +2 sf +(unsigned\036byte) 62299 0.00 -1 s +3 sf +( 29\)) 66695 -71.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 112279.0 m +(An) 56280 0.00 -1 s +( unsigned integer value that is a maximum of 29 bits long. This gives a number of this) 149352 -242.59 32 s +52832.0 115440.0 m +(type) 57691 0.00 -1 s +( a range from 0 to 536,870,911. ) 93811 -35.57 32 s +2 sf +34544.0 121717.0 m +(card32) 42852 0.00 -1 s +( ) 43488 -70.00 32 s +3 sf +('\() 45366 0.00 -1 s +2 sf +(unsigned\036byte) 62299 0.00 -1 s +3 sf +( 32\)) 66695 -71.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 126436.0 m +(An) 56280 0.00 -1 s +( unsigned integer value that is a maximum of 32 bits long. This gives a number of this) 149352 -242.59 32 s +52832.0 129596.0 m +(type) 57691 0.00 -1 s +( a range from 0 to 4,294,967,295.) 95243 -38.00 32 s +( ) 95910 -39.00 32 s +2 sf +34544.0 135873.0 m +(color) 40656 0.00 -1 s +( ) 41347 -15.00 32 s +3 sf +('\() 43225 0.00 -1 s +2 sf +(satisfies) 52629 0.00 -1 s +3 sf +( ) 53320 -15.00 32 s +2 sf +(color\036p) 61940 0.00 -1 s +3 sf +(\)) 62879 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 140592.0 m +(A) 54869 0.00 -1 s +( ) 55535 -40.00 32 s +2 sf +(color) 61647 0.00 -1 s +3 sf +(. See) 67094 -40.00 32 s +( paragraph 9.2, Color Functions, for additional information.) 134135 -40.57 32 s +2 sf +34544.0 146868.0 m +(colormap) 45986 0.00 -1 s +( ) 46653 -39.00 32 s +3 sf +('\() 48531 0.00 -1 s +2 sf +(satisfies) 57935 0.00 -1 s +3 sf +( ) 58602 -39.00 32 s +2 sf +(colormap\036p) 72552 0.00 -1 s +3 sf +(\)) 73491 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 151587.0 m +(A) 54869 0.00 -1 s +( ) 55529 -46.00 32 s +2 sf +(colormap) 66971 0.00 -1 s +3 sf +(. See paragraph 9.3, Colormap Functions,) 113691 -46.00 32 s +( for additional information.) 144272 -46.67 32 s +2 sf +34544.0 157864.0 m +(cursor) 42381 0.00 -1 s +( ) 43063 -24.00 32 s +3 sf +('\() 44941 0.00 -1 s +2 sf +(satisfies) 54345 0.00 -1 s +3 sf +( ) 55027 -24.00 32 s +2 sf +(cursor\036p) 65372 0.00 -1 s +3 sf +(\)) 66311 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 162583.0 m +(A) 54869 0.00 -1 s +( ) 55543 -32.00 32 s +2 sf +(cursor) 63380 0.00 -1 s +3 sf +(. See Section 10, Cursors, for additional information. ) 123636 -31.63 32 s +2 sf +34544.0 168859.0 m +(device\036event\036mask) 56798 0.00 -1 s +( ) 57463 -41.00 32 s +3 sf +('\() 59341 0.00 -1 s +2 sf +(or mask32) 71920 -41.00 32 s +3 sf +( \() 73524 -41.00 32 s +2 sf +(list device\036event\036mask\036class) 106631 -41.00 32 s +3 sf +(\)\)) 108509 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 173578.0 m +(Provides) 62708 0.00 -1 s +( a way to specify a set of bits for an event bitmask. Two ways of specifying the) 149352 -158.94 32 s +52832.0 176739.0 m +(bits) 56909 0.00 -1 s +( are allowed: by setting the event bits in a 32 bit mask, or by) 126535 108.00 32 s +( listing the keyword) 149352 107.33 32 s +52832.0 179900.0 m +(names) 60042 0.00 -1 s +( of the device related event bits) 95175 -22.00 32 s +( in a list.) 104829 -22.67 32 s +2 sf +34544.0 186176.0 m +(device\036event\036mask\036class) 63381 0.00 -1 s +( ) 64004 -83.00 32 s +3 sf +(') 64943 0.00 -1 s +/courps8 4 declareFont +4 sf +(\() 66300 0.00 -1 s +2 sf +(member) 76328 0.00 -1 s +( ) 76950 -84.00 32 s +5 sf +(event*) 84315 0.00 -1 s +3 sf +(\)) 85254 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 190895.0 m +(A) 54869 0.00 -1 s +( keyword name, for a device related event, that) 108290 56.00 32 s +( corresponds to a particular bit in an) 149352 55.43 32 s +52832.0 194056.0 m +(event) 58944 0.00 -1 s +( bitmask. The set of names is a subset of the names in the type ) 128271 -112.53 32 s +2 sf +(event\036mask\036class) 148646 0.00 -1 s +3 sf +(.) 149352 0.00 -1 s +5 sf +52832.0 200333.0 m +(event) 58786 0.00 -1 s +( \037 ) 62654 -26.50 32 s +3 sf +(One of the following:) 86947 -26.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 15 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(1\03615) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:button\0361\036motion) 73520 0.00 -1 s +80264.0 h +(:button\036motion) 98602 0.00 -1 s +103632.0 h +109728.0 h +52832.0 25739.0 m +(:button\0362\036motion) 73520 0.00 -1 s +80264.0 h +(:button\036press) 96409 0.00 -1 s +103632.0 h +109728.0 h +52832.0 28900.0 m +(:button\0363\036motion) 73520 0.00 -1 s +80264.0 h +(:key\036press) 92646 0.00 -1 s +103632.0 h +109728.0 h +52832.0 32060.0 m +(:button\0364\036motion) 73520 0.00 -1 s +80264.0 h +(:key\036release) 94680 0.00 -1 s +103632.0 h +109728.0 h +52832.0 35221.0 m +(:button\0365\036motion) 73520 0.00 -1 s +80264.0 h +(:pointer\036motion) 99384 0.00 -1 s +103632.0 h +109728.0 h +34544.0 41498.0 m +(display) 43170 0.00 -1 s +( ) 43876 0.00 32 s +/timsps10 3 declareFont +3 sf +('\() 45754 0.00 -1 s +2 sf +(satisfies) 55158 0.00 -1 s +3 sf +( ) 55864 0.00 32 s +2 sf +(display\036p) 66998 0.00 -1 s +3 sf +(\)) 67937 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 46217.0 m +(A) 54869 0.00 -1 s +( connection to an X server. See Section) 99011 -31.00 32 s +( 2, Displays, for additional information.) 143685 -31.60 32 s +2 sf +34544.0 52493.0 m +(drawable) 45831 0.00 -1 s +( ) 46485 -52.00 32 s +3 sf +('\() 48363 0.00 -1 s +2 sf +(or window pixmap) 70836 -52.00 32 s +3 sf +(\)) 71775 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 57212.0 m +(Both) 58320 0.00 -1 s +( ) 58872 -154.00 32 s +2 sf +(windows) 69377 0.00 -1 s +3 sf +( and ) 74556 -154.00 32 s +2 sf +(pixmaps) 84748 0.00 -1 s +3 sf +( can be used as sources and destinations) 128737 -154.00 32 s +( in graphics opera\036) 149352 -154.67 32 s +52832.0 60373.0 m +(tions.) 59026 0.00 -1 s +( ) 59785 53.00 32 s +2 sf +(windows) 70290 0.00 -1 s +3 sf +( and ) 75883 53.00 32 s +2 sf +(pixmaps) 86075 0.00 -1 s +3 sf +( together are known as ) 112593 53.00 32 s +/timsps10i 5 declareFont +5 sf +(drawables) 124352 0.00 -1 s +3 sf +(.) 125058 0.00 -1 s +( However, an ) 141044 52.33 32 s +2 sf +(:input\036) 149352 0.00 -1 s +52832.0 63534.0 m +(only) 58007 0.00 -1 s +3 sf +( window cannot be used as a source) 98159 -30.00 32 s +( or destination in a graphics operation. ) 141992 -30.57 32 s +2 sf +34544.0 69810.0 m +(draw\036direction) 52568 0.00 -1 s +( ) 53250 -24.00 32 s +3 sf +('\() 55128 0.00 -1 s +2 sf +(member) 65156 0.00 -1 s +3 sf +( ) 65839 -23.00 32 s +2 sf +(:left\036to\036right) 80877 0.00 -1 s +3 sf +( ) 81559 -24.00 32 s +2 sf +(:right\036to\036left) 96597 0.00 -1 s +3 sf +(\)) 97536 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 74529.0 m +(Defines) 61607 0.00 -1 s +( a list of rotation directions for drawing arcs) 109347 -243.00 32 s +( and fonts. ) 121158 -243.67 32 s +2 sf +(draw\036direction) 139182 0.00 -1 s +3 sf +( can have) 149352 -243.50 32 s +52832.0 77690.0 m +(the) 56280 0.00 -1 s +( values of ) 67934 -8.00 32 s +2 sf +(:left\036to\036right) 82972 0.00 -1 s +3 sf +( or ) 86717 -8.50 32 s +2 sf +(:right\036to\036left) 101755 0.00 -1 s +3 sf +(. ) 103158 -9.00 32 s +2 sf +34544.0 83967.0 m +(error\036key) 46139 0.00 -1 s +( ) 46784 -61.00 32 s +3 sf +('\() 48662 0.00 -1 s +2 sf +(member) 58690 0.00 -1 s +3 sf +( ) 59335 -61.00 32 s +5 sf +(error) 65293 0.00 -1 s +3 sf +(*\)) 67643 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 88686.0 m +(Defines) 61607 0.00 -1 s +( a list of all predefined errors. All errors \(synchronous and asynchronous\) are) 149352 57.00 32 s +52832.0 91846.0 m +(processed) 63959 0.00 -1 s +( by calling an error handler in the display. The handler is called with the dis\036) 149352 -64.87 32 s +52832.0 95007.0 m +(play) 57691 0.00 -1 s +( as the first argument and the error\036key as its second argument. ) 129122 -23.00 32 s +5 sf +52832.0 101013.0 m +(error) 58790 0.00 -1 s +3 sf +( \037 One of the following:) 87308 -17.80 32 s +2 sf +52832.0 107290.0 m +(:access) 61137 0.00 -1 s +3 sf +70104.0 h +2 sf +(:drawable) 82330 0.00 -1 s +3 sf +93472.0 h +2 sf +(:implementation) 113376 0.00 -1 s +117856.0 h +(:value) 125223 0.00 -1 s +3 sf +52832.0 110450.0 m +2 sf +(:alloc) 59414 0.00 -1 s +3 sf +70104.0 h +2 sf +(:font) 75901 0.00 -1 s +3 sf +93472.0 h +2 sf +(:length) 101936 0.00 -1 s +3 sf +117856.0 h +2 sf +(:window) 128202 0.00 -1 s +3 sf +52832.0 113611.0 m +2 sf +(:atom) 59882 0.00 -1 s +3 sf +70104.0 h +2 sf +(:gcontext) 81229 0.00 -1 s +3 sf +93472.0 h +2 sf +(:match) 101933 0.00 -1 s +3 sf +117856.0 h +52832.0 116772.0 m +2 sf +(:colormap) 65213 0.00 -1 s +3 sf +70104.0 h +2 sf +(:id\036choice) 81858 0.00 -1 s +3 sf +93472.0 h +2 sf +(:name) 100994 0.00 -1 s +3 sf +117856.0 h +52832.0 119933.0 m +2 sf +(:cursor) 61608 0.00 -1 s +3 sf +70104.0 h +2 sf +(:illegal\036request) 88127 0.00 -1 s +93472.0 h +(:pixmap) 103505 0.00 -1 s +3 sf +117856.0 h +2 sf +34544.0 126210.0 m +(event\036key) 46141 0.00 -1 s +( ) 46791 -56.00 32 s +3 sf +('\() 48669 0.00 -1 s +2 sf +(member) 58697 0.00 -1 s +3 sf +( ) 59348 -55.00 32 s +5 sf +(event\036type) 70942 0.00 -1 s +3 sf +(*\) ) 73942 -56.00 32 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 130929.0 m +(Defines) 61607 0.00 -1 s +( a list that specifies all) 85876 -178.00 32 s +( predefined event\036types. Clients are informed of informa\036) 149352 -178.57 32 s +52832.0 134089.0 m +(tion) 57222 0.00 -1 s +( asynchronously by means of events. These events can be either asynchronously) 149352 153.27 32 s +52832.0 137250.0 m +(generated) 63800 0.00 -1 s +( from devices or generated as side effects of client requests. ) 131538 -25.55 32 s +5 sf +52832.0 143256.0 m +(event\036type) 64426 0.00 -1 s +3 sf +( \037 One of the following:) 92885 -29.60 32 s +2 sf +52832.0 149533.0 m +(:button\036press) 68977 0.00 -1 s +3 sf +81280.0 h +2 sf +(:exposure) 93036 0.00 -1 s +3 sf +111760.0 h +2 sf +(:motion\036notify) 129155 0.00 -1 s +3 sf +52832.0 152694.0 m +2 sf +(:button\036release) 71011 0.00 -1 s +3 sf +81280.0 h +2 sf +(:focus\036in) 91781 0.00 -1 s +( ) 92479 -8.00 32 s +3 sf +111760.0 h +2 sf +(:no\036exposure) 127435 0.00 -1 s +( ) 128061 -80.00 32 s +3 sf +52832.0 155854.0 m +2 sf +(:circulate\036notify) 72262 0.00 -1 s +3 sf +81280.0 h +2 sf +(:focus\036out) 93347 0.00 -1 s +3 sf +111760.0 h +2 sf +(:property\036notify) 131349 0.00 -1 s +3 sf +52832.0 159015.0 m +2 sf +(:circulate\036request) 74143 0.00 -1 s +3 sf +81280.0 h +2 sf +(:graphics\036exposure) 104323 0.00 -1 s +3 sf +111760.0 h +2 sf +(:reparent\036notify) 131191 0.00 -1 s +3 sf +52832.0 162176.0 m +2 sf +(:client\036message) 71166 0.00 -1 s +3 sf +81280.0 h +2 sf +(:gravity\036notify) 98831 0.00 -1 s +111760.0 h +(:resize\036request) 129466 0.00 -1 s +3 sf +52832.0 165337.0 m +2 sf +(:colormap\036notify) 73205 0.00 -1 s +3 sf +81280.0 h +2 sf +(:keymap\036notify) 99774 0.00 -1 s +3 sf +111760.0 h +2 sf +(:selection\036clear) 129936 0.00 -1 s +3 sf +52832.0 168498.0 m +2 sf +(:configure\036notify) 73205 0.00 -1 s +( ) 73852 -59.00 32 s +3 sf +81280.0 h +2 sf +(:key\036press) 93662 0.00 -1 s +( ) 94330 -38.00 32 s +3 sf +111760.0 h +2 sf +(:selection\036notify) 131035 0.00 -1 s +3 sf +52832.0 171659.0 m +2 sf +(:configure\036request) 75086 0.00 -1 s +3 sf +81280.0 h +2 sf +(:key\036release) 95696 0.00 -1 s +3 sf +111760.0 h +2 sf +(:selection\036request) 132916 0.00 -1 s +( ) 133570 -52.00 32 s +3 sf +52832.0 174820.0 m +2 sf +(:create\036notify) 69125 0.00 -1 s +3 sf +81280.0 h +2 sf +(:leave\036notify) 96323 0.00 -1 s +3 sf +111760.0 h +2 sf +(:unmap\036notify) 129159 0.00 -1 s +3 sf +52832.0 177981.0 m +2 sf +(:destroy\036notify) 70697 0.00 -1 s +3 sf +81280.0 h +2 sf +(:map\036notify) 95541 0.00 -1 s +3 sf +111760.0 h +2 sf +(:visibility\036notify) 131039 0.00 -1 s +3 sf +52832.0 181142.0 m +2 sf +(:enter\036notify) 68030 0.00 -1 s +3 sf +81280.0 h +2 sf +(:map\036request) 97422 0.00 -1 s +( ) 98078 -50.00 32 s +3 sf +111760.0 h +2 sf +34544.0 187418.0 m +(event\036mask) 48336 0.00 -1 s +( ) 49021 -21.00 32 s +3 sf +('\() 50899 0.00 -1 s +2 sf +(or mask32) 63498 -21.00 32 s +3 sf +( \() 65123 -20.00 32 s +2 sf +(list) 68728 0.00 -1 s +3 sf +( ) 69413 -21.00 32 s +2 sf +(event\036mask\036class) 89788 0.00 -1 s +3 sf +(\)\)) 91666 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 192137.0 m +(Provides) 62708 0.00 -1 s +( a way to specify a set of bits for an event bitmask. Two ways of specifying the) 149352 -158.94 32 s +52832.0 195298.0 m +(bits) 56909 0.00 -1 s +( are allowed: by setting the event bits in a 32 bit mask, or by) 126535 108.00 32 s +( listing the keyword) 149352 107.33 32 s +52832.0 198459.0 m +(names) 60042 0.00 -1 s +( of the) 67220 -16.00 32 s +( event bits in a list.) 88460 -16.60 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 16 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03616) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 3 declareFont +3 sf +20320.0 22578.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 21753 av +149352 21753 as +149352 21871 as +20320 21871 as +closepath +fp +/drawmode PL_SET def +20320.0 25400.0 m +2 sf +34544.0 28222.0 m +(event\036mask\036class) 54919 0.00 -1 s +( ) 55562 -63.00 32 s +3 sf +(') 56501 0.00 -1 s +/courps8 4 declareFont +4 sf +(\() 57858 0.00 -1 s +2 sf +(member) 67886 0.00 -1 s +( ) 68528 -64.00 32 s +/timsps10i 5 declareFont +5 sf +(event*) 75893 0.00 -1 s +3 sf +(\)) 76832 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 32941.0 m +(The) 57220 0.00 -1 s +( elements of the type) 79688 -261.00 32 s +2 sf +( event\036mask\036class) 100508 -261.00 32 s +3 sf +( are keyword names) 122371 -261.00 32 s +( that correspond to a par\036) 149352 -261.60 32 s +52832.0 36102.0 m +(ticular) 60040 0.00 -1 s +( bit in an event bitmask.) 87037 -25.00 32 s +5 sf +52832.0 42378.0 m +(event) 58786 0.00 -1 s +( \037 ) 62654 -26.50 32 s +3 sf +(One of the following:) 86947 -26.67 32 s +2 sf +52832.0 47165.0 m +(:button\0361\036motion) 73520 0.00 -1 s +80264.0 h +(:enter\036window) 97816 0.00 -1 s +103632.0 h +109728.0 h +(:pointer\036motion\036hint) 134648 0.00 -1 s +52832.0 50326.0 m +(:button\0362\036motion) 73520 0.00 -1 s +80264.0 h +(:exposure) 92020 0.00 -1 s +103632.0 h +109728.0 h +(:property\036change) 130730 0.00 -1 s +52832.0 53487.0 m +(:button\0363\036motion) 73520 0.00 -1 s +80264.0 h +(:focus\036change) 96878 0.00 -1 s +103632.0 h +109728.0 h +(:resize\036redirect) 128057 0.00 -1 s +52832.0 56648.0 m +(:button\0364\036motion) 73520 0.00 -1 s +80264.0 h +(:key\036press) 92646 0.00 -1 s +103632.0 h +109728.0 h +(:structure\036notify) 129785 0.00 -1 s +52832.0 59809.0 m +(:button\0365\036motion) 73520 0.00 -1 s +80264.0 h +(:key\036release) 94680 0.00 -1 s +103632.0 h +109728.0 h +(:substructure\036notify) 134021 0.00 -1 s +52832.0 62969.0 m +(:button\036motion) 71170 0.00 -1 s +80264.0 h +(:keymap\036state) 97345 0.00 -1 s +103632.0 h +109728.0 h +(:substructure\036redirect) 136525 0.00 -1 s +52832.0 66130.0 m +(:button\036press) 68977 0.00 -1 s +80264.0 h +(:leave\036window) 97661 0.00 -1 s +103632.0 h +109728.0 h +(:visibility\036change) 130420 0.00 -1 s +52832.0 69291.0 m +(:button\036release) 71011 0.00 -1 s +80264.0 h +(:owner\036grab\036button) 104244 0.00 -1 s +109728.0 h +52832.0 72452.0 m +(:colormap\036change) 74618 0.00 -1 s +80264.0 h +(:pointer\036motion) 99384 0.00 -1 s +103632.0 h +109728.0 h +34544.0 78729.0 m +(make\036event\036keys) 54761 0.00 -1 s +( ) 55335 -132.00 32 s +5 sf +(event\036mask) 68027 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 81890.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +5 sf +( event\036keywords) 80620 -32.00 32 s +( ) 81293 -33.00 32 s +3 sf +(\037 Type ) 91261 -32.50 32 s +2 sf +(list) 94866 0.00 -1 s +3 sf +(.) 95572 0.00 -1 s +52832.0 86608.0 m +(Returns) 61610 0.00 -1 s +( a list of ) 71291 -49.00 32 s +2 sf +(event\036mask\036class) 91666 0.00 -1 s +3 sf +( keyword names) 110063 -49.00 32 s +( for the event bits that are set in the) 149352 -49.56 32 s +52832.0 89769.0 m +(specified) 63018 0.00 -1 s +( event mask. ) 77803 -36.00 32 s +5 sf +52832.0 96046.0 m +(event\036mask ) 66195 -35.00 32 s +3 sf +(\037 An event mask \(type ) 93685 -35.40 32 s +2 sf +(mask32) 102935 0.00 -1 s +3 sf +(\).) 104580 0.00 -1 s +2 sf +34544.0 100832.0 m +(make\036event\036mask) 55858 0.00 -1 s +3 sf +( &rest ) 63441 -49.00 32 s +5 sf +(keys) 68298 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 103993.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +5 sf +( ) 63082 -18.00 32 s +52832.0 107154.0 m +( event\036mask ) 67543 -33.00 32 s +3 sf +(\037 Type ) 77510 -33.00 32 s +2 sf +(mask32) 86760 0.00 -1 s +3 sf +(.) 87466 0.00 -1 s +52832.0 111873.0 m +(Constructs) 64903 0.00 -1 s +( an event mask from a) 89763 -28.00 32 s +( set of ) 97280 -28.67 32 s +2 sf +(event\036mask\036class) 117655 0.00 -1 s +3 sf +( keyword names.) 136799 -28.50 32 s +5 sf +52832.0 118150.0 m +(keys) 57689 0.00 -1 s +( ) 58353 -42.00 32 s +3 sf +(\037 ) 61840 -41.00 32 s +2 sf +(event\036mask\036class) 82215 0.00 -1 s +3 sf +( keywords.) 94556 -42.00 32 s +20320.0 122936.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 122111 av +149352 122111 as +149352 122229 as +20320 122229 as +closepath +fp +/drawmode PL_SET def +20320.0 125758.0 m +2 sf +34544.0 128580.0 m +(font) 39402 0.00 -1 s +( ) 40128 20.00 32 s +3 sf +('\() 42006 0.00 -1 s +2 sf +(satisfies) 51410 0.00 -1 s +3 sf +( ) 52136 20.00 32 s +2 sf +(font\036p) 59502 0.00 -1 s +3 sf +(\)) 60441 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 133299.0 m +(A) 54869 0.00 -1 s +( text font. See Section 8, Fonts and Characters, for) 111510 -29.00 32 s +( additional information. ) 138853 -29.67 32 s +2 sf +34544.0 139576.0 m +(fontable) 44419 0.00 -1 s +( ) 45097 -28.00 32 s +3 sf +('\() 46975 0.00 -1 s +2 sf +(or stringable) 62388 -28.00 32 s +( font) 67923 -29.00 32 s +3 sf +(\)) 68862 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 144295.0 m +(A) 54869 0.00 -1 s +( ) 55548 -27.00 32 s +2 sf +(fontable) 65423 0.00 -1 s +3 sf +( is either a ) 77699 -26.75 32 s +2 sf +(font) 82557 0.00 -1 s +3 sf +( object or the name of one of the fonts in the font database. ) 149352 -26.50 32 s +2 sf +34544.0 150300.0 m +(font\036props) 47241 0.00 -1 s +( ) 47949 2.00 32 s +3 sf +(') 48888 0.00 -1 s +2 sf +(list) 52493 0.00 -1 s +52832.0 h +3 sf +(Type) 58631 0.00 -1 s +52832.0 155019.0 m +(A) 54869 0.00 -1 s +( ) 55550 -25.00 32 s +2 sf +(list) 59155 0.00 -1 s +3 sf +( that contains alternating keywords and integers. ) 114311 -25.00 32 s +2 sf +34544.0 161025.0 m +(gcontext ) 45411 -25.00 32 s +3 sf +('\() 47289 0.00 -1 s +2 sf +(satisfies) 56693 0.00 -1 s +3 sf +( ) 57374 -25.00 32 s +2 sf +(gcontext\036p) 70068 0.00 -1 s +3 sf +(\)) 71007 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 165743.0 m +(A) 54869 0.00 -1 s +( graphics context. See Section 5, Graphics Contexts, for additional) 129621 -37.00 32 s +( information.) 144317 -38.00 32 s +2 sf +34544.0 172020.0 m +(gcontext\036key) 49902 0.00 -1 s +( ) 50536 -72.00 32 s +3 sf +('\() 52414 0.00 -1 s +2 sf +(member) 62442 0.00 -1 s +3 sf +( ) 63076 -72.00 32 s +5 sf +(type) 67777 0.00 -1 s +3 sf +(*\)) 70127 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 176739.0 m +(A) 54869 0.00 -1 s +( list of predefined types) 80399 -279.00 32 s +( for use in ) 91351 -279.50 32 s +2 sf +(gcontext) 101537 0.00 -1 s +3 sf +( processing. Various information for graph\036) 149352 -279.60 32 s +52832.0 179900.0 m +(ics) 55967 0.00 -1 s +( output is stored in a graphics context \(GC or GContext\), such as foreground pixel,) 149352 -2.79 32 s +52832.0 183061.0 m +(background) 66154 0.00 -1 s +( pixel, line width, clipping region, and) 109133 -35.00 32 s +( so forth. ) 119843 -35.67 32 s +5 sf +52832.0 189066.0 m +(type) 57533 0.00 -1 s +3 sf +( \037 One of the following:) 86021 -23.80 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 17 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(1\03617) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:arc\036mode) 65210 0.00 -1 s +/timsps10 3 declareFont +3 sf +73152.0 h +2 sf +(:exposures) 86006 0.00 -1 s +3 sf +93472.0 h +2 sf +(:line\036width) 106638 0.00 -1 s +( ) 107335 -9.00 32 s +3 sf +109728.0 h +52832.0 25739.0 m +2 sf +(:background) 68355 0.00 -1 s +3 sf +73152.0 h +2 sf +(:fill\036rule) 83180 0.00 -1 s +3 sf +93472.0 h +2 sf +(:plane-mask) 108836 0.00 -1 s +52832.0 28900.0 m +(:cap\036style) 64428 0.00 -1 s +3 sf +65024.0 h +2 sf +(:fill\036style) 75678 0.00 -1 s +( ) 76426 42.00 32 s +3 sf +93472.0 h +2 sf +(:stipple) 102407 0.00 -1 s +52832.0 32060.0 m +(:clip\036mask) 65528 0.00 -1 s +( ) 66221 -13.00 32 s +3 sf +73152.0 h +2 sf +(:font) 78949 0.00 -1 s +3 sf +93472.0 h +2 sf +(:subwindow\036mode) 115576 0.00 -1 s +3 sf +52832.0 35221.0 m +2 sf +(:clip\036x) 60511 0.00 -1 s +3 sf +65024.0 h +2 sf +73152.0 h +(:foreground) 87729 0.00 -1 s +3 sf +93472.0 h +2 sf +(:tile) 98171 0.00 -1 s +3 sf +52832.0 38382.0 m +2 sf +(:clip\036y) 60511 0.00 -1 s +3 sf +65024.0 h +2 sf +73152.0 h +(:function) 84124 0.00 -1 s +3 sf +93472.0 h +2 sf +(:ts\036x) 98798 0.00 -1 s +3 sf +52832.0 41543.0 m +2 sf +(:dash\036offset) 66936 0.00 -1 s +( ) 67640 -2.00 32 s +( ) 68343 -3.00 32 s +3 sf +73152.0 h +2 sf +(:join\036style) 85218 0.00 -1 s +3 sf +93472.0 h +2 sf +(:ts\036y) 98798 0.00 -1 s +3 sf +52832.0 44704.0 m +2 sf +(:dashes) 61769 0.00 -1 s +3 sf +65024.0 h +2 sf +73152.0 h +(:line\036style) 84905 0.00 -1 s +34544.0 50981.0 m +(grab\036status) 48181 0.00 -1 s +( ) 48832 -55.00 32 s +3 sf +('\() 50710 0.00 -1 s +2 sf +(member) 60738 0.00 -1 s +3 sf +( ) 61389 -55.00 32 s +/timsps10i 5 declareFont +5 sf +(grab\036type) 72360 0.00 -1 s +3 sf +(*\)) 74710 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 55699.0 m +(There) 59412 0.00 -1 s +( are two kinds of grabs: active and passive. An ) 112450 -33.50 32 s +5 sf +(active grab ) 125864 -33.50 32 s +3 sf +(occurs when a single) 149352 -33.67 32 s +52832.0 58860.0 m +(client) 59101 0.00 -1 s +( grabs the keyboard) 81684 135.00 32 s +( and/or pointer explicitly. Clients can also grab a particular) 149352 134.44 32 s +52832.0 62021.0 m +(keyboard) 63332 0.00 -1 s +( key or pointer button in a window. The grab activates when the key or button is) 149352 -281.56 32 s +52832.0 65182.0 m +(actually) 61765 0.00 -1 s +( pressed,) 71526 -114.00 32 s +( and is called a ) 88431 -114.60 32 s +5 sf +(passive grab) 102662 -114.00 32 s +3 sf +(. Passive grabs can be very convenient for) 149352 -114.57 32 s +52832.0 68343.0 m +(implementing) 68508 0.00 -1 s +( reliable pop\036up menus. ) 95685 -44.00 32 s +52832.0 74349.0 m +( ) 53515 -23.00 32 s +5 sf +(grab\036type) 64486 0.00 -1 s +3 sf +( \037 One of the following:) 92975 -23.60 32 s +2 sf +52832.0 80625.0 m +(:already\036grabbed) 73837 0.00 -1 s +3 sf +52832.0 83786.0 m +2 sf +(:frozen) 61449 0.00 -1 s +3 sf +65024.0 h +52832.0 86947.0 m +2 sf +(:invalid\036time) 68348 0.00 -1 s +3 sf +52832.0 90108.0 m +2 sf +(:not\036viewable) 69131 0.00 -1 s +3 sf +52832.0 93269.0 m +2 sf +(:success) 62393 0.00 -1 s +3 sf +65024.0 h +2 sf +34544.0 99545.0 m +(image\036depth) 49591 0.00 -1 s +( ) 50257 -40.00 32 s +3 sf +('\() 52135 0.00 -1 s +2 sf +(integer) 60597 0.00 -1 s +3 sf +( 0 32\)) 67101 -40.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 104264.0 m +(Used) 58631 0.00 -1 s +( in determining the) 79803 -75.00 32 s +( depth of a pixmap, window, or image. The value specifies the) 149352 -75.55 32 s +52832.0 107425.0 m +(number) 61452 0.00 -1 s +( of bits deep) 75238 -29.00 32 s +5 sf +( ) 75915 -29.00 32 s +3 sf +(that a given pixel has within a given pixmap, window, or image. ) 148855 -28.83 32 s +2 sf +34544.0 113431.0 m +(index\036size) 46457 0.00 -1 s +( ) 47132 -31.00 32 s +3 sf +('\() 49010 0.00 -1 s +2 sf +(member) 59038 0.00 -1 s +( :default) 69115 -32.00 32 s +3 sf +( 8 16\)) 75636 -31.50 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 118150.0 m +(Used) 58631 0.00 -1 s +( to control the element size of the destination buffer given to the translate function) 149352 -147.86 32 s +52832.0 121310.0 m +(when) 58944 0.00 -1 s +( drawing glyphs. If ) 81366 60.50 32 s +2 sf +(:default) 90769 0.00 -1 s +3 sf +( is specified, the size is based on the current font, if) 149352 60.45 32 s +52832.0 124471.0 m +(known;) 61297 0.00 -1 s +( otherwise, 16 is) 79696 -33.00 32 s +( used.) 86247 -34.00 32 s +2 sf +34544.0 130748.0 m +(int8) 39247 0.00 -1 s +( ) 39929 -24.00 32 s +3 sf +('\() 41807 0.00 -1 s +2 sf +(signed\036byte) 55602 0.00 -1 s +3 sf +( 8\)) 58634 -24.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 135467.0 m +(A) 54869 0.00 -1 s +( signed integer value that is a) 87331 -76.00 32 s +( maximum of eight bits long. A number of this type can) 149352 -76.55 32 s +52832.0 138628.0 m +(have) 58160 0.00 -1 s +( a range from -128 to 127. ) 88663 -31.57 32 s +2 sf +34544.0 144633.0 m +(int16) 40658 0.00 -1 s +( ) 41329 -35.00 32 s +3 sf +('\() 43207 0.00 -1 s +2 sf +(signed\036byte) 57002 0.00 -1 s +3 sf +( 16\)) 61434 -35.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 149352.0 m +(A) 54869 0.00 -1 s +( signed integer value that is a maximum of 16 bits long. A number of this type can have) 149352 -250.61 32 s +52832.0 152513.0 m +(a) 54085 0.00 -1 s +( range from -32,768 to 32,767. ) 89679 -37.83 32 s +2 sf +34544.0 158790.0 m +(int32) 40658 0.00 -1 s +( ) 41329 -35.00 32 s +3 sf +('\() 43207 0.00 -1 s +2 sf +(signed\036byte) 57002 0.00 -1 s +3 sf +( 32\)) 61434 -35.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 163508.0 m +(A) 54869 0.00 -1 s +( signed integer value that is a maximum of 32 bits long. A number of this type can have) 149352 -250.61 32 s +52832.0 166669.0 m +(a) 54085 0.00 -1 s +( range) 60998 -60.00 32 s +( from -2,147,483,648 to 2,147,483,647. ) 106477 -60.60 32 s +2 sf +34544.0 172946.0 m +(keysym) 43636 0.00 -1 s +( ) 44240 -102.00 32 s +3 sf +(') 45179 0.00 -1 s +2 sf +(card32) 53487 0.00 -1 s +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 177665.0 m +(Used) 58631 0.00 -1 s +( as an encoding of a symbol on a keycap on a keyboard. It is an unsigned integer) 149352 -11.53 32 s +52832.0 180825.0 m +(value) 58944 0.00 -1 s +( represented in a maximum of 32 bits long. A ) 108490 -242.00 32 s +2 sf +(keysym) 117582 0.00 -1 s +3 sf +( type can have a range from 0) 149352 -241.57 32 s +52832.0 183986.0 m +(to) 55027 0.00 -1 s +( 4,294,967,295.) 72591 -76.00 32 s +( ) 73220 -77.00 32 s +2 sf +34544.0 190263.0 m +(mask16) 43794 0.00 -1 s +( ) 44446 -54.00 32 s +3 sf +(' ) 46037 -54.00 32 s +2 sf +(card16) 54345 0.00 -1 s +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 194982.0 m +(A) 54869 0.00 -1 s +( positional bitmask that) 81202 -28.00 32 s +( contains 16 boolean flags. ) 111941 -28.60 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 18 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03618) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(mask32) 43794 0.00 -1 s +( ) 44446 -54.00 32 s +/timsps10 3 declareFont +3 sf +(' ) 46037 -54.00 32 s +2 sf +(card32) 54345 0.00 -1 s +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 27297.0 m +(A) 54869 0.00 -1 s +( positional bitmask that) 81202 -28.00 32 s +( contains 32 boolean flags. ) 111941 -28.60 32 s +2 sf +34544.0 33573.0 m +(modifier\036key) 50059 0.00 -1 s +( ) 50713 -52.00 32 s +3 sf +('\() 52591 0.00 -1 s +2 sf +(member) 62619 0.00 -1 s +( ) 63272 -53.00 32 s +/timsps10i 5 declareFont +5 sf +(modifier) 72834 0.00 -1 s +2 sf +(*) 74245 0.00 -1 s +3 sf +(\)) 75184 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 38292.0 m +(A) 54869 0.00 -1 s +( keyword identifying one of the modifier keys on the keyboard device.) 134089 -36.82 32 s +5 sf +52832.0 44569.0 m +(modifier) 62394 0.00 -1 s +( ) 63079 -21.00 32 s +3 sf +(\037 One of the following:) 90898 -20.50 32 s +2 sf +52832.0 49355.0 m +(:shift) 59100 0.00 -1 s +71120.0 h +(:mod\0362) 79739 0.00 -1 s +3 sf +52832.0 52516.0 m +2 sf +(:lock) 58788 0.00 -1 s +71120.0 h +(:mod\0363) 79739 0.00 -1 s +3 sf +52832.0 55677.0 m +2 sf +(:control) 62391 0.00 -1 s +71120.0 h +(:mod\0364) 79739 0.00 -1 s +3 sf +52832.0 58838.0 m +2 sf +(:mod\0361) 61451 0.00 -1 s +71120.0 h +(:mod\0365) 79739 0.00 -1 s +34544.0 65114.0 m +(modifier\036mask) 52254 0.00 -1 s +( ) 52934 -26.00 32 s +3 sf +('\() 54812 0.00 -1 s +2 sf +(or ) 58156 -26.00 32 s +3 sf +(\() 59095 0.00 -1 s +2 sf +(member :any) 75133 -26.00 32 s +3 sf +(\)) 76072 0.00 -1 s +2 sf +( mask16 ) 86682 -26.00 32 s +3 sf +(\() 87621 0.00 -1 s +2 sf +(list modifier\036key) 107421 -26.00 32 s +3 sf +(\)\)) 109299 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 69833.0 m +(A) 54869 0.00 -1 s +( bitmask or list of keywords that specifies a set of modifier keys. The keyword ) 141608 -173.80 32 s +2 sf +(:any) 146938 0.00 -1 s +3 sf +( is) 149352 -174.00 32 s +52832.0 72994.0 m +(equivalent) 64587 0.00 -1 s +( to) 67456 -32.00 32 s +( any subset of modifier key.) 98800 -32.60 32 s +2 sf +34544.0 79271.0 m +(pixarray) 45047 0.00 -1 s +( ) 45719 -34.00 32 s +3 sf +('\() 47597 0.00 -1 s +2 sf +(or) 50261 0.00 -1 s +3 sf +( \() 51872 -34.00 32 s +2 sf +(array pixel) 65084 -34.00 32 s +3 sf +( \(* *\)\)) 72068 -33.50 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 82431.0 m +( \() 59291 -16.00 32 s +2 sf +(array card16) 75028 -16.00 32 s +3 sf +( \(* *\)\)) 82048 -15.50 32 s +52832.0 85592.0 m +( \() 59299 -15.00 32 s +2 sf +(array card8) 73626 -15.00 32 s +3 sf +( \(*) 76668 -14.00 32 s +( *\)\)) 80648 -15.00 32 s +52832.0 88753.0 m +( \() 59303 -14.50 32 s +2 sf +(array) 66042 0.00 -1 s +3 sf +( \() 67673 -14.00 32 s +2 sf +(unsigned\036byte 4) 86708 -15.00 32 s +3 sf +(\) \(* *\)\)) 94669 -14.50 32 s +52832.0 91914.0 m +( \() 59350 -8.63 32 s +2 sf +(array bit) 70078 -9.00 32 s +3 sf +( \(* *\)\)\)) 78051 -8.50 32 s +52832.0 96633.0 m +(Specifies) 63176 0.00 -1 s +( a two\036dimensional array of pixels. ) 103085 -23.00 32 s +( ) 103767 -24.00 32 s +2 sf +34544.0 102910.0 m +(pixel) 40345 0.00 -1 s +( ) 41004 -47.00 32 s +3 sf +('\() 42882 0.00 -1 s +2 sf +(unsigned\036byte) 59815 0.00 -1 s +3 sf +( 32\)) 64234 -48.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 107628.0 m +(An) 56280 0.00 -1 s +( unsigned integer value that is a maximum of 32 bits long. This gives a pixel type a) 149352 -48.94 32 s +52832.0 110789.0 m +(value) 58944 0.00 -1 s +( range from 0 to 4,294,967,295.) 93915 -170.00 32 s +( Useful values are dependent on the class of color\036) 149352 -170.56 32 s +52832.0 113950.0 m +(map) 57691 0.00 -1 s +( being used. ) 71842 -38.67 32 s +2 sf +34544.0 120227.0 m +(pixmap) 43638 0.00 -1 s +( ) 44328 -16.00 32 s +3 sf +('\() 46206 0.00 -1 s +2 sf +(satisfies) 55610 0.00 -1 s +3 sf +( ) 56299 -17.00 32 s +2 sf +(pixmap\036p) 67901 0.00 -1 s +3 sf +(\)) 68840 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 124945.0 m +(A) 54869 0.00 -1 s +( ) 55537 -38.00 32 s +2 sf +(pixmap) 64631 0.00 -1 s +3 sf +(. See paragraph 4.8, Pixmaps, for additional information. ) 129303 -37.75 32 s +20320.0 131222.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 130397 av +149352 130397 as +149352 130515 as +20320 130515 as +closepath +fp +/drawmode PL_SET def +20320.0 134044.0 m +2 sf +34544.0 136866.0 m +(pixmap\036format) 52880 0.00 -1 s +139034.0 h +3 sf +(Structure) 149377 0.00 -1 s +52832.0 141585.0 m +(A) 54869 0.00 -1 s +( structure that describes the storage format of a pixmap. ) 118217 -20.80 32 s +52832.0 147862.0 m +(The) 57220 0.00 -1 s +( ) 57983 57.00 32 s +2 sf +(pixmap\036format) 76319 0.00 -1 s +3 sf +( structure contains slots for ) 107875 57.00 32 s +2 sf +(depth) 114774 0.00 -1 s +3 sf +(,) 115480 0.00 -1 s +( ) 116242 56.00 32 s +2 sf +(bits\036per\036pixel) 132386 0.00 -1 s +3 sf +(, and ) 138692 56.50 32 s +2 sf +(scanline\036) 149352 0.00 -1 s +52832.0 151023.0 m +(pad) 57381 0.00 -1 s +3 sf +(.) 58087 0.00 -1 s +( The ) 63411 -238.00 32 s +2 sf +(depth) 70310 0.00 -1 s +3 sf +( member indicates the number of bit planes) 117470 -238.00 32 s +( in the pixmap. The ) 139009 -238.60 32 s +2 sf +(bits\036per\036) 149352 0.00 -1 s +52832.0 154184.0 m +(pixel) 58633 0.00 -1 s +3 sf +( member indicates the) 82735 -247.00 32 s +( number of bits used to represent a single pixel. For X, a pixel) 149352 -247.54 32 s +52832.0 157345.0 m +(can) 56749 0.00 -1 s +( be 1, 4, 8, 16, 24, or 32 bits wide. As for ) 101342 -193.85 32 s +2 sf +(bitmap\036format) 119206 0.00 -1 s +3 sf +(, the ) 124385 -193.50 32 s +2 sf +(scanline\036pad) 139594 0.00 -1 s +3 sf +( member) 149352 -194.00 32 s +52832.0 160505.0 m +(indicates) 62863 0.00 -1 s +( how many pixels are needed to pad the) 107288 -31.00 32 s +( left edge of the scan\036line.) 136438 -31.60 32 s +2 sf +34544.0 166782.0 m +(depth) 41443 0.00 -1 s +52832.0 h +3 sf +122778.0 h +(Slot) 127326 0.00 -1 s +( of ) 131016 -36.00 32 s +2 sf +(pixmap\036format) 149352 0.00 -1 s +3 sf +52832.0 171501.0 m +(Type:) 59415 0.00 -1 s +( ) 60018 -103.00 32 s +2 sf +(image\036depth) 75065 0.00 -1 s +3 sf +(.) 75771 0.00 -1 s +52832.0 177777.0 m +(The) 57220 0.00 -1 s +( number of bit planes in the pixmap.) 97920 -30.71 32 s +2 sf +34544.0 184054.0 m +(bits\036per\036pixel) 50688 0.00 -1 s +52832.0 h +3 sf +122778.0 h +(Slot) 127326 0.00 -1 s +( of ) 131016 -36.00 32 s +2 sf +(pixmap\036format) 149352 0.00 -1 s +3 sf +52832.0 188773.0 m +(Type:) 59415 0.00 -1 s +( \() 61029 -31.00 32 s +2 sf +(member ) 71732 -31.00 32 s +3 sf +(1 4 8 16 24 32\).) 89453 -30.60 32 s +52832.0 195049.0 m +(The) 57220 0.00 -1 s +( number of consecutive bits used to encode) 113689 1114.00 32 s +( a single pixel. The default) 149352 1113.40 32 s +52832.0 198210.0 m +(is) 54714 0.00 -1 s +( 8.) 57528 -9.00 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 19 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(1\03619) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(scanline\036pad) 49753 0.00 -1 s +52832.0 h +/timsps10 3 declareFont +3 sf +122778.0 h +(Slot) 127326 0.00 -1 s +( of ) 131016 -36.00 32 s +2 sf +(pixmap\036format) 149352 0.00 -1 s +3 sf +52832.0 27297.0 m +(Type:) 59415 0.00 -1 s +( \() 61022 -38.00 32 s +2 sf +(member ) 71718 -38.00 32 s +3 sf +(8 16 32\).) 81754 -38.00 32 s +52832.0 33573.0 m +(The) 57220 0.00 -1 s +( number of bits to left\036pad the scan\036line, which can be 8, 16, or 32. The default is 8.) 149352 -119.67 32 s +20320.0 39850.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 39025 av +149352 39025 as +149352 39143 as +20320 39143 as +closepath +fp +/drawmode PL_SET def +20320.0 42672.0 m +2 sf +34544.0 45494.0 m +(point\036seq) 45675 0.00 -1 s +( ) 46361 -20.00 32 s +3 sf +('\() 48239 0.00 -1 s +2 sf +(repeat\036seq) 60776 0.00 -1 s +3 sf +( \() 62402 -19.00 32 s +2 sf +(int16) 68516 0.00 -1 s +3 sf +( ) 69202 -20.00 32 s +/timsps10i 5 declareFont +5 sf +(x) 70455 0.00 -1 s +3 sf +(\) \() 73020 -19.00 32 s +2 sf +(int16) 79134 0.00 -1 s +3 sf +( ) 79820 -20.00 32 s +5 sf +(y) 81073 0.00 -1 s +3 sf +(\)\)) 82951 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 50213.0 m +(The) 57220 0.00 -1 s +( ) 57678 -248.00 32 s +2 sf +(point\036seq) 68809 0.00 -1 s +3 sf +( type is used to define sequences of \() 108363 -248.00 32 s +5 sf +(x) 109616 0.00 -1 s +3 sf +(,) 110322 0.00 -1 s +5 sf +(y) 111575 0.00 -1 s +3 sf +(\) pairs of points. The paired values) 149352 -247.83 32 s +52832.0 53374.0 m +(are) 56277 0.00 -1 s +( 16\036bit, signed integer quantities. This gives the points in this type a range from) 149352 243.36 32 s +52832.0 56535.0 m +(-32,768) 62004 0.00 -1 s +( to 32,767. ) 74620 -54.67 32 s +2 sf +34544.0 62811.0 m +(pointer\036event\036mask) 58053 0.00 -1 s +( ) 58723 -36.00 32 s +3 sf +('\() 60601 0.00 -1 s +2 sf +(or mask32) 73185 -36.00 32 s +3 sf +( \() 74794 -36.00 32 s +2 sf +(list) 78399 0.00 -1 s +( pointer\036event\036mask\036class) 109160 -37.00 32 s +3 sf +(\)\)) 111038 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 67530.0 m +(Provides) 62708 0.00 -1 s +( a way to specify a set of bits for an event bitmask. Two ways of specifying the) 149352 -158.94 32 s +52832.0 70691.0 m +(bits) 56909 0.00 -1 s +( are allowed: by setting the event bits in a 32 bit mask, or by) 126535 108.00 32 s +( listing the keyword) 149352 107.33 32 s +52832.0 73852.0 m +(names) 60042 0.00 -1 s +( of the pointer related) 84258 -19.00 32 s +( event bits in a list.) 105483 -19.60 32 s +2 sf +34544.0 80129.0 m +(pointer\036event\036mask\036class) 64636 0.00 -1 s +( ) 65263 -79.00 32 s +3 sf +(') 66202 0.00 -1 s +/courps8 4 declareFont +4 sf +(\() 67559 0.00 -1 s +2 sf +(member ) 78214 -79.00 32 s +5 sf +(event*) 85579 0.00 -1 s +3 sf +(\)) 86518 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 84847.0 m +(A) 54869 0.00 -1 s +( keyword name, for a pointer related event, that corresponds to a particular) 139356 14.00 32 s +( bit in an) 149352 13.33 32 s +52832.0 88008.0 m +(event) 58944 0.00 -1 s +( bitmask. The set of names is a subset of the names in the type ) 128271 -112.53 32 s +2 sf +(event\036mask\036class) 148646 0.00 -1 s +3 sf +(.) 149352 0.00 -1 s +5 sf +52832.0 94285.0 m +(event) 58786 0.00 -1 s +( \037 ) 62654 -26.50 32 s +3 sf +(One of the following:) 86947 -26.67 32 s +2 sf +52832.0 99071.0 m +(:button\0361\036motion) 73520 0.00 -1 s +80264.0 h +(:button\036motion) 98602 0.00 -1 s +103632.0 h +109728.0 h +(:leave\036window) 127125 0.00 -1 s +52832.0 102232.0 m +(:button\0362\036motion) 73520 0.00 -1 s +80264.0 h +(:button\036press) 96409 0.00 -1 s +103632.0 h +109728.0 h +(:pointer\036motion) 128848 0.00 -1 s +52832.0 105393.0 m +(:button\0363\036motion) 73520 0.00 -1 s +80264.0 h +(:button\036release) 98443 0.00 -1 s +103632.0 h +109728.0 h +(:pointer\036motion\036hint) 134648 0.00 -1 s +52832.0 108554.0 m +(:button\0364\036motion) 73520 0.00 -1 s +80264.0 h +(:enter\036window) 97816 0.00 -1 s +103632.0 h +109728.0 h +52832.0 111715.0 m +(:button\0365\036motion) 73520 0.00 -1 s +80264.0 h +(:keymap\036state) 97345 0.00 -1 s +103632.0 h +109728.0 h +34544.0 117991.0 m +(rect\036seq) 44101 0.00 -1 s +( ) 44776 -31.00 32 s +3 sf +('\() 46654 0.00 -1 s +2 sf +(repeat\036seq) 59191 0.00 -1 s +3 sf +( \() 60805 -31.00 32 s +2 sf +(int16) 66919 0.00 -1 s +3 sf +( ) 67594 -31.00 32 s +5 sf +(x) 68847 0.00 -1 s +3 sf +(\) \() 71401 -30.00 32 s +2 sf +(int16) 77515 0.00 -1 s +3 sf +( ) 78190 -31.00 32 s +5 sf +(y) 79443 0.00 -1 s +3 sf +(\) \() 81997 -30.00 32 s +2 sf +(card16) 90305 0.00 -1 s +3 sf +( ) 90980 -31.00 32 s +5 sf +(width) 97252 0.00 -1 s +3 sf +(\) \() 99806 -30.00 32 s +2 sf +(card16) 108114 0.00 -1 s +3 sf +( ) 108789 -31.00 32 s +5 sf +(height) 115843 0.00 -1 s +3 sf +(\)\)) 117721 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +2 sf +52832.0 122710.0 m +(rect\036seq) 62389 0.00 -1 s +3 sf +( defines a four\036tuple sequence of the form \() 109639 -205.75 32 s +5 sf +(x) 110892 0.00 -1 s +3 sf +(,) 111598 0.00 -1 s +5 sf +( y) 113351 -206.00 32 s +3 sf +(, ) 114558 -205.00 32 s +5 sf +(width) 120830 0.00 -1 s +3 sf +(, ) 122036 -206.00 32 s +5 sf +(height) 129090 0.00 -1 s +3 sf +(\). The points ) 143524 -205.33 32 s +5 sf +(x) 144777 0.00 -1 s +3 sf +( and) 149352 -206.00 32 s +52832.0 125871.0 m +5 sf +(y) 54085 0.00 -1 s +3 sf +( are signed, 16\036bit quantities with a range from -32,768 to 32,767. The ) 131098 -279.92 32 s +5 sf +(width) 137370 0.00 -1 s +3 sf +( and ) 142298 -279.50 32 s +5 sf +(height) 149352 0.00 -1 s +3 sf +52832.0 129032.0 m +(values) 60042 0.00 -1 s +( are unsigned, 16\036bit quantities and range) 106482 -32.00 32 s +( from 0 to 65,535. ) 127406 -32.60 32 s +2 sf +34544.0 135309.0 m +(repeat\036seq ) 47755 -32.00 32 s +3 sf +(\(&rest) 54963 0.00 -1 s +( ) 55638 -31.00 32 s +5 sf +(elts) 59557 0.00 -1 s +3 sf +(\)) 60496 0.00 -1 s +( ') 62109 -32.00 32 s +2 sf +(sequence) 72926 0.00 -1 s +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 140027.0 m +(A) 54869 0.00 -1 s +( subtype used) 70159 -37.00 32 s +( to define repeating sequences. ) 105393 -37.60 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 20 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03620) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(resource\036id) 48179 0.00 -1 s +( ) 48755 -130.00 32 s +/timsps10 3 declareFont +3 sf +(') 49694 0.00 -1 s +2 sf +(card29) 58002 0.00 -1 s +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 27297.0 m +(A) 54869 0.00 -1 s +( numeric identifier that is assigned by the server to a server resource object.) 139847 -21.85 32 s +2 sf +34544.0 33573.0 m +(rgb\036val) 43322 0.00 -1 s +( ) 44000 -28.00 32 s +3 sf +('\() 45878 0.00 -1 s +2 sf +(float) 51362 0.00 -1 s +3 sf +( 0.0) 55568 -28.00 32 s +( 1.0\)) 60712 -29.00 32 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 38292.0 m +(An) 56280 0.00 -1 s +( ) 56773 -213.00 32 s +2 sf +(rgb\036val) 65551 0.00 -1 s +3 sf +( is a floating\036point value between 0 and 1 that specifies a saturation for a red,) 149352 -212.60 32 s +52832.0 41453.0 m +(green,) 59805 0.00 -1 s +( or blue additive) 77881 -114.00 32 s +( primary. The 0 value indicates no saturation and 1 indicates full) 149352 -114.55 32 s +52832.0 44614.0 m +(saturation.) 64666 0.00 -1 s +( ) 65340 -32.00 32 s +2 sf +34544.0 50890.0 m +(screen) 42223 0.00 -1 s +( ) 42905 -24.00 32 s +3 sf +('\() 44783 0.00 -1 s +2 sf +(satisfies) 54187 0.00 -1 s +3 sf +( ) 54869 -24.00 32 s +2 sf +(screen\036p) 65056 0.00 -1 s +3 sf +(\)) 65995 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 55609.0 m +(A) 54869 0.00 -1 s +( display screen. See) 77043 -28.00 32 s +( Section 3, Screens, for further information. ) 126842 -28.57 32 s +2 sf +34544.0 61886.0 m +(seg\036seq) 43165 0.00 -1 s +( ) 43850 -21.00 32 s +3 sf +('\() 45728 0.00 -1 s +2 sf +(repeat\036seq) 58265 0.00 -1 s +3 sf +( \() 59890 -20.00 32 s +2 sf +(int16) 66004 0.00 -1 s +3 sf +( ) 66689 -21.00 32 s +/timsps10i 5 declareFont +5 sf +(x1) 69353 0.00 -1 s +3 sf +(\) \() 71917 -20.00 32 s +2 sf +(int16) 78031 0.00 -1 s +5 sf +( y1) 81380 -21.00 32 s +3 sf +(\) \() 83944 -20.00 32 s +2 sf +(int16) 90058 0.00 -1 s +5 sf +( x2) 93407 -21.00 32 s +3 sf +(\) \() 95971 -20.00 32 s +2 sf +(int16) 102085 0.00 -1 s +5 sf +( y2) 105434 -21.00 32 s +3 sf +(\)\)) 107312 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 66604.0 m +(Defines) 61607 0.00 -1 s +( sequences of \() 78227 -76.00 32 s +5 sf +(x1) 80891 0.00 -1 s +3 sf +(, ) 82228 -75.00 32 s +5 sf +(y1) 84892 0.00 -1 s +3 sf +(, ) 86228 -76.00 32 s +5 sf +(x2) 88892 0.00 -1 s +3 sf +(, ) 90229 -75.00 32 s +5 sf +(y2) 92893 0.00 -1 s +3 sf +(\) sets of points. The point values are 16\036bit, signed) 149352 -75.56 32 s +52832.0 69765.0 m +(integer) 60667 0.00 -1 s +( quantities. This gives the points in this type) 110230 -27.00 32 s +( a range from -32,768 to 32,767. ) 147817 -27.57 32 s +20320.0 76042.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 75217 av +149352 75217 as +149352 75335 as +20320 75335 as +closepath +fp +/drawmode PL_SET def +20320.0 78864.0 m +2 sf +34544.0 81686.0 m +(state\036mask\036key) 52723 0.00 -1 s +( ) 53385 -44.00 32 s +3 sf +('\() 55263 0.00 -1 s +2 sf +(or modifier\036key) 74104 -44.00 32 s +3 sf +( \() 75705 -44.00 32 s +2 sf +(member) 85733 0.00 -1 s +3 sf +( ) 86394 -45.00 32 s +5 sf +(button) 93606 0.00 -1 s +3 sf +(*\)) 95956 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 86405.0 m +(A) 54869 0.00 -1 s +( keyword identifying one of the display modifier keys or pointer buttons) 133719 -249.00 32 s +( whose state is) 149352 -249.67 32 s +52832.0 89566.0 m +(reported) 62233 0.00 -1 s +( in device events.) 81686 -47.00 32 s +5 sf +52832.0 95843.0 m +(button) 60044 0.00 -1 s +( ) 60725 -25.00 32 s +3 sf +(\037 One of the following:) 88527 -24.75 32 s +2 sf +52832.0 100629.0 m +(:button\0361) 64117 0.00 -1 s +3 sf +71120.0 h +2 sf +(:button\0364) 82405 0.00 -1 s +3 sf +52832.0 103790.0 m +2 sf +(:button\0362) 64117 0.00 -1 s +3 sf +71120.0 h +2 sf +(:button\0365) 82405 0.00 -1 s +3 sf +52832.0 106951.0 m +2 sf +(:button\0363) 64117 0.00 -1 s +3 sf +71120.0 h +2 sf +34544.0 113228.0 m +(make\036state\036keys) 53976 0.00 -1 s +/courps8 4 declareFont +4 sf +( ) 55282 -51.00 32 s +5 sf +(state\036mask) 67350 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 116388.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +5 sf +( ) 63082 -18.00 32 s +52832.0 119549.0 m +( state\036keywords ) 71825 -17.67 32 s +3 sf +(\037 Type ) 81823 -17.50 32 s +2 sf +(list) 85428 0.00 -1 s +3 sf +(.) 86134 0.00 -1 s +52832.0 124268.0 m +(Returns) 61610 0.00 -1 s +( a list of ) 71643 39.00 32 s +2 sf +(state\036mask\036key) 89822 0.00 -1 s +3 sf +( symbols corresponding to the ) 124741 39.00 32 s +5 sf +(state\036mask) 136809 0.00 -1 s +3 sf +(. A symbol) 149352 39.00 32 s +52832.0 127429.0 m +(belongs) 61611 0.00 -1 s +( to the returned list if, and only if, the corresponding ) 121183 -20.82 32 s +5 sf +(state\036mask) 133251 0.00 -1 s +3 sf +( bit is 1.) 142285 -20.67 32 s +5 sf +52832.0 133706.0 m +(state\036mask) 64900 0.00 -1 s +( ) 65583 -23.00 32 s +3 sf +(\037 A 16\036bit mask) 85188 -23.00 32 s +( of type ) 94444 -23.67 32 s +2 sf +(mask16) 103694 0.00 -1 s +3 sf +(.) 104400 0.00 -1 s +2 sf +34544.0 138492.0 m +(make\036state\036mask) 55073 0.00 -1 s +4 sf +( ) 56394 -36.00 32 s +3 sf +(&rest) 62663 0.00 -1 s +( ) 63350 -19.00 32 s +5 sf +(keys) 68207 0.00 -1 s +2 sf +139373.0 h +3 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 141653.0 m +52832.0 h +3 sf +(Returns:) 62394 0.00 -1 s +5 sf +( ) 63082 -18.00 32 s +52832.0 144814.0 m +( mask ) 60668 -27.00 32 s +3 sf +(\037 Type ) 70647 -27.00 32 s +2 sf +(mask16) 79897 0.00 -1 s +3 sf +(.) 80603 0.00 -1 s +52832.0 149533.0 m +(Returns) 61610 0.00 -1 s +( a 16\036bit ) 72063 114.00 32 s +5 sf +(mask) 77862 0.00 -1 s +3 sf +( representing the given ) 104809 114.50 32 s +2 sf +(state\036mask\036key) 122988 0.00 -1 s +3 sf +( symbols. The returned) 149352 114.33 32 s +52832.0 152694.0 m +5 sf +(mask) 58631 0.00 -1 s +3 sf +( contains a) 70641 -30.00 32 s +( 1 bit for each keyword.) 97446 -30.60 32 s +5 sf +52832.0 158970.0 m +(keys) 57689 0.00 -1 s +( ) 58380 -15.00 32 s +3 sf +(\037 A list of ) 71803 -15.00 32 s +2 sf +(state\036mask\036key) 89982 0.00 -1 s +3 sf +( symbols.) 100787 -15.00 32 s +20320.0 163757.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 162932 av +149352 162932 as +149352 163050 as +20320 163050 as +closepath +fp +/drawmode PL_SET def +20320.0 166579.0 m +2 sf +34544.0 169401.0 m +(stringable) 46615 0.00 -1 s +( ) 47294 -27.00 32 s +3 sf +('\() 49172 0.00 -1 s +2 sf +(or string symbol) 68871 -27.00 32 s +3 sf +(\)) 69810 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 174120.0 m +(Used) 58631 0.00 -1 s +( for naming something. This type can be either a string or a ) 123032 -243.00 32 s +2 sf +(symbol) 131655 0.00 -1 s +3 sf +( whose) 139328 -243.00 32 s +( ) 139790 -244.00 32 s +2 sf +(symbol\036) 149352 0.00 -1 s +52832.0 177281.0 m +(name) 59415 0.00 -1 s +3 sf +( is used as the string containing the name. The case of the characters in the string is) 149352 -232.71 32 s +52832.0 180442.0 m +(ignored) 61452 0.00 -1 s +( when) 68226 -44.00 32 s +( comparing stringables. ) 95210 -44.67 32 s +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 21 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +126797.0 7925.0 m +(Introduction to CLX) 145130 -9.00 32 s +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(1\03621) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(timestamp) 47237 0.00 -1 s +( ) 47912 -31.00 32 s +/timsps10 3 declareFont +3 sf +('\() 49790 0.00 -1 s +2 sf +(or null) 57835 -31.00 32 s +3 sf +( ) 58509 -32.00 32 s +2 sf +(card32) 66817 0.00 -1 s +3 sf +(\)) 67756 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 27297.0 m +(An) 56280 0.00 -1 s +( encoding of a time. ) 79377 -20.60 32 s +2 sf +(nil) 82514 0.00 -1 s +3 sf +( stands for the current time. ) 114131 -20.50 32 s +20320.0 33573.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +0.0 sw +/drawmode PL_REPLACE def +0.0 0.0 m +3 17 fillpatset +newpath +20320 32748 av +149352 32748 as +149352 32866 as +20320 32866 as +closepath +fp +/drawmode PL_SET def +20320.0 36395.0 m +2 sf +34544.0 39218.0 m +(visual\036info) 47243 0.00 -1 s +52832.0 h +139034.0 h +3 sf +(Structure) 149377 0.00 -1 s +52832.0 43936.0 m +(A) 54869 0.00 -1 s +( structure that represents a visual type. The elements of this structure are ) 134023 -253.00 32 s +2 sf +(id) 136376 0.00 -1 s +3 sf +(, ) 137535 -253.00 32 s +2 sf +(class) 143179 0.00 -1 s +3 sf +(, ) 144338 -253.00 32 s +2 sf +(red\036) 149352 0.00 -1 s +52832.0 47097.0 m +(mask) 59260 0.00 -1 s +3 sf +(,) 59966 0.00 -1 s +2 sf +( green\036mask) 74715 -63.00 32 s +3 sf +(, ) 76064 -63.00 32 s +2 sf +(blue\036mask) 88606 0.00 -1 s +3 sf +(,) 89312 0.00 -1 s +( ) 89954 -64.00 32 s +2 sf +(bits\036per\036rgb) 104530 0.00 -1 s +3 sf +(, and ) 110596 -63.50 32 s +2 sf +(colormap\036entries) 131126 0.00 -1 s +3 sf +(.) 131832 0.00 -1 s +2 sf +34544.0 53374.0 m +(id) 36897 0.00 -1 s +52832.0 h +128377.0 h +3 sf +(Slot) 132925 0.00 -1 s +( of ) 136653 -17.00 32 s +2 sf +(visual\036info) 149352 0.00 -1 s +3 sf +52832.0 58093.0 m +(Type:) 59415 0.00 -1 s +( ) 60006 -115.00 32 s +2 sf +(card29) 68314 0.00 -1 s +3 sf +(.) 69020 0.00 -1 s +52832.0 64369.0 m +(A) 54869 0.00 -1 s +( unique identification) 78908 -50.00 32 s +( number.) 88889 -51.00 32 s +2 sf +34544.0 70646.0 m +(class) 40188 0.00 -1 s +52832.0 h +128377.0 h +3 sf +(Slot) 132925 0.00 -1 s +( of ) 136653 -17.00 32 s +2 sf +(visual\036info) 149352 0.00 -1 s +3 sf +52832.0 75365.0 m +(Type:) 59415 0.00 -1 s +( \() 61005 -55.00 32 s +2 sf +(member) 71033 0.00 -1 s +3 sf +( ) 71684 -55.00 32 s +2 sf +(:direct\036color) 86725 0.00 -1 s +3 sf +( ) 87375 -56.00 32 s +2 sf +(:gray\036scale) 100538 0.00 -1 s +3 sf +( ) 101189 -55.00 32 s +2 sf +(:pseudo\036color) 117648 0.00 -1 s +3 sf +( ) 118298 -56.00 32 s +2 sf +(:static\036color) 132712 0.00 -1 s +52832.0 78526.0 m +( ) 54220 -12.00 32 s +( ) 56994 -12.50 32 s +3 sf +( ) 57687 -13.00 32 s +2 sf +( :static\036gray) 72169 -12.00 32 s +3 sf +( ) 72862 -13.00 32 s +2 sf +(:true\036color) 85866 0.00 -1 s +3 sf +(\).) 87511 0.00 -1 s +52832.0 84802.0 m +(The) 57220 0.00 -1 s +( class of the visual type.) 84215 -25.00 32 s +2 sf +34544.0 89589.0 m +(red\036mask) 45986 0.00 -1 s +3 sf +(,) 46692 0.00 -1 s +2 sf +( green\036mask) 61424 -80.00 32 s +3 sf +(,) 62130 0.00 -1 s +2 sf +( blue\036mask) 75297 -81.00 32 s +127271.0 h +3 sf +(Slots) 132917 0.00 -1 s +( of ) 136653 -13.00 32 s +2 sf +(visual\036info) 149352 0.00 -1 s +3 sf +52832.0 94307.0 m +(Type:) 59415 0.00 -1 s +2 sf +( pixel) 65853 -69.00 32 s +3 sf +(.) 66559 0.00 -1 s +52832.0 100584.0 m +(The) 57220 0.00 -1 s +( ) 57787 -139.00 32 s +2 sf +(red\036mask) 69229 0.00 -1 s +3 sf +(, ) 70503 -138.00 32 s +2 sf +(green\036mask) 84609 0.00 -1 s +3 sf +(, and ) 90525 -138.50 32 s +2 sf +(blue\036mask) 103067 0.00 -1 s +3 sf +( elements are only meaningful for the ) 145121 -138.57 32 s +2 sf +(:di\036) 149352 0.00 -1 s +52832.0 103745.0 m +(rect\036color) 64581 0.00 -1 s +3 sf +( and ) 70184 58.00 32 s +2 sf +(:true\036color) 83188 0.00 -1 s +3 sf +( classes. Each mask has one contiguous) 128135 58.00 32 s +( set of bits with no) 149352 57.40 32 s +52832.0 106906.0 m +(intersections.) 67801 0.00 -1 s +2 sf +34544.0 113182.0 m +(bits\036per\036rgb) 49120 0.00 -1 s +52832.0 h +128377.0 h +3 sf +(Slot) 132925 0.00 -1 s +( of ) 136653 -17.00 32 s +2 sf +(visual\036info) 149352 0.00 -1 s +3 sf +52832.0 117901.0 m +(Type:) 59415 0.00 -1 s +( ) 60017 -104.00 32 s +2 sf +(card8) 66914 0.00 -1 s +3 sf +(.) 67620 0.00 -1 s +52832.0 124178.0 m +(Specifies) 63176 0.00 -1 s +( the log base 2 of the approximate number of distinct color values \(individu\036) 149352 3.31 32 s +52832.0 127339.0 m +(ally\)) 58003 0.00 -1 s +( of red, green, and blue. Actual RGB values are unsigned 16\036bit) 129586 -33.00 32 s +( numbers.) 140682 -34.00 32 s +2 sf +34544.0 133615.0 m +(colormap\036entries) 55074 0.00 -1 s +128377.0 h +3 sf +(Slot) 132925 0.00 -1 s +( of ) 136653 -17.00 32 s +2 sf +(visual\036info) 149352 0.00 -1 s +3 sf +52832.0 138334.0 m +(Type:) 59415 0.00 -1 s +( ) 60006 -115.00 32 s +2 sf +(card16) 68314 0.00 -1 s +3 sf +(.) 69020 0.00 -1 s +52832.0 144611.0 m +(Defines) 61607 0.00 -1 s +( the number of available colormap entries in a newly created colormap. For ) 145121 -170.69 32 s +2 sf +(:di\036) 149352 0.00 -1 s +52832.0 147772.0 m +(rect\036color) 64581 0.00 -1 s +3 sf +( and ) 70012 -28.00 32 s +2 sf +(:true\036color) 83016 0.00 -1 s +3 sf +(,) 83722 0.00 -1 s +( this is the size of an individual pixel subfield.) 135512 -28.56 32 s +20320.0 154048.0 m +35560.0 h +50800.0 h +66040.0 h +81280.0 h +96520.0 h +111760.0 h +127000.0 h +142240.0 h +149352.0 h +/drawmode PL_REPLACE def +0.0 0.0 m +newpath +20320 153223 av +149352 153223 as +149352 153341 as +20320 153341 as +closepath +fp +/drawmode PL_SET def +20320.0 156870.0 m +eop +0.0 0.0 m +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset + +%%Page: 22 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 7925.0 m +(Introduction to CLX) 38653 -9.00 32 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(1\03622) 25492 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +34544.0 22578.0 m +(win\036gravity) 48493 0.00 -1 s +( ) 49139 -60.00 32 s +/timsps10 3 declareFont +3 sf +(') 50078 0.00 -1 s +/courps8 4 declareFont +4 sf +(\() 51435 0.00 -1 s +2 sf +(member) 61463 0.00 -1 s +( ) 62108 -61.00 32 s +/timsps10i 5 declareFont +5 sf +(gravity*) 71513 0.00 -1 s +3 sf +(\)) 72452 0.00 -1 s +143595.0 h +(Type) 149394 0.00 -1 s +52832.0 27364.0 m +(A) 54869 0.00 -1 s +( keyword that specifies how to reposition a window when its parent is) 133426 -24.00 32 s +( resized.) 142804 -25.00 32 s +5 sf +52832.0 33641.0 m +(gravity) 60826 0.00 -1 s +( ) 61509 -23.00 32 s +3 sf +(\037 One of the following:) 89318 -23.00 32 s +2 sf +52832.0 38427.0 m +(:center) 61291 0.00 -1 s +3 sf +71120.0 h +2 sf +(:north\036west) 85066 0.00 -1 s +89408.0 h +(:static) 96771 0.00 -1 s +103632.0 h +3 sf +52832.0 41588.0 m +2 sf +(:east) 58472 0.00 -1 s +3 sf +71120.0 h +2 sf +(:south) 78645 0.00 -1 s +3 sf +89408.0 h +2 sf +(:unmap) 98815 0.00 -1 s +3 sf +103632.0 h +52832.0 44749.0 m +2 sf +(:north) 60512 0.00 -1 s +3 sf +71120.0 h +2 sf +(:south\036east) 84285 0.00 -1 s +3 sf +89408.0 h +2 sf +(:west) 95674 0.00 -1 s +3 sf +103632.0 h +52832.0 47910.0 m +2 sf +(:north\036east) 66152 0.00 -1 s +3 sf +71120.0 h +2 sf +(:south\036west) 84911 0.00 -1 s +3 sf +89408.0 h +52832.0 54187.0 m +(If) 54710 0.00 -1 s +( a parent window is reconfigured without changing its inside width or height, then all) 149352 -108.93 32 s +52832.0 57348.0 m +(child) 58475 0.00 -1 s +( windows move with the parent and are not changed. Otherwise, each child of the) 149352 -80.64 32 s +52832.0 60508.0 m +(resized) 60823 0.00 -1 s +( parent is moved, depending on the child's gravity attribute. See) 131986 -110.00 32 s +( ) 132581 -111.00 32 s +2 sf +(window\036grav\036) 149352 0.00 -1 s +52832.0 63669.0 m +(ity) 55966 0.00 -1 s +3 sf +(,) 56672 0.00 -1 s +( in paragraph 4.3, Window Attributes, for additional) 115391 -31.00 32 s +( information.) 130093 -32.00 32 s +2 sf +34544.0 69946.0 m +(window) 43951 0.00 -1 s +( ) 44644 -13.00 32 s +3 sf +('\() 46522 0.00 -1 s +2 sf +(satisfies) 55926 0.00 -1 s +3 sf +( ) 56618 -14.00 32 s +2 sf +(window\036p) 68533 0.00 -1 s +3 sf +(\)) 69472 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 74665.0 m +(A) 54869 0.00 -1 s +( window. See Section 4, Windows and Pixmaps, for additional information.) 139937 -36.70 32 s +2 sf +34544.0 80941.0 m +(xatom) 42066 0.00 -1 s +( ) 42749 -23.00 32 s +3 sf +('\() 44627 0.00 -1 s +2 sf +(or string) 55028 -23.00 32 s +( symbol) 64333 -24.00 32 s +3 sf +(\)) 65272 0.00 -1 s +2 sf +143595.0 h +3 sf +(Type) 149394 0.00 -1 s +52832.0 85660.0 m +(A) 54869 0.00 -1 s +( name that has been assigned a corresponding unique ID by the server. ) 131291 -294.69 32 s +2 sf +(xatoms) 139911 0.00 -1 s +3 sf +( are used) 149352 -294.50 32 s +52832.0 88821.0 m +(to) 55027 0.00 -1 s +( identify properties, selections, and types defined in the X server. An) 133022 37.00 32 s +( ) 133764 36.00 32 s +2 sf +(xatom) 141286 0.00 -1 s +3 sf +( can be) 149352 36.50 32 s +52832.0 91982.0 m +(either) 59256 0.00 -1 s +( a ) 61665 -128.00 32 s +2 sf +(string) 68719 0.00 -1 s +3 sf +( or ) 72225 -128.00 32 s +2 sf +(symbol) 80848 0.00 -1 s +3 sf +( whose ) 89214 -128.00 32 s +2 sf +(symbol\036name) 105359 0.00 -1 s +3 sf +( is used as the ) 121103 -128.00 32 s +2 sf +(xatom) 128625 0.00 -1 s +3 sf +( name. The case of) 149352 -127.50 32 s +52832.0 95143.0 m +(the) 56280 0.00 -1 s +( characters in the string are significant when comparing ) 119434 -27.00 32 s +2 sf +(xatoms) 128054 0.00 -1 s +3 sf +(.) 128760 0.00 -1 s +( ) 129438 -28.00 32 s +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/Makefile +++ cmucl-20a-20090928/own-work/clx/Makefile @@ -0,0 +1,30 @@ +# Simple Makefile to add the document structuring comments to the +# original postscript files, and to build a Lectern document from +# these. You can find out about Lectern if you search the WWW for +# `Virtual Paper', and find your way to the DEC SRC Virtual Paper +# site. + +# Before you begin, all of the original postscript files should be +# renamed like this: `for f in *.ps; do mv $f ${f%%ps}orig.ps; done' + +# Then, do `make number', and if you like, `make Lectern'. + +# Here's the order to build them in. +PS= contents.ps \ + s01.ps s02.ps s03.ps s04.ps s05.ps s06.ps s07.ps s08.ps s09.ps s10.ps \ + s11.ps s12.ps s13.ps s14.ps s15.ps s16.ps \ + appa.ps glossary.ps general.ps condition.ps functions.ps types.ps + +all: + echo Please look at the Makefile first. + +# just assume they're all renamed if one exists. +number: s01.orig.ps + xemacs -q -no-site-file -batch -l reverse-pages.elc \ + -f clx-man-add-page-comments-to-ps *.orig.ps + +# edit as you please, of course. +Lectern: + BuildLectern -PSnoOriginal -only 3 -PSfakeOCR ${PS} CLX-prog-ref.lect + BuildLectern -include CLX-prog-ref.lect 1 9999 -page1 5 -contents 3 \ + -index 215 CLX-prog-ref.lect --- cmucl-20a-20090928.orig/own-work/clx/s09.ps +++ cmucl-20a-20090928/own-work/clx/s09.ps @@ -0,0 +1,4182 @@ +%!PS-Adobe-2.0 +%%Title: s09.ps +%%Pages: 10 +%%PageOrder: Ascend +%%EndComments +%%%%% %! + +userdict /letter known not {/letter {} def} if +/bdf {bind def} bind def +/xdf {exch def} bdf +/ldd {load def} bdf +/PL_SET 0 def +/PL_CLEAR 1 def +/PL_XOR 2 def +/PL_REPLACE 3 def +/drawmode PL_SET def +/useNativeFonts false def +/numtextures 21 def +/whitefill 13 def +/docutmark false def +/invertmatrix [1 0 0 -1 0 0] def +/MAXFONT 1024 def +/MAXFONT1 MAXFONT 1 sub def +/MAXCHARS 128 def +/MAXCHARS1 MAXCHARS 1 sub def +/VMHEADROOM 1000 def +/BOGUSWIDTH -1 def +/mesg 64 string def +/charname 12 string def +/istr 3 string def +/ILEncoding 256 array def +/ILSymEncoding 256 array def +/trashheap 1024 string def +/emsg1 256 string def +/emsg2 256 string def +/inch {72 mul} bdf +/sw /setlinewidth ldd +/m { /vpos xdf /hpos xdf } bdf +/v { /vpos xdf } bdf +/h { /hpos xdf } bdf +/pm /moveto ldd +/as /lineto ldd +/av /moveto ldd +/el { 0 begin + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} bdf +/el load 0 8 dict put +/addconic { 0 begin + /clockwise xdf + /endangle xdf /startangle xdf + /rotation xdf + /yrad xdf /xrad xdf + /yc xdf /xc xdf + + /savematrix matrix currentmatrix def + xc yc translate + rotation rotate + xrad yrad scale + 0 0 1 startangle endangle + clockwise 1 eq {arc} {arcn} ifelse + savematrix setmatrix + end +} bdf +/addconic load 0 9 dict put +/dp { + gsave + 1 setlinejoin + 1 setlinecap + drawmode PL_CLEAR eq {1} {0} ifelse setgray + stroke + grestore +} bdf +/ALIGN_NONE 0 def +/ALIGN_OPEN 1 def +/ALIGN_CLOSE 2 def +/PENPATWIDTHADJ [0 0 4 8 12 16 20] def +/MINSCALE .1 def +/pathlength { 0 begin + flattenpath + /dist 0 def + { /yfirst xdf /xfirst xdf + /ymoveto yfirst def /xmoveto xfirst def} + { /ynext xdf /xnext xdf + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + {} + { /ynext ymoveto def /xnext xmoveto def + /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def} + pathforall + dist + end +} bdf +/pathlength load 0 7 dict put +/setpenpat { 0 begin + /style xdf + /width xdf + /pattern xdf + /scaleup DPIx 300 div def + /indx width 1 add scaleup div 4 div cvi def + indx 1 gt indx 7 lt and { + /adj PENPATWIDTHADJ indx get def + /adj adj scaleup mul def + /indx 0 def + pattern { + /iszero indx 2 mod def + iszero 0 ne + {adj add /val xdf} + {/val xdf} + ifelse + pattern indx val put + /indx indx 1 add def + } forall + } if + /offset 0 def + /patternlen 0 def + /pathlen pathlength def + pattern + {patternlen add /patternlen xdf + } forall + style ALIGN_NONE eq { + } if + style ALIGN_CLOSE eq { + /n pathlen patternlen div cvi def + /extralen pathlen cvi patternlen cvi mod def + /halfpatlen patternlen 2 div def + extralen halfpatlen gt {/n n 1 add def} if + n 0 eq {/n 1 def} if + /scale1 pathlen n patternlen mul div def + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + } if + /offset pattern 0 get 2 div round def + } if + style ALIGN_OPEN eq { + /firstdash pattern 0 get def + /dashpct firstdash patternlen div def + /n pathlen patternlen div dashpct sub cvi def + /scale1 pathlen n dashpct add patternlen mul div def + /scale2 pathlen n dashpct add 1 add patternlen mul div def + /x scale2 1 sub abs def + /y scale1 1 sub abs def + x y lt {/scale1 scale2 def} if + scale1 MINSCALE gt { + /indx 0 def + pattern { + scale1 mul /val xdf + val 0 eq {/val 1 def} if + pattern indx val round put + /indx indx 1 add def + } forall + /offset 0 def + } if + } if + pattern offset setdash + end +} bdf +/setpenpat load 0 50 dict put +/s { + /mappedsp xdf + /spAdj xdf + /stEnd xdf + /fstring xdf + hpos vpos moveto + drawmode PL_CLEAR eq {1} {0} ifelse setgray + spAdj 0 ne mappedsp -1 ne and { + spAdj 0 mappedsp fstring widthshow + } { + fstring show + } ifelse + /hpos stEnd def +} bdf +/PL_bitmap { 0 begin + gsave + /vpix xdf + /hpix xdf + /nbytes hpix 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + nbytes 8 mul vpix false [1 0 0 1 0 0 ] + {currentfile picstr 0 nbytes getinterval readhexstring pop} + imagemask + grestore + end +} bdf +/PL_bitmap load 0 4 dict put +/PL_contone { 0 begin + gsave + /nbits xdf + /vpix xdf + /hpix xdf + /nbytes hpix nbits mul 15 add 16 idiv 2 mul def + /picstr nbytes string def + hpos vpos translate + hpix vpix nbits [1 0 0 1 0 0] + {currentfile picstr 0 nbytes getinterval readhexstring pop } + image + grestore + end +} bdf +/PL_contone load 0 5 dict put +/PL_image { 0 begin + gsave + /ho xdf + /vo xdf + /hh xdf + /vh xdf + /hv xdf + /vv xdf + /nbits xdf + /vpix xdf + /hpix xdf + /mapsz xdf + /map xdf + mapsz 0 ne + { + /mapsz mapsz 1 sub def + {map exch mapsz mul round cvi get mapsz div} settransfer + } if + /picstr hpix nbits mul 7 add 8 idiv string def + ho vo translate + [hh vh hv vv 0 0] concat + nbits 1 eq mapsz 0 eq and{ + hpix vpix false [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + imagemask + } { + hpix vpix nbits [hpix 0 0 vpix 0 0] + {currentfile picstr readhexstring pop } + image + } ifelse + grestore + end +} bdf +/PL_image load 0 12 dict put +/reencodesubdict 12 dict def +/ReEncode { + reencodesubdict begin + /newencoding xdf + /newfontname xdf + /basefontname xdf + + /basefontdict basefontname findfont def + /newfont basefontdict maxlength 2 add dict def + basefontdict { + exch dup /FID ne { + exch newfont 3 1 roll put + } { + pop pop + } ifelse + } forall + newfont /FontName newfontname put + newencoding -1 ne { + newfont /Encoding newencoding put + } if + newfontname newfont definefont pop + end +} bdf +/insertcharnum { 0 begin + /encoding xdf + /i xdf + (char) charname copy pop + i istr cvs pop + charname 4 istr putinterval + encoding i charname cvn put + end +} bdf +/insertcharnum load 0 2 dict put +StandardEncoding ILEncoding copy + dup 5 /florin put + dup 7 /fraction put + dup 12 /sterling put + dup 27 /section put + dup 28 /periodcentered put + dup 29 /cent put + dup 30 /hyphen put + dup 31 /emdash put + dup 34 /quotedblright put + dup 45 /endash put + 127 /quotedblleft put + 0 1 4 { ILEncoding insertcharnum } for + 6 1 6 { ILEncoding insertcharnum } for + 8 1 11 { ILEncoding insertcharnum } for + 13 1 26 { ILEncoding insertcharnum } for +/map { 0 begin + + /PSsize xdf + /PSname xdf + /PLname xdf + /psd 2 dict def + psd /pssize PSsize put + psd /psname PSname put + fontmap PLname psd put + end +} bdf +/map load 0 4 dict put +ILSymEncoding 32 +[ +/space /logicalor /arrowright /arrowdblleft /arrowdblup +/arrowdblright /lozenge /arrowhorizex /angleleft /registersans +/Upsilon1 /plusminus /second /angle /greaterequal +/radical /ellipsis /Ifraktur /spade /lessequal +/minute /degree /fraction /florin /infinity +/approxequal /integral /propersuperset /parenrightbt /arrowup +/bracketrighttp /aleph /arrowdblboth /bracerightbt /integralbt +/notsubset /bracketleftbt /trademarksans /bracelefttp /braceleftmid +/braceleftbt /bracketlefttp /braceex /apple /angleright +/parenrightex /parenrighttp /arrowdown /divide /element +/summation /bracketleftex /parenlefttp /parenleftbt /dotmath +/copyrightsans /integralex /parenleftex /integraltp /registerserif +/intersection /trademarkserif /arrowdbldown /gradient /logicalnot +/reflexsubset /equivalence /propersubset /partialdiff /arrowboth +/circlemultiply /heart /bracketrightex /bracerightmid /emptyset +/bracketrightbt /Rfraktur /proportional /reflexsuperset /carriagereturn +/notequal /notelement /diamond /club /bracerighttp +/arrowleft /weierstrass /bullet /circleplus /multiply +/arrowvertex /copyrightserif /union /product /logicaland +] putinterval +0 1 32 {ILSymEncoding insertcharnum } for +127 1 255 {ILSymEncoding insertcharnum } for +/declareFont { + /PLnum xdf + /PLname xdf + useNativeFonts { + PSfontobj PLnum + fontmap PLname get dup + /psname get findfont + invertmatrix makefont exch + /pssize get DPIx 72 div mul scalefont + put + } { + PSfontobj PLnum + 10 dict dup begin + /FontType 3 def + /FontMatrix [DPIx 300 div 0 0 DPIy 300 div 0 0] def + /FontBBox [0 0 0 0] def + /Encoding ILEncoding def + /BuildChar { 0 begin + /char xdf + /fontdict xdf + /charname fontdict /Encoding get char get def + /charinfo fontdict /CharData get charname get def + /wx charinfo 0 get def + charinfo 0 get BOGUSWIDTH eq + {puterrchar} + { /charbbox charinfo 1 4 getinterval def + wx 0 charbbox aload pop setcachedevice + charinfo 5 get charinfo 6 get true + fontdict /imagemaskmatrix get + dup 5 charinfo 8 get put + dup 4 charinfo 7 get put + charinfo 9 get + imagemask + }ifelse + end + }def + /BuildChar load 0 7 dict put + /imagemaskmatrix [1 0 0 1 0 0] def + /CharData MAXCHARS dict def + end + PLname exch definefont put + PSfontobj PLnum get /CharData get + /space [16 0 0 1 1 16 1 0 0 [<00>] cvx ] put + } ifelse +} def +/numLoadEmptyGlyph { 0 begin + /charno xdf + /fontno xdf + /w xdf + w fontno PSfontobj fontno get /Encoding get charno get + LoadEmptyGlyph + end +} bdf +/numLoadEmptyGlyph load 0 3 dict put +/LoadEmptyGlyph { 0 begin + + /charname xdf + /fontno xdf + /w xdf + PSfontobj fontno get /CharData get + charname [w 0 0 1 1 w 1 0 0 [<00>] cvx ] put + end +} bdf +/LoadEmptyGlyph load 0 3 dict put +/puterrchar { + PSfontobj errfontno get dup + /BuildChar get errcharno exch exec + (\tInterleaf::out of VM loading bitmap (?). Try breaking up document\n) + dup print flush + emsg1 copy pop +} bdf +/timeToQuit { + (\tInterleaf::completely out of memory. \n\tTry breaking up the document \n) + dup print flush + emsg2 copy pop + stop +} bdf +/LoadGlyph { 0 begin + /charno xdf + /fontno xdf + /height xdf + /vadj xdf + /width xdf + /hsize xdf + /lsb xdf + /noVMHEADROOM vmstatus exch sub exch pop dup + VMHEADROOM 2 idiv lt {timeToQuit} if + VMHEADROOM lt + {true } {false} ifelse def + /nbytes hsize 15 add 16 idiv 2 mul height mul def + noVMHEADROOM not {/glyph nbytes string def } if + currentfile noVMHEADROOM + {trashheap 0 nbytes getinterval } {glyph} ifelse + readhexstring pop pop + + /hsize hsize 15 add 16 idiv 16 mul def + + /thefont PSfontobj fontno get def + /charname thefont /Encoding get charno get def + + + /tx lsb neg def + /ty vadj neg def + /lly height vadj add def + /llx lsb def + /urx hsize lsb add def + /ury vadj def + thefont /CharData get charname + noVMHEADROOM + { [BOGUSWIDTH] } + {[width llx lly urx ury hsize height tx ty [glyph] cvx ]} ifelse + put + end +} bdf +/LoadGlyph load 0 20 dict put +/sf { PSfontobj exch get setfont } bdf +/stdsizex 32 def +/stdsizey 32 def +/patternstring 1 string def +/grayArray [ + -1 -1 -1 -1 -1 -1 -1 -1 + -1 -1 -1 -1 -1 1 .92 .8 + .65 0 .5 .35 .2 ] def +/patgrayArray [ + 0 .12 .22 .32 .42 .52 .62 .72 + .82 .92 .17 .27 .37 1 .92 .8 + .65 0 .5 .35 .2 ] def +/fillpatset { + /patchar xdf + /pfindex xdf + patgraylevel dup 0 ge { + /patIsGray true def + /patgray xdf + } { + pop /patIsGray false def + } ifelse +} bdf +/fp { + gsave + pfindex 0 eq patchar 0 eq and { + /patIsGray true def + /patgray 0 def + } if + patIsGray { + /oldgray currentgray def + patgray setgray + eofill + oldgray setgray + } { + useNativeFonts { + patchar 0 showpattern + } { + currentfont + PSfontobj pfindex get setfont + pfill + dup null ne {setfont} {pop} ifelse + } ifelse + } ifelse + grestore +} bdf +/pfill { + gsave 1 setgray eofill grestore + gsave setupfactors setupregion blastchars grestore + newpath +} bdf +/setupfactors { + 0 setgray + [] 0 setdash + patternstring 0 patchar put + /patx stdsizex def /paty stdsizey def +} bdf +/setupregion { + eoclip + pathbbox + /ry exch ceiling def + /rx exch ceiling def + /ly exch floor cvi + dup 0 lt{paty sub}if + dup paty mod sub def + /lx exch floor cvi + dup 0 lt{patx sub}if + dup patx mod sub def + /ry ry paty add def + /ly ly paty sub def + newpath +} bdf +/blastchars { + /#chars rx lx sub patx div ceiling cvi def + ly paty ry { + lx exch moveto + #chars{ patternstring show} repeat + }for +} bdf +/patgraylevel { + patchar grayArray length ge { + -1 + } { + grayArray patchar get + } ifelse +} bdf +/setuserscreendict 22 dict def +setuserscreendict begin + /tempctm matrix def + /temprot matrix def + /tempscale matrix def + /concatprocs + {/proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add + array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx + } bdf + /resmatrix matrix def + /findresolution + {72 0 resmatrix defaultmatrix dtransform + /yres xdf /xres xdf + xres dup mul yres dup mul add sqrt + } bdf +end +/setuserscreen +{setuserscreendict begin + /spotfunction xdf + /screenangle xdf + /cellsize xdf + /m tempctm currentmatrix def + /rm screenangle temprot rotate def + /sm cellsize dup tempscale scale def + sm rm m m concatmatrix m concatmatrix pop + 1 0 m dtransform /y1 xdf /x1 xdf + /veclength x1 dup mul y1 dup mul add sqrt def + /veclength veclength DPIx 72 div mul def + /frequency findresolution veclength div def + /newscreenangle y1 x1 atan def + m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt + {{neg} + /spotfunction load concatprocs + /spotfunction xdf + } if + frequency newscreenangle /spotfunction load setscreen + end +} bdf +/setpatterndict 18 dict def +setpatterndict begin + /bitison + {/ybit xdf /xbit xdf + /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def + /mask 1 7 xbit 8 mod sub bitshift def + bytevalue mask and 0 ne + } bdf +end +/bitpatternspotfunction +{setpatterndict begin + /y xdf /x xdf + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + xindex yindex bitison + {/onbits onbits 1 add def 1 } + {/offbits offbits 1 add def 0 } + ifelse + end +} bdf + +/setpattern + {setpatterndict begin + /cellsz xdf + /angle xdf + /bwidth xdf + /bpside xdf + /bstring xdf + /onbits 0 def /offbits 0 def + cellsz angle /bitpatternspotfunction load setuserscreen + {} settransfer + offbits offbits onbits add div setgray + end + } bdf + +/showpattern +{/ang xdf + /patnum xdf + patternarray patnum get 32 4 ang 72 300 32 div div setpattern + eofill +} bdf +/patternarray [ +<> +< +00000000 60c00030 60c00030 00000000 00000000 060c0003 060c0003 00000000 +00000000 3060c000 3060c000 00000000 00000000 03060c00 03060c00 00000000 +00000000 003060c0 003060c0 00000000 00000000 0003060c 0003060c 00000000 +00000000 c0003060 c0003060 00000000 00000000 0c000306 0c000306 00000000 +> +< +00000000 0c000306 0c000306 00000000 00000000 c0003060 c0003060 00000000 +00000000 0003060c 0003060c 00000000 00000000 003060c0 003060c0 00000000 +00000000 03060c00 03060c00 00000000 00000000 3060c000 3060c000 00000000 +00000000 060c0003 060c0003 00000000 00000000 60c00030 60c00030 00000000 +> +< +00030c00 00030c00 00000000 00000000 000030c0 000030c0 00000000 00000000 +0000030c 0000030c 00000000 00000000 c0000030 c0000030 00000000 00000000 +0c000003 0c000003 00000000 00000000 30c00000 30c00000 00000000 00000000 +030c0000 030c0000 00000000 00000000 0030c000 0030c000 00000000 00000000 +> +< +0030c000 0030c000 00000000 00000000 030c0000 030c0000 00000000 00000000 +30c00000 30c00000 00000000 00000000 0c000003 0c000003 00000000 00000000 +c0000030 c0000030 00000000 00000000 0000030c 0000030c 00000000 00000000 +000030c0 000030c0 00000000 00000000 00030c00 00030c00 00000000 00000000 +> +< +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +00000000 00000707 00000707 00000707 00000000 00007070 00007070 00007070 +> +< +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +00000000 0e0e0e0e 0e0e0e0e 0e0e0e0e 00000000 e0e0e0e0 e0e0e0e0 e0e0e0e0 +> +< +cccc0ccc cccc0ccc 00000000 00000000 cccc0ccc cccc0ccc 00000000 00000000 +cccc0ccc cccc0ccc 00000000 00000000 00000000 00000000 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 0ccccccc 0ccccccc 00000000 00000000 +0ccccccc 0ccccccc 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +88880888 88880888 00000000 00000000 88880888 88880888 00000000 00000000 +88880888 88880888 00000000 00000000 00000000 00000000 00000000 00000000 +08888888 08888888 00000000 00000000 08888888 08888888 00000000 00000000 +08888888 08888888 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000308 00000308 00040308 00040398 000c01d0 007e01f8 01cb80fc 0309803e +0618802f 06108027 06108063 07100843 03b01843 03e01046 01f018c6 00781c9c +007c07f0 005e0080 004e0180 00c60100 10860100 30860000 208c0000 318c0000 +39380002 0fe00002 01000006 0300003f c20000e5 c2000184 40000304 4000030c +> +< +00007618 00003c70 00003fe0 00000f80 00000800 00040800 00041800 000c1000 +00081000 007e0000 01db0000 03138000 06138000 06310000 0c200000 0c200010 +18600010 18400030 18400020 18c001f8 1880076c 1c810c4e 1d86184e 0f1c18c4 +0ff83080 03e03080 02006180 02006100 06006100 04006300 04006200 00007204 +> +< +00000180 00000180 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 00000198 00000198 00000000 00000000 +00000198 00000198 00000000 00000000 19999998 19999998 00000000 00000000 +01999998 01999998 00000000 00000000 00000000 00000000 00000000 00000000 +> +< +00000400 00000000 00000100 00000180 00000000 00000000 00000190 00000198 +00000000 00000000 00000198 00000198 00000000 00000000 00000998 00000998 +00000000 00000000 00001998 00019990 40000000 00000000 19999980 09999980 +00000000 00000000 01999800 00999000 00000000 00000000 00000000 00000000 +> +] def +/bop {/pagestate save def } bdf +/eop {docutmark {cutmark} if showpage pagestate restore } def +/clp {initclip newpath av as as as closepath clip } bdf +/cutmark { 0 begin + /pw DPIx 40 div def + /pw2 pw 2 div def + /lnx DPIx 4 div def + /lny DPIy 4 div def + initclip + pw sw + [] 0 setdash + newpath + pw2 neg pw2 neg translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + 0 PSpagelength pw add translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + PSpagewidth pw add neg 0 translate + lnx neg 0 av lnx 0 as + 0 lny neg av 0 lny as + dp + end +} bdf +/cutmark load 0 4 dict put +/fontmap 9 dict def + /Ops8 /ILtims 8 map + /timsps10 /ILtims 10 map + /timsps10i /ILtimsi 10 map + /timsps8i /ILtimsi 8 map + /timsps18b /ILtimsb 18 map + /timsps10b /ILtimsb 10 map + /timsps18 /ILtims 18 map + /timsps12b /ILtimsb 12 map + /symbb8 /ILsymbb 8 map +/Times-Roman /ILtims ILEncoding ReEncode +/Times-Italic /ILtimsi ILEncoding ReEncode +/Times-Bold /ILtimsb ILEncoding ReEncode +/Symbol /ILsymbb -1 ReEncode +letter +/initialstate save def +/PSpagelength 223519 def +/PSpagewidth 172720 def +/DPIx 20320 def /DPIy 20320 def +72 DPIx div 72 DPIy div neg scale +0 223520 neg translate +/PSfontobj 9 array def +/useNativeFonts true def +/drawmode PL_SET def +270.0 sw +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 0 fillpatset +%%EndProlog +%%Page: 1 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps10b 2 declareFont +2 sf +143841.0 208619.0 m +(9\03699) 149013 0.00 -1 s +/timsps8i 1 declareFont +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18b 7 declareFont +7 sf +20410.0 39376.0 m +94420.0 39466.0 m +(COLORS) 115868 0.00 -1 s +116320.0 39376.0 m +117675.0 29893.0 m +2 sf +116862.0 37479.0 m +117675.0 34770.0 m +270.0 sw +0.0 0.0 m +/useNativeFonts false def +/Ops8_icon 0 declareFont +/useNativeFonts true def +0 19 fillpatset +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +121739 20320 av +148832 20320 as +148832 39285 as +121739 39285 as +closepath +fp +[] 0 setdash +dp +0.0 sw +270.0 sw +0.0 sw +0 13 fillpatset +/drawmode PL_REPLACE def +newpath +270.0 sw +/drawmode PL_SET def +142101 32833 av +137082 32833 as +134344 30545 as +134344 25588 as +137082 23300 as +143470 23300 as +143470 23300 as +142101 26351 as +142101 26351 as +138451 26351 as +138451 29783 as +142101 29783 as +142101 29783 as +142101 32833 as +fp +newpath +142101 32833 av +137082 32833 as +134344 30545 as +134344 25588 as +137082 23300 as +143470 23300 as +[] 0 setdash +dp +newpath +0.0 sw +143470 23300 av +142101 26351 as +newpath +270.0 sw +142101 26351 av +138451 26351 as +138451 29783 as +142101 29783 as +[] 0 setdash +dp +newpath +0.0 sw +142101 29783 av +142101 32833 as +270.0 sw +0.0 sw +270.0 sw +0.0 sw +270.0 sw +/drawmode PL_REPLACE def +newpath +/drawmode PL_SET def +143470 39315 av +137082 39315 as +134344 37028 as +134344 34740 as +138451 34740 as +138451 36265 as +142101 36265 as +142101 32833 as +142101 32833 as +142101 29783 as +142101 29783 as +142101 26351 as +142101 26351 as +143470 23300 as +143470 23300 as +146208 25588 as +146208 37028 as +143470 39315 as +fp +newpath +143470 39315 av +137082 39315 as +134344 37028 as +134344 34740 as +138451 34740 as +138451 36265 as +142101 36265 as +142101 32833 as +[] 0 setdash +dp +newpath +0.0 sw +142101 32833 av +142101 29783 as +newpath +270.0 sw +142101 29783 av +142101 26351 as +[] 0 setdash +dp +newpath +0.0 sw +142101 26351 av +143470 23300 as +newpath +270.0 sw +143470 23300 av +146208 25588 as +146208 37028 as +143470 39315 as +[] 0 setdash +dp +0.0 sw +newpath +132975 23300 av +132975 23300 as +newpath +132975 43891 av +132975 43891 as +newpath +147577 43891 av +147577 43891 as +newpath +147577 23300 av +147577 23300 as +149351.0 39376.0 m +7 sf +/timsps10 4 declareFont +4 sf +20320.0 43485.0 m +541.0 sw +0.0 0.0 m +newpath +20455 41861 av +149013 41859 as +[] 0 setdash +dp +149352.0 43485.0 m +/timsps12b 6 declareFont +6 sf +20320.0 46871.0 m +(Colormaps ) 37163 8.00 32 s +52832.0 h +2 sf +(9.1) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(In) 60905 0.00 -1 s +( X, a ) 70184 1055.00 32 s +/timsps10i 5 declareFont +5 sf +(color) 76141 0.00 -1 s +4 sf +( is defined by a set of three numeric values, representing) 149352 949.80 32 s +6 sf +20320.0 50258.0 m +(and) 25779 0.00 -1 s +( Colors) 36215 -3.00 32 s +52832.0 h +4 sf +(intensities) 64276 0.00 -1 s +( of red, green, and blue. Red, green, and blue are ) 119848 -6.36 32 s +( referred to as the ) 140260 -7.60 32 s +5 sf +(primary) 149352 0.00 -1 s +4 sf +52832.0 53419.0 m +(hues.) 58711 0.00 -1 s +( A ) 61594 -283.00 32 s +5 sf +(colormap) 72410 0.00 -1 s +4 sf +( is a list of colors, each indexed by an integer ) 121725 -259.92 32 s +5 sf +(pixel) 127210 0.00 -1 s +4 sf +( value. Each entry in) 149352 -283.50 32 s +52832.0 56580.0 m +(a ) 54791 0.00 32 s +( colormap is called a color ) 83963 -232.00 32 s +5 sf +(cell) 88037 0.00 -1 s +4 sf +(. Raster graphics) 106460 -232.00 32 s +( displays store pixel values in a special) 149352 -203.50 32 s +52832.0 59741.0 m +(screen) 60039 0.00 -1 s +( hardware memory. As the screen hardware scans this memory, it reads each pixel) 149352 -260.92 32 s +52832.0 62902.0 m +(value,) 59650 0.00 -1 s +( looks up the color in the corresponding cell of a colormap, and displays the color) 149352 -198.38 32 s +52832.0 66063.0 m +(on) 55654 0.00 -1 s +( its screen. ) 68298 -17.67 32 s +52832.0 72339.0 m +(The) 57220 0.00 -1 s +( colormap abstraction applies to all classes of visual types supported by X, including) 149352 -256.38 32 s +52832.0 75500.0 m +(those) 58789 0.00 -1 s +( for screens which are actually monochrome. For example,) 122846 -280.00 32 s +( ) 123271 -281.00 32 s +2 sf +(:gray\036scale) 136434 0.00 -1 s +4 sf +( screens use) 149352 -280.50 32 s +52832.0 78661.0 m +(colormaps) 64587 0.00 -1 s +( in which colors actually specify the monochrome intensity. A typical black\036) 149352 -145.64 32 s +52832.0 81822.0 m +(and\036white) 64115 0.00 -1 s +( monochrome display has a ) 95547 -31.00 32 s +2 sf +(:static\036gray) 109335 0.00 -1 s +4 sf +( screen with a two\036cell colormap.) 146756 -38.60 32 s +52832.0 88098.0 m +(The) 57220 0.00 -1 s +( following list describes how pixel values and colormaps are handled for each visual) 149352 -237.62 32 s +52832.0 91259.0 m +(class.) 59024 0.00 -1 s +/symbb8 8 declareFont +8 sf +52832.0 97807.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:direct\036color) 72953 0.00 -1 s +4 sf +( \037 A pixel value is decomposed into separate red,) 130960 123.00 32 s +( green, and blue) 149352 122.33 32 s +57912.0 100968.0 m +(subfields.) 68807 0.00 -1 s +( Each subfield indexes a) 95833 -101.00 32 s +( separate colormap. Entries in all colormaps can) 149352 -101.57 32 s +57912.0 104129.0 m +(be) 60576 0.00 -1 s +( changed.) 71332 -59.00 32 s +( ) 71978 -60.00 32 s +8 sf +52832.0 110676.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:gray\036scale) 71075 0.00 -1 s +4 sf +( \037 A pixel value indexes a single colormap that contains monochrome) 149352 -172.91 32 s +57912.0 113837.0 m +(intensities.) 70062 0.00 -1 s +( Colormap entries can be changed. ) 109570 -37.67 32 s +8 sf +52832.0 120385.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:pseudo\036color) 74371 0.00 -1 s +4 sf +( \037 A pixel value indexes a single colormap that contains color inten\036) 149352 -282.83 32 s +57912.0 123546.0 m +(sities.) 64419 0.00 -1 s +( Colormap entries can be changed.) 103277 -34.00 32 s +( ) 103948 -35.00 32 s +8 sf +52832.0 130093.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:static\036color) 72326 0.00 -1 s +4 sf +( \037 Same as ) 88469 469.00 32 s +2 sf +(:pseudo\036color) 104928 0.00 -1 s +4 sf +(, except that the colormap entries) 144733 469.00 32 s +( are) 149352 468.00 32 s +57912.0 133254.0 m +(predefined) 69977 0.00 -1 s +( by the hardware and cannot be changed. ) 116388 -46.75 32 s +8 sf +52832.0 139802.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:static\036gray) 71700 0.00 -1 s +4 sf +( \037 Same as ) 89411 861.00 32 s +2 sf +(:gray\036scale) 102574 0.00 -1 s +4 sf +(, except that the colormap entries are) 149352 861.17 32 s +57912.0 142962.0 m +(predefined) 69977 0.00 -1 s +( by the hardware and cannot be changed. ) 116388 -46.75 32 s +8 sf +52832.0 149510.0 m +(\267) 53872 0.00 -1 s +57912.0 h +2 sf +(:true\036color) 70916 0.00 -1 s +4 sf +( \037 Same as ) 88191 752.00 32 s +2 sf +(:direct\036color) 103232 0.00 -1 s +4 sf +(, except) 112761 752.00 32 s +( that the colormap entries are) 149352 751.40 32 s +57912.0 152671.0 m +(predefined) 69977 0.00 -1 s +( by the hardware and cannot be changed. Typically, each of the red,) 149352 247.33 32 s +57912.0 155832.0 m +(green,) 64885 0.00 -1 s +( and blue colormaps provides a \(near\) linear ramp of intensity. ) 135738 -27.73 32 s +52832.0 162108.0 m +(CLX) 58475 0.00 -1 s +( provides functions to create colormaps, access and modify colors and color) 142935 -152.17 32 s +( cells,) 149352 -167.00 32 s +52832.0 165269.0 m +(and) 56907 0.00 -1 s +( install) 64482 -29.00 32 s +( colormaps in screen hardware. ) 100223 -29.60 32 s +20320.0 172268.0 m +0.0 0.0 m +newpath +20455 170644 av +148878 170642 as +[] 0 setdash +dp +149352.0 172268.0 m +6 sf +20320.0 175655.0 m +(Color) 28595 0.00 -1 s +( Functions) 43756 15.00 32 s +52832.0 h +2 sf +(9.2) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(A) 60592 0.00 -1 s +( color is represented by a CLX color object, in which each of the red, green, and) 149352 -109.69 32 s +52832.0 178816.0 m +(blue) 57691 0.00 -1 s +( values is specified by an ) 86271 -70.00 32 s +2 sf +(rgb\036val) 95049 0.00 -1 s +4 sf +( \037 a floating) 109809 -70.00 32 s +( point number between 0.0 and 1.0.) 149352 -58.83 32 s +52832.0 181977.0 m +(\(see) 57375 0.00 -1 s +( paragraph 1.6, Data Types\). The value 0.0 represents the minimum intensity, while) 149352 -205.33 32 s +52832.0 185138.0 m +(1.0) 56360 0.00 -1 s +( represents the maximum intensity. CLX automatically converts) 127446 -168.00 32 s +( ) 127955 -197.00 32 s +2 sf +(rgb\036val) 136733 0.00 -1 s +4 sf +( values into) 149352 -196.50 32 s +52832.0 188299.0 m +(16\036bit) 59572 0.00 -1 s +( integers when sending colors to an X server. The X server, in turn, scales 16\036bit ) 149352 -105.00 32 s +52832.0 191460.0 m +(color) 58630 0.00 -1 s +( values to match the actual intensity range supported by the) 125233 -33.00 32 s +( screen.) 133818 -34.00 32 s +eop +%%Page: 2 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Colors) 26480 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(9\036100) 26903 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(Colors used on ) 69741 -243.00 32 s +2 sf +(:gray\036scale) 82904 0.00 -1 s +4 sf +( screens must have the same value for each of red, green, and) 149352 -222.50 32 s +52832.0 25739.0 m +(blue.) 58397 0.00 -1 s +( Only one of these values is used by screen hardware to determine intensity;) 142954 -96.92 32 s +( how\036) 149352 -106.00 32 s +52832.0 28900.0 m +(ever,) 58394 0.00 -1 s +( CLX does not define which of red, green, or blue is actually used.) 133096 -29.23 32 s +52832.0 35176.0 m +(The) 57220 0.00 -1 s +( following paragraphs describe the CLX functions used to create, access, and modify) 149352 -302.92 32 s +52832.0 38337.0 m +(colors.) 60434 0.00 -1 s +2 sf +34544.0 44614.0 m +(make\036color) 48178 0.00 -1 s +( ) 48845 -39.00 32 s +4 sf +(&key \() 56721 -39.00 32 s +2 sf +(:blue) 62835 0.00 -1 s +4 sf +( 1.0\)) 67969 -39.00 32 s +( \() 69574 -40.00 32 s +2 sf +(:green) 77252 0.00 -1 s +4 sf +( 1.0\) \() 83991 -39.50 32 s +2 sf +(:red) 89005 0.00 -1 s +4 sf +( 1.0\) &allow\036other\036keys) 116118 -39.50 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 47775.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +/timsps10i 5 declareFont +5 sf +52832.0 50935.0 m +( color ) 60826 -27.00 32 s +4 sf +(\037 Type) 70126 -27.00 32 s +( ) 70804 -28.00 32 s +2 sf +(color) 76916 0.00 -1 s +4 sf +(.) 77622 0.00 -1 s +52832.0 55654.0 m +(Creates,) 62000 0.00 -1 s +( initializes, and returns a) 90333 167.00 32 s +( new ) 96779 166.50 32 s +2 sf +(color) 102891 0.00 -1 s +4 sf +( object with the specified values for red,) 149352 166.43 32 s +52832.0 58815.0 m +(green,) 59805 0.00 -1 s +( and) 64526 -60.00 32 s +( blue.) 70736 -61.00 32 s +2 sf +52832.0 65092.0 m +(:blue) 58946 0.00 -1 s +4 sf +(,) 59652 0.00 -1 s +( ) 60327 -31.00 32 s +2 sf +(:green) 68005 0.00 -1 s +4 sf +(, ) 69386 -31.00 32 s +2 sf +(:red ) 75075 -31.00 32 s +4 sf +(\037 ) 78572 -31.00 32 s +2 sf +(rgb\036val) 87350 0.00 -1 s +4 sf +( values that specify the saturation for each primary.) 145017 -30.63 32 s +2 sf +34544.0 71368.0 m +(color\036blue) 46770 0.00 -1 s +( ) 47394 -82.00 32 s +5 sf +(color) 53351 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 74529.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 77690.0 m +( blue\036intensity ) 70233 -25.67 32 s +4 sf +(\037 Type ) 80215 -25.50 32 s +2 sf +(rgb\036val) 88993 0.00 -1 s +4 sf +(. ) 90379 -26.00 32 s +52832.0 82409.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73704 -18.00 32 s +2 sf +(setf) 77933 0.00 -1 s +4 sf +(\) sets the value for blue in the ) 111961 -17.88 32 s +5 sf +(color) 117918 0.00 -1 s +4 sf +(.) 118624 0.00 -1 s +5 sf +52832.0 88686.0 m +(color) 58789 0.00 -1 s +( ) 59464 -31.00 32 s +4 sf +(\037 A ) 65673 -31.00 32 s +2 sf +(color) 71785 0.00 -1 s +4 sf +( object.) 80061 -32.00 32 s +2 sf +34544.0 93472.0 m +(color\036green) 48334 0.00 -1 s +( ) 48930 -110.00 32 s +5 sf +(color) 54887 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 96633.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 99794.0 m +( green\036intensity) 71109 -31.00 32 s +( ) 71783 -32.00 32 s +4 sf +(\037 Type ) 81753 -31.50 32 s +2 sf +(rgb\036val) 90531 0.00 -1 s +4 sf +(.) 91237 0.00 -1 s +52832.0 104513.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73701 -19.00 32 s +2 sf +(setf) 77930 0.00 -1 s +4 sf +(\) sets the value for green in the ) 113360 -18.63 32 s +5 sf +(color) 119317 0.00 -1 s +4 sf +(.) 120023 0.00 -1 s +5 sf +52832.0 110789.0 m +(color) 58789 0.00 -1 s +( ) 59464 -31.00 32 s +4 sf +(\037 A ) 65673 -31.00 32 s +2 sf +(color) 71785 0.00 -1 s +4 sf +( object.) 80061 -32.00 32 s +2 sf +34544.0 115576.0 m +(color\036p) 43164 0.00 -1 s +( ) 43804 -66.00 32 s +5 sf +(color) 49761 0.00 -1 s +2 sf +52832.0 h +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 118737.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 121897.0 m +( color\036p ) 63174 -27.67 32 s +4 sf +(\037 Type ) 73152 -27.50 32 s +2 sf +(boolean) 82560 0.00 -1 s +4 sf +(. ) 83944 -28.00 32 s +52832.0 126616.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67463 -25.00 32 s +2 sf +(nil) 70600 0.00 -1 s +4 sf +( if) 73004 -25.00 32 s +( the argument is a ) 93646 -25.60 32 s +2 sf +(color) 99758 0.00 -1 s +4 sf +( object and ) 112771 -25.33 32 s +2 sf +(nil) 115908 0.00 -1 s +4 sf +( otherwise.) 128264 -26.00 32 s +2 sf +34544.0 132893.0 m +(color\036red) 45670 0.00 -1 s +( ) 46288 -88.00 32 s +5 sf +(color) 52245 0.00 -1 s +2 sf +52832.0 h +4 sf +(Function) 62866 0.00 -1 s +2 sf +34544.0 136054.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 139215.0 m +( red\036intensity ) 69132 -27.00 32 s +4 sf +(\037 Type ) 79111 -27.00 32 s +2 sf +(rgb\036val) 87889 0.00 -1 s +4 sf +(.) 88595 0.00 -1 s +52832.0 143933.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73707 -17.00 32 s +2 sf +(setf) 77936 0.00 -1 s +4 sf +(\) sets the value for red in the ) 110719 -16.50 32 s +5 sf +(color) 116676 0.00 -1 s +4 sf +(.) 117382 0.00 -1 s +5 sf +52832.0 150210.0 m +(color) 58789 0.00 -1 s +( ) 59464 -31.00 32 s +4 sf +(\037 A ) 65673 -31.00 32 s +2 sf +(color) 71785 0.00 -1 s +4 sf +( object.) 80061 -32.00 32 s +2 sf +34544.0 154996.0 m +(color\036rgb) 45828 0.00 -1 s +( ) 46446 -88.00 32 s +5 sf +(color) 52403 0.00 -1 s +2 sf +52832.0 h +4 sf +(Function) 62866 0.00 -1 s +2 sf +34544.0 158157.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 161318.0 m +( red) 57943 -31.50 32 s +4 sf +(,) 58649 0.00 -1 s +5 sf +( green) 65749 -32.00 32 s +4 sf +(,) 66455 0.00 -1 s +5 sf +( blue ) 72663 -31.50 32 s +4 sf +(\037 Type ) 82633 -31.50 32 s +2 sf +(rgb\036val) 91411 0.00 -1 s +4 sf +(.) 92117 0.00 -1 s +52832.0 166037.0 m +(Returns) 61610 0.00 -1 s +( the values for red, green, and blue in the ) 108190 -28.60 32 s +5 sf +(color) 114147 0.00 -1 s +4 sf +(.) 114853 0.00 -1 s +5 sf +52832.0 172314.0 m +(color) 58789 0.00 -1 s +( ) 59464 -31.00 32 s +4 sf +(\037 A ) 65673 -31.00 32 s +2 sf +(color) 71785 0.00 -1 s +4 sf +( object.) 80061 -32.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 3 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118398.0 8195.0 m +( ) 121788 -1.00 32 s +( Colors) 139802 -1.52 32 s +/timsps10b 2 declareFont +2 sf +142430.0 208619.0 m +(9\036101) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +20320.0 23300.0 m +0.0 0.0 m +newpath +20455 21676 av +148878 21674 as +[] 0 setdash +dp +149352.0 23300.0 m +/timsps12b 6 declareFont +6 sf +20320.0 26687.0 m +(Colormap) 34991 0.00 -1 s +( ) 35854 16.00 32 s +52832.0 h +2 sf +(9.3) 56360 0.00 -1 s +4 sf +() 56360 0.00 -1 s +58555.0 h +(A) 60592 0.00 -1 s +( colormap is represented in CLX by a ) 115925 1528.50 32 s +2 sf +(colormap) 127367 0.00 -1 s +4 sf +( object. A CLX) 149352 1528.33 32 s +6 sf +20320.0 30074.0 m +(Functions) 34619 0.00 -1 s +52832.0 h +4 sf +(program) 62391 0.00 -1 s +( can create and manipulate several ) 100318 -261.00 32 s +2 sf +(colormap) 111760 0.00 -1 s +4 sf +( objects. However, the colors con\036) 149352 -208.60 32 s +52832.0 33234.0 m +(tained) 59728 0.00 -1 s +( in a) 64378 -105.00 32 s +( ) 64978 -106.00 32 s +2 sf +(colormap) 76420 0.00 -1 s +4 sf +( are made visible only when the ) 112283 -105.43 32 s +2 sf +(colormap) 123725 0.00 -1 s +4 sf +( is ) 126913 -53.00 32 s +/timsps10i 5 declareFont +5 sf +(installed) 136633 0.00 -1 s +4 sf +(. Each win\036) 149352 -105.50 32 s +52832.0 36395.0 m +(dow) 57691 0.00 -1 s +( is associated with a ) 80870 -20.00 32 s +2 sf +(colormap) 92312 0.00 -1 s +4 sf +( that is used to translate window pixels into colors) 149352 -17.90 32 s +52832.0 39556.0 m +(\(see) 57375 0.00 -1 s +( ) 58124 43.00 32 s +2 sf +(window\036colormap) 79912 0.00 -1 s +4 sf +(\). However, a window will appear in its true colors only if its) 149352 39.42 32 s +52832.0 42717.0 m +(associated) 64430 0.00 -1 s +( ) 65102 -34.00 32 s +2 sf +(colormap) 76544 0.00 -1 s +4 sf +( is installed. ) 91417 -25.25 32 s +52832.0 48994.0 m +(The) 57220 0.00 -1 s +( total number of colormaps that can be installed depends on the) 129456 76.00 32 s +( screen hardware.) 149352 37.50 32 s +52832.0 52155.0 m +(Most) 58634 0.00 -1 s +( hardware devices allow exactly one ) 99129 -198.83 32 s +2 sf +(colormap) 110571 0.00 -1 s +4 sf +( to be installed at any time. That is,) 149352 -176.44 32 s +52832.0 55316.0 m +2 sf +(screen\036min\036installed\036maps) 84650 0.00 -1 s +4 sf +( and ) 90795 -16.00 32 s +2 sf +(screen\036max\036installed\036maps) 123082 0.00 -1 s +4 sf +( are both equal to 1. In\036) 149352 -23.50 32 s +52832.0 58476.0 m +(stalling) 61141 0.00 -1 s +( a new ) 68499 -238.00 32 s +2 sf +(colormap) 79941 0.00 -1 s +4 sf +( can cause a previously installed ) 116368 -204.00 32 s +2 sf +(colormap) 127810 0.00 -1 s +4 sf +( to) 130473 -238.00 32 s +( be uninstalled. It) 149352 -238.67 32 s +52832.0 61637.0 m +(is ) 55420 0.00 32 s +( important to remember that the set of installed ) 110376 141.11 32 s +2 sf +(colormaps) 122916 0.00 -1 s +4 sf +( is a hardware resource) 149352 106.00 32 s +52832.0 64798.0 m +(shared) 60197 0.00 -1 s +( cooperatively among all client programs connected to) 121294 -38.00 32 s +( an X server.) 136302 -29.00 32 s +52832.0 71075.0 m +(A) 54869 0.00 -1 s +( CLX program can control the contents of ) 101944 -111.00 32 s +2 sf +(colormaps) 114484 0.00 -1 s +4 sf +( by allocating color cells in one) 149352 -93.00 32 s +52832.0 74236.0 m +(of) 55182 0.00 -1 s +( two ways: read\036only or read\036write.) 95567 116.00 32 s +( Allocating a read\036only color cell establishes a) 149352 101.00 32 s +52832.0 77397.0 m +(color) 58630 0.00 -1 s +( value for a specified pixel value that cannot ) 106910 -269.33 32 s +( be changed. However, read\036only color) 149352 -303.60 32 s +52832.0 80558.0 m +(cells) 58004 0.00 -1 s +( can be shared among all client programs. Read\036only allocation is the best strategy) 149352 -164.86 32 s +52832.0 83718.0 m +(for) 56121 0.00 -1 s +( making use of limited ) 82087 -27.20 32 s +2 sf +(colormap) 93529 0.00 -1 s +4 sf +( hardware in) 107564 -34.00 32 s +( a multi\036client environment.) 138966 -34.67 32 s +52832.0 89995.0 m +(Alternatively,) 68426 0.00 -1 s +( allocating a read\036write color cell allows a client the exclusive right to set) 149352 -134.69 32 s +52832.0 93156.0 m +(the) 56280 0.00 -1 s +( color value stored in the cell. A cell allocated read\036write by one client cannot be allo\036) 149352 -241.63 32 s +52832.0 96317.0 m +(cated) 58786 0.00 -1 s +( by another client, not even as a) 94867 -45.50 32 s +( read\036only cell. Note that read\036write allocation is) 149352 -52.57 32 s +52832.0 99478.0 m +(not) 56438 0.00 -1 s +( allowed for screens whose visual type belongs to one of) 120980 3.64 32 s +( the ) 125847 3.50 32 s +2 sf +(:static\036gray) 139635 0.00 -1 s +4 sf +(, ) 141050 3.00 32 s +2 sf +(:static\036) 149352 0.00 -1 s +52832.0 102639.0 m +(color) 58944 0.00 -1 s +4 sf +(,) 59650 0.00 -1 s +( or ) 63911 249.50 32 s +2 sf +(:true\036color) 76915 0.00 -1 s +4 sf +( classes. For) 91787 499.00 32 s +( screens of these classes, ) 122806 498.40 32 s +2 sf +(colormap) 134248 0.00 -1 s +4 sf +( cells cannot) 149352 498.50 32 s +52832.0 105799.0 m +(be modified.) 67096 0.00 32 s +52832.0 112076.0 m +(Two) 58004 0.00 -1 s +( entries of) 68814 -237.00 32 s +( the default colormap, typically containing the colors black and white, are) 149352 -237.55 32 s +52832.0 115237.0 m +(automatically) 68192 0.00 -1 s +( allocated read\036only. The pixel values for these) 120194 -139.00 32 s +( entries can be returned by) 149352 -139.60 32 s +52832.0 118398.0 m +(the) 56280 0.00 -1 s +( functions ) 68008 -93.00 32 s +2 sf +(screen\036black\036pixel) 89952 0.00 -1 s +4 sf +( and ) 95254 -92.50 32 s +2 sf +(screen\036white\036pixel) 117194 0.00 -1 s +4 sf +(. Applications that need only) 149352 -92.50 32 s +52832.0 121559.0 m +(two) 57064 0.00 -1 s +( colors and also need to operate on both monochrome and color screens should al\036) 149352 -24.93 32 s +52832.0 124720.0 m +(ways) 58631 0.00 -1 s +( use these pixel values. The names ) 97689 -86.00 32 s +5 sf +(black) 103801 0.00 -1 s +4 sf +( and ) 109116 -86.00 32 s +5 sf +(white) 115230 0.00 -1 s +4 sf +( are intended) 129633 -86.00 32 s +( to reflect relative) 149352 -86.67 32 s +52832.0 127881.0 m +(intensity) 62552 0.00 -1 s +( levels and need not reflect the actual colors displayed for these pixel values.) 148697 -28.85 32 s +52832.0 134157.0 m +(Each) 58473 0.00 -1 s +( screen has a default ) 80670 -278.00 32 s +2 sf +(colormap) 92112 0.00 -1 s +4 sf +(, which is initially installed. By conventions, clients) 149352 -242.88 32 s +52832.0 137318.0 m +(should) 60358 0.00 -1 s +( allocate) 69802 -37.00 32 s +( only read\036only cells from the default ) 112955 -32.88 32 s +2 sf +(colormap) 124397 0.00 -1 s +4 sf +(.) 125103 0.00 -1 s +52832.0 144249.0 m +0.0 0.0 m +newpath +149013 142690 av +52967 142692 as +[] 0 setdash +dp +149352.0 144249.0 m +20320.0 147072.0 m +38766.0 h +2 sf +(Creating) 49423 0.00 -1 s +52832.0 h +(9.3.1) 58477 0.00 -1 s +4 sf +() 58477 0.00 -1 s +60672.0 h +(CLX) 66315 0.00 -1 s +( provides functions for creating and freeing new ) 137910 2073.00 32 s +2 sf +(colormap) 149352 0.00 -1 s +4 sf +20320.0 150233.0 m +36102.0 h +2 sf +(Colormaps) 49426 0.00 -1 s +52832.0 h +4 sf +(objects.) 61532 0.00 -1 s +2 sf +34544.0 156509.0 m +(create\036colormap) 54287 0.00 -1 s +( ) 54932 -61.00 32 s +5 sf +(visual) 61673 0.00 -1 s +( window ) 71743 -61.50 32 s +4 sf +(&optional) 83187 0.00 -1 s +5 sf +( alloc\036p) 91824 -62.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 159670.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 162831.0 m +( colormap) 64986 -37.00 32 s +( ) 65654 -38.00 32 s +4 sf +(\037 Type ) 75612 -37.50 32 s +2 sf +(colormap) 87054 0.00 -1 s +4 sf +(.) 87760 0.00 -1 s +52832.0 167550.0 m +(Creates) 61294 0.00 -1 s +( and returns a ) 76453 -207.00 32 s +5 sf +(colormap) 87269 0.00 -1 s +4 sf +( of the specified ) 105249 -207.00 32 s +5 sf +(visual) 111990 0.00 -1 s +4 sf +( type for the screen containing the) 149352 -173.00 32 s +52832.0 170711.0 m +5 sf +(window) 61613 0.00 -1 s +4 sf +(.) 62319 0.00 -1 s +( The ) 68055 -32.00 32 s +5 sf +(visual) 74796 0.00 -1 s +4 sf +( type must be one of) 97602 -32.00 32 s +( those supported by the screen.) 132238 -32.60 32 s +52832.0 176987.0 m +(Initial) 59571 0.00 -1 s +( color cell values are undefined for visual types belonging to the ) 135483 154.31 32 s +2 sf +(:gray\036scale) 148646 0.00 -1 s +4 sf +(,) 149352 0.00 -1 s +52832.0 180148.0 m +2 sf +(:pseudo\036color) 69291 0.00 -1 s +4 sf +(,) 69997 0.00 -1 s +( and ) 75406 -39.00 32 s +2 sf +(:direct\036color) 90447 0.00 -1 s +4 sf +( classes. Color cell values for visual types belonging) 149352 -33.88 32 s +52832.0 183309.0 m +(to) 55027 0.00 -1 s +( the) 58999 -182.00 32 s +( ) 59522 -183.00 32 s +2 sf +(:static\036gray) 73310 0.00 -1 s +4 sf +(, ) 74540 -182.00 32 s +2 sf +(:static\036color) 88954 0.00 -1 s +4 sf +(, and ) 94964 -91.50 32 s +2 sf +(:true\036color) 107968 0.00 -1 s +4 sf +( classes have initial values defined by) 149352 -182.50 32 s +52832.0 186470.0 m +(the) 56280 0.00 -1 s +( visual type. However, X does not define) 102052 -55.71 32 s +( the set of possible visual types or their in\036) 149352 -65.56 32 s +52832.0 189631.0 m +(itial) 57221 0.00 -1 s +( color cell values.) 77058 -23.00 32 s +52832.0 195907.0 m +(If) 54710 0.00 -1 s +( ) 55271 -145.00 32 s +5 sf +(alloc\036p) 63264 0.00 -1 s +4 sf +( is true, all colormap) 85961 -145.00 32 s +( cells are permanently allocated read\036write and cannot be) 149352 -127.38 32 s +52832.0 199068.0 m +(freed) 58627 0.00 -1 s +( by ) 62535 -163.00 32 s +2 sf +(free\036colors) 75382 0.00 -1 s +4 sf +(. It is an error for ) 94385 -163.00 32 s +5 sf +(alloc\036p) 102378 0.00 -1 s +4 sf +( to be true when the visual type belongs to) 149352 -146.60 32 s +52832.0 202229.0 m +(the) 56280 0.00 -1 s +( ) 56951 -35.00 32 s +2 sf +(:static\036gray) 70739 0.00 -1 s +4 sf +(, ) 72116 -35.00 32 s +2 sf +(:static\036color) 86530 0.00 -1 s +4 sf +(, or ) 90964 -17.00 32 s +2 sf +(:true\036color ) 104639 -35.00 32 s +4 sf +(classes.) 113182 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 4 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Colors) 26480 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(9\036102) 26903 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10i 5 declareFont +5 sf +52832.0 22578.0 m +(visual ) 60261 -18.00 32 s +/timsps10 4 declareFont +4 sf +(\037 A ) 66496 -18.00 32 s +2 sf +(visual) 73553 0.00 -1 s +4 sf +( type ID.) 83470 -18.00 32 s +5 sf +52832.0 27364.0 m +(window) 61613 0.00 -1 s +4 sf +( \037 A ) 68480 -36.67 32 s +2 sf +(window) 77887 0.00 -1 s +4 sf +(.) 78593 0.00 -1 s +5 sf +52832.0 32151.0 m +(alloc\036p) 60825 0.00 -1 s +4 sf +( \037 Specifies whether ) 85732 -42.75 32 s +2 sf +(colormap) 97174 0.00 -1 s +4 sf +( cells are permanently allocated read\036write.) 145740 -34.00 32 s +2 sf +34544.0 36937.0 m +(copy\036colormap\036and\036free) 63694 0.00 -1 s +( ) 64210 -190.00 32 s +5 sf +(colormap) 75026 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 40098.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 43259.0 m +( new\036colormap ) 71126 -41.67 32 s +4 sf +(\037 Type ) 81076 -41.50 32 s +2 sf +(colormap) 92518 0.00 -1 s +4 sf +(.) 93224 0.00 -1 s +52832.0 47978.0 m +(Creates) 61294 0.00 -1 s +( and returns a new ) 82318 -74.00 32 s +2 sf +(colormap) 93760 0.00 -1 s +4 sf +( by copying,) 107644 -74.00 32 s +( then freeing, allocated cells from the) 149352 -62.17 32 s +52832.0 51139.0 m +(specified) 63018 0.00 -1 s +( ) 63639 -85.00 32 s +5 sf +(colormap) 74455 0.00 -1 s +4 sf +(.) 75161 0.00 -1 s +52832.0 56738.0 m +(All) 56437 0.00 -1 s +( color) 62724 -217.00 32 s +( cells allocated read\036only or read\036write in the original ) 121652 -217.56 32 s +2 sf +(colormap) 133094 0.00 -1 s +4 sf +( have the same) 149352 -145.00 32 s +52832.0 59899.0 m +(color) 58630 0.00 -1 s +( values and the same allocation status) 100432 -87.00 32 s +( in the ) 107930 -87.67 32 s +5 sf +(new\036colormap) 124231 0.00 -1 s +4 sf +(. The values of unallo\036) 149352 -87.50 32 s +52832.0 63060.0 m +(cated) 58786 0.00 -1 s +( color cells in the ) 78560 -73.80 32 s +5 sf +(new\036colormap) 94861 0.00 -1 s +4 sf +( are undefined. After copying, all allocated color) 149352 -63.00 32 s +52832.0 66221.0 m +(cells) 58004 0.00 -1 s +( in the original ) 75302 13.50 32 s +2 sf +(colormap) 86744 0.00 -1 s +4 sf +( are freed, as if) 103660 18.00 32 s +( ) 104383 17.00 32 s +2 sf +(free\036colors) 117230 0.00 -1 s +4 sf +( was called. The unallocated) 149352 17.50 32 s +52832.0 69382.0 m +(cells) 58004 0.00 -1 s +( of the original ) 75986 -24.60 32 s +2 sf +(colormap) 87428 0.00 -1 s +4 sf +( are not affected.) 106296 -30.67 32 s +52832.0 74981.0 m +(If) 54710 0.00 -1 s +5 sf +( alloc\036p) 63396 -13.00 32 s +4 sf +( was true when the original ) 94666 -13.00 32 s +2 sf +(colormap) 106108 0.00 -1 s +4 sf +( was created, then all color cells of) 145212 -11.14 32 s +( the) 149352 -14.00 32 s +52832.0 78142.0 m +5 sf +(new\036colormap) 69133 0.00 -1 s +4 sf +( are permanently allocated read\036write, and all the color cells of the origi\036) 149352 -182.54 32 s +52832.0 81303.0 m +(nal) 56280 0.00 -1 s +( ) 56942 -44.00 32 s +2 sf +(colormap) 68384 0.00 -1 s +4 sf +( are freed.) 79654 -44.00 32 s +5 sf +52832.0 86902.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +2 sf +34544.0 91688.0 m +(free\036colormap) 51623 0.00 -1 s +( ) 52199 -130.00 32 s +5 sf +(colormap) 63015 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 96407.0 m +(Destroys) 62863 0.00 -1 s +( the ) 67911 94.00 32 s +5 sf +(colormap) 78727 0.00 -1 s +4 sf +( and frees its server resource. If the ) 119832 94.00 32 s +5 sf +(colormap) 130648 0.00 -1 s +4 sf +( is installed, it is) 149352 70.00 32 s +52832.0 99568.0 m +(uninstalled.) 65922 0.00 -1 s +( For any window associated with the ) 106292 -245.57 32 s +5 sf +(colormap) 117108 0.00 -1 s +4 sf +(, the window is assigned a ) 146215 -204.67 32 s +2 sf +(nil) 149352 0.00 -1 s +4 sf +52832.0 102729.0 m +2 sf +(colormap) 64274 0.00 -1 s +4 sf +(,) 64980 0.00 -1 s +( and a ) 71928 -166.00 32 s +2 sf +(:colormap\036notify) 92301 0.00 -1 s +4 sf +( event is generated. The colors displayed for a win\036) 149352 -149.00 32 s +52832.0 105890.0 m +(dow) 57691 0.00 -1 s +( with a) 65284 -44.00 32 s +( ) 65945 -45.00 32 s +2 sf +(nil) 69082 0.00 -1 s +4 sf +( ) 69744 -44.00 32 s +2 sf +(colormap) 81186 0.00 -1 s +4 sf +( are undefined.) 97988 -22.50 32 s +52832.0 112166.0 m +(However,) 63879 0.00 -1 s +( this function) 78716 -28.00 32 s +( has no effect if the ) 100957 -28.50 32 s +5 sf +(colormap) 111773 0.00 -1 s +4 sf +( is a screen default ) 134043 -23.83 32 s +2 sf +(colormap) 145485 0.00 -1 s +4 sf +(.) 146191 0.00 -1 s +5 sf +52832.0 118443.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +52832.0 123884.0 m +0.0 0.0 m +newpath +149013 122325 av +52967 122327 as +[] 0 setdash +dp +149352.0 123884.0 m +20320.0 126706.0 m +37931.0 h +2 sf +(Installing) 49378 0.00 -1 s +52832.0 h +(9.3.2) 58477 0.00 -1 s +4 sf +() 58477 0.00 -1 s +60672.0 h +(The) 65060 0.00 -1 s +( following paragraphs describe the CLX functions to install and) 149352 1380.44 32 s +20320.0 129867.0 m +36102.0 h +2 sf +(Colormaps) 49426 0.00 -1 s +52832.0 h +4 sf +(uninstall) 62552 0.00 -1 s +( colormaps and) 79746 -24.00 32 s +( to return the set of installed colormaps.) 124404 -24.57 32 s +52832.0 136144.0 m +(Initially,) 62472 0.00 -1 s +( the default ) 75822 -17.00 32 s +2 sf +(colormap) 87264 0.00 -1 s +4 sf +( for a screen is installed \(but is not in the required list\).) 148900 -16.75 32 s +2 sf +34544.0 142421.0 m +(install\036colormap) 54294 0.00 -1 s +( ) 54908 -92.00 32 s +5 sf +(colormap) 65724 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 147139.0 m +(Installs) 60983 0.00 -1 s +( the ) 65599 -122.00 32 s +5 sf +(colormap.) 77121 0.00 -1 s +4 sf +( All windows associated with this ) 115110 -122.00 32 s +5 sf +(colormap) 125926 0.00 -1 s +4 sf +( immediately) 140617 -122.00 32 s +( display) 149352 -123.00 32 s +52832.0 150300.0 m +(with) 57848 0.00 -1 s +( true colors. As a side\036effect, additional colormaps might be implicitly uninstalled) 149352 -81.73 32 s +52832.0 153461.0 m +(by) 55654 0.00 -1 s +( the server.) 68067 -23.00 32 s +( ) 68749 -24.00 32 s +52832.0 159738.0 m +(If) 54710 0.00 -1 s +( the specified ) 69730 -244.00 32 s +5 sf +(colormap) 80546 0.00 -1 s +4 sf +( is not already installed, a ) 108631 -244.00 32 s +2 sf +(:colormap\036notify) 129004 0.00 -1 s +4 sf +( event is generated) 149352 -244.00 32 s +52832.0 162899.0 m +(on) 55654 0.00 -1 s +( every window associated with this ) 95609 -55.00 32 s +5 sf +(colormap) 106425 0.00 -1 s +4 sf +(. In addition, for every other) 138045 -55.00 32 s +( colormap) 149352 -56.00 32 s +52832.0 166060.0 m +(that) 57064 0.00 -1 s +( is implicitly uninstalled, a) 86107 -245.00 32 s +( ) 86567 -246.00 32 s +2 sf +(:colormap\036notify) 106940 0.00 -1 s +4 sf +( event is generated on every associated) 149352 -245.50 32 s +52832.0 169220.0 m +(window.) 62629 0.00 -1 s +5 sf +52832.0 175497.0 m +(colormap) 63648 0.00 -1 s +( ) 64308 -46.00 32 s +4 sf +(\037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +2 sf +34544.0 180284.0 m +(installed\036colormaps) 58214 0.00 -1 s +( ) 58891 -29.00 32 s +5 sf +(window) 67672 0.00 -1 s +4 sf +( &key \() 76234 -29.50 32 s +2 sf +(:result\036type) 90180 0.00 -1 s +4 sf +( ) 90856 -30.00 32 s +2 sf +('list) 95400 0.00 -1 s +4 sf +(\)) 96339 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 183444.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 186605.0 m +( colormap ) 65662 -34.67 32 s +4 sf +(\037 Type ) 75626 -34.50 32 s +2 sf +(sequence) 86443 0.00 -1 s +4 sf +( of ) 90136 -34.50 32 s +2 sf +(colormap) 101578 0.00 -1 s +4 sf +(. ) 102955 -35.00 32 s +52832.0 191324.0 m +(Returns) 61610 0.00 -1 s +( a sequence containing) 87309 24.00 32 s +( the installed ) 102507 23.33 32 s +2 sf +(colormaps) 115047 0.00 -1 s +4 sf +( for the screen of the specified) 149352 23.50 32 s +52832.0 194485.0 m +5 sf +(window) 61613 0.00 -1 s +4 sf +(.) 62319 0.00 -1 s +( The) 67386 -27.00 32 s +( order of the colormaps is not significant.) 113747 -27.57 32 s +5 sf +52832.0 200762.0 m +(window) 61613 0.00 -1 s +( ) 62282 -37.00 32 s +4 sf +(\037 A ) 68480 -36.50 32 s +2 sf +(window) 77887 0.00 -1 s +4 sf +(.) 78593 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 5 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118398.0 8195.0 m +( ) 121788 -1.00 32 s +( Colors) 139802 -1.52 32 s +/timsps10b 2 declareFont +2 sf +142430.0 208619.0 m +(9\036103) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +2 sf +52832.0 22578.0 m +(:result\036type) 66778 0.00 -1 s +( ) 67455 -29.00 32 s +/timsps10 4 declareFont +4 sf +(\037 A sub\036type of ) 87090 -29.00 32 s +2 sf +(sequence ) 98584 -29.00 32 s +4 sf +(that) 102816 0.00 -1 s +2 sf +( ) 103493 -29.00 32 s +4 sf +(indicates the type of sequence to) 140104 -29.00 32 s +( return.) 148223 -30.00 32 s +2 sf +34544.0 28854.0 m +(uninstall\036colormap) 57432 0.00 -1 s +( ) 58024 -114.00 32 s +/timsps10i 5 declareFont +5 sf +(colormap) 68840 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 33573.0 m +(Uninstalls) 64276 0.00 -1 s +( the ) 70020 442.00 32 s +5 sf +(colormap) 80836 0.00 -1 s +4 sf +(. However, the ) 99483 442.67 32 s +5 sf +(colormap) 110299 0.00 -1 s +4 sf +( is not actually uninstalled if this) 149352 368.67 32 s +52832.0 36734.0 m +(would) 59886 0.00 -1 s +( reduce the set of) 78811 -88.00 32 s +( installed colormaps below the value of ) 123962 -77.50 32 s +2 sf +(screen\036min\036installed\036) 149352 0.00 -1 s +52832.0 39895.0 m +(maps) 59260 0.00 -1 s +4 sf +(.) 59966 0.00 -1 s +( If the ) 66717 -231.00 32 s +5 sf +(colormap) 77533 0.00 -1 s +4 sf +( is actually uninstalled, a ) 105297 -184.80 32 s +2 sf +(:colormap\036notify) 125670 0.00 -1 s +4 sf +( event) 132257 -231.00 32 s +( is generated on) 149352 -231.67 32 s +52832.0 43056.0 m +(every) 59099 0.00 -1 s +( associated) 71339 -64.00 32 s +( window.) 81777 -65.00 32 s +5 sf +52832.0 49332.0 m +(colormap) 63648 0.00 -1 s +( ) 64308 -46.00 32 s +4 sf +(\037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +52832.0 54774.0 m +0.0 0.0 m +newpath +149013 53215 av +52967 53217 as +[] 0 setdash +dp +149352.0 54774.0 m +20320.0 57596.0 m +28358.0 h +2 sf +(Allocating) 40741 0.00 -1 s +( Colors) 49378 -63.00 32 s +52832.0 h +(9.3.3) 58477 0.00 -1 s +60827.0 h +() 60827 0.00 -1 s +4 sf +(The) 65215 0.00 -1 s +( following paragraphs describe the functions for allocating read\036only and) 149352 197.33 32 s +52832.0 60757.0 m +(read\036write) 64424 0.00 -1 s +( color cells, allocating color planes, and freeing color cells.) 130770 -29.67 32 s +2 sf +34544.0 67033.0 m +(alloc\036color) 47238 0.00 -1 s +( ) 47880 -64.00 32 s +5 sf +(colormap color) 65295 -64.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 70194.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 73355.0 m +( pixel) 59681 -24.00 32 s +4 sf +( \037 Type ) 70348 -24.00 32 s +2 sf +(pixel) 76149 0.00 -1 s +4 sf +(.) 76855 0.00 -1 s +52832.0 76516.0 m +( ) 54172 -36.00 32 s +5 sf +(screen\036color) 68434 0.00 -1 s +4 sf +(,) 69140 0.00 -1 s +5 sf +( exact\036color ) 83330 -36.00 32 s +4 sf +(\037 Type ) 93292 -35.50 32 s +2 sf +(color) 99404 0.00 -1 s +4 sf +(.) 100110 0.00 -1 s +52832.0 81235.0 m +(Returns) 61610 0.00 -1 s +( a ) 63929 -173.00 32 s +5 sf +(pixel) 69414 0.00 -1 s +4 sf +( for a read\036only color cell in the) 104014 -173.00 32 s +( ) 104546 -174.00 32 s +5 sf +(colormap) 115362 0.00 -1 s +4 sf +(. The color in the allocated cell) 149352 -173.50 32 s +52832.0 84396.0 m +(is) 54714 0.00 -1 s +( the closest approximation to the requested ) 102037 -237.43 32 s +5 sf +(color) 107994 0.00 -1 s +4 sf +( possible for the screen hardware. The) 149352 -277.00 32 s +52832.0 87557.0 m +(other values) 66546 0.00 32 s +( returned give both the approximate color stored in the cell and the exact) 149352 70.00 32 s +52832.0 90718.0 m +(color) 58630 0.00 -1 s +( requested.) 70781 -74.00 32 s +52832.0 96994.0 m +(The) 57220 0.00 -1 s +( requested ) 68881 -282.00 32 s +5 sf +(color) 74838 0.00 -1 s +4 sf +( can be either a ) 91216 -282.00 32 s +2 sf +(color) 97328 0.00 -1 s +4 sf +( object or a ) 109523 -282.00 32 s +2 sf +(stringable) 121594 0.00 -1 s +4 sf +( containing) 134213 0.00 32 s +( a color name.) 149352 -282.67 32 s +52832.0 100155.0 m +(If) 54710 0.00 -1 s +( a color name is given, a corresponding color value is looked up \(see ) 133049 14.29 32 s +2 sf +(lookup\036color) 148413 0.00 -1 s +4 sf +(\)) 149352 0.00 -1 s +52832.0 103316.0 m +(and) 56907 0.00 -1 s +( used.) 63339 -153.00 32 s +( Color name strings must contain only ISO Latin\0361 characters; case is not sig\036) 149352 -129.92 32 s +52832.0 106477.0 m +(nificant.) 62157 0.00 -1 s +5 sf +52832.0 112753.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 117540.0 m +(color) 58789 0.00 -1 s +4 sf +( \037 A) 64998 -31.00 32 s +( ) 65672 -32.00 32 s +2 sf +(color) 71784 0.00 -1 s +4 sf +( object or a ) 84981 -31.50 32 s +2 sf +(stringable) 97052 0.00 -1 s +4 sf +( containing a color name.) 125532 -31.50 32 s +2 sf +34544.0 122326.0 m +(alloc\036color\036cells) 53349 0.00 -1 s +( ) 54020 -35.00 32 s +5 sf +(colormap colors) 72563 -34.00 32 s +4 sf +( &key \() 81115 -34.50 32 s +2 sf +(:planes) 89738 0.00 -1 s +4 sf +( 0\) ) 93431 -34.50 32 s +2 sf +(:contiguous\036p) 109892 0.00 -1 s +4 sf +( ) 110563 -35.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 125487.0 m +(\() 53771 0.00 -1 s +2 sf +(:result\036type) 67717 0.00 -1 s +4 sf +( ) 68459 36.00 32 s +2 sf +('list) 73003 0.00 -1 s +4 sf +(\)) 73942 0.00 -1 s +2 sf +34544.0 128648.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 131809.0 m +( pixels, mask) 67957 -27.00 32 s +( ) 68635 -28.00 32 s +4 sf +(\037 Type ) 78613 -27.50 32 s +2 sf +(sequence) 89430 0.00 -1 s +4 sf +( of ) 93137 -27.50 32 s +2 sf +(pixels) 100036 0.00 -1 s +4 sf +(.) 100742 0.00 -1 s +52832.0 136528.0 m +(Returns) 61610 0.00 -1 s +( a ) 64162 -56.50 32 s +2 sf +(sequence) 74979 0.00 -1 s +4 sf +( of ) 78628 -56.50 32 s +5 sf +(pixels) 85211 0.00 -1 s +4 sf +( for read\036write color cells in the ) 121251 -56.57 32 s +5 sf +(colormap) 132067 0.00 -1 s +4 sf +(. The allocated) 149352 -37.67 32 s +52832.0 139689.0 m +(cells) 58004 0.00 -1 s +( contain undefined color) 86012 167.00 32 s +( values. The visual type class of the ) 128013 145.63 32 s +2 sf +(colormap) 139455 0.00 -1 s +4 sf +( must be) 149352 166.50 32 s +52832.0 142850.0 m +(either) 59256 0.00 -1 s +( ) 59889 -73.00 32 s +2 sf +(:gray\036scale) 73052 0.00 -1 s +4 sf +(, ) 74391 -73.00 32 s +2 sf +(:pseudo\036color) 90850 0.00 -1 s +4 sf +(, or ) 95245 -36.50 32 s +2 sf +(:direct\036color) 110286 0.00 -1 s +4 sf +(.) 110992 0.00 -1 s +52832.0 149126.0 m +(The) 57220 0.00 -1 s +( ) 57622 -304.00 32 s +5 sf +(colors) 64677 0.00 -1 s +4 sf +( argument and the ) 84465 -304.00 32 s +2 sf +(:planes) 93088 0.00 -1 s +4 sf +( argument) 104147 -304.00 32 s +( define the number of pixels and the num\036) 149352 -266.50 32 s +52832.0 152287.0 m +(ber) 56435 0.00 -1 s +( of masks returned, respectively. The number of colors must be positive, and the) 149352 178.15 32 s +52832.0 155448.0 m +(number) 61452 0.00 -1 s +( of planes must) 78108 -170.00 32 s +( be non\036negative. A total of \(* ) 111882 -146.14 32 s +5 sf +(colors) 118937 0.00 -1 s +4 sf +( \() 120411 -171.00 32 s +2 sf +(expt) 125583 0.00 -1 s +4 sf +( 2 ) 128065 -170.50 32 s +5 sf +(planes) 135433 0.00 -1 s +4 sf +(\)\) color cells) 149352 -170.50 32 s +52832.0 158609.0 m +(are) 56277 0.00 -1 s +( allocated. The pixel values for the allocated cells can be computed by combining the) 149352 -220.57 32 s +52832.0 161770.0 m +(returned pixels) 69680 0.00 32 s +( and) 74405 -56.00 32 s +( masks.) 82815 -57.00 32 s +52832.0 168046.0 m +(The) 57220 0.00 -1 s +( length of the returned masks sequence is equal to ) 115440 132.00 32 s +2 sf +(:planes) 124063 0.00 -1 s +4 sf +(. Each) 131248 132.00 32 s +( mask of the re\036) 149352 98.50 32 s +52832.0 171207.0 m +(turned) 60041 0.00 -1 s +( masks sequence defines a single bitplane. None of the masks have any 1 bits in) 149352 -85.88 32 s +52832.0 174368.0 m +(common.) 63414 0.00 -1 s +( Thus, by selectively combining masks with ) 114272 76.29 32 s +2 sf +(logior) 121326 0.00 -1 s +4 sf +(, \() 123767 90.00 32 s +2 sf +(expt) 128939 0.00 -1 s +4 sf +( 2 ) 131941 89.50 32 s +5 sf +(planes) 139309 0.00 -1 s +4 sf +(\) distinct) 149352 89.00 32 s +52832.0 177529.0 m +(combined) 63961 0.00 -1 s +( plane masks can be computed.) 99500 -46.67 32 s +52832.0 183806.0 m +(The) 57220 0.00 -1 s +( length of the returned ) 82913 -18.00 32 s +5 sf +(pixels) 89496 0.00 -1 s +4 sf +( sequence is equal to ) 113468 -18.00 32 s +5 sf +(colors) 120523 0.00 -1 s +4 sf +(. None of ) 131773 -12.00 32 s +( the pixels have) 149352 -18.67 32 s +52832.0 186967.0 m +(any) 56907 0.00 -1 s +( 1 bits in common with each other or with any of the returned masks. By combining) 149352 -134.94 32 s +52832.0 190127.0 m +(pixels) 59573 0.00 -1 s +( and plane masks with ) 84831 -106.00 32 s +2 sf +(logior) 91885 0.00 -1 s +4 sf +(, \(* ) 96247 -53.00 32 s +5 sf +(colors) 103302 0.00 -1 s +4 sf +( \() 104841 -106.00 32 s +2 sf +(expt) 110013 0.00 -1 s +4 sf +( 2 ) 112625 -105.50 32 s +5 sf +(planes) 119993 0.00 -1 s +4 sf +(\)\) distinct pixel values can) 149352 -105.50 32 s +52832.0 193288.0 m +(be) 55496 0.00 -1 s +( produced.) 67304 -104.00 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 6 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Colors) 26480 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(9\036104) 26903 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(If the ) 59278 -146.00 32 s +/timsps10i 5 declareFont +5 sf +(colormap) 70094 0.00 -1 s +4 sf +( class is ) 79142 -146.00 32 s +2 sf +(:gray\036scale) 92305 0.00 -1 s +4 sf +( or ) 95774 -146.50 32 s +2 sf +(:pseudo\036color) 112233 0.00 -1 s +4 sf +(, each ) 119228 -146.50 32 s +5 sf +(mask) 125027 0.00 -1 s +4 sf +( will have exactly one) 149352 -110.00 32 s +52832.0 25739.0 m +(bit) 55811 0.00 -1 s +( set. If the ) 66898 -226.00 32 s +2 sf +(colormap) 78340 0.00 -1 s +4 sf +( class is ) 87148 -226.00 32 s +2 sf +(:direct\036color) 102189 0.00 -1 s +4 sf +(, each ) 109251 -113.00 32 s +5 sf +(mask) 115050 0.00 -1 s +4 sf +( will have exactly) 134356 -226.00 32 s +( three bits set.) 149352 -226.67 32 s +52832.0 28900.0 m +(If) 54710 0.00 -1 s +( ) 55369 -47.00 32 s +2 sf +(:contiguous\036p) 71830 0.00 -1 s +4 sf +( is true, combining all masks with ) 110429 -40.14 32 s +2 sf +(logior) 117483 0.00 -1 s +4 sf +( produces a plane mask with) 149352 -37.20 32 s +52832.0 32060.0 m +(either) 59256 0.00 -1 s +( one set of) 71300 122.00 32 s +( contiguous bits \(for ) 95300 121.50 32 s +2 sf +(:gray\036scale) 108463 0.00 -1 s +4 sf +( and ) 114071 60.50 32 s +2 sf +(:pseudo\036color) 130530 0.00 -1 s +4 sf +(\) or three sets of) 149352 121.50 32 s +52832.0 35221.0 m +(contiguous) 65217 0.00 -1 s +( bits \(for ) 75544 -32.00 32 s +2 sf +(:direct\036color) 90585 0.00 -1 s +4 sf +(\).) 92230 0.00 -1 s +5 sf +52832.0 41498.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 46284.0 m +(colors) 59887 0.00 -1 s +4 sf +( \037 A) 66092 -33.00 32 s +( positive number defining the length of the pixels sequence returned.) 143301 -30.20 32 s +2 sf +52832.0 51071.0 m +(:planes) 61455 0.00 -1 s +4 sf +( \037 A non\036negative number) 91766 -181.00 32 s +( defining the length of the masks sequence returned.) 149352 -158.88 32 s +2 sf +52832.0 55857.0 m +(:contiguous\036p) 69293 0.00 -1 s +4 sf +( \037 If true, the masks form contiguous sets of) 120242 -17.00 32 s +( bits.) 125713 -18.00 32 s +2 sf +52832.0 60644.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 A) 72979 -35.00 32 s +( subtype of ) 86119 -35.67 32 s +2 sf +(sequence) 96936 0.00 -1 s +4 sf +( that indicates the type of sequences returned.) 148133 -30.43 32 s +2 sf +34544.0 65430.0 m +(alloc\036color\036planes) 55861 0.00 -1 s +( ) 56540 -27.00 32 s +5 sf +(colormap colors ) 75769 -27.00 32 s +4 sf +(&key \() 83657 -27.00 32 s +2 sf +(:reds) 89769 0.00 -1 s +4 sf +( 0\) \() 94416 -27.00 32 s +2 sf +(:greens) 103192 0.00 -1 s +4 sf +( 0\) \() 107839 -27.00 32 s +2 sf +(:blues) 115051 0.00 -1 s +4 sf +( 0\) ) 118759 -27.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 68591.0 m +2 sf +(:contiguous\036p) 69293 0.00 -1 s +4 sf +( \(:) 71712 -10.00 32 s +2 sf +(result\036type) 84719 0.00 -1 s +4 sf +( ) 85415 -10.00 32 s +2 sf +('list) 89959 0.00 -1 s +4 sf +(\)) 90898 0.00 -1 s +2 sf +34544.0 71752.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +52832.0 74913.0 m +( ) 54194 -25.00 32 s +5 sf +(pixels ) 61458 -25.00 32 s +4 sf +(\037 Type ) 71441 -25.00 32 s +2 sf +(sequence) 82258 0.00 -1 s +4 sf +( of ) 85969 -25.50 32 s +2 sf +(pixel) 91770 0.00 -1 s +4 sf +(. ) 93156 -26.00 32 s +52832.0 78074.0 m +( ) 54178 -33.00 32 s +5 sf +(red\036mask) 64678 0.00 -1 s +4 sf +(, ) 66057 -33.00 32 s +5 sf +(green\036mask) 79221 0.00 -1 s +4 sf +(, ) 80600 -33.00 32 s +5 sf +(blue\036mask ) 92870 -33.00 32 s +4 sf +(\037 Type ) 102837 -33.00 32 s +2 sf +(pixel) 108638 0.00 -1 s +4 sf +(.) 109344 0.00 -1 s +52832.0 82793.0 m +(Returns) 61610 0.00 -1 s +( a ) 64162 -56.50 32 s +2 sf +(sequence) 74979 0.00 -1 s +4 sf +( of ) 78628 -56.50 32 s +5 sf +(pixels) 85211 0.00 -1 s +4 sf +( for read\036write color cells in the ) 121251 -56.57 32 s +5 sf +(colormap) 132067 0.00 -1 s +4 sf +(. The allocated) 149352 -37.67 32 s +52832.0 85954.0 m +(cells) 58004 0.00 -1 s +( contain undefined color values. The visual type class) 119964 191.63 32 s +( of the ) 128535 218.33 32 s +5 sf +(colormap) 139351 0.00 -1 s +4 sf +( must be) 149352 218.50 32 s +52832.0 89114.0 m +(either) 59256 0.00 -1 s +( ) 59889 -73.00 32 s +2 sf +(:gray\036scale) 73052 0.00 -1 s +4 sf +(, ) 74391 -73.00 32 s +2 sf +(:pseudo\036color) 90850 0.00 -1 s +4 sf +(, or ) 95245 -36.50 32 s +2 sf +(:direct\036color) 110286 0.00 -1 s +4 sf +(.) 110992 0.00 -1 s +52832.0 95391.0 m +(The) 57220 0.00 -1 s +( ) 58087 161.00 32 s +5 sf +(colors) 65142 0.00 -1 s +4 sf +( argument defines the number of pixels returned. The ) 127405 161.00 32 s +2 sf +(:reds) 133517 0.00 -1 s +4 sf +(, ) 134929 0.00 32 s +2 sf +(:greens) 143705 0.00 -1 s +4 sf +(,) 144411 0.00 -1 s +( and) 149352 160.00 32 s +52832.0 98552.0 m +2 sf +(:blues) 60044 0.00 -1 s +4 sf +( arguments define the number of bits set in) 110619 287.00 32 s +( the returned red, green, and blue) 149352 238.67 32 s +52832.0 101713.0 m +(masks,) 60593 0.00 -1 s +( respectively. The number of colors must be positive, and the number of bits for) 149352 -98.00 32 s +52832.0 104874.0 m +(each) 58002 0.00 -1 s +( mask must be non\036negative. A total of \(* ) 112224 729.78 32 s +5 sf +(colors) 119279 0.00 -1 s +4 sf +( \() 121745 821.00 32 s +2 sf +(expt) 126917 0.00 -1 s +4 sf +( 2 \(+ ) 135441 821.33 32 s +5 sf +(reds greens) 149352 821.00 32 s +52832.0 108035.0 m +(blues) 58789 0.00 -1 s +4 sf +(\)\)\) color) 68110 0.00 32 s +( cells are allocated. The pixel values for the allocated cells can be com\036) 149352 64.62 32 s +52832.0 111196.0 m +(puted) 59102 0.00 -1 s +( by combining the returned ) 90179 -39.00 32 s +5 sf +(pixels) 96762 0.00 -1 s +4 sf +( and) 101504 -39.00 32 s +( masks.) 109931 -40.00 32 s +52832.0 117472.0 m +(Each) 58473 0.00 -1 s +( mask of the returned) 81481 -243.00 32 s +( masks defines a pixel subfield for the corresponding primary.) 149352 -243.56 32 s +52832.0 120633.0 m +(None) 58944 0.00 -1 s +( of the masks have any 1 bits in common. By selectively combining subsets of the) 149352 -139.07 32 s +52832.0 123794.0 m +(red,) 57141 0.00 -1 s +( green, and blue masks with ) 120285 5155.00 32 s +2 sf +(logior) 127339 0.00 -1 s +4 sf +(, \() 135877 6187.00 32 s +2 sf +(expt) 141049 0.00 -1 s +4 sf +( 2) 149352 6186.00 32 s +52832.0 126955.0 m +(\(+) 55363 0.00 -1 s +( ) 56033 -36.00 32 s +5 sf +(reds greens) 69087 -36.00 32 s +( blues) 75713 -37.00 32 s +4 sf +(\) distinct combined plane masks can be computed.) 132396 -31.29 32 s +52832.0 133231.0 m +(The) 57220 0.00 -1 s +( length of the returned ) 82988 -3.00 32 s +5 sf +(pixels) 89571 0.00 -1 s +2 sf +( sequence) 101091 -3.00 32 s +4 sf +( is equal to ) 114092 -3.00 32 s +5 sf +(colors) 121147 0.00 -1 s +4 sf +(. None of the pixels have) 149352 -2.00 32 s +52832.0 136392.0 m +(any) 56907 0.00 -1 s +( 1 bits in common with each other or with any of the returned masks. By combining) 149352 -134.94 32 s +52832.0 139553.0 m +(pixels) 59573 0.00 -1 s +( and plane masks with ) 84161 -240.00 32 s +2 sf +(logior) 91215 0.00 -1 s +4 sf +(, \(* ) 95443 -120.00 32 s +5 sf +(colors) 102498 0.00 -1 s +4 sf +( \() 103903 -240.00 32 s +2 sf +(expt) 109075 0.00 -1 s +4 sf +( 2 \(+ ) 114415 -240.00 32 s +5 sf +(reds greens blues) 133688 -240.00 32 s +4 sf +(\)\) distinct pix\036) 149352 -240.00 32 s +52832.0 142714.0 m +(el) 54869 0.00 -1 s +( values can be produced.) 82499 -47.75 32 s +52832.0 148991.0 m +(If) 54710 0.00 -1 s +( ) 55385 -31.00 32 s +2 sf +(:contiguous\036p) 71846 0.00 -1 s +4 sf +( is true, each of returned masks consists of a set of contiguous bits. If) 149352 -28.57 32 s +52832.0 152152.0 m +(the) 56280 0.00 -1 s +( ) 57004 18.00 32 s +2 sf +(colormap) 68446 0.00 -1 s +4 sf +( class is ) 77988 18.67 32 s +2 sf +(:direct\036color) 93029 0.00 -1 s +4 sf +(, each returned mask lies within the pixel subfield) 149352 16.13 32 s +52832.0 155313.0 m +(for) 56121 0.00 -1 s +( its primary.) 69833 -2.00 32 s +5 sf +52832.0 161589.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 166376.0 m +(colors) 59887 0.00 -1 s +( ) 60560 -33.00 32 s +4 sf +(\037 A) 66092 -33.00 32 s +( positive number defining the length of the pixels sequence returned.) 143301 -30.20 32 s +2 sf +52832.0 171162.0 m +(:planes) 61455 0.00 -1 s +4 sf +( \037 A non\036negative number defining the length of the masks sequence) 138765 -206.25 32 s +( returned.) 149352 -226.00 32 s +2 sf +52832.0 175949.0 m +(:contiguous\036p) 69293 0.00 -1 s +4 sf +( \037 If true, then the masks form contiguous sets of bits.) 131245 -18.55 32 s +2 sf +52832.0 180735.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 A subtype of ) 85801 -99.00 32 s +2 sf +(sequence) 96618 0.00 -1 s +4 sf +( that indicates the type of ) 125279 -82.50 32 s +( sequences returned. ) 148746 -66.33 32 s +5 sf +( ) 149352 -100.00 32 s +2 sf +34544.0 185522.0 m +(free\036colors) 47391 0.00 -1 s +( ) 48053 -44.00 32 s +5 sf +(colormap pixels ) 66777 -43.50 32 s +4 sf +(&optional \() 79823 -43.00 32 s +5 sf +(plane\036mask) 92831 0.00 -1 s +4 sf +( 0\)) 95843 -44.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 190240.0 m +(Frees) 58944 0.00 -1 s +( a set of allocated color cells from the ) 99614 -278.89 32 s +5 sf +(colormap) 110430 0.00 -1 s +4 sf +(. The pixel values for the freed cells) 149352 -238.71 32 s +52832.0 193401.0 m +(are) 56277 0.00 -1 s +( computed by) 71078 -281.00 32 s +( combining the given ) 94565 -281.50 32 s +5 sf +(pixels) 101148 0.00 -1 s +4 sf +( sequence and ) 117121 -187.67 32 s +2 sf +(:plane\036mask) 132013 0.00 -1 s +4 sf +(. The total num\036) 149352 -281.67 32 s +52832.0 196562.0 m +(ber) 56435 0.00 -1 s +( of cells) 65353 -8.00 32 s +( freed is: ) 75906 -8.67 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 7 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118398.0 8195.0 m +( ) 121788 -1.00 32 s +( Colors) 139802 -1.52 32 s +/timsps10b 2 declareFont +2 sf +142430.0 208619.0 m +(9\036105) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(\(*) 55182 0.00 -1 s +( \() 56801 -26.00 32 s +2 sf +(length) 64326 0.00 -1 s +/timsps10i 5 declareFont +5 sf +( pixels) 72295 -13.00 32 s +4 sf +(\) \() 74853 -26.00 32 s +2 sf +(expt) 80025 0.00 -1 s +4 sf +( 2 \() 83735 -26.00 32 s +2 sf +(logcount) 94082 0.00 -1 s +4 sf +( ) 94761 -27.00 32 s +5 sf +(plane\036mask) 107769 0.00 -1 s +4 sf +(\)\)\)) 110586 0.00 -1 s +52832.0 28854.0 m +(The) 57220 0.00 -1 s +( ) 57867 -59.00 32 s +2 sf +(:plane\036mask) 72759 0.00 -1 s +4 sf +( must not have any) 93844 -59.00 32 s +( bits in common with any of the given ) 137029 -52.89 32 s +5 sf +(pixels) 143612 0.00 -1 s +4 sf +(. The) 149352 -60.00 32 s +52832.0 32015.0 m +(pixel) 58475 0.00 -1 s +( values for the freed cells are produced by using ) 110678 -265.30 32 s +2 sf +(logior) 117732 0.00 -1 s +4 sf +( to combine each of the given) 149352 -294.50 32 s +52832.0 35176.0 m +(pixels) 59573 0.00 -1 s +( with all subsets of the ) 85483 -19.00 32 s +2 sf +(:plane\036mask) 100375 0.00 -1 s +4 sf +(.) 101081 0.00 -1 s +52832.0 41453.0 m +(Note) 58317 0.00 -1 s +( that freeing an individual pixel allocated by ) 106986 -245.00 32 s +2 sf +(alloc\036color\036planes) 128303 0.00 -1 s +4 sf +( may not allow it to) 149352 -195.60 32 s +52832.0 44614.0 m +(be) 55496 0.00 -1 s +( reused until all related pixels computed from the same plane mask are also freed.) 147207 -26.57 32 s +52832.0 50890.0 m +(A) 54869 0.00 -1 s +( single error is generated if any computed pixel is invalid or if its color cell is not) 143644 -158.12 32 s +( allo\036) 149352 -169.00 32 s +52832.0 54051.0 m +(cated) 58786 0.00 -1 s +( by the client. Even if an error is generated, all valid pixel values are) 135536 -26.00 32 s +( freed.) 142714 -29.00 32 s +5 sf +52832.0 60328.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 65114.0 m +(pixels) 59415 0.00 -1 s +4 sf +( \037 A ) 66300 -30.67 32 s +2 sf +(sequence) 77117 0.00 -1 s +4 sf +( of pixel values.) 95052 -30.67 32 s +5 sf +52832.0 69901.0 m +(plane\036mask) 65840 0.00 -1 s +4 sf +( \037 A pixel value with no bits in common with any of the ) 130864 -24.93 32 s +5 sf +(pixels) 137447 0.00 -1 s +4 sf +(.) 138153 0.00 -1 s +52832.0 75342.0 m +0.0 0.0 m +newpath +149013 73783 av +52967 73785 as +[] 0 setdash +dp +149352.0 75342.0 m +20320.0 78164.0 m +31338.0 h +2 sf +(Finding) 40748 0.00 -1 s +( Colors) 49378 -70.00 32 s +52832.0 h +(9.3.4) 58477 0.00 -1 s +60827.0 h +() 60827 0.00 -1 s +4 sf +(A) 62864 0.00 -1 s +( CLX program can ask the X server to return the colors) 122250 -265.00 32 s +( stored in allocated color) 149352 -199.25 32 s +52832.0 81325.0 m +(cells.) 58710 0.00 -1 s +( The) 63802 -2.00 32 s +( server also maintains a dictionary of color names and their associated color) 149352 -2.33 32 s +52832.0 84486.0 m +(values.) 60748 0.00 -1 s +( CLX) 67184 87.00 32 s +( provides a function to look up the values for common colors by names) 149352 80.29 32 s +52832.0 87647.0 m +(such) 58005 0.00 -1 s +( as \177red", \177purple", and so forth. The following paragraphs describe the CLX) 142892 -181.50 32 s +( func\036) 149352 -199.00 32 s +52832.0 90808.0 m +(tions) 58320 0.00 -1 s +( for returning the color values associated with color cells or with color names.) 145965 -21.92 32 s +2 sf +34544.0 97084.0 m +(lookup\036color) 49908 0.00 -1 s +( ) 50526 -88.00 32 s +5 sf +(colormap name) 68072 -88.00 32 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 100245.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 103406.0 m +( screen\036color) 68434 -36.00 32 s +4 sf +(,) 69140 0.00 -1 s +5 sf +( exact\036color ) 83330 -36.00 32 s +4 sf +(\037 Type ) 93292 -35.50 32 s +2 sf +(color) 99404 0.00 -1 s +4 sf +(.) 100110 0.00 -1 s +52832.0 108125.0 m +(Returns) 61610 0.00 -1 s +( the color associated by the X server with the given color ) 124309 -195.75 32 s +5 sf +(name) 130421 0.00 -1 s +4 sf +(. The ) 137242 -130.33 32 s +5 sf +(name) 143354 0.00 -1 s +4 sf +( must) 149352 -196.00 32 s +52832.0 111286.0 m +(contain) 61139 0.00 -1 s +( only ISO Latin\0361 characters; case is not significant. The first value returned is) 149352 -26.38 32 s +52832.0 114447.0 m +(the) 56280 0.00 -1 s +( closest approximation to the requested color possible on the screen hardware. The) 149352 -9.17 32 s +52832.0 117608.0 m +(second) 60669 0.00 -1 s +( value returned is the true color value for the requested color.) 129303 -29.64 32 s +5 sf +52832.0 123884.0 m +(colormap) 63648 0.00 -1 s +( ) 64308 -46.00 32 s +4 sf +(\037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 128671.0 m +(name) 58944 0.00 -1 s +( ) 59615 -35.00 32 s +4 sf +(\037 A ) 65816 -35.00 32 s +2 sf +(stringable) 77887 0.00 -1 s +4 sf +( color name.) 91846 -34.50 32 s +2 sf +34544.0 133457.0 m +(query\036colors) 49748 0.00 -1 s +( ) 50421 -33.00 32 s +5 sf +(colormap pixels) 68494 -32.00 32 s +4 sf +( &key \() 77050 -32.50 32 s +2 sf +(:result\036type) 90996 0.00 -1 s +4 sf +( ) 91669 -33.00 32 s +2 sf +('list) 96213 0.00 -1 s +4 sf +(\)) 97152 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 136618.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 139779.0 m +( colors ) 61924 -27.00 32 s +4 sf +(\037 Type ) 71903 -27.00 32 s +2 sf +(sequence) 82720 0.00 -1 s +4 sf +( of ) 86428 -27.00 32 s +2 sf +(color) 92540 0.00 -1 s +4 sf +(.) 93246 0.00 -1 s +( ) 93924 -28.00 32 s +52832.0 144498.0 m +(Returns) 61610 0.00 -1 s +( a ) 63932 -171.50 32 s +2 sf +(sequence) 74749 0.00 -1 s +4 sf +( of the colors contained in the allocated cells of the ) 131264 -155.91 32 s +5 sf +(colormap) 142080 0.00 -1 s +4 sf +( speci\036) 149352 -172.00 32 s +52832.0 147659.0 m +(fied) 57219 0.00 -1 s +( by the given ) 72431 -38.00 32 s +5 sf +(pixels) 79014 0.00 -1 s +4 sf +(. The values returned for unallocated cells are undefined.) 143008 -32.88 32 s +5 sf +52832.0 153935.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 158722.0 m +(pixels) 59415 0.00 -1 s +4 sf +( \037 A ) 66300 -30.67 32 s +2 sf +(sequence) 77117 0.00 -1 s +4 sf +( of ) 80818 -30.50 32 s +2 sf +(pixel) 86619 0.00 -1 s +4 sf +( values.) 95210 -31.00 32 s +2 sf +52832.0 163508.0 m +(:result\036type) 66778 0.00 -1 s +4 sf +( \037 A subtype of ) 86131 -33.00 32 s +2 sf +(sequence) 96948 0.00 -1 s +4 sf +( that indicates the type of sequences returned.) 148833 -28.88 32 s +52832.0 168950.0 m +0.0 0.0 m +newpath +149013 167391 av +52967 167393 as +[] 0 setdash +dp +149352.0 168950.0 m +20320.0 171772.0 m +29012.0 h +2 sf +(Changing) 40773 0.00 -1 s +( Colors) 49378 -95.00 32 s +52832.0 h +(9.3.5) 58477 0.00 -1 s +60827.0 h +() 60827 0.00 -1 s +4 sf +(The) 65215 0.00 -1 s +( following paragraphs describe the CLX functions to change the colors) 145692 54.00 32 s +( in ) 149352 26.50 32 s +52832.0 174933.0 m +(colormap) 63489 0.00 -1 s +( cells.) 70014 -59.00 32 s +2 sf +34544.0 181209.0 m +(store\036color) 47549 0.00 -1 s +( ) 48231 -24.00 32 s +5 sf +(colormap pixel color) 71853 -24.00 32 s +4 sf +( &key \() 80426 -24.00 32 s +2 sf +(:red\036p) 87948 0.00 -1 s +4 sf +( ) 88629 -25.00 32 s +2 sf +(t) 89568 0.00 -1 s +4 sf +(\) \() 92128 -24.00 32 s +2 sf +(:green\036p) 102314 0.00 -1 s +4 sf +( ) 102995 -25.00 32 s +2 sf +(t) 103934 0.00 -1 s +4 sf +(\) \() 106494 -24.00 32 s +2 sf +(:blue\036p) 115116 0.00 -1 s +4 sf +( ) 115797 -25.00 32 s +2 sf +(t) 116736 0.00 -1 s +4 sf +(\)) 117675 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 185928.0 m +(Changes) 62551 0.00 -1 s +( the contents of the ) 85742 202.00 32 s +5 sf +(colormap) 96558 0.00 -1 s +4 sf +( cell) 101540 202.00 32 s +( indexed by the ) 120374 201.50 32 s +5 sf +(pixel) 125859 0.00 -1 s +4 sf +(. Components of the) 149352 201.33 32 s +52832.0 189089.0 m +(given) 59102 0.00 -1 s +( ) 59612 -196.00 32 s +5 sf +(color) 65569 0.00 -1 s +4 sf +( are stored in the cell. The ) 94295 -195.43 32 s +2 sf +(:red\036p) 101817 0.00 -1 s +4 sf +(, ) 103033 -196.00 32 s +2 sf +(:green\036p) 113219 0.00 -1 s +4 sf +(, and ) 119021 -195.50 32 s +2 sf +(:blue\036p) 127643 0.00 -1 s +4 sf +( arguments indicate) 149352 -195.50 32 s +52832.0 192250.0 m +(which) 59728 0.00 -1 s +( components of the) 81159 -41.00 32 s +( given ) 88799 -21.00 32 s +5 sf +(color) 94756 0.00 -1 s +4 sf +( are stored.) 107132 -41.50 32 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 8 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Colors) 26480 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(9\036106) 26903 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 22578.0 m +(The ) 57709 -217.00 32 s +/timsps10i 5 declareFont +5 sf +(color) 63666 0.00 -1 s +4 sf +( can be either a) 79880 -217.00 32 s +( ) 80368 -218.00 32 s +2 sf +(color) 86480 0.00 -1 s +4 sf +( object or a ) 98933 -217.50 32 s +2 sf +(stringable) 111004 0.00 -1 s +4 sf +( containing a color name. If a color) 149352 -186.43 32 s +52832.0 25739.0 m +(name) 58944 0.00 -1 s +( is given, a corresponding color value is looked up \(see ) 121702 -9.09 32 s +2 sf +(lookup\036color) 137066 0.00 -1 s +4 sf +(\) and used.) 149352 -9.50 32 s +52832.0 28900.0 m +(Color) 59259 0.00 -1 s +( name strings must contain only ISO Latin\0361 characters; case) 128480 -21.60 32 s +( is not significant.) 148630 -24.67 32 s +5 sf +52832.0 35176.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 39963.0 m +(pixel) 58317 0.00 -1 s +4 sf +( \037 A ) 65223 -23.67 32 s +2 sf +(pixel) 71024 0.00 -1 s +4 sf +(.) 71730 0.00 -1 s +5 sf +52832.0 44749.0 m +(color) 58789 0.00 -1 s +4 sf +( \037 A color ) 72162 -27.00 32 s +2 sf +(object) 79526 0.00 -1 s +4 sf +( or a ) 85166 -27.00 32 s +2 sf +(stringable) 97237 0.00 -1 s +4 sf +( containing a color name.) 125735 -27.00 32 s +( ) 126413 -28.00 32 s +2 sf +52832.0 49536.0 m +(:red\036p) 60354 0.00 -1 s +4 sf +(,) 61060 0.00 -1 s +( ) 62040 274.00 32 s +2 sf +(:green\036p) 72226 0.00 -1 s +4 sf +(, ) 73912 274.00 32 s +2 sf +(:blue\036p) 82534 0.00 -1 s +4 sf +( \037 ) 87042 137.00 32 s +2 sf +(boolean) 96450 0.00 -1 s +4 sf +( values indicating which color components) 146178 274.00 32 s +( to) 149352 273.00 32 s +57912.0 52697.0 m +(store.) 64103 0.00 -1 s +2 sf +34544.0 57483.0 m +(store\036colors) 48647 0.00 -1 s +( ) 49330 -23.00 32 s +5 sf +(colormap pixel\036colors) 74308 -23.00 32 s +( ) 74990 -24.00 32 s +4 sf +(&key \() 82882 -23.00 32 s +2 sf +(:red\036p) 90404 0.00 -1 s +4 sf +( ) 91086 -24.00 32 s +2 sf +(t) 92025 0.00 -1 s +4 sf +(\) \() 94586 -23.00 32 s +2 sf +(:green\036p) 104772 0.00 -1 s +4 sf +( ) 105454 -24.00 32 s +2 sf +(t) 106393 0.00 -1 s +4 sf +(\) \() 108954 -23.00 32 s +2 sf +(:blue\036p) 117576 0.00 -1 s +4 sf +( ) 118258 -24.00 32 s +2 sf +(t) 119197 0.00 -1 s +4 sf +(\)) 120136 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 62202.0 m +(Changes) 62551 0.00 -1 s +( the contents of multiple ) 89575 -223.00 32 s +5 sf +(colormap) 100391 0.00 -1 s +4 sf +( cells. ) 107235 -223.00 32 s +5 sf +(pixel\036colors) 120714 0.00 -1 s +4 sf +( is a list of the form \({) 144965 -194.75 32 s +5 sf +(pix\036) 149352 0.00 -1 s +52832.0 65363.0 m +(el) 54869 0.00 -1 s +( color) 61450 -82.00 32 s +4 sf +(}*\), indicating) 77771 -82.00 32 s +( a set of pixel values and the colors to store in the corresponding) 149352 -82.54 32 s +52832.0 68524.0 m +(cells.) 58710 0.00 -1 s +( The ) 64440 -35.00 32 s +2 sf +(:red\036p) 71962 0.00 -1 s +4 sf +(, ) 73339 -35.00 32 s +2 sf +(:green\036p) 83525 0.00 -1 s +4 sf +(, and ) 89683 -17.50 32 s +2 sf +(:blue\036p) 98305 0.00 -1 s +4 sf +( arguments indicate which components of the) 149352 -34.83 32 s +52832.0 71684.0 m +(given) 59102 0.00 -1 s +( colors are stored.) 79067 -32.00 32 s +52832.0 77961.0 m +(Each) 58473 0.00 -1 s +( color can be either a ) 81049 -286.00 32 s +2 sf +(color) 87161 0.00 -1 s +4 sf +( object or a ) 99341 -285.75 32 s +2 sf +(stringable) 111412 0.00 -1 s +4 sf +( containing a color name. If a color) 149352 -244.71 32 s +52832.0 81122.0 m +(name) 58944 0.00 -1 s +( is given, a corresponding color value is looked up \(see ) 121702 -9.09 32 s +2 sf +(lookup\036color) 137066 0.00 -1 s +4 sf +(\) and used.) 149352 -9.50 32 s +52832.0 84283.0 m +(Color) 59259 0.00 -1 s +( name strings must contain only ISO Latin\0361 characters; case is not significant.) 147930 -23.67 32 s +5 sf +52832.0 90559.0 m +(colormap) 63648 0.00 -1 s +4 sf +( \037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +5 sf +52832.0 95346.0 m +(pixel\036colors) 66311 0.00 -1 s +( ) 67004 -13.00 32 s +4 sf +(\037 A list of the form \({) 93047 -13.00 32 s +5 sf +(pixel color) 105182 -13.00 32 s +4 sf +(}*\).) 109593 0.00 -1 s +2 sf +52832.0 100132.0 m +(:red\036p) 60354 0.00 -1 s +4 sf +(,) 61060 0.00 -1 s +( ) 62040 274.00 32 s +2 sf +(:green\036p) 72226 0.00 -1 s +4 sf +(, ) 73912 274.00 32 s +2 sf +(:blue\036p) 82534 0.00 -1 s +4 sf +( \037 ) 87042 137.00 32 s +2 sf +(boolean) 96450 0.00 -1 s +4 sf +( values indicating which color components) 146178 274.00 32 s +( to) 149352 273.00 32 s +57912.0 103293.0 m +(store.) 64103 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 9 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +118398.0 8195.0 m +( ) 121788 -1.00 32 s +( Colors) 139802 -1.52 32 s +/timsps10b 2 declareFont +2 sf +142430.0 208619.0 m +(9\036107) 149013 0.00 -1 s +1 sf +20455.0 h +(CLX Programmer's Reference) 48096 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20320 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps10 4 declareFont +4 sf +52832.0 23233.0 m +0.0 0.0 m +newpath +149013 21674 av +52967 21676 as +[] 0 setdash +dp +149352.0 23233.0 m +20320.0 26055.0 m +37208.0 h +2 sf +(Colormap) 49434 0.00 -1 s +52832.0 h +(9.3.6) 58477 0.00 -1 s +60827.0 h +() 60827 0.00 -1 s +4 sf +(The) 65215 0.00 -1 s +( complete set of) 86396 1078.00 32 s +( colormap attributes is discussed in the following) 149352 1077.43 32 s +20320.0 29216.0 m +37005.0 h +2 sf +(Attributes) 49385 0.00 -1 s +52832.0 h +4 sf +(paragraphs.) 65917 0.00 -1 s +2 sf +34544.0 35492.0 m +(colormap\036display) 55551 0.00 -1 s +4 sf +( ) 56127 -130.00 32 s +/timsps10i 5 declareFont +5 sf +(colormap) 66943 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 38653.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 41814.0 m +( display ) 63036 -22.00 32 s +4 sf +(\037 Type ) 73025 -22.00 32 s +2 sf +(display) 81651 0.00 -1 s +4 sf +(. ) 83041 -22.00 32 s +52832.0 46533.0 m +(Returns) 61610 0.00 -1 s +( the ) 66408 -31.00 32 s +2 sf +(display) 75034 0.00 -1 s +4 sf +( object associated) 94878 -31.00 32 s +( with the specified ) 116226 -31.50 32 s +5 sf +(colormap) 127042 0.00 -1 s +4 sf +(. ) 128422 -32.00 32 s +5 sf +52832.0 52809.0 m +(colormap) 63648 0.00 -1 s +( \037 ) 67495 -37.00 32 s +4 sf +(A ) 70201 -37.00 32 s +2 sf +(colormap) 81643 0.00 -1 s +4 sf +(. ) 83018 -37.00 32 s +2 sf +34544.0 57596.0 m +(colormap\036equal) 53511 0.00 -1 s +( ) 54117 -100.00 32 s +5 sf +(colormap\0361) 67283 0.00 -1 s +4 sf +( ) 67888 -101.00 32 s +5 sf +(colormap\0362) 81054 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +52832.0 62315.0 m +(Returns) 61610 0.00 -1 s +( true if the two arguments refer to the same server) 115553 -232.00 32 s +( resource and ) 130605 -232.67 32 s +2 sf +(nil) 133742 0.00 -1 s +4 sf +( if they do not.) 149352 -232.50 32 s +5 sf +52832.0 68591.0 m +(colormap\0361) 65998 0.00 -1 s +4 sf +(,) 66704 0.00 -1 s +( ) 67360 -50.00 32 s +5 sf +(colormap\0362 ) 81182 -50.00 32 s +4 sf +(\037 A) 86697 -50.00 32 s +( ) 87352 -51.00 32 s +2 sf +(colormap) 98794 0.00 -1 s +4 sf +(.) 99500 0.00 -1 s +2 sf +34544.0 73378.0 m +(colormap\036id) 49278 0.00 -1 s +( ) 49873 -111.00 32 s +5 sf +(colormap) 60689 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 76539.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 79700.0 m +( id ) 57055 -30.00 32 s +4 sf +(\037 Type ) 67029 -29.50 32 s +2 sf +(resource\036id) 80664 0.00 -1 s +4 sf +(.) 81370 0.00 -1 s +52832.0 84418.0 m +(Returns) 61610 0.00 -1 s +( the unique ID assigned to the specified ) 106650 -32.63 32 s +5 sf +(colormap) 117466 0.00 -1 s +4 sf +(.) 118172 0.00 -1 s +5 sf +52832.0 90695.0 m +(colormap) 63648 0.00 -1 s +( ) 64308 -46.00 32 s +4 sf +(\037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +2 sf +34544.0 95481.0 m +(colormap\036p) 48494 0.00 -1 s +( ) 49083 -117.00 32 s +5 sf +(colormap) 59899 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 98642.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 101803.0 m +( map\036p ) 62058 -33.67 32 s +4 sf +(\037 Type ) 72024 -33.50 32 s +2 sf +(boolean) 81432 0.00 -1 s +4 sf +(.) 82138 0.00 -1 s +52832.0 106522.0 m +(Returns) 61610 0.00 -1 s +( non\036) 67462 -26.00 32 s +2 sf +(nil) 70599 0.00 -1 s +4 sf +( if the argument is a ) 93639 -26.50 32 s +2 sf +(colormap) 105081 0.00 -1 s +4 sf +( and ) 110515 -26.50 32 s +2 sf +(nil) 113652 0.00 -1 s +4 sf +( otherwise.) 126007 -27.00 32 s +2 sf +34544.0 112799.0 m +(colormap\036plist) 52099 0.00 -1 s +( ) 52718 -87.00 32 s +5 sf +(colormap) 63534 0.00 -1 s +2 sf +139373.0 h +4 sf +(Function) 149407 0.00 -1 s +2 sf +34544.0 115959.0 m +52832.0 h +4 sf +(Returns:) 62394 0.00 -1 s +( ) 63082 -18.00 32 s +5 sf +52832.0 119120.0 m +( colormap\036p ) 68020 -32.00 32 s +4 sf +(\037 Type ) 77989 -32.00 32 s +2 sf +(boolean) 87397 0.00 -1 s +4 sf +(.) 88103 0.00 -1 s +5 sf +( ) 88776 -33.00 32 s +4 sf +52832.0 123839.0 m +(Returns) 61610 0.00 -1 s +( and \(with ) 73713 -15.00 32 s +2 sf +(setf) 77942 0.00 -1 s +4 sf +(\) sets the property list for the specified ) 122026 -14.50 32 s +5 sf +(colormap) 132842 0.00 -1 s +4 sf +(. This function) 149352 -14.50 32 s +52832.0 127000.0 m +(provides) 62550 0.00 -1 s +( a hook where extensions can add data.) 106296 -42.71 32 s +5 sf +52832.0 133277.0 m +(colormap) 63648 0.00 -1 s +( ) 64308 -46.00 32 s +4 sf +(\037 A ) 70487 -46.00 32 s +2 sf +(colormap) 81929 0.00 -1 s +4 sf +(.) 82635 0.00 -1 s +eop +0.0 0.0 m +270.0 sw + +%%Page: 10 +bop +0 223519 172720 223519 172720 0 0 0 clp +/timsps8i 1 declareFont +1 sf +20320.0 8195.0 m +(Colors) 26480 0.00 -1 s +/timsps10b 2 declareFont +2 sf +20320.0 208619.0 m +(9\036108) 26903 0.00 -1 s +1 sf +121372.0 h +(CLX Programmer's Reference) 149013 0.00 32 s +541.0 sw +0.0 0.0 m +newpath +20862 204555 av +149013 204552 as +[] 0 setdash +dp +/timsps18 3 declareFont +3 sf +20320.0 24271.0 m +eop +0.0 0.0 m +270.0 sw + + +%%Trailer +initialstate restore + +%%EOF --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_Graphic_Operations.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_Graphic_Operations.html @@ -0,0 +1,53 @@ + + + + + + 6 Graphic Operations + + + + + + + + + + Next Prev + Up +
+

6 Graphic Operations +

+ +
+ +
+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_p.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_p.html @@ -0,0 +1,89 @@ + + + + + + P... + + + + + + + + + + Next Prev Up +
+

P...

+ + + +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_13_Releasing_Queued_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_13_Releasing_Queued_Events.html @@ -0,0 +1,204 @@ + + + + + + 12.13 Releasing Queued Events + + + + + + + + + + Next Prev Up +
+

12.13 Releasing Queued Events +

+ +

+ A client grabbing the keyboard or pointer can freeze the reporting of + events on that device. When an input device is thus frozen, the server + queues events until explicitly requested to release them by the + grabbing client. CLX programs can use the allow-events + function to release queued events from a frozen input device. +

+
+ + + +
allow-events + display mode & + optional time + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ mode +
+ One of: :async-pointer, :sync-pointer, + :reply-pointer, :async-keyboard, :sync-keyboard + , :replay-keyboard, :async-both, + :sync-both. +
+ time +
+ A timestamp + . +
+

+ Releases some queued events if the client has caused a device + to freeze. The request has no effect if the time is + earlier than the last-grab time of the most recent active grab + for the client, or if the time is later than the current + server time. If time is nil, the current server + time is used. The effect of this function depends on the + specified mode. +

    +
  • + :async-pointer -- If the pointer is frozen by the + client, pointer event processing continues normally. If the + pointer is frozen twice by the client on behalf of two + separate grabs, :async-pointer releases events for + both grabs. :async-pointer has no effect if the + pointer is not frozen by the client, but the pointer need not + be grabbed by the client. +
  • + :sync-pointer -- If the pointer is frozen and actively + grabbed by the client, pointer event processing continues + normally until the next :button-press or :button-release event is reported to the client, + at which time the pointer again appears to freeze. However, + if the reported event causes the pointer grab to be released, + the pointer does not freeze. :sync-pointer has no + effect if the pointer is not frozen by the client, or if the + pointer is not grabbed by the client. +
  • + :replay-pointer -- If the pointer is actively grabbed + by the client and is frozen as the result of an event having + been sent to the client (either from the activation of a grab-button + , or from a previous + allow-events with mode :sync-pointer, but not + from a + grab-pointer), the pointer grab is released and + that event is completely reprocessed, but this time ignoring + any passive grabs at or above (towards the root) the + grab-window of the grab just released. The request has no + effect if the pointer is not grabbed by the client, or if the + pointer is not frozen as the result of an event. +
  • + :async-keyboard -- If the keyboard is frozen by the + client, keyboard event processing continues normally. If the + keyboard is frozen twice by the client on behalf of two + separate grabs, :async-keyboard releases events for + both grabs. :async-keyboard has no effect if the + keyboard is not frozen by the client, but the keyboard need + not be grabbed by the client. +
  • + :sync-keyboard -- If the keyboard is frozen and + actively grabbed by the client, keyboard event processing + continues normally until the next :key-press or + :key-release event is reported to the client, at + which time the keyboard again appears to freeze. However if + the reported event causes the keyboard grab to be released, + the keyboard does not freeze. :sync-keyboard has no + effect if the keyboard is not frozen by the client, or if the + keyboard is not grabbed by the client. +
  • + :replay-keyboard -- If the keyboard is actively + grabbed by the client and is frozen as the result of an event + having been sent to the client (either from the activation of + a grab-key, or from a previous + allow-events with mode :sync-keyboard, but not + from a + grab-keyboard), the keyboard grab is released and + that event is completely reprocessed, but this time ignoring + any passive grabs at or above (towards the root) the + grab-window of the grab just released. The request has no + effect if the keyboard is not grabbed by the client, or if + the keyboard is not frozen as the result of an event. +
  • + :sync-both -- If both pointer and keyboard are frozen + by the client, event processing (for both devices) continues + normally until the next :button-press, :button-release, :key-press, or + :key-release event is reported to the client for a + grabbed device (button event for the pointer, key event for + the keyboard). At this time, the devices again appear to + freeze. If the reported event causes the grab to be released, + the devices do not freeze. However, if the other device is + still grabbed, then a subsequent event for it will still + cause both devices to freeze. :sync-both has no effect + unless both pointer and keyboard are frozen by the client. If + the pointer of keyboard is frozen twice by the client on + behalf of two separate grabs, :sync-both thaws + for both, but a subsequent freeze for :sync-both will + only freeze each device once. +
  • + :async-both -- If the pointer and the keyboard are + frozen by the client, event processing for both devices + continues normally. If a device is frozen twice by the client + on behalf of two separate grabs, :async-both thaws + for both. :async-both has no effect unless both + pointer and keyboard are frozen by the client. +
+ +

+ :async-pointer, :sync-pointer, and + :replay-pointer have no effect on processing of keyboard + events. :async-keyboard, :sync-keyboard, and + :replay-keyboard have no effect on processing of pointer + events. +

+ It is possible for both a pointer grab and a keyboard grab to + be active simultaneously by the same or different clients. When + a device is frozen on behalf of either grab, no event + processing is performed for the device. It is possible for a + single device to be frozen due to both grabs. In this case, the + freeze must be released on behalf of both grabs before events + can again be processed. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_2_The_X_Window_System.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_2_The_X_Window_System.html @@ -0,0 +1,124 @@ + + + + + + 1.2 The X Window System + + + + + + + + + + Next Prev + Up +
+

1.2 The X Window System +

+ +

+ The X Window System was developed at the Massachusetts Institute of + Technology (MIT) and first released in 1985. Since then, the X Window + System has become an industry-standard product available on virtually + every type of bit-mapped workstation. The current version of X, Version + 11, has been implemented for several different computer architectures, + for a wide variety of display hardware, and also for many different + operating systems. X Version 11 represents the fulfillment of the + original design goals proposed by MIT, as follows: +

+
+ Portable +
+ Support virtually any bitmap display and any interactive input device + (including keyboards, mice, tablets, joysticks, and touch screens). + Make it easy to implement the window system on different operating + systems. +
+ Device-Independent Applications +
+ Avoid rewriting, recompiling, or even relinking in order to use + different display/input hardware. Make it easy for an application to + work on both monochrome and color hardware. +
+ Network Transparent +
+ Let an application run on one computer while using another + computer's display, even if the other computer has a different + operating system or hardware architecture. +
+ Multitasking +
+ Support multiple applications being displayed simultaneously. +
+ No User Interface Policy +
+ Since no one agrees on what constitutes the best user interface, make + it possible for a broad range of user interface styles (or policies) + to be implemented, external to the window system and to the + application programs. +
+ Cheap Windows +
+ Windows should be abundant, and ubiquitous. Provide overlapping + windows and a simple mechanism for window hierarchy. +
+ High-Performance Graphics +
+ Provide powerful interfaces for synthesizing 2-D images (geometric + primitives, high-quality text with multiple typefaces, and scanned + images). +
+ Extensible +
+ Include a mechanism for adding new capabilities. Allow separate sites + to develop independent extensions without becoming incompatible with + remote applications. +
+ +

+ Some of these goals lead directly to the basic X architecture -- the + client-server model. The basic window system is implemented by the X + server program. An application program (the client) sends + window system requests to the X server through a reliable + two-way byte-stream. +

+ In general, the server and the client can be executing on separate host + computers, in which case the byte-stream is implemented via some + network protocol (TCP, DECnettm, Chaosnet, and so forth). + The X server, which is connected to several client programs running + concurrently, executes client requests in round-robin fashion. The + server is responsible for drawing client graphics on the display screen + and for making sure that graphics output to a window stays inside its + boundary. +

+ The other primary job of the X server is to channel input from the + keyboard, pointer, and other input devices back to the appropriate + client programs. Input arrives at the client asynchronously in the form + of input events representing up/down transitions of keys or + pointer buttons, changes in the pointer position, and so on. In some + cases, a request generates a return value (or reply) from the + server, which is another kind of client input. Replies and input events + are received via the same byte-stream connecting the client with the + server. +


+ +
+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_4_2_Matching_Resource_Names.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_4_2_Matching_Resource_Names.html @@ -0,0 +1,116 @@ + + + + + + 13.4.2 Matching Resource Names + + + + + + + + + + Next Prev Up +
+

13.4.2 Matching Resource Names +

+ +

+ The resource lookup algorithm searches a specified resource data base + and returns the value for the resource binding whose resource name is + the closest match to a given complete resource name and class. The + intent of the lookup algorithm is to formalize an intuitive notion of + the closest match. +

+ Precedence is given to a match which begins higher in the + parent-child contact hierarchy. This allows a resource binding with a + partial name to define a resource value shared by all members of a + window subtree. For example, suppose the resource database contained + the following resource bindings: + + + + +
+ Resource Name + + Resource Value +
(mail * background) + 'red +
(* reply background) + 'blue +
+ +

+ Suppose an application program searched by using the following complete + resource name: +

+ (mail screen-1 reply background) +

+ then the closest matching value returned would be 'red. +

+ Precedence is given to the more specific match. A name match is more + specific than a class match. Either a name or class match is more + specific than a wildcard match. For example, suppose the resource + database contained the following resource bindings: + + + + +
+ Resource Name + + Resource Value +
(mail * background) + 'red +
(mail * fill) + 'blue +
+ +

+ Suppose an application program searched by using the following complete + resource name and complete resource class: +

+ (mail screen-1 reply background) +
+ (application root button fill) +

+ then the closest matching value returned would be 'red + . However, suppose the resource database contained the following + resource bindings: + + + + +
+ Resource Name + + Resource Value +
(mail * background) + 'red +
(mail * button background) + 'blue +
+ +

+ then the closest matching value returned would be 'blue + . + +


+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_4_Keyboard_Encodings.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_4_Keyboard_Encodings.html @@ -0,0 +1,74 @@ + + + + + + 14.4 Keyboard Encodings + + + + + + + + + + Next Prev Up +
+

14.4 Keyboard Encodings +

+ +

+ Handling the great diversity of keyboard devices and international + language character encodings is a difficult problem for interactive + programs that need to receive text input but must also be portable. The + X Window System solves this problem by using different sets of + encodings for device keys (keycodes) and for character symbols ( + keysyms). Each X server maintains a keyboard mapping that + associates keycodes and keysyms, and which can be returned or changed + by client programs. +

+ To handle text input, a CLX client program must follow these steps: +

    +
  1. + Receive a + :key-press (or + :key-release) event containing a keycode. +
  2. + Convert the keycode into its corresponding keysym, based on the + current keyboard mapping. See + keycode-keysym. +
  3. + Convert the keysym into the corresponding Common Lisp character. See + keysym-character. +
+ +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/index.html +++ cmucl-20a-20090928/own-work/clx/clxman/index.html @@ -0,0 +1,105 @@ + + + + + + CLX Manual + + + + + + + + Next +
+

+ CLX Manual

+

+ Notice:This is a preliminary version. If you + have difficulties to read these pages due to HTML-features + and/or formattings please drop me a note. The tables are + sometimes still a mess. Also I plan to add a sensible index to + the manual. + +

+ This is an HTML 4.0 version of the classic Postscript CLX + documentation as found in the the X11 distribution. + Conversion from Postscript was done by some home-brew ps2ascii + tools and heavy manual editing. + +

Offline Reading

+

+ You may choose to download the whole set of HTML files for + off-line reading. Please visit the + + download page. + +

Technical Issues

+

+ Since the HTML files are not the actual source, it is not wise + to make modifications to them. If you want to modifications or + corrections I invite you to mail me for the HTML generation + tool. However the + SGML + source of the whole manual is available for download. + +

+ The manuals contents belong to Texas Instruments. Refer to the + copyright notice for details. + I only did the conversion to SGML and HTML. + +

+ Thank you for listening, Gilbert. + +


+

Table of Contents

+ +
+ Next +
+
+ Gilbert Baumann +
+ Last modified: Tue Dec 16 22:56:49 1997 + --- cmucl-20a-20090928.orig/own-work/clx/clxman/h.html +++ cmucl-20a-20090928/own-work/clx/clxman/h.html @@ -0,0 +1,41 @@ + + + + + + h + + + + + + + + + + Next Prev Up +
+

h

+ +
+
+ hot spot +
+ A cursor has an associated hot spot that defines a point in + the cursor that corresponds to the coordinates reported for the + pointer. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_2_Creating_Graphics_Contexts.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_2_Creating_Graphics_Contexts.html @@ -0,0 +1,107 @@ + + + + + + 5.2 Creating Graphics Contexts + + + + + + + + + + Next Prev + Up +
+

5.2 Creating Graphics Contexts +

+ +

+ To create a graphics context, use + create-gcontext. +

+
+ + + +
create-gcontext + &key :arc-mode + :background (:cache-p t) :cap-style + :clip-mask :clip-ordering :clip-x :clip-y :dash-offset :dashes + :drawable :exposures :fill-rule :fill-style :font :foreground + :function :join-style :line-style :line-width :plane-mask + :stipple :subwindow-mode :tile :ts-x :ts-y + Function +
+ + +
      + +
+
+ :cache-p +
+ Specifies if this graphics context should be cached locally + by CLX. If nil then the state is not cached, otherwise + a local cache is kept. +
+ :drawable +
+ The drawable + whose root and depth are to be associated with this graphics + context. This is a required keyword argument. +
+ :arc-mode, :background, :cap-style, + :clip-mask, :clip-ordering, :clip-x, + :clip-y, :dash-offset, :dashes, + :exposures, :fill-rule, :fill-style, + :font, :foreground, :function, + :join-style, :line-style, :line-width, + :plane-mask, :stipple, :subwindow-mode, + :tile, :ts-x, :ts-y +
+ Initial attribute values for the graphics context. +
+

+ Creates, initializes, and returns a graphics context (gcontext). The + graphics context can only be used with destination drawables + having the same root and depth as the specified :drawable + . If :cache-p is non-nil, the graphics context + state is cached locally, and changing a component has no effect + unless the new value differs from the cached value. Changes to + a graphics context (setf and + with-gcontext) are always deferred regardless of the + cache mode and sent to the server only when required by a local + operation or by an explicit call to + force-gcontext-changes. +

+
+ gcontext +
+ Type gcontext + . +
+
+
+ +
+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/15_1_Extensions.html +++ cmucl-20a-20090928/own-work/clx/clxman/15_1_Extensions.html @@ -0,0 +1,141 @@ + + + + + + 15.1 Extensions + + + + + + + + + + Next Prev Up +
+

15.1 Extensions

+ +

+ The X Window System is based on a core protocol which can be extended + to provide new functionality. An extension is generally represented by + an additional set of requests or event types that are implemented by an + X server supporting the extension. By definition, a client program + using an extension may not be portable to other servers. However, + extensions allow different server implementations and different sites + to add their own special features to X, without disrupting clients that + rely only on the core protocol. +

+ Extensions are identified by assigning them unique name strings and + major protocol numbers. A client program can request an X server to use + a protocol extension by furnishing the extension protocol number as an + argument to + open-display. The X Consortium maintains a registry of standard + extension names and protocol numbers. +

+ The following paragraphs describe the CLX functions used to: +

    +
  • + List all supported extensions. +
  • + Find out if a given extension is supported. +
+ +
+
+ + + +
list-extensions + display &key ( + :result-type 'list) + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :result-type +
+ The type of name sequence to return. +
+

+ Returns a sequence containing the names of all + extensions supported by the display server. +

+
+ names +
+ Type sequence of string. +
+
+
+ +
+
+ + + +
query-extension + display name + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ name +
+ An extension name string. +
+

+ Returns the major-opcode for the given extension name + support by the display server. If the extension is + not supported, only nil values are returned. The + extension name must contain only ISO Latin-1 characters; + case is significant. +

+ If the extension involves additional event types, the + first-event returned is the base event type code for new + events; otherwise, the first-event is nil. If the + extension involves additional error codes, the first-error + returned is the base code for new errors; otherwise, the first-error is nil. The formats of error and event + messages sent by the server are completely defined by the + extension. +

+
+ major-opcode, first-event, first-error +
+ Type card8 or + null. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_6_Managing_Host_Access.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_6_Managing_Host_Access.html @@ -0,0 +1,205 @@ + + + + + + 14.6 Managing Host Access + + + + + + + + + + Next Prev Up +
+

14.6 Managing Host Access +

+ +

+ An X server maintains a list of hosts from which client programs can be + run. Only clients executing on hosts that belong to this access + control list are allowed to open a connection to the server. + Typically, the access control list can be changed by clients running on + the same host as the server. Some server implementations can also + implement other authorization mechanisms in addition to, or in place + of, this mechanism. The action of this mechanism can be conditional + based on the authorization protocol name and data received by the + server at connection setup. +

+ The following paragraphs describe the CLX functions used to: +

    +
  • + Add or remove hosts on the access control list. +
  • + Return the hosts on the access control list. +
  • + Return or change the state of the access control list mechanism +
+ +
+
+ + + +
access-control + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Returns and (with setf) changes the state of the access + control list mechanism for the display server. Returns + true if access control is enabled; otherwise, nil is + returned. If enabled, the access control list is used to + validate each client during connection setup. +

+ Only a client running on the same host as the server is allowed + to enable or disable the access control list mechanism. +

+
+ enabled-p +
+ Type boolean. +
+
+
+ +
+
+ + + +
access-hosts + display &key ( + :result-type 'list) + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :result-type +
+ The type of hosts sequence to return. +
+

+ Returns a sequence containing the hosts that belong to + the access control list of the display server. Elements + of the returned hosts sequence are either strings or + some other type of object recognized as a host name by + add-access-host and + remove-access-host. The second returned value specifies + whether the access control list mechanism is currently enabled + or disabled (see + access-control). +

+
+ hosts +
+ sequence of string. +
+ enabled-p +
+ Type boolean. +
+
+
+ +
+
+ + + +
add-access-host + display host + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ host +
+ A host name. Either a string or some other + implementation-dependent type. +
+

+ Adds the specified host to the access control list. Only + a client running on the same host as the server can change the + access control list. +

+
+ +
+
+ + + +
remove-access-host + display host + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ host +
+ A host name. Either a string or some other + implementation-dependent type. +
+

+ Removes the specified host from the access control list. + Only a client running on the same host as the server can change + the access control list. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_Font_and_Characters.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_Font_and_Characters.html @@ -0,0 +1,50 @@ + + + + + + 8 Font and Characters + + + + + + + + + + Next Prev Up + +
+

8 Font and Characters +

+ +
+ +
+ Next Prev Up + +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_6_Mapping_Windows.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_6_Mapping_Windows.html @@ -0,0 +1,217 @@ + + + + + + 4.6 Mapping Windows + + + + + + + + + + Next Prev Up +
+

4.6 Mapping Windows

+ +

+ A window is considered mapped if a map-window call + has been made on it. When windows are first created, they are not + mapped because an application may wish to create a window long before + it is mapped to the screen. A mapped window may not be visible on the + screen for one of the following reasons: +

    +
  • + It is obscured by another opaque sibling window. +
  • + One of its ancestors is not mapped. +
  • + It is entirely clipped by an ancestor. +
+ +

+ A subwindow will appear on the screen as long as all of its ancestors + are mapped and not obscured by a sibling or clipped by an ancestor. + Mapping a window that has an unmapped ancestor does not display the + window, but marks it as eligible for display when the ancestor becomes + mapped. Such a window is called unviewable. When all its ancestors are + mapped, the window becomes viewable and remains visible on the screen + if not obscured by any sibling or ancestor. +

+ Any output to a window not visible on the screen is discarded. :exposure + events are generated for the window when part or all of it becomes + visible on the screen. A client only receives the :exposure + events if it has selected them. Mapping or unmapping a window does not + change its stacking order priority. +

+
+ + + +
map-window + window + Function +
+ + +
      + +
+
+ window +
+ A window. +
+

+ Maps the window. This function has no effect when the + window is already mapped. +

+ If the override-redirect attribute of the window is + :off and another client has selected + :substructure-redirect on the parent window, the X server + generates a + :map-request event and the map-window + function does not map the window. Otherwise, the + window is mapped, and the X server generates a + :map-notify event. +

+ If the window becomes visible and no earlier contents + for it are remembered, map-window + tiles the window with its background. If no background was + defined for the window, the existing screen contents are not + altered, and the X server generates one or more :exposure + events. If a backing-store was maintained while the window + was unmapped, no :exposure + events are generated. If a backing-store will now be + maintained, a full window exposure is always generated. + Otherwise, only visible regions may be reported. Similar tiling + and exposure take place for any newly viewable inferiors. +

+ map-window + generates + :exposure events on each :input-output window + that it causes to become visible. +

+
+ +
+
+ + + +
map-subwindows + window + Function +
+ + +
      + +
+
+ window +
+ A window. +
+

+ Maps all child windows for a specified window in + top-to-bottom stacking order. The X server generates an :exposure + event on each newly visible window. This function is much + more efficient than mapping each child individually. +

+
+ +
+
+ + + +
unmap-window + window + Function +
+ + +
      + +
+
+ window +
+ A window. +
+

+ Unmaps the specified window and causes the X server to + generate an + :unmap-notify event. If the specified window is + already unmapped, unmap-window + has no effect. Normal exposure processing on formerly + obscured windows is performed. Any child window is no longer + viewable. Unmapping the window generates :exposure + events on windows that were formerly obscured by window + and its children. +

+
+ +
+
+ + + +
unmap-subwindows + window + Function +
+ + +
      + +
+
+ window +
+ A window. +
+

+ Unmaps all child windows for the specified window in + bottom to top stacking order. The X server generates an + :unmap-notify event on each child and :exposure + events on formerly obscured windows. Using this function + is much more efficient than unmapping child windows + individually. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_a.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_a.html @@ -0,0 +1,84 @@ + + + + + + A... + + + + + + + + + + Next Prev Up +
+

A...

+ + + +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_1_Introduction.html @@ -0,0 +1,46 @@ + + + + + + 7.1 Introduction + + + + + + + + + + Next Prev + Up +
+

7.1 Introduction

+ +

+ The X protocol provides for the transfer of images (two-dimensional + arrays of pixel data) between a client program and a drawable. The format + for image data can vary considerably. In order to present a uniform + data representation for the manipulation of a variety of images, CLX + defines a special image data type. Additional image + subtypes -- image-xy and image-z -- allow for the + representation of an image either as a sequence of bit planes or as an + array of pixels. CLX includes functions for accessing image + objects; for transferring image data between image objects, + drawables, and files; and also for direct transfer of raw image + data. + +


+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_Events_and_Input.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_Events_and_Input.html @@ -0,0 +1,64 @@ + + + + + + 12 Events and Input + + + + + + + + + + Next + Prev Up +
+

12 Events and Input

+ +
+ +
+ Next + Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_l.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_l.html @@ -0,0 +1,59 @@ + + + + + + L... + + + + + + + + + + Next Prev Up +
+

L...

+ + + +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_2_2_Input_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_2_2_Input_Events.html @@ -0,0 +1,67 @@ + + + + + + 1.2.2 Input Events + + + + + + + + + + Next Prev Up +
+

1.2.2 Input Events

+ +

+ The X input mechanism is conceptually simple yet quite powerful. Most + events are attached to a particular window (that is, contain an + identifier for the window receiving the event). A client program can + receive multiple window input streams, all multiplexed over the single + byte-stream connection to the server. +

+ Clients can tailor their input by expressing interest in only certain + event types. The server uses special event types to send important + messages to the client. For example, the client can elect to receive an + + :enter-notify event when the pointer cursor moves into a + certain window. Another vital message from the server is an :exposure + event. This is a signal to the client indicating that at least some + portion of the window has suddenly become visible (perhaps the user + moved another window which had been overlapping it). The client is then + responsible for doing what is necessary to redisplay the window's + image. Client programs must be prepared to regenerate the contents of + windows in this way on demand. +

+ Input is also subject to policy decisions about which client window + receives keyboard and pointer events. Since the pointer is free to roam + between windows, just clicking on a window is often enough to send a + pointer event to that window. Keyboard events, however, must go to a + keyboard focus window which has to be designated in some other way. + Usually, the arbiter of such input management policy is a program + called the window manager. The window manager gives the + human user a way to make a window the keyboard focus, to manage the + layout of windows on the screen, to represent windows with icons, and + so forth. In fact, the window manager client determines most of the + so-called look and feel of the X Window System. + +


+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_10_Grabbing_the_Keyboard.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_10_Grabbing_the_Keyboard.html @@ -0,0 +1,195 @@ + + + + + + 12.10 Grabbing the Keyboard + + + + + + + + + + Next Prev Up +
+

12.10 Grabbing the Keyboard +

+ +

+ CLX provides the grab-keyboard + and + ungrab-keyboard functions for actively grabbing and + releasing control of the keyboard. +

+
+ + + +
grab-keyboard + window &key :owner-p :sync-pointer-p :sync-keyboard-p :time + Function +
+ + +
      + +
+
+ window +
+ A window. +
+ :owner-p +
+ If true, all client windows receive keyboard input normally. +
+ :sync-pointer-p +
+ Indicates whether the pointer is in synchronous or + asynchronous mode. +
+ :sync-keyboard-p +
+ Indicates whether the keyboard is in synchronous or + asynchronous mode. +
+ :time +
+ A timestamp + . +
+

+ Actively grabs control of the keyboard. Further key events are + reported only to the grabbing client. The request overrides any + active keyboard grab by this client. + grab-keyboard generates :focus-in + and :focus-out + events. +

+ If :owner-p is nil, all generated key events are + reported with respect to window. If :owner-p is + true, then a generated key event that would normally be + reported to this client is reported normally; otherwise the + event is reported with respect to the window. Both + :key-press and :key-release events are always reported, independent + of any event selection made by the client. +

+ If :sync-keyboard-p is nil, keyboard event + processing continues normally (asynchronously); if the keyboard + is currently frozen by this client, then processing of keyboard + events is resumed. If :sync-keyboard-p is true, the + keyboard (as seen via the protocol) appears to freeze, and no + further keyboard events are generated by the server until the + grabbing client issues a releasing + allow-events request. Actual keyboard changes are not + lost while the keyboard is frozen; they are simply queued for + later processing. +

+ If :sync-pointer-p is nil, pointer event + processing is unaffected by activation of the grab. If + :sync-pointer-p is true, the pointer (as seen via the + protocol) appears to freeze, and no further pointer events are + generated by the server until the grabbing client issues a + releasing + allow-events request. Actual pointer changes are not + lost while the pointer is frozen; they are simply queued for + later processing. +

+ The grab can fail with a status of: +

    +
  • + :already-grabbed if the keyboard is actively grabbed + by some other client +
  • + :frozen if the keyboard is frozen by an active grab + from another client +
  • + :not-viewable if window is not viewable +
  • + :invalid-time if the specified time is earlier than + the last-keyboard-grab time or later than the current server + time. Otherwise, + grab-keyboard returns a status of :success and + last-keyboard-grab time is set to the specified time, with + current-time replaced by current server time. +
+ +
+
+ grab-status +
+ One of :already-grabbed, :frozen, + :invalid-time, :not-viewable, or :success. +
+
+
+ +
+
+ + + +
ungrab-keyboard + display &key + :time + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :time +
+ A timestamp + . +
+

+ Releases the keyboard if this client has it actively grabbed + (from either + grab-keyboard or grab-key + ), and releases any queued events. The request has no effect if + the specified time is earlier than the last-keyboard-grab time + or is later than the current server time. An + ungrab-keyboard is performed automatically if the event + window for an active keyboard grab becomes not viewable. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_1_Keyboard_and_Pointer_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_1_Keyboard_and_Pointer_Events.html @@ -0,0 +1,618 @@ + + + + + + 12.12.1 Keyboard and Pointer Events + + + + + + + + + + Next Prev + Up +
+

12.12.1 Keyboard and Pointer + Events

+ +

+ The keyboard and pointer events are: :key-press, :key-release, + :button-press, + :button-release, + :motion-notify, + :enter-notify, and :leave-notify. +

+
+ + + +
:key-press, :key-release, + :button-press, :button-release + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ + :key-press, + :key-release, :button-press, or :button-release. +
+ +

+ :key-press, and :key-release events are generated when a key or + pointer button changes state. Note that + :key-press and :key-release are generated for all keys, even those + mapped to modifiers. All of these event types have the same + slots. The window containing the pointer at the time of the + event is referred to as the source window. The event + window is the window to which the event is actually + reported. The event window is found by starting with the source + window and looking up the hierarchy for the first window on + which any client has selected interest in the event (provided + no intervening window prohibits event generation by including + the event type in its do-not-propagate-mask). The actual window + used for reporting can be modified by active grabs and, in the + case of keyboard events, can be modified by the focus window. +

+ A + :button-press event has the effect of a temporary grab-button + . When a pointer button is pressed and no active + pointer grab is in progress, the ancestors of the source window + are searched from the root down, looking for a passive + grab to activate. If no matching passive grab on the button + exists, then an active grab is started automatically for the + client receiving the + :button-press event, and the last-pointer-grab time + is set to the current server time. The effect is essentially + equivalent to calling grab-button + with the following arguments: + + + + + + + + + + + +
+ Argument + + Description +
window + The event window. +
button + The button that was pressed. +
event-mask + The client's selected pointer events on the event + window. +
:modifiers + 0 +
:owner-p + t if the client has :owner-grab-button + selected on the event window; otherwise nil. +
:sync-pointer-p + nil +
:sync-keyboard-p + nil +
:confine-to + nil +
:cursor + nil +
+ +

+ The + :button-press grab is terminated automatically when + all buttons are released. The functions + ungrab-pointer and change-active-pointer-grab can both be used to + modify the + :button-press grab. +

+
+ window, event-window +
+ Type window. + The window receiving the event. +
+ code +
+ Type card8. + The code argument varies with the event type. For :key-press and + :key-release, code is the keycode (see + paragraph 14.4, Keyboard Encodings). For :button-press and :button-release, code is the pointer + button number. +
+ x +
+ Type int16. If + event-window is on the same screen as root, then x + and y are the pointer coordinates relative to the + event-window; otherwise x and y are zero. +
+ y +
+ Type int16. If + event-window is on the same screen as root, then x + and y are the pointer coordinates relative to the + event-window; otherwise x and y are zero. +
+ state +
+ Type card16. + A mask that gives the state of the buttons and modifier keys + just before the event. +
+ time +
+ Type card32. + A timestamp for the moment when the event occurred. +
+ root +
+ Type window. + The root window of the source window. +
+ root-x +
+ Type int16. + The x coordinate of the pointer position relative to root at + the time of the event. +
+ root-y +
+ Type int16. + The y coordinate of the pointer position relative to root at + the time of the event. +
+ child +
+ Type (or null window). If the source window is an + inferior of the event-window, child is set to + the child of event-window that is an ancestor of (or + is) the source window; otherwise, it is set to nil. + +
+ same-screen-p +
+ Type boolean + . True if event-window and root are on the same screen. +
+
+
+ +
+
+ + + +
:motion-notify + + Event Type +
+ + +
      + +

+

+
+ Selected by: +
+ :button-1-motion, :button-2-motion, + :button-3-motion, :button-4-motion, + :button-5-motion, :button-motion, or + :pointer-motion. +
+ +

+ The + :motion-notify event is generated when the pointer + moves. A + :motion-notify event has the same slots as + :button-press, :button-release, + :key-press, and :key-release events, with the exception that the + code slot is replaced by the hint-p slot. As with + these other events, the event window for + :motion-notify is found by starting with the source + window and looking up the hierarchy for the first window on + which any client has selected interest in the event (provided + no intervening window prohibits event generation by including + :motion-notify in its do-not-propagate-mask).The + actual window used for reporting can be modified by active + grabs. +

+ + :motion-notify events are generated only when the + motion begins and ends in the window. The granularity of motion + events is not guaranteed, but a client selecting for motion + events is guaranteed to get at least one event when the pointer + moves and comes to rest. Selecting :pointer-motion + generates + :motion-notify events regardless of the state of the + pointer buttons. By selecting some subset of + :button[1-5]-motion instead, + :motion-notify events are only received when one or + more of the specified buttons are pressed. By selecting + :button-motion, + :motion-notify events are only received when at + least one button is pressed. If :pointer-motion-hint is + also selected, the server is free to send only one + :motion-notify, until either the key or button state + changes, the pointer leaves the event window, or the client + calls + query-pointer or + motion-events. +

+
+ hint-p +
+ Type boolean + . True if the event is a hint generated by selecting + :pointer-motion-hint. +
+
+
+ +
+
+ + + +
:enter-notify, :leave-notify + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :enter-window or :leave-window. +
+ +

+ If pointer motion or a window hierarchy change causes the + pointer to be in a different window than before, + :enter-notify and + :leave-notify events are generated instead of a + :motion-notify event. All + :enter-notify and + :leave-notify events caused by a hierarchy change + are generated after any hierarchy event ( + :unmap-notify, + :map-notify, + :configure-notify, + :gravity-notify, or + :circulate-notify) caused by that change, but the + ordering of + :enter-notify and + :leave-notify events with respect to :focus-out + , + :visibility-notify, and :exposure + events is not constrained by the X protocol. An + :enter-notify or + :leave-notify event can also be generated when a + client application calls change-active-pointer-grab, + grab-pointer, or + ungrab-pointer. +

+
+ window, event-window +
+ Type window. + The window receiving the event. +
+ x +
+ Type int16. + The final pointer position. If event-window is on the + same screen as root, then x and y are the + pointer coordinates relative to the event-window; + otherwise x and y are zero. +
+ y +
+ Type int16. + The final pointer position. If event-window is on the + same screen as root, then x and y are the + pointer coordinates relative to the event-window; + otherwise x and y are zero. +
+ mode +
+ Type (member :normal :grab :ungrab). Events caused + when the pointer is actively grabbed have mode :grab. + Events caused when an active pointer grab deactivates have + mode :ungrab. In all other cases, mode is :normal + . +
+ kind +
+ Type (member :ancestor :virtual :inferior :nonlinear :nonlinear-virtual). When the pointer moves from window + A to window B, and A is an inferior of B: +
    +
  • + :leave-notify with kind :ancestor + is generated on A +
  • + :leave-notify with kind :virtual + is generated on each window between A and B exclusive + (in that order) +
  • + :enter-notify with kind :inferior + is generated on B +
+ +

+ When the pointer moves from window A to window B, and B is + an inferior of A: +

    +
  • + :leave-notify with kind :inferior + is generated on A +
  • + :enter-notify with kind :virtual + is generated on each window between A and B exclusive + (in that order) +
  • + :enter-notify with kind :ancestor + is generated on B +
+ +

+ When the pointer moves from window A to window B, with + window C being their least common ancestor: +

    +
  • + :leave-notify with kind :nonlinear + is generated on A +
  • + :leave-notify with kind + :nonlinear-virtual is generated on each window + between A and C exclusive (in that order) +
  • + :enter-notify with kind + :nonlinear-virtual is generated on each window + between C and B exclusive (in that order) +
  • + :enter-notify with kind :nonlinear + is generated on B +
+ +

+ When the pointer moves from window A to window B, on + different screens: +

    +
  • + :leave-notify with kind :nonlinear + is generated on A +
  • + If A is not a root window, :leave-notify with kind + :nonlinear-virtual is generated on each window above + A up to and including its root (in order) +
  • + If B is not a root window, :enter-notify with kind + :nonlinear-virtual is generated on each window from + B's root down to but not including B (in order) +
  • + :enter-notify with kind :nonlinear + is generated on B +
+ +

+ When a pointer grab activates (but after any initial warp + into a confine-to window, and before generating any actual + :button-press event that activates the grab), + with G the grab-window for the grab and P + the window the pointer is in, then :enter-notify and :leave-notify events with mode :grab are + generated (as for :normal above) as if the pointer + were to suddenly warp from its current position in P + to some position in G. However, the pointer does not + warp, and the pointer position is used as both the + initial and final positions for the events. +

+ When a pointer grab deactivates (but after generating any + actual :button-release event that deactivates the + grab), with G the grab-window for the grab + and P the window the pointer is in, then :enter-notify and :leave-notify events with mode :ungrab + are generated (as for :normal above) as if the + pointer were to suddenly warp from from some position in + G to its current position in P. However, the + pointer does not warp, and the current pointer position is + used as both the initial and final positions + for the events. +

+ focus-p +
+ Type boolean + . If event-window is the focus window or an inferior + of the focus window, then focus-p is t; + otherwise, focus-p is nil. +
+ state +
+ Type card16. + A mask that gives the state of the buttons and modifier keys + just before the event. +
+ time +
+ Type card32. + A timestamp for the moment when the event occurred. +
+ root +
+ Type window. + The root window containing the final pointer position. +
+ root-x +
+ Type int16. + The x coordinate of the pointer position relative to root at + the time of the event. +
+ root-y +
+ Type int16. + The y coordinate of the pointer position relative to root at + the time of the event. +
+ child +
+ Type (or null window). In a :leave-notify event, if a child of the + event-window contains the initial position of the + pointer, the child slot is set to that child; + otherwise, the child slot is nil. For an :enter-notify event, if a child of the + event-window contains the final pointer position, the + child slot is set to that child; otherwise, the child + slot is nil. +
+ same-screen-p +
+ Type boolean + . True if event-window and root are on the same screen. +
+
+
+ +
+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_1_Creating_Colormaps.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_1_Creating_Colormaps.html @@ -0,0 +1,183 @@ + + + + + + 9.3.1 Creating Colormaps + + + + + + + + + + Next Prev Up +
+

9.3.1 Creating Colormaps +

+ +

+ CLX provides functions for creating and freeing new colormap objects. +

+
+ + + +
create-colormap + visual window + &optional alloc-p + Function +
+ + +
      + +
+
+ visual +
+ A visual type ID. +
+ window +
+ A window. +
+ alloc-p +
+ Specifies whether + colormap cells are permanently allocated read-write. +
+

+ Creates and returns a colormap of the specified visual + type for the screen containing the window. The + visual type must be one of those supported by the screen. +

+ Initial color cell values are undefined for visual types + belonging to the :gray-scale, :pseudo-color, and + :direct-color classes. Color cell values for visual + types belonging to the :static-gray, :static-color + , and :true-color classes have initial values defined by + the visual type. However, X does not define the set of possible + visual types or their initial color cell values. +

+ If alloc-p is true, all colormap cells are permanently + allocated read-write and cannot be freed by free-colors + . It is an error for alloc-p to be true when the + visual type belongs to the :static-gray, :static-color + , or :true-color classes. +

+
+ colormap +
+ Type colormap + . +
+
+
+ +
+
+ + + +
copy-colormap-and-free + colormap + Function +
+ + +
      + +
+
+ colormap +
+ A colormap. +
+

+ Creates and returns a new colormap by copying, then freeing, allocated cells + from the specified colormap. +

+ All color cells allocated read-only or read-write in the + original colormap + have the same color values and the same allocation status + in the new-colormap. The values of unallocated color + cells in the new-colormap are undefined. After copying, + all allocated color cells in the original colormap are + freed, as if + free-colors was called. The unallocated cells of the + original colormap + are not affected. +

+ If alloc-p was true when the original colormap was + created, then all color cells of the new-colormap are + permanently allocated read-write, and all the color cells of + the original colormap + are freed. +

+
+ new-colormap +
+ Type colormap + . +
+
+
+ +
+
+ + + +
free-colormap + colormap + Function +
+ + +
      + +
+
+ colormap +
+ A colormap. +
+

+ Destroys the colormap and frees its server resource. If + the colormap is installed, it is uninstalled. For any + window associated with the colormap, the window is + assigned a nil + colormap, and a + :colormap-notify event is generated. The colors + displayed for a window with a nil colormap are undefined. +

+ However, this function has no effect if the colormap is + a screen default + colormap. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_3_A_Quick_Tour_of_CLX.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_3_A_Quick_Tour_of_CLX.html @@ -0,0 +1,74 @@ + + + + + + 1.3 A Quick Tour of CLX + + + + + + + + + + Next Prev Up +
+

1.3 A Quick Tour of CLX +

+ +

+ The X Window System is defined by the X Window System Protocol + Specification, a detailed description of the encoding and the meaning + of requests and events sent between a client and a server. This + standard protocol does not depend on any particular programming + language. As a result, each programming language must define its own + functional interface for using the X protocol. The standard X interface + used by Common Lisp programmers is called CLX. CLX is a set of data + types, functions, and macros which allow a Common Lisp client program + to interact with an X server to send requests and to receive input + events and replies. +

+ For the most part, CLX functions are closely tied to the underlying + requests in the X protocol. Many CLX functions simply add requests to + an output buffer. These requests later execute asynchronously on the X + display server. However, some functions of CLX lie outside the scope of + the protocol--for example, reading events and managing a clientside + event queue. CLX is also responsible for important batching and caching + tasks that minimize network communication. +

+ The following paragraphs show an example of a CLX client program. All + CLX functions and macros are shown in upper case. Note that some of the + terms used are unique to X, while other terms that are common to other + window systems have different meanings in X. It may be helpful to refer + to the glossary when you are uncertain of a term's meaning in the + context of the X Window System. +


+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_3_Keyboard_Control.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_3_Keyboard_Control.html @@ -0,0 +1,360 @@ + + + + + + 14.3 Keyboard Control + + + + + + + + + + Next Prev Up +
+

14.3 Keyboard Control +

+ +

+ The following paragraphs describe the CLX functions used to: +

    +
  • + Return or change keyboard controls +
  • + Ring the keyboard bell +
  • + Return or change the mapping of modifiers +
  • + Return the current up/down state of all keys +
+ +
+
+ + + +
bell + display & + optional (percent-from-normal 0) + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ percent-from-normal +
+ An integer (-100 through 100). +
+

+ Rings the bell on the keyboard at a volume relative to the base + volume for the keyboard, if possible. Percent can range from + -100 to 100 inclusive, or else a Value error occurs. The + following is the bell volume when percent is non-negative: +

+ (- (+ base percent) (quotient (* base percent + ) 100)) +

+ and when percent is negative: +

+ (+ base (quotient (* base percent) 100)) +

+
+ +
+
+ + + +
change-keyboard-control + display &key + :key-click-percent :bell-percent :bell-pitch + :bell-duration :led :led-mode :key :auto-repeat-mode + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :key-click-percent +
+ An integer (0 100). +
+ :bell-percent +
+ An integer (0 100). +
+ :bell-pitch +
+ A card16. +
+ :bell-duration +
+ A card16. +
+ :led +
+ A card8. +
+ :led-mode +
+ Either :on or :off. +
+ :key +
+ A card8 + keycode. +
+ :auto-repeat-mode +
+ Either :on, :off, or :default. +
+

+ Changes the various aspects of the keyboard. The keyword + arguments specify which controls to change. +

+ The :key-click-percent keyword sets the volume for key + clicks, if possible. A value of 0 implies off, while a value of + 100 implies loud. Setting :key-click-percent to + :default restores the default value. +

+ The :bell-percent sets the base volume for the bell + between 0 (off) and 100 (loud) if possible. Setting + :bell-percent to :default restores the default value. +

+ The :bell-pitch sets the pitch (specified in Hz) of the + bell, if possible. Setting the :bell-pitch to :default + restores the default value. The :bell-duration sets + the duration ( specified in milliseconds) of the bell, if + possible. Setting :bell-pitch to :default + restores the default. Note that a bell generator connected with + the console but not directly on the keyboard is treated as if + it were part of the keyboard. +

+ If both :led-mode and :led are specified, then + the state of that LED is changed, if possible. If only + :led-mode is specified, the state of all LEDs are changed, + if possible. At most 32 LEDs are supported, numbered from one. + No standard interpretation of the LEDs are defined. +

+ If both :auto-repeat-mode and :key are specified, + the auto-repeat mode of that key is changed, if possible. If + only :auto-repeat-mode is specified, the global + auto-repeat mode for the entire keyboard is changed, if + possible, without affecting the per-key settings. An error + occurs if :key is specified without :auto-repeat-mode + . +

+
+ +
+
+ + + +
keyboard-control + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Returns the current control values for the keyboard. For the + LEDs, the least significant bit of led-mask corresponds + to LED one, and each one bit in led-mask indicates an + LED that is lit. auto-repeats is a bit vector; each one + bit indicates that auto-repeat is enabled for the corresponding + key. The vector is represented as 32 bytes. Byte n (from + 0) contains the bits for keys 8n to 8n+7, with + the least significant bit in the byte representing key 8n + . +

+
+ key-click-percent, bell-percent +
+ Type card8. +
+ bell-pitch bell-duration +
+ Type card16. +
+ led-mask +
+ Type card32. +
+ global-auto-repeat +
+ Either :on or :off. +
+ auto-repeats +
+ Type bit-vector. +
+
+
+ +
+
+ + + +
modifier-mapping + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Returns the set of keycodes used for each modifier on the + display keyboard. Each return value is a list of the card8 keycodes + used for each modifier key. The order of keycodes within each + list is server-dependent. +

+
+ shift-keycodes, lock-keycodes, + control-keycodes, mod1-keycodes, mod2-keycodes + , mod3-keycodes, mod4-keycodes, + mod5-keycodes +
+ Type list of + card8. +
+
+
+ +
+
+ + + +
query-keymap + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Returns a bit vector that describes the state of the keyboard. + Each one bit indicates that the corresponding key is currently + pressed. The vector is represented as 32 bytes. Byte n + (from 0) contains the bits for keys 8n to 8n+7, + with the least significant bit in the byte representing key 8 + n. +

+
+ keymap +
+ Type bit-vector 256. +
+
+
+ +
+
+ + + +
set-modifier-mapping + display &key + :shift :lock :control :mod1 :mod2 :mod3 :mod4 :mod5 + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :shift, :lock, :control, :mod1, :mod2, :mod3, :mod4, :mod5 +
+ A sequence of card8 + keycodes for the given modifier. +
+

+ Changes the set of keycodes mapped to the specified modifier + keys on the display keyboard. Each keyword argument + contains a sequence of new + card8 keycodes for a specific modifier. The return + value indicates whether the change was completed successfully. +

+ A status of :failed is returned if hardware limitations + prevent the requested change. For example, multiple keycodes + per modifier may not be supported, up transitions on a given + keycode may not be supported, or autorepeat may be mandatory + for a given keycode. If :failed is returned, the + mappings for all modifiers remain unchanged. +

+ A status of :device-busy is returned if a new keycode + given for a modifier was not previously mapped to that modifier + and is currently in the down state. In this case, the mappings + for all modifiers remain unchanged. +

+
+ status +
+ One of :success, :failed, or :device-busy + . +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_6_Colormap_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_6_Colormap_Attributes.html @@ -0,0 +1,182 @@ + + + + + + 9.3.6 Colormap Attributes + + + + + + + + + + Next + Prev Up +
+

9.3.6 Colormap Attributes +

+ +

+ The complete set of colormap attributes is discussed in the following + paragraphs. +

+
+ + + +
colormap-display + colormap + Function +
+ + +
      + +
+
+ colormap +
+ A colormap. +
+

+ Returns the display + object associated with the specified colormap. +

+
+ display +
+ Type display. +
+
+
+ +
+
+ + + +
colormap-equal + colormap-1 colormap-2 + + Function +
+ + +
      + +
+
+ colormap-1, colormap-2 +
+ A colormap. +
+

+ Returns true if the two arguments refer to the same server + resource and nil if they do not. +

+
+ +
+
+ + + +
colormap-id + colormap + Function +
+ + +
      + +
+
+ colormap +
+ A colormap. +
+

+ Returns the unique ID assigned to the specified colormap. +

+
+ id +
+ Type resource-id + . +
+
+
+ +
+
+ + + +
colormap-p + colormap + Function +
+ + +
      + +

+ Returns non-nil if the argument is a colormap and + nil otherwise. +

+
+ map-p +
+ Type boolean. +
+
+
+ +
+
+ + + +
colormap-plist + colormap + Function +
+ + +
      + +
+
+ colormap +
+ A colormap. +
+

+ Returns and (with setf) sets the property list for the + specified colormap. This function provides a hook where + extensions can add data. +

+
+ colormap-p +
+ Type boolean. +
+
+
+ +
+ Next + Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_6_Graphics_Context_Cache.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_6_Graphics_Context_Cache.html @@ -0,0 +1,129 @@ + + + + + + 5.6 Graphics Context Cache + + + + + + + + + + Next Prev Up +
+

5.6 Graphics Context Cache +

+ +

+ CLX provides a set of functions to control the automatic graphics + context caching mechanism. +

+
+ + + +
force-gcontext-changes + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Forces any delayed changes to the specified graphics context to + be sent out to the server. Note that + force-gcontext-changes is called by all of the + graphics functions. +

+
+ +
+
+ + + +
with-gcontext + gcontext &key + :arc-mode :background :cap-style :clip-mask + :clip-ordering :clip-x :clip-y :dashes :dash-offset :exposures + :fill-rule :fill-style :font :foreground :function :join-style + :line-style :line-width :plane-mask :stipple + :subwindow-mode :tile :ts-x :ts-y & + allow-other-keys &body body + Macro +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+ :arc-mode, :background, :cap-style, + :clip-mask, :clip-ordering, :clip-x, + :clip-y, :dashes, :dash-offset, + :exposures, :fill-rule, :fill-style, + :font, :foreground, :function, + :join-style, :line-style, :line-width, + :plane-mask, :stipple, :subwindow-mode, + :tile, :ts-x, :ts-y +
+ These keyword arguments and associated values specify which + graphics context components are to be changed. Any components + not specified are left unmodified. See paragraph 5.2, + Creating Graphics Contexts, for more information. +
+ body +
+ The body of code which will have access to the altered + graphics context. +
+

+ Changes the indicated graphics context components to the + specified values only within the dynamic extent of the body. + with-gcontext works on a per-process basis in a + multiprocessing environment. The body is not surrounded + by a + with-display form. If there is no local cache for the + specified graphics context, or if some of the component states + are unknown, + with-gcontext does the save and restore by creating a + temporary graphics context and copying components to and from + it using copy-gcontext-components. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/a.html +++ cmucl-20a-20090928/own-work/clx/clxman/a.html @@ -0,0 +1,67 @@ + + + + + + a + + + + + + + + + + Next Prev Up +
+

a

+ +
+
+ access control list +
+ X maintains a list of hosts from which client programs can be run. By + default, only programs on the local host can use the display, plus + any hosts specified in an initial list read by the server. This + access control list can be changed by clients on the local host. + Some server implementations can also implement other authorization + mechanisms in addition to or in place of this mechanism. The action + of this mechanism can be conditional based on the authorization + protocol name and data received by the server at connection setup. +
+ action +
+ A function that is designed to handle an input event. CLUE input + processing consists of matching an event with an event specification + found in a contact's event-translations slot and then + calling actions associated with the matching event specification. +
+ active grab +
+ A grab is active when the pointer or keyboard is actually + owned by the single grabbing client. +
+ ancestors +
+ If W is an inferior of A, then A is an ancestor of W. +
+ atom +
+ A unique ID corresponding to a string name. Atoms are used to + identify properties, types, and selections. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_2_Creating_Windows.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_2_Creating_Windows.html @@ -0,0 +1,143 @@ + + + + + + 4.2 Creating Windows + + + + + + + + + + Next Prev Up +
+

4.2 Creating Windows +

+ +

+ A window is a drawable + that can also receive input events. CLX represents a window with a window object. The create-window + function creates a new window + object. +

+
+ + + +
create-window + &key :parent :x + :y :width :height (:depth 0) (:border-width 0) ( + :class :copy) (:visual :copy) :background + :border :gravity :bit-gravity :backing-store :backing-planes + :backing-pixel :save-under :event-mask + :do-not-propagate-mask :override-redirect :colormap :cursor + + Function +
+ + +
      + +
+
+ :parent +
+ The parent window. This argument is required. +
+ :x, :y +
+ int16 + coordinates for the outside upper-left corner of the new + window with respect to the origin (inside upper-left corner) + of the :parent. These arguments are required. +
+ :width, :height +
+ card16 values + for the size of the new window. These arguments are required. +
+ :depth +
+ A card16 + specifying the depth of the new window. +
+ :class +
+ One of :input-output, :input-only, or :copy + . +
+ :visual +
+ A card29 ID + specifying the visual type of the new window. +
+ :background, :backing-pixel, :backing-planes + , :backing-store, :bit-gravity, :border + , :border-width, :colormap, :cursor, + :do-not-propagate-mask, :event-mask, :gravity + , :override-redirect, :save-under +
+ Initial attribute values for the new window. If nil, + the default value is defined by the X protocol. See paragraph +
+

+ Creates and returns a window. A :parent window must be + specified; the first window created by a client will have a + root window as its :parent. The new window is initially + unmapped and is placed on top of its siblings in the stacking + order. A + :create-notify event is generated by the server. +

+ The :class of a window can be :input-output or + :input-only. Windows of class :input-only cannot be + used as the destination drawable for graphics output and can + never receive + :exposure events, but otherwise operate the same as + :input-output windows. The :class can also be + :copy, in which case the new window has the same class as + its :parent. +

+ For an :input-output window, the :visual and + :depth must be a combination supported by the :parent + 's screen, but the :depth need not be the same as + the :parent's. The :parent of an + :input-output window must also be :input-output. A :depth of 0 means that the depth of the :parent is + used. +

+ For an :input-only window, the :depth must be + zero, and the :visual must be supported by the :parent + 's screen. The :parent of an :input-only + window can be of any class. The only attributes that can be + given for an :input-only window are :cursor, + :do-not-propagate-mask, :event-mask, :gravity + , and :override-redirect. +

+
+ window +
+ Type window. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/10_Cursors.html +++ cmucl-20a-20090928/own-work/clx/clxman/10_Cursors.html @@ -0,0 +1,45 @@ + + + + + + 10 Cursors + + + + + + + + + + Next Prev Up + +
+

10 Cursors

+ +
+ +
+ Next Prev Up + +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_u.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_u.html @@ -0,0 +1,68 @@ + + + + + + U... + + + + + + + + + + Next Prev Up +
+

U...

+ + + +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_w.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_w.html @@ -0,0 +1,135 @@ + + + + + + W... + + + + + + + + + + Next Prev Up +
+

W...

+ + + +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_5_Direct_Image_Transfer.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_5_Direct_Image_Transfer.html @@ -0,0 +1,234 @@ + + + + + + 7.5 Direct Image Transfer + + + + + + + + + + Next Prev Up +
+

7.5 Direct Image Transfer +

+ +

+ For cases where the image representation is not needed, CLX + provides functions to read and display image data directly. +

+
+ + + +
get-raw-image + drawable &key + :data (:start 0) :x :y :width :height + :plane-mask (:format :z-format) (:result-type ' + (vector card8)) + Function +
+ + +
      + +
+
+ drawable +
+ A drawable. +
+ :data +
+ An optional sequence of card8. +
+ :start +
+ The index of the first :data element modified. +
+ :x, :y +
+ card16 values + defining the size of the image returned. These + arguments are required. +
+ :width, :height +
+ card16 values + defining the size of the image returned.These arguments are + required. +
+ :plane-mask +
+ A pixel mask. +
+ :format +
+ Either :xy-pixmap or :z-pixmap. This argument + is required. +
+ :result-type +
+ The type of image data sequence to return. +
+

+ Returns a sequence of image data from the region of the + drawable given by :x, :y, :width, and + :height. If :data is given, it is modified + beginning with the element at the :start index and + returned. The depth and visual type ID of the + drawable are also returned. +

+ The bits for all planes selected by 1 bits in the :plane-mask + are returned as zero; the default :plane-mask is + all 1 bits. The :format of the returned pixel values may + be either :xy-format or :z-format. The + :result-type defines the type of image data returned. +

+ The calling program is responsible for handling the byte-order + and bit-order returned by the server for the drawable + 's display (see + display-byte-order and display-image-lsb-first-p). +

+
+ data +
+ Type sequence or card8. +
+ depth +
+ Type card8. +
+ visual +
+ Type card29. +
+
+
+ +
+
+ + + +
put-raw-image + drawable gcontext data + &key (:start 0) :depth :x :y :width + :height (:left-pad 0) :format + Function +
+ + +
      + +
+
+ drawable +
+ The destination + drawable. +
+ gcontext +
+ The graphics context used to display the image. +
+ data +
+ A sequence of integers. +
+ :start +
+ The index of the first element of data displayed. +
+ :depth +
+ The number of bits per pixel displayed. This argument is + required. +
+ :x, :y +
+ The position in the drawable where the image region is + displayed. These arguments are required. +
+ :width, :height +
+ card16 values + defining the size of the image region displayed. These + arguments are required. +
+ :left-pad +
+ A card8 + specifying the number of leading bits to discard for each + image scanline. +
+ :format +
+ One of :bitmap, :xy-pixmap, or :z-pixmap. +
+

+ Displays a region of the image data defined by :start, :left-pad, :width, and :height on the + destination drawable, with the upper-left pixel of the + image region displayed at the drawable position given by + :x and :y. +

+ The :format can be either :xy-pixmap, :z-pixmap + , or :bitmap. If :xy-pixmap or :z-pixmap + formats are used, :depth must match the depth of + the destination drawable. For :xy-pixmap, the + data must be in XY format. For :z-pixmap, the data must + be in Z format for the given :depth. +

+ If the :format is :bitmap, the :depth must + be 1. In this case, the image is combined with the foreground + and background pixels of the gcontext. 1 bits of the + image are displayed in the foreground pixel and 0 bits are + displayed in the background pixel. +

+ The :left-pad must be zero for :z-pixmap format. + For :bitmap and :xy-pixmap formats, the + :left-pad must be less than the bitmap-scanline-pad for the + drawable's display (see + display-bitmap-format). The first :left-pad bits + in every scanline are to be ignored by the server; the actual + image begins that many bits into the data. +

+ The following attributes of the gcontext are used to + display the image: clip-mask, clip-x, clip-y, function, + plane-mask, and subwindow-mode. +

+ The calling program is responsible for handling the byte-order + and bit-order required by the server for the drawable + 's display (see + display-byte-order and display-image-lsb-first-p). +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/c.html +++ cmucl-20a-20090928/own-work/clx/clxman/c.html @@ -0,0 +1,179 @@ + + + + + + c + + + + + + + + + + Next Prev Up +
+

c

+ +
+
+ callback +
+ A function that represents a connection between a contact and the + rest of an application program. A contact calls a callback function + in order to report the results of the user interface component that + it represents. +
+ children +
+ First-level subwindows of a window. +
+ class event +
+ Event translations that belong to all instances of a contact class. A + class event translations translation is created by the + defevent macro. +
+ class resources +
+ Resources defined for each instance of a contact class. Also see + constraint resources. +
+ click +
+ A + :button-press event followed immediately by a + :button-release event for the same button, with no + intervening change in pointer position or modifier key state. +
+ client +
+ An application program connects to the window system server by some + interprocess communication (IPC) path, such as a TCP connection or a + shared memory buffer. This program is referred to as a client + of the window system server. More precisely, the client is the IPC + path itself. A program with multiple paths open to the server is + viewed as multiple clients by the protocol. Resource lifetimes are + controlled by connection lifetimes, not by program lifetimes. +
+ clipping regions +
+ In a graphics context, a bitmap or list of rectangles can be + specified to restrict output to a particular region of the window. + The image defined by the bitmap or rectangles is called a clipping + region. +
+ colormap +
+ A set of entries defining color values. The colormap associated with + a window is used to display the contents of the window. Each pixel + value indexes the colormap to produce RGB values that drive the guns + of a monitor. Depending on hardware limitations, one or more + colormaps can be installed at one time, such that windows associated + with those maps display with correct colors. +
+ composite +
+ A subclass of contact representing contacts that are the + parents of other contacts. A composite provides geometry management + and input focus management services for the contacts that are its + children. +
+ complete resource class +
+ A list of symbols containing the class of the contact, the class of + the contact's parent (and so on), and the class of the + contact-display to which the contact belongs. The complete + resource class is one of the two items used as a key by a CLUE + application in order to access a contact resource value in a resource + database. +
+ complete resource name +
+ A list of symbols containing the name of the contact, the + name of the contact's parent (and so on), and the name + of the contact-display to which the contact belongs. The + complete resource name is one of the two items used as a key by a + CLUE application in order to access a contact resource value in a + resource database. +
+ connection +
+ The IPC path between the server and client program. A client program + typically has one connection to the server over which requests and + events are sent. +
+ constraint resources +
+ Resources defined for each child belonging to a member of a composite + class. Constraint resources are typically used to control the + parent's geometry management policy. Also see class resources. +
+ contact +
+ The basic CLUE object for programming a user interface. +
+ contact-display +
+ The CLUE object type that represents a connection to an X server and + that supports an event loop for application input. +
+ contact initialization +
+ The process of collecting initial values for all contact attributes. + No server resources (windows and so on) are actually allocated until + contact realization. +
+ contact realization +
+ The process of allocating contact resources. This process completes + contact creation. +
+ containment +
+ A window contains the pointer if the window is viewable and the hot + spot of the cursor is within a visible region of the window or a + visible region of one of its inferiors. The border of the window is + included as part of the window for containment. The pointer is in a + window if the window contains the pointer but no inferior contains + the pointer. +
+ content +
+ The single child of a shell. The basic geometry management policy + implemented by the shell class constrains a shell and its + content to have the same width and height; size changes to one are + automatically applied to the other. +
+ coordinate system +
+ The coordinate system has x horizontal and y vertical, with the + origin [0, 0] at the upper left. Coordinates are discrete and are in + terms of pixels. Each window and pixmap has its own coordinate + system. For a window, the origin is at the inside upper left, inside + the border. +
+ cursor +
+ The visible shape of the pointer on a screen. It consists of a + hot-spot, a source bitmap, a shape bitmap, and a pair of colors. The + cursor defined for a window controls the visible appearance when the + pointer is in that window. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_Introduction_to_CLX.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_Introduction_to_CLX.html @@ -0,0 +1,50 @@ + + + + + + 1 Introduction to CLX + + + + + + + + + + Next Prev + Up +
+

1 Introduction to CLX +

+ +
+ +
+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_8_Grabbing_the_Pointer.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_8_Grabbing_the_Pointer.html @@ -0,0 +1,285 @@ + + + + + + 12.8 Grabbing the Pointer + + + + + + + + + + Next Prev Up +
+

12.8 Grabbing the Pointer +

+ +

+ CLX provides the + grab-pointer and ungrab-pointer + functions for grabbing and releasing pointer control. +

+
+ + + +
grab-pointer + window event-mask + &key :owner-p :sync-pointer-p :sync-keyboard-p + :confine-to :cursor :time + Function +
+ + +
      + +
+
+ window +
+ The window + grabbing the pointer. +
+ event-mask +
+ A + pointer-event-mask. +
+ :owner-p +
+ If true, all client windows receive pointer events normally. +
+ :sync-pointer-p +
+ Indicates whether the pointer is in synchronous or + asynchronous mode. +
+ :sync-keyboard-p +
+ Indicates whether the keyboard is in synchronous or + asynchronous mode. +
+ :confine-to +
+ A window to + which the pointer is confined. +
+ :cursor +
+ A cursor. +
+ :time +
+ A timestamp + . A nil value means the current server time is used. +
+

+ Actively grabs control of the pointer. Further pointer events + are only reported to the grabbing client. The request overrides + any active pointer grab by this client. +

+ If :owner-p is nil, all generated pointer events + are reported with respect to window, and are only + reported if selected by event-mask. If :owner-p + is true, and if a generated pointer event would normally be + reported to this client, it is reported normally; otherwise the + event is reported with respect to the window, and is + only reported if selected by event-mask. For either + value of :owner-p, unreported events are simply + discarded. +

+ If :sync-pointer-p is nil, pointer event + processing continues normally (asynchronously); if the pointer + is currently frozen by this client, then processing of pointer + events is resumed. If :sync-pointer-p is true + (indicating a synchronous action), the pointer (as seen via the + protocol) appears to freeze, and no further pointer events are + generated by the server until the grabbing client issues a + releasing + allow-events request. Actual pointer changes are not + lost while the pointer is frozen; they are simply queued for + later processing. +

+ If :sync-keyboard-p is nil, keyboard event + processing is unaffected by activation of the grab. If + :sync-keyboard-p is true, the keyboard (as seen via the + protocol) appears to freeze, and no further keyboard events are + generated by the server until the grabbing client issues a + releasing + allow-events request. Actual keyboard changes are not + lost while the keyboard is frozen; they are simply queued for + later processing. +

+ If :cursor is specified, it is displayed regardless of + what window the pointer is in. Otherwise, the normal cursor for + the window is displayed. +

+ If a :confine-to window is specified, the pointer is + restricted to stay within that window. The :confine-to + window does not need to have any relationship to the window + . If the pointer is not initially in the :confine-to + window, it is warped automatically to the closest edge (with + :enter/:leave-events generated normally) just before + the grab activates. If the :confine-to window is + subsequently reconfigured, the pointer is warped automatically + as necessary to keep it contained in the window. +

+ + grab-pointer generates + :enter-notify and + :leave-notify events. + grab-pointer can fail with a status of: +

    +
  • + :already-grabbed if the pointer is actively grabbed by + some other client +
  • + :frozen if the pointer is frozen by an active grab of + another client +
  • + :not-viewable if the window or the + :confine-to window is not viewable, or if the + :confine-to window lies completely outside the boundaries + of the root window. +
  • + :invalid-time if the specified time is earlier than + the last-pointer-grab time or later than the current server + time. Otherwise, the last-pointer-grab time is set to the + specified time, with current-time replaced by the current + server time, and a value of :success is returned by + grab-pointer. +
+ +
+
+ grab-status +
+ One of :already-grabbed, :frozen, + :invalid-time, :not-viewable, or :success. +
+
+
+ +
+
+ + + +
ungrab-pointer + display &key + :time + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :time +
+ A timestamp + . +
+

+ Releases the pointer if this client has it actively grabbed + (from either + grab-pointer, grab-button + , or from a normal button press), and releases any + queued events. The request has no effect if the specified + :time is earlier than the last-pointer-grab time or is + later than the current server time. An ungrabpointer is + performed automatically if the event window or :confine-to + window for an active pointer grab becomes not viewable. +

+ This request generates + :enter-notify and + :leave-notify events. +

+
+ +
+
+ + + +
change-active-pointer-grab + display event-mask + &optional cursor time + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ event-mask +
+ A + pointer-event-mask. +
+ cursor +
+ A cursor or nil. +
+ time +
+ A timestamp + . +
+

+ Changes the specified dynamic parameters if the pointer is + actively grabbed by the client and the specified time is + no earlier than the last-pointer-grab time and no later than + the current server time. The interpretation of event-mask + and cursor are as in + grab-pointer. change-active-pointer-grab has no effect on the + passive parameters of a grab-button + . +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_5_Drawing_Rectangles.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_5_Drawing_Rectangles.html @@ -0,0 +1,145 @@ + + + + + + 6.5 Drawing Rectangles + + + + + + + + + + Next + Prev Up +
+

6.5 Drawing Rectangles +

+ +

+ The + draw-rectangle and draw-rectangles + functions draw hollow or filled outlines of the specified + rectangle or rectangles as if a five-point polyline were specified for + each rectangle, as follows: +

+ [x,y,] [x+width,y] [x+width,y+height] [x,y+height] [x,y] +

+ draw-rectangle + and + draw-rectangles use the following graphics context components: + background, function, plane-mask, foreground, subwindow-mode, + cap-style, clip-x, clip-y, clip-ordering, clip-region and clip-mask, + dash-list, dash-offset, fill-style, join-style, line-width, line-style, + stipple, tile, ts-x-origin, and ts-y-origin. +

+
+ + + +
draw-rectangle + drawable gcontext x y + width height &optional fill-p + Function +
+ + +
      + +
+
+ drawable +
+ The destination + drawable. +
+ gcontext +
+ The graphics context for drawing the rectangle. +
+ x, y +
+ The x and y coordinates that define the upper left corner of + the rectangle. The coordinates are relative to the + destination origin. Type is int16. +
+ width, height +
+ Specifies the width and height that define the outline of the + rectangle. Type is + card16. +
+ fill-p +
+ Specifies whether the rectangle is filled or not. Type boolean. +
+

+ Draws a rectangle defined by the x, y, width + , and height arguments. +

+
+ +
+
+ + + +
draw-rectangles + drawable gcontext + rectangles &optional fill-p + Function +
+ + +
      + +
+
+ drawable +
+ The destination + drawable. +
+ gcontext +
+ The graphics context. +
+ rectangles +
+ A list specifying the upper left corner x and y, width and + height of the rectangles. Type is rect-seq. +
+ fill-p +
+ Specified if the rectangles are filled or not. Type is boolean. +
+

+ Draws the rectangles in the order listed in rectangles. + For the specified rectangle or rectangles, no + pixel is drawn more than once. The x and y coordinates of each + rectangle are relative to the destination origin and define the + upper left corner of the rectangle. If rectangles intersect, + the intersecting pixels are drawn multiple times. +

+
+ +
+ Next + Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/f.html +++ cmucl-20a-20090928/own-work/clx/clxman/f.html @@ -0,0 +1,47 @@ + + + + + + f + + + + + + + + + + Next Prev Up +
+

f

+ +
+
+ focus window +
+ Another term for the input focus. +
+ font +
+ A matrix of glyphs (typically characters). The protocol does no + translation or interpretation of character sets. The client simply + indicates values used to index the glyph array. A font contains + additional metric information to determine inter-glyph and inter-line + spacing. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_e.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_e.html @@ -0,0 +1,59 @@ + + + + + + E... + + + + + + + + + + Next Prev Up +
+

E...

+ + + +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_6_Structure_Control_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_6_Structure_Control_Events.html @@ -0,0 +1,336 @@ + + + + + + 12.12.6 Structure Control Events + + + + + + + + + + Next Prev Up +
+

12.12.6 Structure Control + Events

+ +

+ The following paragraphs describe events used to redirect client + requests that reconfigure, restack, or map a window. Structure control + events are typically used only by window managers and not by ordinary + client applications. Structure control events report redirected + requests, allowing a window manager to modify the requests before they + are actually performed. However, if the override-redirect attribute of + a window is :on, then no requests are redirected and no + structure control events are generated. +

+
+ + + +
:circulate-request + + Event Type +
+ + +
      + +

+ The :circulate-request event is generated when a client + application calls + circulate-window-up or + circulate-window-down with a window that has the + override-redirect attribute :off. The window + argument specifies the window to be restacked, and place + specifies what the new position in the stacking order should be + (either :top or :bottom). +

+
+ Selected by: +
+ :substructure-redirect on parent. +
+ +
+
+ parent, event-window +
+ Type window. + The window receiving the event. The receiving client must + have selected :substructure-redirect on this window. +
+ window +
+ Type window. + The window to be restacked. +
+ place +
+ Type (member :top :bottom). The new stacking priority + requested for window. +
+
+
+ +
+
+ + + +
:colormap-notify + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :colormap-change. +
+ +

+ The + :colormap-notify event is generated with new-p + t when the colormap associated with a window + is changed, installed, or uninstalled. +

+
+ window, event-window +
+ Type window. + The window receiving the event. +
+ colormap +
+ Type (or null colormap). The colormap attribute of the + window. +
+ new-p +
+ Type boolean + . If new-p is true, then the window's + colormap attribute has changed to the given colormap. + Otherwise, the window's colormap attribute has + not, but the colormap has been installed or + uninstalled. +
+ installed-p +
+ Type boolean + . If installed-p is true, then the colormap is + currently installed. +
+
+
+ +
+
+ + + +
:configure-request + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :substructure-redirect on parent. +
+ +

+ The :configure-request event is generated when a client + program sets the x, y, width, heigh + t, border-width or stacking priority attributes of a + window that has the override-redirect attribute :off. +

+
+ parent, event-window +
+ Type window. + The window receiving the event. The receiving client must + have selected :substructure-redirect on this window. +
+ window +
+ Type window. + The window to be reconfigured. +
+ x +
+ Type int16. + x and y specify the requested upper-left corner + position of the window relative to the parent. If + either x or y is not specified in the + value-mask, then it is set to the current window position. +
+ y +
+ Type int16. + x and y specify the requested upper-left corner + position of the window relative to the parent. + If either x or y is not specified in the + value-mask, then it is set to the current window position. +
+ width, height +
+ Type card16. + width and height specify the requested size of + the window interior. If either width or + height is not specified in the value-mask, then it + is set to the current window size. +
+ border-width +
+ Type card16 + The requested window border width. If border-width + is not specified in the value-mask, then it is + set to the current window border-width. +
+ stack-mode +
+ Type (member :above :below :top-if :bottom-if + :opposite). stack-mode and above-sibling + specify the requested stacking priority of the window. + If stack-mode is not specified in the value-mask + , then it is set to :above. +
+ above-sibling +
+ Type (or null window). stack-mode and + above-sibling specify the requested stacking priority of + the window. If above-sibling is not specified + in the value-mask, then it is set to nil. +
+ value-mask +
+ Type mask16. + Specifies the changed window attributes contained in + the redirected client request. Each 1 bit specifies that the + corresponding attribute was changed. +
+
+
+ +
+
+ + + +
:map-request + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :substructure-redirect on parent. +
+ +

+ The :map-request event is generated when a client + application maps a window that has the override-redirect + attribute :off. +

+
+ parent, event-window +
+ Type window. + The window receiving the event. The receiving client must + have selected :substructure-redirect on this window. +
+ window +
+ Type window. + The window to be mapped. +
+
+
+ +
+
+ + + +
:resize-request + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :resize-redirect. +
+ +

+ The :resize-request event is generated when a client + program sets the width or height attributes of a + window that has the override-redirect attribute :off + . +

+
+ window, event-window +
+ Type window. + The window to be resized. +
+ width, height +
+ Type card16. + width and height specify the requested size of + the window interior. If either width or + height was unchanged in the client request, then it is + set to the current window size. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_2_Input_Focus_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_2_Input_Focus_Events.html @@ -0,0 +1,349 @@ + + + + + + 12.12.2 Input Focus Events + + + + + + + + + + Next Prev Up +
+

12.12.2 Input Focus Events +

+ +

+ The input focus events are :focus-in + and :focus-out + . +

+
+ + + +
:focus-in, :focus-out + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :focus-change. +
+ +

+ :focus-in + and :focus-out + events are generated when the input focus changes. All + + :focus-out events caused by a window :unmap are + generated after any + :unmap-notify event, but the ordering of :focus-out + with respect to generated + :enter-notify, + :leave-notify, + :visibility-notify, and :expose events is not + constrained. +

+
+ window, event-window +
+ Type window. + For + :focus-in, the new input focus window. For + :focus-out, the previous input focus window. +
+ mode +
+ Type (member :normal :while-grabbed :grab :ungrab). + Events generated by + set-input-focus when the keyboard is not grabbed have + mode :normal. Events generated by + set-input-focus when the keyboard is grabbed have + mode :while-grabbed. Events generated when a keyboard + grab activates have mode :grab, and events generated + when a keyboard grab deactivates have mode :ungrab. +
+ kind +
+ Type (member :ancestor :virtual :inferior :nonlinear + :nonlinear-virtual :pointer :pointer-root :none). When + the focus moves from window A to window B, and A is an + inferior of B, with the pointer in window P: +
    +
  • + + :focus-out with kind :ancestor is + generated on A +
  • + + :focus-out with kind :virtual is + generated on each window between A and B exclusive (in + that order) +
  • + + :focus-in with kind :inferior is + generated on B +
  • + If P is an inferior of B, but P is not A or an inferior + of A or an ancestor of A, + :focus-in with kind :pointer is + generated on each window below B down to and including P + (in order) +
+ +

+ When the focus moves from window A to window B, and B is an + inferior of A, with the pointer in window P: +

    +
  • + If P is an inferior of A, but P is not A or an inferior + of B or an ancestor of B, + :focus-out with kind :pointer is + generated on each window from P up to but not including A + (in order) +
  • + + :focus-out with kind :inferior is + generated on A +
  • + + :focus-in with kind :virtual is + generated on each window between A and B exclusive (in + that order) +
  • + + :focus-in with kind :ancestor is + generated on B +
+ +

+ When the focus moves from window A to window B, with window + C being their least common ancestor, and with the pointer + in window P: +

    +
  • + If P is an inferior of A, + :focus-out with kind :pointer is + generated on each window from P up to but not including A + (in order) +
  • + + :focus-out with kind :nonlinear is + generated on A +
  • + + :focus-out with kind :nonlinear-virtual + is generated on each window between A and C + exclusive (in that order) +
  • + + :focus-in with kind :nonlinear-virtual + is generated on each window between C and B + exclusive (in that order) +
  • + :focus-in with kind :nonlinear is generated + on B +
  • + If P is an inferior of B, + :focus-in with kind :pointer is + generated on each window below B down to and including P + (in order) +
+ +

+ When the focus moves from window A to window B, on + different screens, with the pointer in window P: +

    +
  • + If P is an inferior of A, + :focus-out with kind :pointer is + generated on each window from P up to but not including A + (in order) +
  • + + :focus-out with kind :nonlinear is + generated on A +
  • + If A is not a root window, + :focus-out with kind :nonlinear-virtual + is generated on each window above A up to and + including its root (in order) +
  • + If B is not a root window, + :focus-in with kind :nonlinear-virtual + is generated on each window from B's root down + to but not including B (in order) +
  • + + :focus-in with kind :nonlinear is + generated on B +
  • + If P is an inferior of B, + :focus-in with kind :pointer is + generated on each window below B down to and including P + (in order) +
+ +

+ When the focus moves from window A to :pointer-root + (or :none), with the pointer in window P: +

    +
  • + If P is an inferior of A, + :focus-out with kind :pointer is + generated on each window from P up to but not including A + (in order) +
  • + + :focus-out with kind :nonlinear is + generated on A +
  • + If A is not a root window, + :focus-out with kind :nonlinear-virtual + is generated on each window above A up to and + including its root (in order) +
  • + + :focus-in with kind :pointer-root + (or :none) is generated on all root windows +
  • + If the new focus is :pointer-root, + :focus-in with kind :pointer is + generated on each window from P's root down to and + including P (in order) +
+ +

+ When the focus moves from :pointer-root (or :none + ) to window A, with the pointer in window P: +

    +
  • + If the old focus is :pointer-root, + :focus-out with kind :pointer is + generated on each window from P up to and including + P's root (in order) +
  • + + :focus-out with kind :pointer-root + (or :none) is generated on all root windows +
  • + If A is not a root window, + :focus-in with kind :nonlinear-virtual + is generated on each window from A's root down + to but not including A (in order) +
  • + + :focus-in with kind :nonlinear is + generated on A +
  • + If P is an inferior of A, + :focus-in with kind :pointer is + generated on each window below A down to and including P + (in order) +
+ +

+ When the focus moves from :pointer-root to :none + (or vice versa), with the pointer in window P: +

    +
  • + If the old focus is :pointer-root, + :focus-out with kind :pointer is + generated on each window from P up to and including + P's root (in order) +
  • + + :focus-out with kind :pointer-root + (or :none) is generated on all root windows +
  • + + :focus-in with kind :none (or + :pointer-root) is generated on all root windows +
  • + If the new focus is :pointer-root, + :focus-in with kind :pointer is + generated on each window from P's root down to and + including P (in order) +
+
+ +

+ When a keyboard grab activates (but before generating any + actual + :key-press event that activates the grab), with G + the grab-window for the grab and F the current + focus, then + :focus-in and :focus-out + events with mode :grab are generated (as for + :normal above) as if the focus were to change from F + to G. +

+ When a keyboard grab deactivates (but after generating any + actual :key-release event that deactivates the grab), with + G the grab-window for the grab and F the + current focus, then :focus-in + and :focus-out + events with mode :ungrab are generated (as for + :normal above) as if the focus were to change from G + to F. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/g.html +++ cmucl-20a-20090928/own-work/clx/clxman/g.html @@ -0,0 +1,71 @@ + + + + + + g + + + + + + + + + + Next Prev Up +
+

g

+ +
+
+ geometry management +
+ The process whereby a composite controls the geometrical properties + of its child contacts; the composite is referred to as the geometry + manager. +
+ glyph +
+ An image, typically of a character, in a font. +
+ grab +
+ Keyboard keys, the keyboard, pointer buttons, the pointer, and the + server can be grabbed for exclusive use by a client. In + general, these facilities are not intended to be used by normal + applications but are intended for various input and window managers + to implement various styles of user interfaces. +
+ gcontext +
+ Shorthand for graphics context. +
+ graphics context +
+ Various information for graphics output is stored in a graphics + context (or gcontext), such as foreground pixel, background + pixel, line width, clipping region, and so forth. A graphics context + can only be used with drawables that have the same root and the same + depth as the graphics context. +
+ gray scale +
+ A degenerate case of pseudo color, in which the red, green, and blue + values in any given colormap entry are equal, thus producing shades + of gray. The gray values can be changed dynamically. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/z.html +++ cmucl-20a-20090928/own-work/clx/clxman/z.html @@ -0,0 +1,40 @@ + + + + + + z + + + + + + + + + + Next Prev Up +
+

z

+ +
+
+ Z Format +
+ The data for a pixmap is said to be in Z Format if it is + organized as a set of pixel values in scanline order. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_8_Pixmaps.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_8_Pixmaps.html @@ -0,0 +1,277 @@ + + + + + + 4.8 Pixmaps + + + + + + + + + + Next Prev Up +
+

4.8 Pixmaps

+ +

+ A pixmap is a three-dimensional array of bits. A pixmap is + normally thought of as a two-dimensional array of pixels, where each + pixel can be a value from 0 to 2n-1, where n + is the depth of the pixmap. A pixmap can also be thought of as a stack + of n bitmaps. A bitmap is a single bit pixmap of depth 1. + CLX provides functions to: +

    +
  • + Create or free a pixmap +
  • + Test if an object is a pixmap +
  • + Test if two pixmap objects are equal +
  • + Return the pixmap resource ID from a pixmap object +
+ +

+ Note that pixmaps can only be used on the screen where they were + created. Pixmaps are off-screen server resources that are used for a + number of operations. These include defining patterns for cursors or as + the source for certain raster operations. +

+
+ + + +
create-pixmap + &key :width + :height :depth :drawable + Function +
+ + +
      + +
+
+ :width, :height +
+ The nonzero width and height (type card16). +
+ :depth +
+ The depth (type card8 + ) of the pixmap. +
+ :drawable +
+ A drawable + which determines the screen where the pixmap will be used. +
+

+ Creates a pixmap of the specified :width, :height + , and :depth. It is valid to pass a window whose class + is :input-only as the :drawable argument. The + :width and :height arguments must be nonzero. The + :depth must be supported by the screen of the specified + :drawable. +

+
+ pixmap +
+ Type pixmap. +
+
+
+ +
+
+ + + +
free-pixmap + pixmap + Function +
+ + +
      + +
+
+ pixmap +
+ A pixmap. +
+

+ Allows the X server to free the pixmap storage when no other + server resources reference it. The pixmap should never be + referenced again. +

+
+ +
+
+ + + +
pixmap-display + pixmap + Function +
+ + +
      + +
+
+ pixmap +
+ A pixmap. +
+

+ Returns the display + object associated with the specified pixmap. +

+
+ display +
+ Type display. +
+
+
+ +
+
+ + + +
pixmap-equal + pixmap-1 pixmap-2 + Function +
+ + +
      + +
+
+ pixmap-1, pixmap-2 +
+ A three-dimensional array of bits to be tested. +
+

+ Returns true if the two arguments refer to the same server + resource, and nil if they do not. +

+
+ +
+
+ + + +
pixmap-id + pixmap + Function +
+ + +
      + +
+
+ pixmap +
+ A pixmap. +
+

+ Returns the unique resource ID that has been assigned to the + specified pixmap. +

+
+ id +
+ Type resource-id + . +
+
+
+ +
+
+ + + +
pixmap-p + object + Function +
+ + +
      + +

+ Returns true if the argument is a pixmap object and + nil otherwise. +

+
+ pixmap +
+ Type boolean. +
+
+
+ +
+
+ + + +
pixmap-plist + pixmap + Function +
+ + +
      + +
+
+ pixmap +
+ A pixmap. +
+

+ Returns and (with setf) sets the property list for the + specified pixmap. This function provides a hook where + extensions can add data. +

+
+ plist +
+ A property list. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/b.html +++ cmucl-20a-20090928/own-work/clx/clxman/b.html @@ -0,0 +1,71 @@ + + + + + + b + + + + + + + + + + Next Prev Up +
+

b

+ +
+
+ backing store +
+ When a server maintains the contents of a window, the off-screen + saved pixels are known as a backing store. +
+ before action +
+ An action of a contact-display that is called when an event is + dispatched to a contact, but before any other contact input + processing is performed. +
+ bit gravity +
+ When a window is resized, the contents of the window are not + necessarily discarded. It is possible to request the server to + relocate the previous contents to some region of the window. This + attraction of window contents for some location of a window is known + as bit gravity. +
+ bitmap +
+ A pixmap of depth one. +
+ button grabbing +
+ Buttons on the pointer can be passively grabbed by a client. + When the button is pressed, the pointer is then actively grabbed by + the client. +
+ byte order +
+ For image (pixmap/bitmap) data, byte order is defined by the server, + and clients with different native byte ordering must swap bytes as + necessary. For all other parts of the protocol, the byte order is + defined by the client, and the server swaps bytes as necessary. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_1_Grabbing_the_Server.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_1_Grabbing_the_Server.html @@ -0,0 +1,127 @@ + + + + + + 14.1 Grabbing the Server + + + + + + + + + + Next Prev Up +
+

14.1 Grabbing the Server +

+ +

+ Certain cases may require that a client demand exclusive access to the + server, causing the processing for all other clients to be suspended. + Such exclusive access is referred to as grabbing the server. CLX + provides functions to grab and release exclusive access to the server. + These function should be used rarely and always with extreme caution, + since they have the potential to disrupt the entire window system for + all clients. +

+
+ + + +
grab-server + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Disables processing of requests and close-downs on all + connections other than the one on which this request arrived. +

+
+ +
+
+ + + +
ungrab-server + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Restarts processing of requests and close-downs on other + connections. +

+
+ +
+
+ + + +
with-server-grabbed + display &body + body + Macro +
+ + +
      + +
+
+ display +
+ A display. +
+ body +
+ The forms to execute while the server is grabbed. +
+

+ Grabs the display server only within the dynamic extent + of the body. + ungrab-server is automatically called upon exit from + the body. This macro provides the most reliable way for + CLX clients to grab the server. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_1_Introduction.html @@ -0,0 +1,105 @@ + + + + + + 5.1 Introduction + + + + + + + + + + Next Prev Up +
+

5.1 Introduction

+ +

+ Clients of the X Window System specify the visual attributes of + graphical output primitives by using graphics contexts. A + graphics context is a set of graphical attribute values such as + foreground color, font, line style, and so forth. Like a window, a + graphics context is another kind of X server resource which is created + and maintained at the request of a client program. The client program, + which may use several different graphics contexts at different times, + is responsible for specifying a graphics context to use with each + graphical output function. +

+ CLX represents a graphics context by an object of type gcontext and defines + functions to create, modify, and manipulate gcontext objects. By + default, CLX also records the contents of graphics contexts in a cache + associated with each display. This local caching of graphics contexts + has two important advantages: +

    +
  1. + Communication efficiency -- Changes to attribute values in a gcontext are first + made only in the local cache. Just before a gcontext is actually + used, CLX automatically sends any changes to the X server, batching + all changes into a single request. +
  2. + Inquiring gcontext + contents -- Accessor functions can be used to return the value of any + individual gcontext + component by reading the copy of the gcontext from the + cache. This kind of inquiry is not supported by the basic X protocol. + There is no way for a client program to request an X server to return + the contents of a gcontext + . +
+ +

+ Caching graphics contexts can result in a synchronization problem if + more than one client program modifies a graphics context. However, this + problem is unusual. Sharing a graphics context among several clients, + while possible, is not expected to be useful and is not very easy to + do. At any rate, a client program can choose to not cache a gcontext when it is + created. +

+ Each client program must determine its own policy for creating and + using graphics contexts. Depending on the display hardware and the + server implementation, creating a new graphics context can be more or + less expensive than modifying an existing one. In general, some amount + of graphics context information can be cached in the display hardware, + in which case modifying the hardware cache is faster than replacing it. + Typical display hardware can cache only a small number of graphics + contexts. Graphics output is fastest when only a few graphics contexts + are used without heavy modifications. +

+ This section explains the CLX functions used to: +

    +
  • + Create a graphics context +
  • + Return the contents of a graphics context +
  • + Change the contents of a graphics context +
  • + Copy a graphics context +
  • + Free a graphics context +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/p.html +++ cmucl-20a-20090928/own-work/clx/clxman/p.html @@ -0,0 +1,123 @@ + + + + + + p + + + + + + + + + + Next Prev Up +
+

p

+ +
+
+ padding +
+ Some padding bytes are inserted in the data stream to maintain + alignment of the protocol requests on natural boundaries. This + increases ease of portability to some machine architectures. +
+ parent window +
+ If C is a child of P, then P is the parent of C. +
+ passive grab +
+ Grabbing a key or button is a passive grab. The grab activates + when the key or button is actually pressed. +
+ pixel value +
+ An n-bit value, where n is the number of bit planes + used in (that is, the depth of) a particular window or pixmap. For a + window, a pixel value indexes a colormap to derive an actual color to + be displayed. +
+ pixmap +
+ A three dimensional array of bits. A pixmap is normally thought of as + a two dimensional array of pixels, where each pixel can be a value + from 0 to (2n)-1, where n is the depth (z + axis) of the pixmap. A pixmap can also be thought of as a stack of + n bitmaps. +
+ plane +
+ When a pixmap or window is thought of as a stack of bitmaps, each + bitmap is called a plane or bit plane. +
+ plane mask +
+ Graphics operations can be restricted to only affect a subset of bit + planes of a destination. A plane mask is a bit mask describing + which planes are to be modified, and it is stored in a graphics + context. +
+ pointer +
+ The pointing device attached to the cursor and tracked on the screens. +
+ pointer grabbing +
+ A client can actively grab control of the pointer, and button + and motion events will be sent to that client rather than the client + to which the events would normally have been sent. +
+ pointing device +
+ Typically a mouse or tablet, or some other device with effective + dimensional motion. There is only one visible cursor defined by the + core protocol, and it tracks whatever pointing device is attached as + the pointer. +
+ pop-up +
+ One of the uses of a top-level shell (for example, a menu that pops + up when a command button contact is activated). Setting the state + of a shell to :mapped is sometimes referred to as + mapping or popping up the shell. Setting the state + of a shell to :withdrawn or :iconic is sometimes + referred to as unmapping or popping down the shell. +
+ property +
+ Windows can have associated properties, consisting of a name, + a type, a data format, and some data. The protocol places no + interpretation on properties; they are intended as a general-purpose + naming mechanism for clients. For example, clients might share + information such as resize hints, program names, and icon formats + with a window manager via properties. +
+ property list +
+ The list of properties that have been defined for a window. +
+ pseudo color +
+ A class of colormap in which a pixel value indexes the colormap to + produce independent red, green, and blue values. That is, the + colormap is viewed as an array of triples (RGB values). The RGB + values can be changed dynamically. +
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_3_Drawing_Points.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_3_Drawing_Points.html @@ -0,0 +1,139 @@ + + + + + + 6.3 Drawing Points + + + + + + + + + + Next Prev Up +
+

6.3 Drawing Points

+ +

+ The draw-point + and draw-points + functions make use of the following graphics context components: + function, plane-mask, foreground, subwindow-mode, clip-x, clip-y, + clip-ordering, clip-region and clip-mask. +

+ The draw-point + function uses the foreground pixel and function components of the + graphics context to draw a single point into the specified drawable, + while draw-points + draws multiple points into the specified drawable. These functions + are not affected by the tile or stipple in the graphics context. +

+
+ + + +
draw-point + drawable gcontext x y + + Function +
+ + +
      + +
+
+ drawable +
+ The destination + drawable. +
+ gcontext +
+ The graphics context for drawing the point. +
+ x, y +
+ The x and y coordinates of the point drawn. + Type is int16. +
+

+ Combines the foreground pixel in the gcontext with the + pixel in the drawable specified by the x and y + coordinates. +

+
+ +
+
+ + + +
draw-points + drawable gcontext + points &optional relative-p + Function +
+ + +
      + +
+
+ drawable +
+ The destination + drawable. +
+ gcontext +
+ The graphics context for drawing the points. +
+ points +
+ A list of points to be drawn in the order listed. The first + point is always relative to the drawable's origin; + if relative-p, the rest of the points are drawn + relative to the previous point, else they are drawn relative + to the drawable's origin. Type is point-seq. +
+ relative-p +
+ Specifies the coordinate mode used for drawing the pixels + either relative to the origin or to the previous point. Type + boolean. +
+

+ Combines the foreground pixels in the graphics context with the + pixels at each point in the drawable. The points are + drawn in the order listed. +

+ draw-points + requires a mode argument, relative-p that indicates + whether the points are relative to the destination origin or to + the previous point. In either case, the first point is always + relative to the destination origin. The rest of the points are + relative either to the drawable's origin or to the + previous point, depending on the value of relative-p. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_2_1_Windows.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_2_1_Windows.html @@ -0,0 +1,72 @@ + + + + + + 1.2.1 Windows + + + + + + + + + + Next Prev Up +
+

1.2.1 Windows

+ +

+ The X Window System supports one or more screens containing overlapping + windows and subwindows. A screen is a physical monitor and + hardware, which can be either color or black and white. There can be + multiple screens per display workstation. A single server can provide + display services for any number of screens. A set of screens for a + single user with one keyboard and one mouse is called a display. +

+ All windows in an X server are arranged in a strict hierarchy. At the + top of the hierarchy are the root windows, which cover each of + the display screens. Each root window is either partially or completely + covered by child windows. All windows, except for root windows, have + parents. Any window can in turn have its own children. In this way, an + application program can create a window tree of arbitrary depth on each + screen. +

+ A child window can be larger than its parent. That is, part or all of + the child window can extend beyond the boundaries of the parent. + However, all output to a window is clipped by the boundaries of its + parent window. If several children of a window have overlapping + locations, one of the children is considered to be on top of/or raised + over the others, obscuring them. Window output to areas that are + covered by other windows is suppressed. +

+ A window has a border that is zero or more pixels in width and can be + any pattern (pixmap) or solid color. A window usually has a background + pattern that is drawn by the X server. Each window has its own + coordinate system. Child windows obscure their parents unless the child + windows have no background. Graphics operations in the parent window + are usually clipped by the children. +

+ X also provides objects called pixmaps for off-screen storage of + graphics. Single-plane pixmaps (that is, of depth 1) are sometimes + referred to as bitmaps. Both pixmaps and windows can be used + interchangeably in most graphics functions. Pixmaps are also used in + various graphics operations to define patterns, or tiles. + Windows and pixmaps together are referred to as drawables. + +


+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_2_1_Basic_Images.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_2_1_Basic_Images.html @@ -0,0 +1,362 @@ + + + + + + 7.2.1 Basic Images + + + + + + + + + + Next Prev Up + +
+

7.2.1 Basic Images

+ +

+ The following paragraphs describe the CLX functions that can be used to + access all types of image objects. +

+
+ + + +
image-blue-mask + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns (and with setf) changes the mask that + selects the pixel subfield for blue intensity values. The + mask is non-nil only for images for :direct-color + or :true-color visual types. +

+
+ mask +
+ Type pixel or + null. +
+
+
+ +
+
+ + + +
image-depth + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns the depth (that is, the number of bits per + pixel) for the image. +

+
+ depth +
+ Type card8. +
+
+
+ +
+
+ + + +
image-green-mask + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns (and with setf) changes the mask that selects + the pixel subfield for green intensity values. The mask is non- + nil only for images for :direct-color or + :true-color visual types. +

+
+ mask +
+ Type pixel or + null. +
+
+
+ +
+
+ + + +
image-height + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns the height of the image in pixels. +

+
+ height +
+ Type card16. +
+
+
+ +
+
+ + + +
image-name + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns and (with setf) changes the name string + optionally associated with the image. +

+
+ name +
+ Type stringable + or null. +
+
+
+ +
+
+ + + +
image-plist + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns and (with setf) changes the image + property list. The property list is a hook for added + application extensions. +

+
+ plist +
+ Type list. +
+
+
+ +
+
+ + + +
image-red-mask + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns (and with setf) changes the mask which + selects the pixel subfield for red intensity values. The mask + is non-nil only for images for :direct-color + or :true-color visual types. +

+
+ mask +
+ Type pixel or + null. +
+
+
+ +
+
+ + + +
image-width + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns the width of the image in pixels. +

+
+ width +
+ Type card16. +
+
+
+ +
+
+ + + +
image-x-hot + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns and (with setf) changes the x position of the + hot spot for an image used as a cursor glyph. The hot spot + position is specified relative to the upper-left origin of the + image. +

+
+ x-position +
+ Type card16 + or null. +
+
+
+ +
+
+ + + +
image-y-hot + image + Function +
+ + +
      + +
+
+ image +
+ An image object. +
+

+ Returns and (with setf) changes the y position of the + hot spot for an image used as a cursor glyph. The hot spot + position is specified relative to the upper-left origin of the + image. +

+
+ y-position +
+ Type card16 + or null. +
+
+
+ +
+ Next Prev Up + +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_7_Destroying_Windows.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_7_Destroying_Windows.html @@ -0,0 +1,109 @@ + + + + + + 4.7 Destroying Windows + + + + + + + + + + Next + Prev Up +
+

4.7 Destroying Windows +

+ +

+ CLX provides functions to destroy a window or destroy all children of a + window. Note that by default, windows are destroyed when a connection + is closed. For further information, see paragraph 2.4, Closing the + Display, and paragraph 12.4, Client Termination. +

+
+ + + +
destroy-window + window + Function +
+ + +
      + +
+
+ window +
+ A window. +
+

+ Destroys the specified window as well as all of its + inferiors. The windows should never again be referenced. If the + specified window is mapped, it is automatically + unmapped. The window and all of its inferiors are then + destroyed, and a + :destroy-notify event is generated for each window. The + ordering of the + :destroy-notify events is such that for any given + window being destroyed, + :destroy-notify is generated on the window's + inferiors before being generated on the window. The ordering + among siblings and across sub-hierarchies is not otherwise + constrained. If the window is a root window, no windows + are destroyed. Destroying a mapped window generates :exposure + events on other windows that the mapped window obscured. +

+
+ +
+
+ + + +
destroy-subwindows + window + Function +
+ + +
      + +
+
+ window +
+ A window. +
+

+ Destroys all inferiors of the specified window, in + bottom to top stacking order. The X server generates a + :destroy-notify event for each window. This is much + more efficient than deleting many windows individually. The + inferiors should never be referenced again. +

+
+ +
+ Next + Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_3_Graphics_Context_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_3_Graphics_Context_Attributes.html @@ -0,0 +1,1623 @@ + + + + + + 5.3 Graphics Context Attributes + + + + + + + + + + Next Prev Up +
+

5.3 Graphics Context Attributes +

+ +

+ The following paragraphs describe the CLX functions used to return or + change the attributes of a + gcontext. Functions that return the contents of a gcontext return nil + if the last value stored is unknown (for example, if the gcontext was not cached + or if the gcontext + was not created by the inquiring client). +

+
+ + + +
gcontext-arc-mode + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the arc-mode attribute + of the specified graphics context. +

+ The arc-mode attribute of a graphics context controls the kind + of filling, if any, to be done by the draw-arcs + function. A value of :chord specifies that arcs are + filled inward to the chord between the end points of the arc. :pie-slice specifies that arcs are filled inward to the + center point of the arc, creating a pie slice effect. +

+
+ arc-mode +
+ Either :chord or :pie-slice. +
+
+
+ +
+
+ + + +
gcontext-background + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the background attribute + of the specified graphics context. +

+ The background attribute specifies the pixel value drawn for + pixels that are not set in a bitmap and for pixels that are + cleared by a graphics operation, such as the gaps in dashed + lines. +

+
+ background +
+ Type card32. +
+
+
+ +
+
+ + + +
gcontext-cache-p + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the local cache mode for + the gcontext. If true, the state of the gcontext + is cached by CLX and changes to its attributes have no effect + unless the new value differs from its cached value. +

+
+ cache-p +
+ Type boolean. +
+
+
+ +
+
+ + + +
gcontext-cap-style + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the cap-style attribute + of the specified graphics context. +

+ The cap-style attribute of a graphics context defines how the + end points of a path are drawn. The possible values and their + interpretations are as follows: + + + + + + +
+ Cap-Style + + Interpretation +
:butt + Square at the end point (perpendicular to the slope of + the line) with no projection beyond. +
:not-last + Equivalent to :butt, except that for a line-width + of zero or one the final end point is not drawn. +
:projecting + Square at the end, but the path continues beyond the end + point for a distance equal to half the line-width. This is + equivalent to :butt for line-width zero or one. +
:round + A circular arc with the radius equal to 1/2 of the + line-width, centered on the end point. This is equivalent + to :butt for line-width zero or one. +
+ +

+ The following table describes what happens when the end points + of a line are identical. The effect depends on both the cap + style and line width. + + + + + + + + + +
+ Cap-Style + + Line-Width + + Effect +
:butt + thin + Device dependent, but the desired effect is that a single + pixel is drawn. +
:butt + wide + Nothing is drawn. +
:not-last + thin + Device dependent, but the desired effect is that nothing + is drawn. +
:projecting + thin + Same as :butt with thin line-width. +
:projecting + wide + The closed path is a square, aligned with the coordinate + axes, centered at the end point, with sides equal to the + line-width. +
:round + wide + The closed path is a circle, centered at the end point, + with diameter equal to the line-width. +
:round + thin + Same as :butt with thin line-width. +
+ +

+
+ cap-style +
+ One of :butt, :not-last, :projecting, or + :round. +
+
+
+ +
+
+ + + +
gcontext-clip-mask + gcontext & + optional ordering + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+ ordering +
+ One of :unsorted, :y-sorted, :yx-banded, + :yx-sorted, or nil. +
+

+ Returns and (with setf) changes the clip-mask attribute + of the graphics context. +

+ When changing the clip-mask attribute, the new clip-mask can be + specified as a pixmap or a rect-seq or as + the values :none or nil. The ordering argument + can be specified only with setf when the new clip-mask + is a rect-seq. +

+ The clip-mask attribute of a graphics context affects all + graphics operations and is used to restrict output to the + destination drawable. The clip-mask does not clip the source of + a graphics operation. A value of :none for clip-mask + indicates that no clipping is to be done. +

+ If a pixmap is specified as the clip-mask, it must have depth + one and the same root as the specified graphics context. Pixels + where the clip-mask has a one bit are drawn. Pixels outside the + area covered by the clip-mask or where the clip-mask has a zero + bit are not drawn. +

+ If a sequence of rectangles is specified as the clip-mask, the + output is clipped to remain contained within the rectangles. + The rectangles should be non-intersecting, or the results of + graphics operations will be undefined. The rectangle + coordinates are interpreted relative to the clip origin. Note + that the sequence of rectangles can be empty, which effectively + disables output. This is the opposite of setting the clip-mask + to :none. +

+ If known by the client, the ordering of clip-mask rectangles + can be specified to provide faster operation by the server. A + value of :unsorted means the rectangles are in arbitrary + order. A value of :y-sorted means that the rectangles + are non-decreasing in their Y origin. A :yx-sorted value + is like :y-sorted with the additional constraint that + all rectangles with an equal Y origin are non-decreasing in + their X origin. A :yx-banded value additionally + constrains :yx-sorted by requiring that, for every + possible Y scan line, all rectangles that include that scan + line have an identical Y origins and Y extents. If incorrect + ordering is specified, the X server may generate an error, but + it is not required to do so. If no error is generated, the + results of the graphics operations are undefined. +

+
+ +
+
+ + + +
gcontext-clip-x + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the clip-x attribute of + the specified graphics context. +

+ The clip-x and clip-y attributes specify the origin for the + clip-mask, whether it is a pixmap or a sequence of rectangles. + These coordinates are interpreted relative to the origin of + whatever destination drawable is specified in a graphics + operation. +

+
+ clip-x +
+ Type int16. +
+
+
+ +
+
+ + + +
gcontext-clip-y + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the clip-y attribute of + the specified graphics context. +

+ The clip-x and clip-y attributes specify the origin for the + clip-mask, whether it is a pixmap or a sequence of rectangles. + These coordinates are interpreted relative to the origin of + whatever destination drawable is specified in a graphics + operation. +

+
+ clip-y +
+ Type int16. +
+
+
+ +
+
+ + + +
gcontext-dash-offset + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the dash-offset + attribute of the specified graphics context. +

+ The dash-offset attribute of a graphics context defines the + phase of the pattern contained in the dashes attribute. This + phase specifies how many elements (pixels) into the path the + pattern should actually begin in any single graphics operation. + Dashing is continuous through path elements combined with a + join-style, but is reset to the dash-offset each time a + cap-style is applied at a line end point. +

+
+ dash-offset +
+ Type card16. +
+
+
+ +
+
+ + + +
gcontext-dashes + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the dashes attribute of + the specified graphics context. The sequence must be non-empty + and the elements must be non-zero card8 values. +

+ The dashes attribute in a graphics context specifies the + pattern that is used for graphics operations which use the + dashed line styles. It is a non-nil sequence with each + element representing the length of a single dash or space. The + initial and alternating elements of the dashes are the even + dashes, while the others are the odd dashes. An odd length + sequence is equivalent to the same sequence concatenated with + itself to produce an even length sequence. All of the elements + of a dashes sequence must be non-zero. +

+ Specifying a single integer value, N, for the dashes + attribute is an abbreviated way of specifying a two element + sequence with both elements equal to the specified value [N + , N]. +

+ The unit of measure for dashes is the same as in the ordinary + coordinate system. Ideally, a dash length is measured along the + slope of the line, but server implementations are only required + to match this ideal for horizontal and vertical lines. +

+
+ dashes +
+ Type sequence or card8. +
+
+
+ +
+
+ + + +
gcontext-display + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the display + object associated with the specified gcontext. +

+
+ display +
+ Type display. +
+
+
+ +
+
+ + + +
gcontext-equal + gcontext-1 gcontext-2 + + Function +
+ + +
      + +
+
+ gcontext-1, gcontext-2 +
+ A gcontext. +
+

+ Returns true if the two arguments refer to the same server + resource, and nil if they do not. +

+
+ equal-p +
+ Type boolean. +
+
+
+ +
+
+ + + +
gcontext-exposures + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the exposures attribute + of the specified graphics context. +

+ The exposures attribute in a graphics context controls the + generation of + :graphics-exposure events for calls to the + copy-area and + copy-plane functions. If :on, + :graphics-exposure events will be reported when calling + the + copy-area and + copy-plane functions with this graphics context. + Otherwise, if :off, the events will not be reported. +

+
+ exposures +
+ Either :off or :on. +
+
+
+ +
+
+ + + +
gcontext-fill-rule + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the fill-rule attribute + of the specified graphics context. +

+ The fill-rule attribute in a graphics context specifies the + rule used to determine the interior of a filled area. It can be + specified as either :even-odd or :winding. +

+ The :even-odd rule defines a point to be inside if any + infinite ray starting at the point crosses the border an odd + number of times. Tangencies do not count as a crossing. +

+ The :winding rule defines a point to be inside if any + infinite ray starting at the point crosses an unequal number of + clockwise and counterclockwise directed border segments. A + clockwise directed border segment crosses the ray from left to + right as observed from the point. A counterclockwise segment + crosses the ray from right to left as observed from the point. + The case where a directed line segment is coincident with the + ray is uninteresting because you can simply choose a different + ray that is not coincident with a segment. +

+ For both :even-odd and :winding, a point is + infinitely small, and the border is an infinitely thin line. A + pixel is inside if the center point of the pixel is inside, and + the center point is not on the border. If the center point is + on the border, the pixel is inside if, and only if, the polygon + interior is immediately to its right (x increasing direction). + Pixels with centers along a horizontal edge are a special case + and are inside if, and only if, the polygon interior is + immediately below (y increasing direction). +

+
+ fill-rule +
+ Either :even-odd or :winding. +
+
+
+ +
+
+ + + +
gcontext-fill-style + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the fill-style attribute + of the specified graphics context. +

+ The fill-style attribute of a graphics context defines the + contents of the source for line, text, and fill graphics + operations. It determines whether the source image is drawn + with a solid color, a tile, or a stippled tile. The possible + values and their meanings are as follows: + + + + + + +
+ Fill-Style + + Meaning +
:opaque-stippled + Filled with a tile with the same width and height as + stipple, but with the background value used everywhere + stipple has a zero and the foreground pixel value used + everywhere stipple has a one. +
:solid + Filled with the foreground pixel value. +
:stippled + Filled with the foreground pixel value masked by stipple. +
:tiled + Filled with tile. +
+ +

+ When drawing lines with line-style :double-dash, the + filling of the odd dashes are controlled by the fill-style in + the following manner: + + + + + + +
+ Fill-Style + + Effect +
:opaque-stippled + Same as for even dashes. +
:solid + Filled with the background pixel value. +
:stippled + Filled with the background pixel value masked by stipple. +
:tiled + Filled the same as the even dashes. +
+ +

+
+ fill-style +
+ One of :opaque-stippled, :solid, :stippled + , or :tiled. +
+
+
+ +
+
+ + + +
gcontext-font + gcontext & + optional metrics-p + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+ metrics-p +
+ Specifies whether a pseudo-font is returned when the real + font stored in the graphics context is not known. The default + is nil, which means do not return a pseudo-font. +
+

+ Returns and (with setf) changes the font + attribute of the specified graphics context. If the stored font + is known, it is returned. If it is not known and the + metrics-p argument is nil, then nil is + returned. If the font is not known and metrics-p is + true, then a pseudo-font is constructed and returned. For a + constructed pseudo-font, full metric and property information + can be obtained, but it does not have a name or a resource ID, + and attempts to use it where a resource ID is required results + in an invalid-font error. +

+ The font attribute in a graphics context defines the default + text font used in text drawing operations. When setting the + value of the font attribute, either a font object or a + font name can be used. If a font name is passed, open-font + is call automatically to get the font object. +

+
+ font +
+ Type font or + null. +
+
+
+ +
+
+ + + +
gcontext-foreground + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the foreground attribute + of the specified graphics context. +

+ The foreground attribute of a graphics context specifies the + pixel value drawn for set bits in a bitmap and for bits set by + a graphics operation. +

+
+ foreground +
+ Type card32. +
+
+
+ +
+
+ + + +
gcontext-function + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the function of the specified graphics context. +

+ In all graphic operations, given a source pixel and a + corresponding destination pixel, the resulting pixel drawn is + computed bitwise on the bits of the source and destination + pixels. That is, a logical operation is used to combine each + bit plane of corresponding source and destination pixels. The + graphics context function attribute specifies the logical + operation used via one of the 16 operation codes defined by + Common Lisp for the boole function. +

+ The following table shows each of the logical operation codes + that can be given by the function attribute. For each operation + code, its result is shown as a logical function of a source + pixel S and a destination pixel D. + + + + + + + + + + + + + + + + + + +
+ Symbol + + Result +
boole-1 + S +
boole-2 + D +
boole-andc1 + (logandc1 S D) +
boole-andc2 + (logandc2 S D) +
boole-and + (logand S D) +
boole-c1 + (lognot S) +
boole-c2 + (lognot D) +
boole-clr + 0 +
boole-eqv + (logeqv S D) +
boole-ior + (logior S D) +
boole-nand + (lognand S D) +
boole-nor + (lognor S D) +
boole-orc1 + (logorc1 S D) +
boole-orc2 + (logorc2 S D) +
boole-set + 1 +
boole-xor + (logxor S D) +
+ +

+
+ function +
+ Type + boole-constant. +
+
+
+ +
+
+ + + +
gcontext-id + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the unique ID that has been assigned to the specified + graphics context. +

+
+ id +
+ Type resource-id + . +
+
+
+ +
+
+ + + +
gcontext-join-style + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the join-style attribute + of the specified graphics context. +

+ The join-style attribute of a graphics context defines how the + segment intersections are drawn for wide polylines. The + possible values and their interpretations are as follows: + + + + + +
+ Join-Style + + Interpretation +
:bevel + + Uses :butt end point styles with the triangular + notch filled. +
:miter + + The outer edges of two lines extend to meet at an angle. +
:round + + A circular arc with diameter equal to the line-width, + centered on the join point. +
+ +

+ When the end points of a polyline segment are identical, the + effect is as if the segment was removed from the polyline. When + a polyline is a single point, the effect is the same as when + the cap-style is applied at both end points. +

+
+ join-style +
+ One of :bevel, :miter, or :round. +
+
+
+ +
+
+ + + +
gcontext-line-style + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the line-style attribute + of the specified graphics context. +

+ The line-style attribute of a graphics context specifies how + (which sections of) lines are drawn for a path in graphics + operations. The possible values and their meanings are as + follows: + + + + + +
+ Line-Style + + Meaning +
:solid + The full path is drawn. +
:double-dash + The full path is drawn, but the even dashes are filled + differently than the odd dashes. The :butt style is + used where even and odd dashes meet (see paragraph 5.4.7, + Fill-Rule and Fill-Style). +
:on-off-dash + Only the even dashes are drawn, with cap-style applied to + all internal ends of the individual dashes, except + :not-last is treated as :butt. +
+ +

+
+ line-style +
+ One of :dash, :double-dash, or :solid. +
+
+
+ +
+
+ + + +
gcontext-line-width + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the line-width of the specified graphics context. +

+ The line-width is measured in pixels and can be greater than or + equal to one (wide line) or can be the special value zero (thin + line). +

+ Wide lines are drawn centered on the path described by the + graphics operation. Unless otherwise specified by the + join-style or cap-style, the bounding box of a wide line with + end points [x1, y1], [x2, y2], and width w is a rectangle with + vertices at the following real coordinates: +

+ [x1 - (w*sin/2), y1 + (w*cos/2)], [x1+ (w*sin + /2), y1 - (w*cos/2)], +
+ [x2 - (w*sin/2), y2 + (w*cos/2)], [x2 + (w*sin + /2), y2 - (w*cos/2)] +
+

+ where sin is the sine of the angle of the line and cos + is the cosine of the angle of the line. A pixel is part of + the line and, hence, is drawn if the center of the pixel is + fully inside the bounding box (which is viewed as having + infinitely thin edges). If the center of the pixel is exactly + on the bounding box, it is part of the line if, and only if, + the interior is immediately to its right (x increasing + direction). Pixels with centers on a horizontal edge are a + special case and are part of the line if, and only if, the + interior is immediately below (y increasing direction). +

+ Thin lines (zero line-width) are always one pixel wide lines + drawn using an unspecified, device dependent algorithm. There + are only two constraints on this algorithm. +

    +
  1. + If a line is drawn unclipped from [x1,y1] to [x2,y2] and if + another line is drawn unclipped from [x1+dx,y1+dy] to + [x2+dx,y2+dy], a point [x,y] is touched by drawing the first + line if, and only if ,the point [x+dx,y+dy] is touched by + drawing the second line. +
  2. + The effective set of points comprising a line cannot be + affected by clipping. That is, a point is touched in a + clipped line if, and only if, the point lies inside the + clipping region and the point would be touched by the line + when drawn unclipped. +
+ +

+ A wide line drawn from [x1,y1] to [x2,y2] always draws the same + pixels as a wide line drawn from [x2,y2] to [x1,y1], not + counting cap-style and join-style. Implementors are encouraged + to make this property true for thin lines, but it is not + required. A line-width of zero may differ from a line-width of + one in which pixels are drawn. This permits the use of many + manufacturer's line drawing hardware, which may run much + faster than the more precisely specified wide lines. +

+ In general, drawing a thin line is faster than drawing a wide + line of width one. However, because of their different drawing + algorithms, thin lines may not mix well, aesthetically + speaking, with wide lines. If it is desirable to obtain precise + and uniform results across all displays, a client should always + use a line-width of one, rather than a line-width of zero. +

+
+ line-width +
+ Type card16. +
+
+
+ +
+
+ + + +
gcontext-p + gcontext + Function +
+ + +
      + +

+ Returns non-nil if the argument is a graphics context + and nil otherwise. +

+
+ gcontext +
+ Type boolean. +
+
+
+ +
+
+ + + +
gcontext-plane-mask + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the plane-mask of the specified graphics context. +

+ The plane-mask attribute of a graphics context specifies which + bit planes of the destination drawable are modified during a + graphic operation. The plane-mask is a pixel value in which a 1 + bit means that the corresponding bit plane will be modified and + a 0 bit means that the corresponding bit plane will not be + affected during a graphic operations. Thus, the actual result + of a graphic operation depends on both the function and + plane-mask attributes of the graphics context and is given by + the following expression: +

+(logior (logand
+            (boole function source destination)
+            plane-mask)
+
+          (logandc2
+            destination
+             plane-mask))
+                    
+ +
+
+ plane-mask +
+ Type card32. +
+
+
+ +
+
+ + + +
gcontext-plist + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) sets the property list for the + specified gcontext. This function provides a hook where + extensions can add data. +

+
+ gcontext-p +
+ Type list. +
+
+
+ +
+
+ + + +
gcontext-stipple + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the stipple of the specified graphics context. +

+ The stipple attribute of a graphics context is a bitmap used to + prevent certain pixels in the destination of graphics + operations from being affected by tiling. +

+ The stipple and tile have the same origin. This origin point is + interpreted relative to the origin of whatever destination + drawable is specified in a graphics request. The stipple pixmap + must have depth one and must have the same root as the graphics + context. The tile pixmap must have the same root and depth as + the graphics context. For stipple operations where the + fill-style is :stippled (but not :opaque-stippled + ), the stipple pattern is tiled in a single plane and acts as + an additional clip mask to be anded with the clip-mask. + Any size pixmap can be used for stipple or tile, although some + sizes may be faster to use than others. +

+ Specifying a pixmap for stipple or tile in a graphics context + might or might not result in a copy being made. If the pixmap + is later used as the destination for a graphics operation, the + change might or might not be reflected in the graphics context. + If the pixmap is used both as the destination for a graphics + operation and as a stipple or tile, the results are not defined. +

+ Some displays have hardware support for tiling or stippling + with patterns of specific sizes. Tiling and stippling + operations that restrict themselves to those sizes may run much + faster than such operations with arbitrary size patterns. CLX + provides functions to determine the best size for stipple or + tile (see + query-best-stipple and + query-best-tile). +

+
+ stipple +
+ Type pixmap. +
+
+
+ +
+
+ + + +
gcontext-subwindow-mode + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns and (with setf) changes the subwindow-mode + attribute of the specified graphics context. +

+ The subwindow-mode attribute of a graphics context specifies + whether subwindows obscure the contents of their parent window + during a graphics operation. For a value of :clip-by-children + , both source and destination windows are clipped by all + viewable :input-output class children. This clipping is + in addition to the clipping provided by the clip-mode + attribute. For a value of :include-inferiors, neither + the source nor destination window is clipped by its inferiors. + This results in the inclusion of subwindow contents in the + source and the drawing through of subwindow boundaries of the + destination. The use of :include-inferiors on a window + of one depth with mapped inferiors of differing depth is not + illegal, but the semantics are not defined by the core protocol. +

+
+ subwindow-mode +
+ One of :clip-by-children or :include-inferiors. +
+
+
+ +
+
+ + + +
gcontext-tile + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the tile of the specified graphics context. +

+ The tile attribute is a pixmap used to fill in areas for + graphics operations. It is so named because copies of it are + laid out side by side to fill the area. +

+ The stipple and tile have the same origin. This origin point is + interpreted relative to the origin of whatever destination + drawable is specified in a graphics request. The stipple pixmap + must have depth one and must have the same root as the graphics + context. The tile pixmap must have the same root and depth as + the graphics context. For stipple operations where the + fill-style is :stippled (but not :opaque-stippled + ), the stipple pattern is tiled in a single plane and acts as + an additional clip mask to be anded with the clip-mask. + Any size pixmap can be used for stipple or tile, although some + sizes may be faster to use than others. +

+ Specifying a pixmap for stipple or tile in a graphics context + might or might not result in a copy being made. If the pixmap + is later used as the destination for a graphics operation, the + change might or might not be reflected in the graphics context. + If the pixmap is used both as the destination for a graphics + operation and as a stipple or tile, the results are not defined. +

+ Some displays have hardware support for tiling or stippling + with patterns of specific sizes. Tiling and stippling + operations that restrict themselves to those sizes may run much + faster than such operations with arbitrary size patterns. CLX + provides functions to determine the best size for stipple or + tile (see + query-best-stipple and + query-best-tile). +

+
+ tile +
+ Type pixmap. +
+
+
+ +
+
+ + + +
gcontext-ts-x + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the ts-x attribute of the specified graphics + context. +

+ The ts-x and ts-y attributes of a graphics context are the + coordinates of the origin for tile pixmaps and the stipple. +

+
+ ts-x +
+ Type int16. +
+
+
+ +
+
+ + + +
gcontext-ts-y + gcontext + Function +
+ + +
      + +
+
+ gcontext +
+ A gcontext. +
+

+ Returns the ts-y attribute of the specified graphics + context. +

+ The ts-x and ts-y attributes of a graphics context are the + coordinates of the origin for tile pixmaps and the stipple. +

+
+ ts-y +
+ Type int16. +
+
+
+ +
+
+ + + +
query-best-stipple + width height drawable + + Function +
+ + +
      + +
+
+ width, height +
+ Specifies the width and height of the desired stipple pattern. +
+ drawable +
+ A drawable. +
+

+ Returns the best-width and best-height for + stipple pixmaps on the drawable. +

+ The drawable indicates the screen and possibly the + window class and depth. An :input-only window cannot be + specified as the drawable. The size is returned as width + and height values. +

+
+ best-width, best-height +
+ Type card16. +
+
+
+ +
+
+ + + +
query-best-tile + width height drawable + + Function +
+ + +
      + +
+
+ width, height +
+ Specifies the width and height of the desired tile pattern. +
+ drawable +
+ A drawable. +
+

+ Returns the best-width and best-height for tile + pixmaps on the drawable. +

+ The drawable indicates the screen and possibly the + window class and depth. An :input-only window cannot be + specified as the drawable. The size is returned as width + and height values. +

+
+ best-width, best-height +
+ Type card16. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_4_1_Complete_Names_and_Classes.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_4_1_Complete_Names_and_Classes.html @@ -0,0 +1,89 @@ + + + + + + 13.4.1 Complete Names and Classes + + + + + + + + + + Next Prev Up +
+

13.4.1 Complete Names and + Classes

+ +

+ A resource binding contains a resource name list that can contain + names, class names, or a mixture of both. A class name is a symbol or + string that represents a group of related objects. The set of names + used as class names are not specified by CLX. Instead, class names are + defined by agreement between those who use class names when creating + resource bindings (that is, users) and those who use class names when + accessing resource values (that is, application programmers). +

+ In order to access a value in a resource database, an application uses + a key consisting of two items: a complete resource name and a + complete resource class. A complete resource name is a resource + name list containing no wildcard elements. A complete resource class is + a list of exactly the same form. The distinction between a complete + resource name and a complete resource class lies in how they are used + to access resource bindings. The elements of a complete resource name + are interpreted as names of individual objects; the elements of a + complete resource class are interpreted as names of object classes. The + complete resource name and class lists used in a resource database + access must have the same length. +

+ Like any resource name list, a complete resource name consists of a + path list and an attribute name. The first path list element is + typically a symbol (or string) identifying the application as a whole. + The second element can be a screen root identifier. Subsequent elements + can be identifiers for each ancestor window of an application window. + Thus, a path list typically identifies a specific window by tracing a + path to it through the application window hierarchy. The final element + of a complete resource name (its attribute name) is typically the name + of a specific attribute of the window given by the path list (for + example, 'background). An attribute name can refer to + a feature associated with the window by the application but not by the + X server (for example, a font identifier). Similarly, a complete + resource class typically represents a path to a window in the + application window hierarchy and a specific window attribute. However, + a complete resource class contains the class name for each window and + for the window attribute. +

+ For instance, in the previous example, the mail + application can attempt to look up the value of the background + resource for the reply button window by using the + following complete resource name: +

+ (mail screen-1 reply background) +

+ and the following complete resource class: +

+ (application root button fill) +

+ This complete resource name contains a path list identifying the reply + button window -- (mail screen-1 reply) -- and an attribute + name for the window background. The corresponding resource class + contains the class names for the same path list and window attribute. + +


+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_7_Client_Communications_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_7_Client_Communications_Events.html @@ -0,0 +1,404 @@ + + + + + + 12.12.7 Client Communications Events + + + + + + + + + + Next Prev Up +
+

12.12.7 Client Communications + Events

+ +

+ The client communications events discussed in the following paragraphs + are: :client-message, + :property-notify, + :selection-clear, + :selection-request, and + :selection-notify. +

+
+ + + +
:client-message + + Event Type +
+ + +
      + +

+ The :client-message event is generated exclusively by + client calls to send-event. The X server places no interpretation on + the type or content of data sent in a :client-message. A client can neither select :client-message events nor avoid receiving them. +

+
+ window, event-window +
+ Type window. + The window receiving the event. +
+ type +
+ Type keyword. An xatom keyword that specifies the type + of client message. Interpretation of the type is determined + solely by agreement between the sending and receiving clients. +
+ format +
+ Type (member 8 16 32). An integer that specifies + whether data should be viewed as a sequence of 8-bit, + 16-bit, or 32-bit quantities. +
+ data +
+ Type (sequence integer). The data content of the + client message. data always consists of 160 bytes -- + depending on format, either 20 8-bit values, 10 16-bit values + or 5 32-bit values. The amount of this data actually used by + a particular client message depends on the type. +
+
+
+ +
+
+ + + +
:property-notify + + Event Type +
+ + +
      + +
+
+ Selected by: +
+ :property-change. +
+ +

+ The :property-notify event is generated when a window + property is changed or deleted. +

+
+ window, event-window +
+ Type window. + The window receiving the event. +
+ atom +
+ Type keyword. The property that was changed or deleted. +
+ state +
+ Type (member :new-value :deleted). state is + :new-value if the property was changed using + change-property or + rotate-properties, even if zero-length data was added + or if all or part of the property was replaced with identical + data. state is :deleted if the property was + deleted using + delete-property or get-property + . +
+ time +
+ Type timestamp + . The server time when the property was changed or + deleted. +
+
+
+ +
+
+ + + +
:selection-clear + + Event Type +
+ + +
      + +

+ The :selection-clear event is reported to the previous + owner of a selection when the owner of the selection + is changed. The selection owner is changed by a client + using setf. A client can neither select :selection-clear events nor avoid receiving them. +

+
+ window, event-window +
+ Type window. + The window losing ownership of the selection. +
+ selection +
+ Type keyword. The name of the selection. +
+ time +
+ Type timestamp + . The last-change time recorded for the selection. +
+
+
+ +
+
+ + + +
:selection-notify + + Event Type +
+ + +
      + +

+ The :selection-notify event is sent to a client calling + + convert-selection. :selection-notify reports the result of the client + request to return the current value of a selection into + a particular form. :selection-notify is sent using send-event + by the owner of the selection or (if no owner exists) by + the X server. A client can neither select :selection-notify events nor avoid receiving them. +

+ NOTE: Standard conventions for inter-client + communication require the following additional steps in + processing a :selection-notify event: +

    +
  1. + The client receiving this event should call get-property + to return the converted selection value. +
  2. + After receiving the selection value, the property should then + be deleted (either by using the :delete-p argument to + get-property + or by calling + delete-property). +
+ +
+
+ window, event-window +
+ Type window. + The requestor window given in the call to + convert-selection. +
+ selection +
+ Type keyword. The selection to be converted. +
+ target +
+ Type keyword. An xatom specifying the type of the converted selection + value. This is the same target type given in the call to + convert-selection. +
+ property +
+ Type (or null keyword). The window property containing + the converted selection. If the property is nil, then + either the selection has no owner or the owner could + not perform the conversion to the target type. +
+ time +
+ Type timestamp + . The timestamp from the client call to + convert-selection. +
+
+
+ +
+
+ + + +
:selection-request + + Event Type +
+ + +
      + +

+ The :selection-request event is reported to the owner + of a selection when a client calls + convert-selection. This event requests the selection + owner to convert the current value of a selection into a + specified form and to return it to the requestor. A client can + neither select :selection-request events nor avoid receiving them. +

+ The selection owner should respond to a :selection-request event by performing the + following steps: +

    +
  1. + Convert the current selection value to the target + type. +
  2. + Store the converted selection value in the property. + If property is nil, then the owner should + choose the property. +
  3. + Call + send-event to send a :selection-notify event to the requestor + containing the property with the converted value. If + the selection could not be converted to the target + type, then a nil property should be sent. + The :selection, :target, and :time + arguments to + send-event should be the same as those received in + the :selection-request event. The event-mask argument + to send-event + should be nil; that is, the :selection-notify event should be sent to client + that created the requestor. +
+ +

+ NOTE: Standard conventions for inter-client + communication require the following additional steps in + processing a :selection-request event: +

    +
  1. + The property used to store the selection value must belong to + the requestor. +
  2. + If the property is nil, the target type atom + should be used as the property name. +
  3. + If the window did not actually own the selection at the given + time, the request should be refused, just as if it could not + be converted to the target type. +
+ +
+
+ window, event-window +
+ Type window. + The selection owner receiving the event. +
+ requestor +
+ Type window. + The window requesting the converted selection. +
+ selection +
+ Type keyword. The selection to be converted. +
+ target +
+ Type keyword. An xatom specifying the type of the converted + selection value. +
+ property +
+ Type (or null keyword). A requestor window property. +
+ time +
+ Type timestamp + . The timestamp sent in the client + convert-selection request. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_2_Pointer_Control.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_2_Pointer_Control.html @@ -0,0 +1,168 @@ + + + + + + 14.2 Pointer Control + + + + + + + + + + Next Prev Up +
+

14.2 Pointer Control +

+ +

+ The following paragraphs describe the CLX functions used to: +

    +
  • + Return or change the pointer acceleration and acceleration threshold +
  • + Return or change the mapping of pointer button numbers +
+ +
+
+ + + +
change-pointer-control + display &key + :acceleration :threshold + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :acceleration +
+ A number for the acceleration ratio. +
+ :threshold +
+ The number of pixels required for acceleration to take effect. +
+

+ Changes the acceleration and/or the acceleration threshold of + the pointer for the display. The :acceleration + number is used as a multiplier, typically specified as a + rational number of the form C/P, where C is the + number of pixel positions of cursor motion displayed for P + units of pointer device motion. The acceleration only + occurs if the pointer moves more that :threshold pixels + at once, and only applies to the motion beyond the :threshold + . Either :acceleration or :threshold can be + set to :default, that restores the default settings of + the server. +

+
+ +
+
+ + + +
pointer-control + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Returns the acceleration and threshold for the display + pointer. +

+
+ acceleration, threshold +
+ Type number. +
+
+
+ +
+
+ + + +
pointer-mapping + display &key ( + :result-type 'list) + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ :result-type +
+ The type of sequence to return. +
+

+ Returns or (with setf) changes the mapping of button + numbers for the display pointer. The :result-type + is not used when changing the mapping. If element i of + the mapping sequence is j, then the events from pointer + button j are reported by the server as events for button + i+1. (Note that pointer buttons are numbered beginning + with one, while the mapping sequence itself is indexed normally + from zero.) If element i of the mapping sequence is + zero, then button i+1 is disabled and can no longer + generate input events. No two elements of the mapping can have + the same non-zero value. +

+ The length of the mapping sequence indicates the actual number + of buttons on the device. When changing the mapping, the new + mapping must have this same length. +

+
+ mapping +
+ Type sequence or card8. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_5_Chracter_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_5_Chracter_Attributes.html @@ -0,0 +1,279 @@ + + + + + + 8.5 Chracter Attributes + + + + + + + + + + Next Prev Up +
+

8.5 Chracter Attributes +

+ +

+ The following paragraphs describe the CLX functions used to access the + attributes of individual font glyphs. +

+
+ + + +
char-ascent + font index + Function +
+ + +
      + +
+
+ font +
+ A font object. +
+ index +
+ An int16 font + index. +
+

+ Returns the vertical distance in pixels from the baseline to + the top of the given font glyph. Returns nil if the + index is invalid or specifies an empty glyph, or if the font + is a pseudo-font. +

+
+ ascent +
+ Type int16 or + null. +
+
+
+ +
+
+ + + +
char-attributes + font index + Function +
+ + +
      + +
+
+ font +
+ A font object. +
+ index +
+ An int16 font + index. +
+

+ Returns font-specific attributes of the given glyph. The + interpretation of such attributes is server-dependent. Returns + nil if the index is invalid or specifies an empty + glyph, or if the font is a pseudo-font. +

+
+ attributes +
+ Type int16 or + null. +
+
+
+ +
+
+ + + +
char-descent + font index + Function +
+ + +
      + +
+
+ font +
+ A font object. +
+ index +
+ An int16 font + index. +
+

+ Returns the vertical distance in pixels from the baseline to + the bottom of the given font glyph. Returns nil if the index is invalid or specifies an empty glyph, or if the + font is a pseudo-font. +

+
+ descent +
+ Type int16 or + null. +
+
+
+ +
+
+ + + +
char-left-bearing + font index + Function +
+ + +
      + +
+
+ font +
+ A font object. +
+ index +
+ An int16 font + index. +
+

+ Returns the left side bearing of the given font glyph. If draw-glyph + is called with horizontal position x, the leftmost pixel + of the glyph is drawn at the position (+ x  + left-bearing). Returns nil if the index is + invalid or specifies an empty glyph, or if the font is a + pseudo-font. +

+
+ left-bearing +
+ Type int16 or + null. +
+
+
+ +
+
+ + + +
char-right-bearing + font index + Function +
+ + +
      + +
+
+ font +
+ A font object. +
+ index +
+ An int16 font + index. +
+

+ Returns the right side bearing of the given font glyph. If draw-glyph + is called with horizontal position x, the rightmost + pixel of the glyph is drawn at the position (+  x  + rightbearing). Returns nil if the index is + invalid or specifies an empty glyph, or if the font is a + pseudo-font. +

+
+ right-bearing +
+ Type int16 or + null. +
+
+
+ +
+
+ + + +
char-width + font index + Function +
+ + +
      + +
+
+ font +
+ A font object. +
+ index +
+ An int16 font + index. +
+

+ Returns the width of the given font glyph. The width + is defined to be equal to (- rightbearing left-bearing + ). Returns nil if the index is invalid or + specifies an empty glyph, or if the font is a + pseudo-font. +

+
+ width +
+ Type int16 or + null. +
+
+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_1_Colormaps_and_Colors.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_1_Colormaps_and_Colors.html @@ -0,0 +1,93 @@ + + + + + + 9.1 Colormaps and Colors + + + + + + + + + + Next Prev + Up +
+

9.1 Colormaps and Colors +

+ +

+ In X, a color is defined by a set of three numeric values, + representing intensities of red, green, and blue. Red, green, and blue + are referred to as the primary hues. A colormap is a list + of colors, each indexed by an integer pixel value. Each entry in + a colormap is called a color cell. Raster graphics displays + store pixel values in a special screen hardware memory. As the screen + hardware scans this memory, it reads each pixel value, looks up the + color in the corresponding cell of a colormap, and displays the color + on its screen. +

+ The colormap abstraction applies to all classes of visual types + supported by X, including those for screens which are actually + monochrome. For example, :gray-scale screens use colormaps in + which colors actually specify the monochrome intensity. A typical + black-and-white monochrome display has a :static-gray screen + with a two-cell colormap. +

+ The following list describes how pixel values and colormaps are handled + for each visual class. +

+
+ :direct-color +
+ A pixel value is decomposed into separate red, green, and blue + subfields. Each subfield indexes a separate colormap. Entries in all + colormaps can be changed. +
+ :gray-scale +
+ A pixel value indexes a single colormap that contains monochrome + intensities. Colormap entries can be changed. +
+ :pseudo-color +
+ A pixel value indexes a single colormap that contains color + intensities. Colormap entries can be changed. +
+ :static-color +
+ Same as :pseudo-color, except that the colormap entries are + predefined by the hardware and cannot be changed. +
+ :static-gray +
+ Same as :gray-scale, except that the colormap entries are + predefined by the hardware and cannot be changed. +
+ :true-color +
+ Same as :direct-color, except that the colormap entries are + predefined by the hardware and cannot be changed. Typically, each of + the red, green, and blue colormaps provides a (near) linear ramp of + intensity. +
+ +

+ CLX provides functions to create colormaps, access and modify colors + and color cells, and install colormaps in screen hardware. + +


+ Next Prev + Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/2_4_Managing_the_Output_Buffer.html +++ cmucl-20a-20090928/own-work/clx/clxman/2_4_Managing_the_Output_Buffer.html @@ -0,0 +1,148 @@ + + + + + + 2.4 Managing the Output Buffer + + + + + + + + + + Next Prev Up + +
+

2.4 Managing the Output Buffer +

+ +

+ Most CLX functions cause output requests to be generated to an X + server. Output requests are not transmitted immediately but instead are + stored in an output buffer for the appropriate display. Requests + in the output buffer are typically sent only when the buffer is filled. + Alternatively, buffered requests can be sent prior to processing an + event in the input event queue (see paragraph 12.3, Processing Events). + In either case, CLX sends the output buffer automatically without + explicit instructions from the client application. +

+ However, in some cases, explicit control over the output buffer is + needed, typically to ensure that the X server is in a consistent state + before proceeding further. The + display-force-output and + display-finish-output functions allow a client program to + synchronize with buffered output requests. +

+
+ + + +
display-after-function + display + Function +
+ + +
      + +
+
+ display +
+ A display + object. +
+

+ Returns and (with setf) sets the after-function + for the given display. If after-function is non-nil, it is a function that is called after every protocol + request is generated, even those inside an explicit with-display + , but never called from inside the after-function + . The function is called inside the effective with-display + for the associated request. The default value is nil + . This can be set, for example, to #'display-force-output or #' + display-finish-output. +

+
+ after-function -- Type function or null. +
+
+
+ +
+
+ + + +
display-force-output + display + Function +
+ + +
      + +
+
+ display +
+ A display + object. +
+

+ Forces any buffered output to be sent to the X server. +

+
+ +
+
+ + + +
display-finish-output + display + Function +
+ + +
      + +
+
+ display +
+ A display + object. +
+

+ Forces any buffered output to be sent to the X server and then + waits until all requests have been received and processed. Any + errors generated are read and handled by the display error + handler. Any events generated by output requests are read and + stored in the event queue. +

+
+ +
+ Next Prev Up + +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_6_Pointer_Position.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_6_Pointer_Position.html @@ -0,0 +1,463 @@ + + + + + + 12.6 Pointer Position + + + + + + + + + + Next Prev Up +
+

12.6 Pointer Position +

+ +

+ The CLX functions affecting pointer position are discussed in the + following paragraphs. +

+
+ + + +
query-pointer + window + Function +
+ + +
      + +
+
+ window +
+ A window + specifying the coordinate system for the returned position. +
+

+ Returns the current pointer coordinates relative to the given window. If + query-pointer returns nil for same-screen-p + , the pointer is not on the same screen as the window + . In this case, + query-pointer returns a value of nil for child + and a value of zero for x and y. If + query-pointer returns true for same-screen-p, + the returned x and y are relative to the origin + of window. The child is the child of the window + containing the pointer, if any. The state-mask returned + gives the current state of the modifier keys and pointer + buttons. The returned root is the root window currently + containing the pointer. The returned root-x and root-y + specify the pointer coordinates relative to root. +

+
+ x +
+ Type int16. +
+ y +
+ Type int16. +
+ same-screen-p +
+ Type boolean. +
+ child +
+ Type window + or null. +
+ state-mask +
+ Type card16. +
+ root-x +
+ Type int16. +
+ root-y +
+ Type int16. +
+ root +
+ Type window. +
+
+
+ +
+
+ + + +
global-pointer-position + display + Function +
+ + +
      + +
+
+ display +
+ A display. +
+

+ Returns the root window currently containing the + display pointer and the current position of the pointer + relative to the root. +

+
+ root-x +
+ Type int16. +
+ root-y +
+ Type int16. +
+ root +
+ Type window. +
+
+
+ +
+
+ + + +
pointer-position + window + Function +
+ + +
      + +
+
+ window +
+ A window + specifying the coordinate system for the returned position. +
+

+ Returns the current pointer coordinates relative to the given window. If + pointer-position returns nil for same-screen-p + , the pointer is not on the same screen as the window + . In this case, + pointer-position returns a value of nil for + child and a value of zero for x and y. If + pointer-position returns true for same-screen-p, + the returned x and y are relative to the origin + of window. +

+
+ x +
+ Type int16. +
+ y +
+ Type int16. +
+ same-screen-p +
+ Type boolean. +
+ child +
+ Type window + or null. +
+
+
+ +
+
+ + + +
motion-events + window &key :start :stop (:result-type 'list) + Function +
+ + +
      + +
+
+ window +
+ The window + containing the returned motion events. +
+ :start, :stop +
+ timestamp + values for the time interval for returned motion events. +
+ :result-type +
+ The form of the returned motion events. +
+

+ Many X server implementations maintain a more precise history + of pointer motion between event notifications. The pointer + position at each pointer hardware interrupt can be stored into + a buffer for later retrieval.This is called the motion + history buffer. A paint program, for example, may want to + have a precise history of where the pointer traveled, even + though for most other applications this amount of detail is + grossly excessive. +

+ The + motion-events function returns all events in the motion + history buffer that fall between the specified :start + and :stop timestamps (inclusive) and have coordinates + that lie within the specified window (including borders) + at its present placement. If the :start time is later + than the :stop time or if the :start time is in + the future, no events are returned. +

+
+ motion-events +
+ Type (repeat-seq (int16 x) (int16 y) (timestamp + time)). +
+
+
+ +
+
+ + + +
warp-pointer + destination + destination-x destination-y + Function +
+ + +
      + +
+
+ destination +
+ The window + into which the pointer is moved. +
+ destination-x, destination-y +
+ The new position of the pointer relative to the destination. +
+

+ Moves the pointer to the given coordinates relative to the + destination window. warp-pointer + should be rarely be used since the user should + normally be in control of the pointer position. warp-pointer + generates events just as if the user had + instantaneously moved the pointer from one position to another. +

+ + warp-pointer cannot move the pointer outside the + confine-to window of an active pointer grab; an attempt to do + so only moves the pointer as far as the closest edge of the + confine-to window. +

+
+ +
+
+ + + +
warp-pointer-relative + display x-offset + y-offset + Function +
+ + +
      + +
+
+ display +
+ A display. +
+ x-offset, y-offset +
+ The offsets used to adjust the pointer position. +
+

+ Moves the pointer by the given offsets. This function should + rarely be used since the user should normally be in control of + the pointer position. + warp-pointer-relative generates events just as if the + user had instantaneously moved the pointer from one position to + another. +

+ + warp-pointer-relative cannot move the pointer outside + the confine-to window of an active pointer grab; an attempt to + do so only moves the pointer as far as the closest edge of the + confine-to window. +

+
+ +
+
+ + + +
warp-pointer-if-inside + destination + destination-x destination-y source source-x source-y + &optional (source-width 0) (source-height 0) + Function +
+ + +
      + +
+
+ destination +
+ The window + into which the pointer is moved. +
+ destination-x, destination-y +
+ The new position of the pointer relative to the destination + . +
+ source +
+ The window + that must currently contain the pointer. +
+ source-x, source-y, source-width, source-height +
+ The source rectangle that must currently contain the pointer. +
+

+ Moves the pointer to the given position relative to the + destination window. However, the move can only take place + if the pointer is currently contained in a visible portion of + the specified rectangle of the source window. If + source-height is zero, it is replaced with the current + height of source window minus source-y. If + source-width is zero, it is replaced with the current width + of source window minus source-x. +

+ + warp-pointer-if-inside generates events just as if the + user had instantaneously moved the pointer from one position to + another. + warp-pointer-if-inside cannot move the pointer outside + the confine-to window of an active pointer grab; an attempt to + do so only moves the pointer as far as the closest edge of the + confine-to window. +

+
+ +
+
+ + + +
warp-pointer-relative-if-inside + x-offset y-offset + source source-x source-y &optional (source-width + 0) (source-height 0) + Function +
+ + +
      + +
+
+ x-offset, y-offset +
+ The offsets used to adjust the pointer position. +
+ source +
+ The window + that must currently contain the pointer. +
+ source-x, source-y, source-width, source-height +
+ The source rectangle that must currently contain the pointer. +
+

+ Moves the pointer by the given offsets. However, the move can + only take place if the pointer is currently contained in a + visible portion of the specified rectangle of the source + window. If source-height is zero, it is replaced with + the current height of source-window minus source-y + . If source-width is zero, it is replaced with the + current width of source-window minus source-x. +

+ warp-pointer-relative-if-inside generates events + just as if the user had instantaneously moved the pointer from + one position to another. warp-pointer-relative-if-inside cannot move the + pointer outside the confine-to window of an active pointer + grab; an attempt to do so only moves the pointer as far as the + closest edge of the confine-to window. +

+
+ +
+ Next Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_Images.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_Images.html @@ -0,0 +1,45 @@ + + + + + + 7 Images + + + + + + + + + + Next + Prev Up +
+

7 Images

+ +
+ +
+ Next + Prev Up +
+ © 1988, 1989 Texas Instruments + Incorporated +
+ Conversion to HTML made by + Gilbert Baumann. +
+ Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_6_Data_Types.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_6_Data_Types.html @@ -0,0 +1,2222 @@ + + + + + + 1.6 Data Types + + + + + + + + + + Next Prev Up +
+

1.6 Data Types

+ +

+ The following are some data type definitions that are commonly used in + CLX function definitions. +

+
+ + + +
alist + (key-type-and-name + datum-type-and-name) 'list + Type +
+ + +
      + +

+ alist defines an + association list. An association list is a sequence, containing + zero or more repetitions of the given elements with each of the + elements expressed as (type name). +

+
+ +
+
+ + + +
angle + `(number ,(* + -2pi) ,(* 2pi)) + Type +
+ + +
      + +

+ angle defines an + angle in units of radians and is bounded by (-2%pi;) and + (2%pi;). Note that we are explicitly using a different angle + representation than what is actually transmitted in the + protocol. +

+
+ +
+
+ + + +
arc-seq + '(repeat-seq (int16 x) + (int16 y + ) (card16 +  width) ( + card16 height) (angle angle1 + ) (angle  + angle2)) + Type +
+ + +
      + +

+ arc-seq + defines a six-tuple sequence of the form (x, y, width, height, angle1, angle2). The + points x and y are signed, 16-bit quantities with + a range from -32,768 to 32,767. The width and height + values are unsigned, 16-bit quantities and range from 0 to + 65,535. angle1 and angle2 are in units of + radians, and bounded by (-2%pi;) and (2%pi;). +

+
+ +
+
+ + + +
array-index + `(integer 0 , + array-dimension-limit) + Type +
+ + +
      + +

+ array-index + defines a type which is a subtype of the integers and can be + used to describe all variables that can be array indices. The + range is inclusive because start and end array index specifiers + can be one (1) past the end. +

+
+ +
+
+ + + +
bit-gravity + '( + member gravity*) + Type +
+ + +
      + +

+ A keyword that specifies which region of a window should be + retained when the window is resized. +

+ gravity -- One of the following: +

+
  • + :center +
  • + :north +
  • + :south +
  • + :static +
  • + :east +
  • + :north-east +
  • + :south-east :west +
  • + :forget +
  • + :north-west +
  • + :south-west +
  • + +

    + If a window is reconfigured without changing its inside width + or height, then the contents of the window moves with the + window and are not lost. Otherwise, the contents of a resized + window are either moved or lost, depending on its bit-gravity + attribute. See + window-bit-gravity, in paragraph 4.3, Window + Attributes, for additional information. +

    +
    + +
    +
    + + + +
    bitmap + '(array bit + (* *)) + Type +
    + + +
          + +

    + Specifies a two-dimensional array of bits. +

    +
    + +
    +
    + + + +
    bitmap-format + + Structure +
    + + +
          + +

    + A structure that describes the storage format of a bitmap. +

    + The bitmap-format + structure contains slots for unit, pad, + and lsb-first-p. The unit member indicates the + unit of increments used to maintain the bitmap data. The units + available for use are 8, 16, or 32 bits. The pad member + indicates how many bits are needed to pad the left edge of the + scan-line. The lsb-first-p member is a predicate which + indicates the ordering of bits with the bitmap unit. +

    +
    + +
    +
    + + + +
    unit + + Slot of bitmap-format +
    + + +
          + +

    + Type: (member 8 16 32). +

    + The size of a contiguous grouping of bits, which can be 8, 16, + or 32. The default is 8. +

    +
    + +
    +
    + + + +
    pad + + Slot of bitmap-format +
    + + +
          + +

    + Type: (member 8 16 32). +

    + The number of bits to left-pad the scan-line, which can be 8, + 16, or 32. The default is 8. +

    +
    + +
    +
    + + + +
    lsb-first-p + + Slot of bitmap-format +
    + + +
          + +

    + Type: boolean. +

    + A predicate indicating whether the least significant bit comes + first (true) or not (nil). +

    +
    + +
    +
    + + + +
    boolean + '(or nil ( + not nil)) + Type +
    + + +
          + +

    + boolean + defines a type which is all inclusive. It is used for variables + that can take on a true (non-nil) or false (nil) + value. +

    +
    + +
    +
    + + + +
    boole-constant + `(member value + *) + Type +
    + + +
          + +

    + boole-constant + defines a type that is a set of the values associated + with the 16 boolean operation-code constants for the Common + Lisp language. It is used for the set of allowed source and + destination combination functions in a graphics context. +

    + value -- One of the following: +

    +
  • + boole-1 +
  • + boole-c1 +
  • + boole-nand +
  • + boole-xor +
  • + boole-2 +
  • + boole-c2 +
  • + boole-nor +
  • + boole-and +
  • + boole-clr +
  • + boole-orc1 +
  • + boole-andc1 +
  • + boole-eqv +
  • + boole-orc2 +
  • + boole-andc2 +
  • + boole-ior +
  • + boole-set +
  • +
    +
    + +
    +
    + + + +
    card8 + '(unsigned-byte + 8) + Type +
    + + +
          + +

    + An unsigned integer value that is a maximum of eight bits long. + This gives a number of this type a range from 0 to 255. +

    +
    + +
    +
    + + + +
    card16 + '(unsigned-byte + 16) + Type +
    + + +
          + +

    + An unsigned integer value that is a maximum of 16 bits long. + This gives a number of this type a range from 0 to 65,535. +

    +
    + +
    +
    + + + +
    card29 + '(unsigned-byte + 29) + Type +
    + + +
          + +

    + An unsigned integer value that is a maximum of 29 bits long. + This gives a number of this type a range from 0 to 536,870,911. +

    +
    + +
    +
    + + + +
    card32 + '(unsigned-byte + 32) + Type +
    + + +
          + +

    + An unsigned integer value that is a maximum of 32 bits long. + This gives a number of this type a range from 0 to + 4,294,967,295. +

    +
    + +
    +
    + + + +
    color + '(satisfies + color-p) + Type +
    + + +
          + +

    + A color. See + paragraph 9.2, Color Functions, for additional information. +

    +
    + +
    +
    + + + +
    colormap + '(satisfies + colormap-p) + Type +
    + + +
          + +

    + A colormap. + See paragraph 9.3, Colormap Functions, for additional + information. +

    +
    + +
    +
    + + + +
    cursor + '(satisfies + cursor-p) + Type +
    + + +
          + +

    + A cursor. See + Section 10, Cursors, for additional information. +

    +
    + +
    +
    + + + +
    device-event-mask + '(or mask32 ( + list device-event-mask-class)) + Type +
    + + +
          + +

    + Provides a way to specify a set of bits for an event bitmask. + Two ways of specifying the bits are allowed: by setting the + event bits in a 32 bit mask, or by listing the keyword names of + the device related event bits in a list. +

    +
    + +
    +
    + + + +
    device-event-mask-class + '( + member event*) + Type +
    + + +
          + +

    + A keyword name, for a device related event, that corresponds to + a particular bit in an event bitmask. The set of names is a + subset of the names in the type event-mask-class + . +

    + event -- One of the following: +

    +
  • + :button-1-motion +
  • + :button-motion +
  • + :button-2-motion +
  • + :button-press +
  • + :button-3-motion +
  • + + :key-press +
  • + :button-4-motion +
  • + + :key-release +
  • + :button-5-motion +
  • + :pointer-motion +
  • +
    +
    + +
    +
    + + + +
    display + '(satisfies + display-p) + Type +
    + + +
          + +

    + A connection to an X server. See Section 2, Displays, for + additional information. +

    +
    + +
    +
    + + + +
    drawable + '(or window pixmap + ) + Type +
    + + +
          + +

    + Both windows and pixmaps can be used as sources + and destinations in graphics operations. windows and + pixmaps together are known as drawables. However, an + :input-only window cannot be used as a source or + destination in a graphics operation. +

    +
    + +
    +
    + + + +
    draw-direction + '(member + :left-to-right :right-to-left) + Type +
    + + +
          + +

    + Defines a list of rotation directions for drawing arcs and + fonts. + draw-direction can have the values of :left-to-right + or :right-to-left. +

    +
    + +
    +
    + + + +
    error-key + '(member + error*) + Type +
    + + +
          + +

    + Defines a list of all predefined errors. All errors + (synchronous and asynchronous) are processed by calling an + error handler in the display. The handler is called with the + display as the first argument and the error-key as its second + argument. +

    + error -- One of the following: +

    +
  • + :access +
  • + :drawable +
  • + :implementation +
  • + :value +
  • + :alloc +
  • + :font +
  • + :length +
  • + :window +
  • + :atom +
  • + :gcontext +
  • + :match +
  • + :colormap +
  • + :id-choice +
  • + :name +
  • + :cursor +
  • + :illegal-request +
  • + :pixmap +
  • +
    +
    + +
    +
    + + + +
    event-key + '(member + event-type*) + Type +
    + + +
          + +

    + Defines a list that specifies all predefined event-types. + Clients are informed of information asynchronously by means of + events. These events can be either asynchronously generated + from devices or generated as side effects of client requests. +

    + event-type -- One of the following: +

    +
  • + :button-press +
  • + :exposure + +
  • + :motion-notify +
  • + :button-release +
  • + + :focus-in +
  • + + :no-exposure +
  • + + :circulate-notify +
  • + + :focus-out +
  • + :property-notify +
  • + :circulate-request +
  • + + :graphics-exposure +
  • + :reparent-notify +
  • + :client-message +
  • + + :gravity-notify +
  • + + :resize-request +
  • + :colormap-notify +
  • + :keymap-notify +
  • + :selection-clear +
  • + + :configure-notify +
  • + + :key-press +
  • + :selection-notify +
  • + :configure-request +
  • + + :key-release +
  • + :selection-request +
  • + + :create-notify +
  • + :leave-notify +
  • + + :unmap-notify +
  • + + :destroy-notify +
  • + + :map-notify +
  • + + :visibility-notify +
  • + :enter-notify +
  • + + :map-request +
  • +
    +
    + +
    +
    + + + +
    event-mask + '(or mask32 ( + list event-mask-class)) + Type +
    + + +
          + +

    + Provides a way to specify a set of bits for an event bitmask. + Two ways of specifying the bits are allowed: by setting the + event bits in a 32 bit mask, or by listing the keyword names of + the event bits in a list. +

    +
    + +
    +
    + + + +
    event-mask-class + '( + member event*) + Type +
    + + +
          + +

    + The elements of the type event-mask-class + are keyword names that correspond to a particular bit + in an event bitmask. +

    + event -- One of the following: +

    +
  • + :button-1-motion +
  • + :enter-window +
  • + :pointer-motion-hint +
  • + :button-2-motion +
  • + :exposure + +
  • + :property-change +
  • + :button-3-motion +
  • + :focus-change +
  • + :resize-redirect +
  • + :button-4-motion +
  • + + :key-press +
  • + :structure-notify +
  • + :button-5-motion +
  • + + :key-release +
  • + :substructure-notify +
  • + :button-motion +
  • + :keymap-state +
  • + :substructure-redirect +
  • + :button-press +
  • + :leave-window +
  • + :visibility-change +
  • + :button-release +
  • + :owner-grab-button +
  • + :colormap-change +
  • + :pointer-motion +
  • +
    +
    + +
    +
    + + + +
    make-event-keys + event-mask + Function +
    + + +
          + +
    +
    + event-mask +
    + An event mask (type + mask32). +
    +

    + Returns a list of event-mask-class keyword names for the event bits + that are set in the specified event mask. +

    +

    +
    + +
    +
    + + + +
    make-event-mask + &rest keys + Function +
    + + +
          + +
    +
    + keys +
    + + event-mask-class keywords. +
    +

    + Constructs an event mask from a set of event-mask-class + keyword names. +

    +
    + event-mask +
    + Type mask32. +
    +
    +
    + +
    +
    + + + +
    font + '(satisfies font-p + ) + Type +
    + + +
          + +

    + A text font. See Section 8, Fonts and Characters, for + additional information. +

    +
    + +
    +
    + + + +
    fontable + '(or stringable + font) + Type +
    + + +
          + +

    + A fontable is + either a font + object or the name of one of the fonts in the font database. +

    +
    + +
    +
    + + + +
    font-props + 'list + Type +
    + + +
          + +

    + A list that contains alternating keywords and integers. +

    +
    + +
    +
    + + + +
    gcontext + '(satisfies + gcontext-p) + Type +
    + + +
          + +

    + A graphics context. See Section 5, Graphics Contexts, for + additional information. +

    +
    + +
    +
    + + + +
    gcontext-key + '(member + type*) + Type +
    + + +
          + +

    + A list of predefined types for use in gcontext + processing. Various information for graphics output is stored + in a graphics context (GC or GContext), such as foreground + pixel, background pixel, line width, clipping region, and so + forth. +

    + type -- One of the following: +

    +
  • + :arc-mode +
  • + :exposures +
  • + :line-width +
  • + :background +
  • + :fill-rule +
  • + :plane-mask +
  • + :cap-style :fill-style +
  • + :stipple +
  • + :clip-mask +
  • + :font +
  • + :subwindow-mode +
  • + :clip-x +
  • + :foreground +
  • + :tile +
  • + :clip-y +
  • + :function +
  • + :ts-x +
  • + :dash-offset +
  • + :join-style +
  • + :ts-y +
  • + :dashes +
  • + :line-style +
  • +
    +
    + +
    +
    + + + +
    grab-status + '(member + grab-type*) + Type +
    + + +
          + +

    + There are two kinds of grabs: active and passive. An active + grab occurs when a single client grabs the keyboard and/or + pointer explicitly. Clients can also grab a particular keyboard + key or pointer button in a window. The grab activates when the + key or button is actually pressed, and is called a passive + grab. Passive grabs can be very convenient for implementing + reliable pop-up menus. +

    + grab-type -- One of the following: +

    +
  • + :already-grabbed +
  • + :frozen +
  • + :invalid-time +
  • + :not-viewable +
  • + :success +
  • +
    +
    + +
    +
    + + + +
    image-depth + '(integer 0 + 32) + Type +
    + + +
          + +

    + Used in determining the depth of a pixmap, window, or image. + The value specifies the number of bits deep that a given pixel + has within a given pixmap, window, or image. +

    +
    + +
    +
    + + + +
    index-size + '(member :default + 8 16) + Type +
    + + +
          + +

    + Used to control the element size of the destination buffer + given to the translate function when drawing glyphs. If + :default is specified, the size is based on the current + font, if known; otherwise, 16 is used. +

    +
    + +
    +
    + + + +
    int8 + '(signed-byte + 8) + Type +
    + + +
          + +

    + A signed integer value that is a maximum of eight bits long. A + number of this type can have a range from -128 to 127. +

    +
    + +
    +
    + + + +
    int16 + '(signed-byte + 16) + Type +
    + + +
          + +

    + A signed integer value that is a maximum of 16 bits long. A + number of this type can have a range from -32,768 to 32,767. +

    +
    + +
    +
    + + + +
    int32 + '(signed-byte + 32) + Type +
    + + +
          + +

    + A signed integer value that is a maximum of 32 bits long. A + number of this type can have a range from -2,147,483,648 to + 2,147,483,647. +

    +
    + +
    +
    + + + +
    keysym + 'card32 + Type +
    + + +
          + +

    + Used as an encoding of a symbol on a keycap on a keyboard. It + is an unsigned integer value represented in a maximum of 32 + bits long. A keysym + type can have a range from 0 to 4,294,967,295. +

    +
    + +
    +
    + + + +
    mask16 + ' card16 + Type +
    + + +
          + +

    + A positional bitmask that contains 16 boolean flags. +

    +
    + +
    +
    + + + +
    mask32 + ' card32 + Type +
    + + +
          + +

    + A positional bitmask that contains 32 boolean flags. +

    +
    + +
    +
    + + + +
    modifier-key + '(member + modifier*) + Type +
    + + +
          + +

    + A keyword identifying one of the modifier keys on the keyboard + device. +

    + modifier -- One of the following: +

    +
  • + :shift +
  • + :mod-2 +
  • + :lock +
  • + :mod-3 +
  • + :control +
  • + :mod-4 +
  • + :mod-1 +
  • + :mod-5 +
  • +
    +
    + +
    +
    + + + +
    modifier-mask + '(or ( + member :any) mask16 + (list modifier-key)) + Type +
    + + +
          + +

    + A bitmask or list of keywords that specifies a set of modifier + keys. The keyword :any is equivalent to any subset of + modifier key. +

    +
    + +
    +
    + + + +
    pixarray + '(or ( + array pixel (* *)) +
    +     (array card16 (* *)) +
    + (array card8 (* *)) +
    + (array (unsigned-byte 4) (* *)) +
    + (array bit (* *))) +
    +
    Type +
    + + +
          + +

    + Specifies a two-dimensional array of pixels. +

    +
    + +
    +
    + + + +
    pixel + '(unsigned-byte + 32) + Type +
    + + +
          + +

    + An unsigned integer value that is a maximum of 32 bits long. + This gives a pixel type a value range from 0 to 4,294,967,295. + Useful values are dependent on the class of colormap being used. +

    +
    + +
    +
    + + + +
    pixmap + '(satisfies + pixmap-p) + Type +
    + + +
          + +

    + A pixmap. See + paragraph 4.8, Pixmaps, for additional information. +

    +
    + +
    +
    + + + +
    pixmap-format + + Structure +
    + + +
          + +

    + A structure that describes the storage format of a pixmap. +

    + The pixmap-format + structure contains slots for depth, + bits-per-pixel, and scanline-pad. The depth + member indicates the number of bit planes in the pixmap. The + bits-per-pixel member indicates the number of bits used to + represent a single pixel. For X, a pixel can be 1, 4, 8, 16, + 24, or 32 bits wide. As for bitmap-format + , the scanline-pad member indicates how many pixels + are needed to pad the left edge of the scan-line. +

    +
    + +
    +
    + + + +
    depth + + Slot of pixmap-format +
    + + +
          + +

    + Type: + image-depth. +

    + The number of bit planes in the pixmap. +

    +
    + +
    +
    + + + +
    bits-per-pixel + + Slot of pixmap-format +
    + + +
          + +

    + Type: (member 1 4 8 16 24 32). +

    + The number of consecutive bits used to encode a single pixel. + The default is 8. +

    +
    + +
    +
    + + + +
    scanline-pad + + Slot of pixmap-format +
    + + +
          + +

    + Type: (member 8 16 32). +

    + The number of bits to left-pad the scan-line, which can be 8, + 16, or 32. The default is 8. +

    +
    + +
    +
    + + + +
    point-seq + '(repeat-seq (int16 x) (int16 y)) + Type +
    + + +
          + +

    + The point-seq + type is used to define sequences of (x,y) pairs + of points. The paired values are 16-bit, signed integer + quantities. This gives the points in this type a range from + -32,768 to 32,767. +

    +
    + +
    +
    + + + +
    pointer-event-mask + '(or mask32 ( + list pointer-event-mask-class)) + Type +
    + + +
          + +

    + Provides a way to specify a set of bits for an event bitmask. + Two ways of specifying the bits are allowed: by setting the + event bits in a 32 bit mask, or by listing the keyword names of + the pointer related event bits in a list. +

    +
    + +
    +
    + + + +
    pointer-event-mask-class + '( + member event*) + Type +
    + + +
          + +

    + A keyword name, for a pointer related event, that corresponds + to a particular bit in an event bitmask. The set of names is a + subset of the names in the type event-mask-class + . +

    + event -- One of the following: +

    +
  • + :button-1-motion +
  • + :button-motion +
  • + :leave-window +
  • + :button-2-motion +
  • + :button-press +
  • + :pointer-motion +
  • + :button-3-motion +
  • + :button-release +
  • + :pointer-motion-hint +
  • + :button-4-motion +
  • + :enter-window +
  • + :button-5-motion +
  • + :keymap-state +
  • +
    +
    + +
    +
    + + + +
    rect-seq + '(repeat-seq (int16 x) (int16 y) (card16 width + ) (card16 + height)) + Type +
    + + +
          + +

    + rect-seq + defines a four-tuple sequence of the form (xy + widthheight). The points x + and y are signed, 16-bit quantities with a range + from -32,768 to 32,767. The width and height + values are unsigned, 16-bit quantities and range from 0 to + 65,535. +

    +
    + +
    +
    + + + +
    repeat-seq + (&rest elts) + 'sequence + Type +
    + + +
          + +

    + A subtype used to define repeating sequences. +

    +
    + +
    +
    + + + +
    resource-id + 'card29 + Type +
    + + +
          + +

    + A numeric identifier that is assigned by the server to a server + resource object. +

    +
    + +
    +
    + + + +
    rgb-val + '(float 0.0 + 1.0) + Type +
    + + +
          + +

    + An rgb-val is + a floating-point value between 0 and 1 that specifies a + saturation for a red, green, or blue additive primary. The 0 + value indicates no saturation and 1 indicates full saturation. +

    +
    + +
    +
    + + + +
    screen + '(satisfies + screen-p) + Type +
    + + +
          + +

    + A display screen. See Section 3, Screens, for further + information. +

    +
    + +
    +
    + + + +
    seg-seq + '(repeat-seq (int16 x1 + ) (int16 y1 + ) (int16  + x2) (int16 +  y2)) + Type +
    + + +
          + +

    + Defines sequences of (x1, y1, x2, y2 + ) sets of points. The point values are 16-bit, signed integer + quantities. This gives the points in this type a range from + -32,768 to 32,767. +

    +
    + +
    +
    + + + +
    state-mask-key + '(or modifier-key + (member button*) + Type +
    + + +
          + +

    + A keyword identifying one of the display modifier keys or + pointer buttons whose state is reported in device events. +

    + button -- One of the following: +

    +
  • + :button-1 +
  • + :button-4 +
  • + :button-2 +
  • + :button-5 +
  • + :button-3 +
  • +
    +
    + +
    +
    + + + +
    make-state-keys + state-mask + Function +
    + + +
          + +
    +
    + state-mask +
    + A 16-bit mask of type + mask16. +
    + Returns a list of + state-mask-key symbols corresponding to the state-mask + . A symbol belongs to the returned list if, and only if, the + corresponding state-mask bit is 1. +
    +
    + state-keywords +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    make-state-mask + &rest keys + Function +
    + + +
          + +
    +
    + keys +
    + A list of + state-mask-key symbols. +
    + Returns a 16-bit mask representing the given state-mask-key + symbols. The returned mask contains a 1 bit for each + keyword. +
    +
    + mask +
    + Type mask16. +
    +
    +
    + +
    +
    + + + +
    stringable + '(or string symbol + ) + Type +
    + + +
          + Used for naming something. This type can be either a string or + a symbol whose symbol-name is used as the string + containing the name. The case of the characters in the string is + ignored when comparing stringables. +
    +
    + +
    +
    + + + +
    timestamp + '(or null card32 + ) + Type +
    + + +
          + An encoding of a time. nil stands for the current time. +
    +
    + +
    +
    + + + +
    visual-info + + Structure +
    + + +
          + A structure that represents a visual type. The elements of this + structure are id, class, red-mask, + green-mask, blue-mask, bits-per-rgb, and + colormap-entries. +
    +
    + +
    +
    + + + +
    id + + Slot of visual-info +
    + + +
          + +

    + Type: card29. +

    + A unique identification number. +

    +
    + +
    +
    + + + +
    class + + Slot of visual-info +
    + + +
          + +

    + Type: (member :direct-color :gray-scale :pseudo-color + :static-color :static-gray :true-color). +

    + The class of the visual type. +

    +
    + +
    +
    + + + +
    red-mask, green-mask, blue-mask + + Slots of visual-info +
    + + +
          + +

    + Type: pixel. +

    + The red-mask, green-mask, and blue-mask + elements are only meaningful for the :direct-color and :true-color classes. Each mask has one contiguous set of + bits with no intersections. +

    +
    + +
    +
    + + + +
    bits-per-rgb + + Slot of visual-info +
    + + +
          + +

    + Type: card8. +

    + Specifies the log base 2 of the approximate number of distinct + color values ( individually) of red, green, and blue. Actual + RGB values are unsigned 16-bit numbers. +

    +
    + +
    +
    + + + +
    colormap-entries + + Slot of visual-info +
    + + +
          + +

    + Type: card16. +

    + Defines the number of available colormap entries in a newly + created colormap. For :direct-color and :true-color + , this is the size of an individual pixel subfield. +

    +
    + +
    +
    + + + +
    win-gravity + '( + member gravity*) + Type +
    + + +
          + +

    + A keyword that specifies how to reposition a window when its + parent is resized. +

    + gravity -- One of the following: +

    +
  • + :center +
  • + :north-west +
  • + :static +
  • + :east +
  • + :south +
  • + :unmap +
  • + :north +
  • + :south-east +
  • + :west +
  • + :north-east +
  • + :south-west +
  • + +

    + If a parent window is reconfigured without changing its inside + width or height, then all child windows move with the parent + and are not changed. Otherwise, each child of the resized + parent is moved, depending on the child's gravity + attribute. See + window-gravity, in paragraph 4.3, Window Attributes, + for additional information. +

    +
    + +
    +
    + + + +
    window + '(satisfies + window-p) + Type +
    + + +
          + A window. See Section 4, Windows and Pixmaps, for additional + information. +
    +
    + +
    +
    + + + +
    xatom + '(or string symbol + ) + Type +
    + + +
          + A name that has been assigned a corresponding unique ID by the + server. xatoms are used to identify properties, + selections, and types defined in the X server. An xatom can be either + a string or symbol whose symbol-name is used + as the xatom name. + The case of the characters in the string are significant when + comparing xatoms. +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/Front_matter.html +++ cmucl-20a-20090928/own-work/clx/clxman/Front_matter.html @@ -0,0 +1,121 @@ + + + + + + Front matter + + + + + + + + + + Next Prev + Up +
    +

    Front matter

    + +

    CLX +
    + Common LISP X Interface +
    +

    + +
    + © 1988, 1989 Texas Instruments Incorporated +
    + +

    + Permission is granted to any individual or institution to use, copy, + modify and distribute this document, provided that this complete + copyright and permission notice is maintained, intact, in all copies + and supporting documentation. Texas Instruments Incorporated makes no + representations about the suitability of this document or the software + described herein for any purpose. It is provided "as is" + without express or implied warranty. + +

    Acknowledgments

    + +

    Primary Interface Author:

    + Robert W. Scheifler +
    +   +
    +      MIT Laboratory for Computer Science +
    +      545 Technology Square, Room 418 +
    +      Cambridge, MA 02139 +
    +      rws@zermatt.lcs.mit.edu +
    +

    Primary Implementation Author:

    + LaMott Oren +
    +   +
    +      Texas Instruments +
    +      PO Box 655474, MS 238 +
    +      Dallas, TX 75265 +
    +      oren@csc.ti.com +
    +

    Design Contributors:

    + Dan Cerys, BBN +
    + Scott Fahlman, CMU +
    + Kerry Kimbrough, Texas Instruments +
    + Chris Lindblad, MIT +
    + Rob MacLachlan, CMU +
    + Mike McMahon, Symbolics +
    + David Moon, Symbolics +
    + LaMott Oren, Texas Instruments +
    + Daniel Weinreb, Symbolics +
    + John Wroclawski, MIT +
    + Richard Zippel, Symbolics +
    +

    Documentation Contributors:

    + Keith Cessna, Texas Instruments +
    + Kerry Kimbrough, Texas Instruments +
    + Mike Myjak +
    + LaMott Oren, Texas Instruments +
    + Dan Stenger, Texas Instruments +
    +

    + The X Window System is a trademark of MIT. +

    + UNIX is a trademark of AT&T Bell Laboratories. +

    + ULTRIX, ULTRIX-32, ULTRIX-32m, ULTRIX-32w, and VAX/VMS are trademarks + of Digital Equipment Corporation. + +


    + Next Prev + Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_2_Opening_Fonts.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_2_Opening_Fonts.html @@ -0,0 +1,130 @@ + + + + + + 8.2 Opening Fonts + + + + + + + + + + Next + Prev Up +
    +

    8.2 Opening Fonts

    + +

    + The following paragraphs discuss the CLX functions for opening and + closing fonts. +

    +
    + + + +
    open-font + display name + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + name +
    + A font name string. +
    +

    + Opens the font with the given name and returns a font object. The + name string should contain only ISO Latin-1 characters; case is + not significant. +

    +
    + font +
    + Type font. +
    +
    +
    + +
    +
    + + + +
    close-font + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Deletes the association between the resource ID and the font + . The font is freed when no other server resource + references it. The font can be unloaded by the X server + if this is the last reference to the font by any client. + In any case, the font should never again be referenced + because its resource ID is destroyed. This might not generate a + protocol request if the font is reference-counted + locally or if it is a pseudo-font. +

    +
    + +
    +
    + + + +
    discard-font-info + fonts + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Discards any state that can be re-obtained with open-font. + This is simply a performance hint for memory-limited systems. +

    +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/o.html +++ cmucl-20a-20090928/own-work/clx/clxman/o.html @@ -0,0 +1,79 @@ + + + + + + o + + + + + + + + + + Next Prev Up +
    +

    o

    + +
    +
    + obscure +
    + A window is obscured if some other window obscures it. For + example, window A obscures window B if: +
      +
    • + Both windows are viewable :input-output windows +
    • + Window A is higher in the global stacking order than window B +
    • + The rectangle defined by the outside edges of window A intersects + the rectangle defined by the outside edges of window B +
    + +

    + Notice that window borders are included in the calculation, and + that a window can be obscured and yet still have visible regions. + See occlude (there is a fine distinction between obscure and + occlude). +

    + occlude +
    + A window is occluded if some other window occludes it. For + example, window A occludes window B if: +
      +
    • + Both windows are mapped +
    • + Window A is higher in the global stacking order than window B +
    • + The rectangle defined by the outside edges of window A intersects + the rectangle defined by the outside edges of window B +
    + +

    + Notice that window borders are included in the calculation. See + obscure (there is a fine distinction between occlude and obscure). +

    + override-shell +
    + A subclass of shell used to override the window manager. This + subclass contains pop-up menus and other temporary objects that the + user can never resize and so on. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_2_2_XY-Format_Images.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_2_2_XY-Format_Images.html @@ -0,0 +1,73 @@ + + + + + + 7.2.2 XY-Format Images + + + + + + + + + + Next Prev Up + +
    +

    7.2.2 XY-Format Images +

    + +

    + The image-xy subtype represents an image as a sequence of + bitmaps, one for each plane of the image, in most-significant to + least-significant bit order. The following paragraphs describe the + additional CLX functions that can be used to access image-xy + objects. +

    +
    + + + +
    image-xy-bitmap-list + image + Function +
    + + +
          + +
    +
    + image +
    + An image-xy object. +
    +

    + Returns and (with setf) changes the list of bitmap + planes for the image. +

    +
    + bitmaps +
    + Type list of + bitmap. +
    +
    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_1_Drawables.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_1_Drawables.html @@ -0,0 +1,175 @@ + + + + + + 4.1 Drawables + + + + + + + + + + Next Prev Up +
    +

    4.1 Drawables

    + +

    + Both windows and pixmaps can be used as sources and destinations in + graphics operations. These are collectively known as drawables. + The following functions apply to both windows and pixmaps. +

    +
    + + + +
    drawable-display + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable + object. +
    +

    + Returns the display for the specified drawable. +

    +
    + +
    +
    + + + +
    drawable-equal + drawable-1 drawable-2 + + Function +
    + + +
          + +
    +
    + drawable-1, drawable-2 +
    + drawable + objects. +
    +

    + Returns true if the two arguments refer to the same server + resource, and nil if they do not. +

    +
    + +
    +
    + + + +
    drawable-id + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable + object. +
    +

    + Returns the unique resource ID assigned to the specified + drawable. +

    +
    + id +
    + Type resource-id + . +
    +
    +
    + +
    +
    + + + +
    drawable-p + drawable + Function +
    + + +
          + +

    + Returns true if the argument is a drawable and + nil otherwise. +

    +
    + boole +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    drawable-plist + drawable + Function +
    + + +
          + +

    + Returns and (with setf) sets the property list for the + specified drawable. This function provides a hook where + extensions can add data. +

    +
    + plist +
    + A property list. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_5_Destroying_Graphics_Contexts.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_5_Destroying_Graphics_Contexts.html @@ -0,0 +1,63 @@ + + + + + + 5.5 Destroying Graphics Contexts + + + + + + + + + + Next Prev Up +
    +

    5.5 Destroying Graphics + Contexts

    + +

    + To destroy a graphics context, use free-gcontext. +

    +
    + + + +
    free-gcontext + gcontext + Function +
    + + +
          + +
    +
    + gcontext +
    + A gcontext. +
    +

    + Deletes the association between the assigned resource ID and + the specified graphics context, and then destroys the graphics + context. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_x.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_x.html @@ -0,0 +1,39 @@ + + + + + + X... + + + + + + + + + + Next Prev Up +
    +

    X...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_2_Color_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_2_Color_Functions.html @@ -0,0 +1,236 @@ + + + + + + 9.2 Color Functions + + + + + + + + + + Next Prev Up + +
    +

    9.2 Color Functions

    + +

    + A color is represented by a CLX color object, in which each of the red, + green, and blue values is specified by an rgb-val -- a floating + point number between 0.0 and 1.0. (see paragraph 1.6, Data Types). The + value 0.0 represents the minimum intensity, while 1.0 represents the + maximum intensity. CLX automatically converts rgb-val values into + 16-bit integers when sending colors to an X server. The X server, in + turn, scales 16-bit color values to match the actual intensity range + supported by the screen. +

    + Colors used on :gray-scale screens must have the same value for + each of red, green, and blue. Only one of these values is used by + screen hardware to determine intensity; however, CLX does not define + which of red, green, or blue is actually used. +

    + The following paragraphs describe the CLX functions used to create, + access, and modify colors. +

    +
    + + + +
    make-color + &key (:blue + 1.0) (:green 1.0) (:red 1.0) &allow-other-keys + Function +
    + + +
          + +
    +
    + :blue, :green, :red +
    + rgb-val + values that specify the saturation for each primary. +
    +

    + Creates, initializes, and returns a new color object with + the specified values for red, green, and blue. +

    +
    + color +
    + Type color. +
    +
    +
    + +
    +
    + + + +
    color-blue + color + Function +
    + + +
          + +
    +
    + color +
    + A color object. +
    +

    + Returns and (with setf) sets the value for blue in the color. +

    +
    + blue-intensity +
    + Type rgb-val. +
    +
    +
    + +
    +
    + + + +
    color-green + color + Function +
    + + +
          + +
    +
    + color +
    + A color object. +
    +

    + Returns and (with setf) sets the value for green in the + color. +

    +
    + green-intensity +
    + Type rgb-val. +
    +
    +
    + +
    +
    + + + +
    color-p + color + Function +
    + + +
          + +

    + Returns non-nil if the argument is a color object and nil otherwise. +

    +
    + color-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    color-red + color + Function +
    + + +
          + +
    +
    + color +
    + A color object. +
    +

    + Returns and (with setf) sets the value for red in the + color. +

    +
    + red-intensity +
    + Type rgb-val. +
    +
    +
    + +
    +
    + + + +
    color-rgb + color + Function +
    + + +
          + +
    +
    + color +
    + A color object. +
    +

    + Returns the values for red, green, and blue in the color. +

    +
    + red, green, blue +
    + Type rgb-val. +
    +
    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_9_Grabbing_a_Button.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_9_Grabbing_a_Button.html @@ -0,0 +1,190 @@ + + + + + + 12.9 Grabbing a Button + + + + + + + + + + Next Prev Up +
    +

    12.9 Grabbing a Button +

    + +

    + CLX provides the + grab-button and ungrab-button + functions for passively grabbing and releasing pointer control. +

    +
    + + + +
    grab-button + window button + event-mask &key (:modifiers 0) :owner-p + :sync-pointer-p :sync-keyboard-p :confine-to :cursor + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + button +
    + The button (type card8 + ) pressed or :any. +
    + event-mask +
    + A + pointer-event-mask. +
    + :modifiers +
    + A modifier-mask + . +
    + :owner-p +
    + If true, all client windows receive pointer events normally. +
    + :sync-pointer-p +
    + Indicates whether the pointer is handled in a synchronous or + asynchronous fashion. +
    + :sync-keyboard-p +
    + Indicates whether the keyboard is in synchronous or + asynchronous mode. +
    + :confine-to +
    + A window to + which the pointer is confined. +
    + :cursor +
    + A cursor. +
    +

    + This request establishes a passive grab. If the specified + button is pressed when the specified modifier keys are down + (and no other buttons or modifier keys are down), and: +

      +
    • + window contains the pointer +
    • + The :confine-to window (if any) is viewable +
    • + These constraints are not satisfied for any ancestor of + window +
    + +

    + then: +

      +
    • + The pointer is actively grabbed as described with + grab-pointer +
    • + The last-pointer-grab time is set to the time that the button + was pressed (as transmitted in the :button-press event) +
    • + The :button-press event is reported +
    + +

    + The interpretation of the remaining arguments is the same as + with + grab-pointer. The active grab is terminated + automatically when all buttons are released (independent of the + state of modifier keys). +

    + A zero modifier mask is equivalent to issuing the + request for all possible modifier-key combinations (including + the combination of no modifiers). It is not required that all + specified modifiers have currently assigned keycodes. A + button of :any is equivalent to issuing the request + for all possible buttons. Otherwise, it is not required that + the specified button currently be assigned to a physical + button. +

    +
    + +
    +
    + + + +
    ungrab-button + window button + &key (:modifiers 0) + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + button +
    + The button (type card8 + ) that is released or :any. +
    + :modifiers +
    + A modifier-mask + . +
    +

    + Releases the passive button/key combination on the specified + window if it was grabbed by this client. A zero modifier + mask is equivalent to issuing the request for all possible + modifier combinations including the combination of no + modifiers. A button of :any is equivalent to + issuing the request for all possible buttons. This has no + effect on an active grab. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_3_Processing_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_3_Processing_Events.html @@ -0,0 +1,365 @@ + + + + + + 12.3 Processing Events + + + + + + + + + + Next Prev Up +
    +

    12.3 Processing Events +

    + +

    + Events received by a CLX client are stored in an event queue + until they are read and processed. Events are processed by handler + functions. +

    +
    + + + +
    handler-function + &rest event-slots + &key :display :event-key :send-event-p & + allow-other-keys + Function +
    + + +
          + +
    +
    + :display +
    + A display + for the connection that returned the event. +
    + :event-key +
    + An event-key + keyword specifying the event type. +
    + :send-event-p +
    + If true, the event was sent from another application using + the + send-event function. +
    +

    + The arguments to a handler function are keyword-value pairs + that describe the contents of an event. The actual + event-slots passed depend on the event type, except that + :display, :event-key, and :send-event-p are + given for all event types. The keyword symbols used for each + event type are event slot names defined by the + declare-event macro and are described in paragraph + 12.12.8, Declaring Event Types. +

    + If a handler returns non-nil, the event is considered + processed and can be removed from the event queue. + Otherwise, if a handler function returns nil, the event + can remain in the event queue for later processing. +

    +
    + handled-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    process-event + display &key + :handler :timeout :peek-p :discard-p (:force-output-p t) + + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + :handler +
    + A handler function or a sequence of handler functions. +
    + :timeout +
    + Specifies the timeout delay in seconds. +
    + :peek-p +
    + If nil, events are removed from the event queue after + processing. +
    + :discard-p +
    + If true, unprocessed events are discarded. +
    + :force-output-p +
    + If true, buffered output requests are sent. +
    +

    + Invokes :handler on each queued event until :handler + returns non-nil. Then, the non-nil :handler + value is returned by + process-event. If :handler returns nil + for each event in the event queue, + process-event waits for another event to arrive. If + timeout is non-nil and no event arrives within the + specified timeout interval (given in seconds), + process-event returns nil; if timeout is nil + , + process-event will not return until :handler + returns non-nil. + process-event may wait only once on network data, and + therefore timeout prematurely. +

    + If :force-output-p is true, + process-event first invokes display-force-output to send any buffered requests. + If :peek-p is true, a processed event is not removed + from the queue. If :discard-p is true, unprocessed + events are removed from the queue; otherwise, unprocessed + events are left in place. +

    + If :handler is a sequence, it is expected to contain + handler functions for each event type. The sequence index of + the handler function for a particular event type is given by ( + position event-key *event-key-vector*). +

    +
    + handled-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    event-case + display &key + :timeout :peek-p :discard-p (:force-output-p t) &body + clauses + Macro +
    + + +
          + +
    +
    + display +
    + A display. +
    + :handler +
    + A handler function or a sequence of handler functions. +
    + :timeout +
    + Specifies the timeout delay, in seconds. +
    + :peek-p +
    + If nil, events are removed from the event queue after + processing. +
    + :discard-p +
    + If true, unprocessed events are discarded. +
    + :force-output-p +
    + If true, buffered output requests are sent. +
    + clauses +
    + Code to process specified event types. +
    +

    + Executes the matching clause for each queued event until a + clause returns non-nil. The non-nil clause value + is then returned. Each of the clauses is a list of the form ( + event-match [event-slots] &rest forms), + where: +

      +
    • + event-match -- Either an event-key, a + list of event-keys, otherwise, or t. It is an + error for the same key to appear in more than one clause. +
    • + event-slots -- If given, a list of (non-keyword) event + slot symbols defined for the specified event type(s). See + paragraph 12.12.8, Declaring Event Types. +
    • + forms -- A list of forms that process the specified + event type(s). The value of the last form is the value + returned by the clause. +
    + +

    + A clause matches an event if the event-key is + equal to or a member of the event-match, or if the + event-match is t or otherwise. If no t + or otherwise clause appears, it is equivalent to having + a final clause that returns nil. If event-slots + is given, these symbols are bound to the value of the + corresponding event slot in the clause forms. Each element of event-slots can also be a list of the form ( + event-slot-keyword variable), in which case the variable + symbol is bound to the value of the event slot specified + by the event-slot-keyword. +

    + If every clause returns nil for each event in the event + queue, + event-case waits for another event to arrive. If + :timeout is non-nil and no event arrives within the + specified timeout interval (given in seconds), event-case + returns nil; if :timeout is nil, event-case + will not return until a clause returns non-nil. event-case + may wait only once on network data and therefore timeout + prematurely. +

    + If :force-output-p is true, event-case + first invokes display-force-output to send any buffered requests. + If :peek-p is true, a processed event is not removed + from the queue. If :discard-p is true, unprocessed + events are removed from the queue; otherwise, unprocessed + events are left in place. +

    +
    + handled-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    event-cond + display &key + :timeout :peek-p :discard-p (:force-output-p t) &body + clauses + Macro +
    + + +
          + +
    +
    + display +
    + A display. +
    + :handler +
    + A handler function or a sequence of handler functions. +
    + :timeout +
    + Specifies the timeout delay in seconds. +
    + :peek-p +
    + If nil, events are removed from the event queue after + processing. +
    + :discard-p +
    + If true, unprocessed events are discarded. +
    + :force-output-p +
    + If true, buffered output requests are sent. +
    + clauses +
    + Code to process specified event types. +
    +

    + Similar to + event-case except that each of the clauses is a list of + the form (event-match [event-slots] test-form + &rest forms). Executes the test-form of + the clause that matches each queued event until a test-form + returns non-nil. The body forms of the + clause are then executed. The values returned by the last + clause body form are then returned by event-cond + . +

    + When a test-form returns true and :peek-p is + nil, or when a test-form returns nil and + :discard-p is true, the matching event is removed from the + event queue before the body forms are executed. +

    +
    + handled-p +
    + Type boolean. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/r.html +++ cmucl-20a-20090928/own-work/clx/clxman/r.html @@ -0,0 +1,107 @@ + + + + + + r + + + + + + + + + + Next Prev Up +
    +

    r

    + +
    +
    + realization +
    + See contact realization. +
    + redirecting control +
    + Window managers (or client programs) may choose to enforce window + layout policy in various ways. When a client attempts to change the + size or position of a window, the operation can be redirected + to a specified client, rather than the operation actually being + performed. +
    + reply +
    + Information requested by a client program is sent back to the client + with a reply. Both events and replies are multiplexed on the + same connection. Most requests do not generate replies. However, some + requests generate multiple replies. +
    + representation type +
    + The type of representation of a resource value. For example, a color + value might be represented either as a namestring ("red"), a + pixel value, an RGB triplet, an HSV triplet, and so on. +
    + request +
    + A command to the server is called a request. It is a single + block of data sent over a connection. +
    + resource +
    + A value of the user interface that can be changed by the user in a + resource database via CLX functions + add-resource, + get-resource, and so forth. See server resource. +
    + resource class, complete +
    + See complete resource class. +
    + resource database +
    + Conceptually, a set of resource name/value pairs (or resource + bindings). CLX defines functions for storing and retrieving interface + resources from a resource database. +
    + resource name, complete +
    + See complete resource name. +
    + RGB values +
    + Red, green, and blue intensity values used to + define color. These values are always represented as 16-bit unsigned + numbers, with zero being the minimum intensity and 65535 being the + maximum intensity. The values are scaled by the server to match the + display hardware. +
    + root +
    + A special composite contact used to represent an entire display + screen. +
    + root window +
    + Each screen has a root window covering it. It cannot be + reconfigured or unmapped, but otherwise acts as a full-fledged + window. A root window has no parent. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/t.html +++ cmucl-20a-20090928/own-work/clx/clxman/t.html @@ -0,0 +1,92 @@ + + + + + + t + + + + + + + + + + Next Prev Up +
    +

    t

    + +
    +
    + tile +
    + A pixmap can be replicated in two dimensions to tile a region. + The pixmap itself is also known as a tile. +
    + timer +
    + A CLUE object that provides support for animation and other types of + time-sensitive user interfaces. A timer causes :timer events + to be dispatched to a specific contact for processing. +
    + timestamp +
    + A time value, expressed in milliseconds, typically since the last + server reset. Timestamp values wrap around (after about 49.7 days). + The server, given its current time is represented by timestamp T, + always interprets timestamps from clients by treating half of the + timestamp space as being earlier in time than T and half of the + timestamp space as being later in time than T. One timestamp value + (named CurrentTime) is never generated by the server; this value is + reserved for use in requests to represent the current server time. +
    + top-level contact +
    + A contact whose parent is a root. A top-level contact is usually a + composite at the top of a hierarchy of other contacts created by an + application program. +
    + top-level-session +
    + A subclass of shell that is used to communicate with a session + manager. +
    + top-level-shell +
    + A subclass of shell that provides full window manager + interaction. +
    + transient-shell +
    + A subclass of shell that a window manager typically will unmap + when its owner becomes unmapped or iconified and will not allow to be + individually iconified. +
    + true color +
    + A degenerate case of direct color in which the subfields in the pixel + value directly encode the corresponding RGB values. That is, the + colormap has predefined read-only RGB values. The values are + typically (near-)linear increasing ramps. +
    + type +
    + An arbitrary atom used to identify the interpretation of property + data. Types are completely uninterpreted by the server; they are + solely for the benefit of clients. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/15_Extensions.html +++ cmucl-20a-20090928/own-work/clx/clxman/15_Extensions.html @@ -0,0 +1,37 @@ + + + + + + 15 Extensions + + + + + + + + + + Next + Prev Up +
    +

    15 Extensions

    + +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_4_Managing_the_Event_Queue.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_4_Managing_the_Event_Queue.html @@ -0,0 +1,215 @@ + + + + + + 12.4 Managing the Event Queue + + + + + + + + + + Next Prev Up +
    +

    12.4 Managing the Event Queue +

    + +

    + The following paragraphs describe CLX functions and macros used to: +

      +
    • + Put a new event on the event queue +
    • + Discard the current event +
    • + Return the current length of the event queue +
    • + Gain exclusive access to the event queue for a client process +
    + +
    +
    + + + +
    queue-event + display event-key + &rest event-slots &key :append-p & + allow-other-keys + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + event-key +
    + Specifies the type of event placed in the queue. +
    + event-slots +
    + Keyword-value pairs that describe the contents of an event. +
    + :append-p +
    + If true, the event is placed at the tail of the queue; + otherwise, the event is placed at the head of the queue. +
    +

    + Places an event of the type given by event-key into the + event queue. When :append-p is true, the event is placed + at the tail of the queue; otherwise, the event is placed at the + head of the queue. The actual event-slots passed depend + on the event type. The keyword symbols used for each event type + are event slot names defined by the + declare-event macro and are described in paragraph + 12.12.8, Declaring Event Types. +

    +
    + +
    +
    + + + +
    discard-current-event + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Discards the current event for the display. Returns + nil when the event queue is empty; otherwise, returns t + . This function provides extra flexibility for discarding + events, but it should be used carefully; use event-cond + instead, if possible. Typically, discard-current-event is called inside a handler + function or a clause of an event-case + form and is followed by another call to + process-event, event-case + , or + event-cond. +

    +
    + discarded-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    event-listen + display & + optional (timeout 0) + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + timeout +
    + The number of seconds to wait for events. +
    +

    + Returns the number of events queued locally. If the event queue + is empty, + event-listen waits for an event to arrive. If timeout + is non-nil and no event arrives within the specified + timeout interval (given in seconds), + event-listen returns nil; if timeout is nil + , + event-listen will not return until an event arrives. +

    +
    + event-count +
    + Type (or null integer). +
    +
    +
    + +
    +
    + + + +
    with-event-queue + display &body + body + Macro +
    + + +
          + +
    +
    + display +
    + A display. +
    + body +
    + Forms to execute. +
    +

    + Executes the body in a critical region in which the + executing client process has exclusive access to the event + queue. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_6_Querying_Text_Size.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_6_Querying_Text_Size.html @@ -0,0 +1,196 @@ + + + + + + 8.6 Querying Text Size + + + + + + + + + + Next + Prev Up +
    +

    8.6 Querying Text Size +

    + +

    + CLX defines functions to return the size of text drawn in a specified + font. See paragraph 6.7, Drawing Text, for a description of the + :translate function used by the functions in the following + paragraphs. +

    +
    + + + +
    text-extents + font sequence + &key (:start 0) :end :translate + Function +
    + + +
          + +
    +
    + font +
    + The font (or + gcontext) used for measuring characters. +
    + sequence +
    + A sequence of characters or other objects to be translated + into font indexes. +
    + :start, :end +
    + Start and end indexes defining the elements to draw. +
    + :translate +
    + A function to translate text to font indexes. Default is + #'translate-default. +
    +

    + Returns the complete geometry of the given sequence when + drawn in the given font. The font can be a gcontext, in + which case the font attribute of the given graphics context is + used. :start and :end define the elements of the + sequence which are used. +

    + The returned width is the total pixel width of the + translated character sequence. The returned ascent and descent give the vertical ascent and descent for + characters in the translated sequence. The returned + left gives the left bearing of the leftmost character. The + returned right gives the right bearing of the rightmost + character. The returned font-ascent and font-descent + give the maximum vertical ascent and descent for all + characters in the font. If :translate causes font + changes, then font-ascent and font-descent will + be the maximums over all fonts used. The direction + returns the preferred draw direction for the font. If + :translate causes font changes, then the direction + will be nil. The first-not-done value returned is + nil if all elements of the sequence were + successfully translated; otherwise the index of the first + untranslated element is returned. +

    +
    + width +
    + Type int32. +
    + ascent +
    + Type int16. +
    + descent +
    + Type int16. +
    + left +
    + Type int32. +
    + right +
    + Type int32. +
    + font-ascent +
    + Type int16. +
    + direction +
    + Type + draw-direction. +
    + first-not-done +
    + Type array-index + or null. +
    +
    +
    + +
    +
    + + + +
    text-width + font sequence + &key (:start 0) :end :translate + Function +
    + + +
          + +
    +
    + font +
    + The font (or + gcontext) used for measuring characters. +
    + sequence +
    + A sequence of characters or other objects to be translated + into font indexes. +
    + :start, :end +
    + Start and end indexes defining the elements to draw. +
    + :translate +
    + A function to translate text to font indexes. Default is + #'translate-default. +
    +

    + Returns the total pixel width of the given sequence when + drawn in the given font. The font can be a gcontext, in + which case the font attribute of the given graphics context is + used. :start and :end define the elements of the + sequence which are used. The second value returned is + nil if all elements of the sequence were + successfully translated; otherwise the index of the first + untranslated element is returned. +

    +
    + width +
    + Type int32. +
    + first-not-done +
    + Type array-index + or null. +
    +
    +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_5_Sending_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_5_Sending_Events.html @@ -0,0 +1,127 @@ + + + + + + 12.5 Sending Events + + + + + + + + + + Next Prev Up +
    +

    12.5 Sending Events

    + +

    + A client can send an event to a window. Clients selecting this window + event will receive it just like any other event sent by the X server. +

    +
    + + + +
    send-event + window event-key + event-mask &rest event-slots &key + :propagate-p :display &allow-other-keys + Function +
    + + +
          + +
    +
    + window +
    + The destination window + for the event. +
    + event-key +
    + An event-key + defining the type of event to send. +
    + event-mask +
    + Specifies the event types that receiving clients must select. +
    + event-slots +
    + Keyword-value pairs that describe the contents of an event. +
    + :propagate-p +
    + If true, the event can be propagated to ancestors of the + destination window. +
    + :display +
    + A display. +
    +

    + Sends an event specified by the event-key and + event-slots to the given destination window. Any + active grabs are ignored. The event-slots passed depend + on the event type. The keyword symbols used for each event type + are event slot names defined by the + declare-event macro and are described in paragraph + 12.12.8, Declaring Event Types. +

    + If the window is :pointer-window, the destination + window is replaced with the window containing the + pointer. If the window is :input-focus, the + destination window is replaced with the descendant of + the focus window that contains the pointer or (if no such + descendant exists) the focus window. The :display + keyword is only required if the window is + :pointer-window or :input-focus. +

    + The event-key must be one of the core events, or one of + the events defined by an extension, so the server can send the + event with the correct byte-order. The contents of the event + are otherwise unaltered and unchecked by the server, except + that the send-event-p event slot is set to true. +

    + If the event-mask is nil, the event is sent to + the client that created the destination window with an event-mask of 0; if that client no longer exists, no event + is sent. Otherwise, the event is sent to every client selecting + any of the event types specified by event-mask on the + destination window. +

    + If :propagate-p is true and no clients have selected any + of the event types in event-mask on the destination + window, the destination is replaced with the closest + ancestor of window for which some client has selected a + type in event-mask and no intervening window has that + type in its do-not-propagate mask. If no such window exists, or + if the window is an ancestor of the focus window and + :input-focus was originally specified as the destination, + the event is not sent to any clients. Otherwise, the event is + reported to every client selecting on the final destination any + of the types specified in event-mask. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/u.html +++ cmucl-20a-20090928/own-work/clx/clxman/u.html @@ -0,0 +1,44 @@ + + + + + + u + + + + + + + + + + Next Prev Up +
    +

    u

    + +
    +
    + unmanaged +
    + A contact that is not under geometry management control. +
    + user interface +
    + A set of abstract interface objects used to control the dialog + between an application and its human user. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_2_Installing_Colormaps.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_2_Installing_Colormaps.html @@ -0,0 +1,149 @@ + + + + + + 9.3.2 Installing Colormaps + + + + + + + + + + Next Prev Up +
    +

    9.3.2 Installing Colormaps +

    + +

    + The following paragraphs describe the CLX functions to install and + uninstall colormaps and to return the set of installed colormaps. +

    + Initially, the default + colormap for a screen is installed (but is not in the required + list). +

    +
    + + + +
    install-colormap + colormap + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    +

    + Installs the colormap. All windows associated with this + colormap immediately display with true colors. As a + side-effect, additional colormaps might be implicitly + uninstalled by the server. +

    + If the specified colormap is not already installed, a + :colormap-notify event is generated on every window + associated with this colormap. In addition, for every + other colormap that is implicitly uninstalled, a + :colormap-notify event is generated on every + associated window. +

    +
    + +
    +
    + + + +
    installed-colormaps + window &key ( + :result-type 'list) + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + :result-type +
    + A sub-type of sequence that indicates the type of + sequence to return. +
    +

    + Returns a sequence containing the installed colormaps + for the screen of the specified window. The order of the + colormaps is not significant. +

    +
    + colormap +
    + Type sequence of colormap. +
    +
    +
    + +
    +
    + + + +
    uninstall-colormap + colormap + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    +

    + Uninstalls the colormap. However, the colormap is + not actually uninstalled if this would reduce the set of + installed colormaps below the value of + screen-min-installed-maps. If the colormap is + actually uninstalled, a + :colormap-notify event is generated on every + associated window. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/10_4_Cursor_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/10_4_Cursor_Attributes.html @@ -0,0 +1,187 @@ + + + + + + 10.4 Cursor Attributes + + + + + + + + + + Next Prev Up + +
    +

    10.4 Cursor Attributes +

    + +

    + The complete set of cursor attributes is discussed in the following + paragraphs. +

    +
    + + + +
    cursor-display + cursor + Function +
    + + +
          + +
    +
    + cursor +
    + A cursor + object. +
    +

    + Returns the display + object associated with the specified cursor. +

    +
    + display +
    + Type display. +
    +
    +
    + +
    +
    + + + +
    cursor-equal + cursor-1 cursor-2 + Function +
    + + +
          + +
    +
    + cursor-1, cursor-2 +
    + cursor + objects. +
    +

    + Returns true if the two arguments refer to the same server + resource and nil if they do not. +

    +
    + +
    +
    + + + +
    cursor-id + cursor + Function +
    + + +
          + +
    +
    + cursor +
    + A cursor + object. +
    +

    + Returns the unique resource ID that has been assigned to the + specified cursor. +

    +
    + id +
    + Type resource-id. +
    +
    +
    + +
    +
    + + + +
    cursor-p + cursor + Function +
    + + +
          + +

    + Returns true if the argument is a cursor object and + nil otherwise. +

    +
    + cursor-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    cursor-plist + cursor + Function +
    + + +
          + +
    +
    + cursor +
    + A cursor + object. +
    +

    + Returns and (with setf) sets the property list for the + specified cursor. This function provides a hook where + extensions can add data. +

    +
    + plist +
    + A property list. +
    +
    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/v.html +++ cmucl-20a-20090928/own-work/clx/clxman/v.html @@ -0,0 +1,49 @@ + + + + + + v + + + + + + + + + + Next Prev Up +
    +

    v

    + +
    +
    + viewable +
    + A window is viewable if it and all of its ancestors are + mapped. This does not imply that any portion of the window is + actually visible. Graphics requests can be performed on a window when + it is not viewable, but output will not be retained unless the server + is maintaining backing store. +
    + visible +
    + A region of a window is visible if someone looking at the + screen can actually see it; that is, the window is viewable and the + region is not occluded by any other window. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_r.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_r.html @@ -0,0 +1,85 @@ + + + + + + R... + + + + + + + + + + Next Prev Up +
    +

    R...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_Control_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_Control_Functions.html @@ -0,0 +1,52 @@ + + + + + + 14 Control Functions + + + + + + + + + + Next Prev Up +
    +

    14 Control Functions +

    + +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_s.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_s.html @@ -0,0 +1,137 @@ + + + + + + S... + + + + + + + + + + Next Prev Up +
    +

    S...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_5_Resource_Database_Files.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_5_Resource_Database_Files.html @@ -0,0 +1,145 @@ + + + + + + 13.5 Resource Database Files + + + + + + + + + + Next Prev Up +
    +

    13.5 Resource Database Files +

    + +

    + X users and application programs can save resource bindings in a file, + using a standard file format shared by all X clients. The following + paragraphs describe the CLX functions used to convert between the + standard external format of resource files and the internal + resource-database format used by application programs. +

    +
    + + + +
    read-resources + database pathname + &key :key :test :test-not + Function +
    + + +
          + +
    +
    + database +
    + The resource-database to merge. +
    + pathname +
    + A pathname for the resource file to read. +
    + :key +
    + A function used to convert a value from the resource file + into a resource binding value. +
    + :test, :test-not +
    + Functions used to select which resource bindings from the + resource file are merged with the database. +
    +

    + Reads resource bindings from a resource file in standard X11 + format and merges them with the given resource database. + The :key function is called to convert a file resource + value into the value stored in the database. By default, + :key is #'identity. The :test and + :test-not functions are predicates that select resource + bindings to merge, based on the result of the :key + function. For each file resource binding consisting of a + resource-name and a resource-value, the :test + (or :test-not) function is called with the arguments + resource-name and (funcall key resource-value + ). +

    +
    + database +
    + Type resource-database. +
    +
    +
    + +
    +
    + + + +
    write-resources + database pathname + &key :write :test :test-not + Function +
    + + +
          + +
    +
    + database +
    + The resource-database to write. +
    + pathname +
    + A pathname of the file to write. +
    + :write +
    + A function for writing resource values. +
    + :test, :test-not +
    + Functions used to select which resource bindings from the + resource file are merged with the database. +
    +

    + Writes resource bindings found in the database to the + file given by the pathname. The output file is written + in the standard X11 format. The :write function is used + for writing resource values; the default is #'princ. + The :write function is passed two arguments: a + resource-value and a stream. The :test and + :test-not functions are predicates which select resource + bindings to write. For each resource binding consisting of a + resource-name and a resource-value, the :test + (or :test-not) function is called with the arguments + resource-name and resource-value. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_3_4_The_Main_Program.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_3_4_The_Main_Program.html @@ -0,0 +1,93 @@ + + + + + + 1.3.4 The Main Program + + + + + + + + + + Next Prev Up +
    +

    1.3.4 The Main Program +

    + +

    + After all the preceding build-up and the other functions referenced + (but not shown here) have been implemented, the code for the main + client program is very small. +

    +(defun just-say-lisp (host &optional (font-name "fg-16"))
    +  (let* ((display   (OPEN-DISPLAY host))
    +         (screen    (first (DISPLAY-ROOTS display)))
    +         (fg-color  (SCREEN-BLACK-PIXEL screen))
    +         (bg-color  (SCREEN-WHITE-PIXEL screen))
    +         (nice-font (OPEN-FONT display font-name))
    +
    +         ;; Create a menu as a child of the root window.
    +         (a-menu       (create-menu (SCREEN-ROOT screen)
    +                                    fg-color bg-color nice-font)))
    +
    +    (setf (menu-title a-menu) "Please pick your favorite language:")
    +    (menu-set-item-list a-menu "Fortran" "APL" "Forth" "Lisp")
    +
    +    ;; Bedevil the user until he picks a nice programming language
    +    (unwind-protect
    +        (loop
    +          ;; Determine the current root window position of the pointer
    +          (multiple-value-bind (x y) (QUERY-POINTER (SCREEN-ROOT screen))
    +
    +            (let ((choice (menu-choose a-menu x y)))
    +              (when (string-equal "Lisp" choice)
    +                (return)))))
    +
    +      (CLOSE-DISPLAY display))))
    +        
    + +

    + Note that the main program event loop lies in the body of an + unwind-protect form. This is a good programming technique because, + without this protection, an unexpected error could cause the program to + terminate without freeing the server resources it has created. + Server resources are CLX objects which refer to objects actually stored + on the X server. Examples of these are window, font, pixmap, cursor, colormap, and gcontext objects. These + server resources are created and destroyed by user requests. Server + resources created by a client are also destroyed when its display + connection is closed. If client resources are repeatedly created + without being destroyed, then the server will eventually run out of + memory and fail. +

    + Most server resources are potentially sharable between applications. In + fact, windows are manipulated explicitly by window manager programs. + Fonts and cursors are typically shared automatically since the X server + loads and unloads font storage as needed. gcontext objects are + not ordinarily shared between client applications. + +


    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_3_5_Debugging_With_CLX.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_3_5_Debugging_With_CLX.html @@ -0,0 +1,72 @@ + + + + + + 1.3.5 Debugging With CLX + + + + + + + + + + Next Prev Up +
    +

    1.3.5 Debugging With CLX +

    + +

    + Typically, most CLX programs do not need to control the buffering of + output requests directly. However, CLX programmers need to be aware of + the asynchronous nature of client-server communication. It may be + convenient to control the CLX output buffer more directly, especially + during debugging. +

    + A client that wants a request to execute immediately instead of + asynchronously can follow it with a call to + display-force-output. This function blocks (does not + return) until all previously buffered output requests have been sent. + Otherwise, the output buffer is always flushed by a call to any + function which returns a value from the server or which waits for input + (for example, + get-property). Certain output requests can cause input events + to be sent. For example, + map-window can cause :exposure + events to be sent. Synchronizing output with the resulting input can be + done with the + display-finish-output function. This function blocks until all + previously buffered output has been sent and all resulting input events + have been received. +

    + Functions that return information from the server block until an + explicit reply is received or an error occurs. If a nonblocking call + results in an error, the error is generally not reported until later. + All errors (synchronous and asynchronous) are processed by calling an + error handler defined for the display. If the handler is a sequence it + is expected to contain handler functions specific to each error. The + error code is used to index the sequence, fetching the appropriate + handler. Any results returned by the handler are ignored since it is + assumed that the handler either takes care of the error completely, or + else signals. + +


    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_m.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_m.html @@ -0,0 +1,137 @@ + + + + + + M... + + + + + + + + + + Next Prev Up +
    +

    M...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_2_Resource_Binings.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_2_Resource_Binings.html @@ -0,0 +1,110 @@ + + + + + + 13.2 Resource Binings + + + + + + + + + + Next Prev Up + +
    +

    13.2 Resource Binings +

    + +

    + Conceptually, a resource database is a set of resource name-value pairs + (or resource bindings). The name in a resource binding is a list + that is the concatenation of a path list and an attribute name + . +

    + A path list is a list of symbols (or strings) that corresponds to a + path through a tree-structured hierarchy. For example, the path: +

    + '(top middle bottom) +

    + corresponds to a three-level hierarchy in which middle is + the child of top, and bottom is the child of + middle. +

    + Typically, the path of a resource name corresponds to a path in a + hierarchy of windows, and each symbol/string names a window in the + hierarchy. However, the first element of the path can also represent + the overall name of the entire program, and subsequent path elements + can refer to an application-specific hierarchy of resource names not + strictly related to windows. In addition, a resource name can contain a + partially-specified path list. The asterisk symbol (*) is a wildcard + that can correspond to any sequence of levels in the hierarchy + (including the null sequence). For example, the path: +

    + '(top * bottom) +

    + corresponds to a hierarchy of two or more levels in which top + is at the top level and bot- tom is + at the bottom level. An element of a path list can be the name of an + individual window or the name of a class of windows. +

    + The final element of a resource name list is an attribute name. This + symbol (or string) identifies a specific attribute of the object(s) + named by the preceding path list. The attribute name can also be the + symbol * or the string "*", in which case the resource name + refers to all attributes of the path object(s). However, this form of + resource name is rarely useful. +

    + Some examples of resource bindings are shown below. In these examples, + assume that mail is the resource name of a mail reading + application. mail uses a window of the class button + whose name is reply. + + + + + +
    + Resource Name + + Resource Value +
    (mail screen-1 reply background) + 'green +
    (mail * background) + 'red +
    (* button background) + 'blue +
    + +

    + These resource bindings specify the following: +

      +
    • + The background attribute resource of mail + application's reply button has the value of + green on screen-1. +
    • + The background attribute for the rest of the mail + application is always red on all screens. +
    • + In general, the background attribute for all button + windows is blue. +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_3_Keyboard_and_Pointer_State_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_3_Keyboard_and_Pointer_State_Events.html @@ -0,0 +1,160 @@ + + + + + + 12.12.3 Keyboard and Pointer State Events + + + + + + + + + + Next Prev Up +
    +

    12.12.3 Keyboard and Pointer + State Events

    + +

    + The keyboard and pointer state events are :keymap-notify and + :mapping-notify. +

    +
    + + + +
    :keymap-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :keymap-state. +
    + +

    + The :keymap-notify event returns the current state of + the keyboard. :keymap-notify is generated immediately after every + :enter-notify and :focus-in + . +

    +
    + window, event-window +
    + Type window. + The window receiving an :enter-notify or :focus-in + event. +
    + keymap +
    + Type (bit-vector 256). A bit-vector containing the + logical state of the keyboard. Each bit set to 1 indicates + that the corresponding key is currently pressed. The vector + is represented as 32 bytes. For n from 0 to 7, byte + n (from 0) contains the bits for keys 8n to 8n + +7, with the least significant bit in the byte + representing key 8n. +
    +
    +
    + +
    +
    + + + +
    :mapping-notify + + Event Type +
    + + +
          + +

    + The X server reports :mapping-notify events to all clients. There is no + mechanism to express disinterest in this event. The X server + generates this event type whenever a client application calls + one of the following: +

      +
    • + + set-modifier-mapping to indicate which keycodes to + use as modifiers (the status reply must be :mapping-success + ) +
    • + change-keyboard-mapping to change the keyboard + mapping +
    • + set-pointer-mapping to set the pointer mapping (the + status reply must be :mapping-success) +
    + +
    +
    + request +
    + Type (member :modifier :keyboard :pointer). Indicates + the kind of change that occurred--:modifier for a + successful + set-modifier-mapping, :keyboard for a + successful + change-keyboard-mapping, and :pointer for a + successful set-pointer-mapping. +
    + start +
    + Type card8. If + request is :keyboard, then start and count + indicate the range of altered keycodes. +
    + count +
    + Type card8. If + request is :keyboard, then start and count + indicate the range of altered keycodes. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/11_Atoms__Properties_and_Selections.html +++ cmucl-20a-20090928/own-work/clx/clxman/11_Atoms__Properties_and_Selections.html @@ -0,0 +1,42 @@ + + + + + + 11 Atoms, Properties and Selections + + + + + + + + + + Next + Prev Up +
    +

    11 Atoms, Properties and + Selections

    + +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_2_Image_Types.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_2_Image_Types.html @@ -0,0 +1,46 @@ + + + + + + 7.2 Image Types + + + + + + + + + + Next Prev Up +
    +

    7.2 Image Types

    + +

    + The image data type is the base type for all image + objects. image-xy and image-z are subtypes of the image + type which furnish accessors specialized for different image + representations. +


    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_4_Image_Files.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_4_Image_Files.html @@ -0,0 +1,114 @@ + + + + + + 7.4 Image Files + + + + + + + + + + Next Prev Up +
    +

    7.4 Image Files

    + +

    + CLX provides functions that allow images to be written to a file in a + standard X format. The following paragraphs describe the CLX functions + used to: +

      +
    • + Read an image from a file. +
    • + Write an image to a file. +
    + +
    +
    + + + +
    read-bitmap-file + pathname + Function +
    + + +
          + +
    +
    + pathname +
    + An image file pathname. +
    +

    + Reads an image file in standard X format and returns an image + object. The returned image can have depth greater + than one. +

    +
    + image +
    + Type image. +
    +
    +
    + +
    +
    + + + +
    write-bitmap-file + pathname image + &optional name + Function +
    + + +
          + +
    +
    + pathname +
    + An image file pathname. +
    + image +
    + An image object. +
    + name +
    + A stringable + image name. +
    +

    + Writes the image to an image file in standard X format. + The image can have depth greater than one. The name + is an image identifier written to the file; the default + name is (or (image-name + image) 'image). +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_1_Introduction.html @@ -0,0 +1,54 @@ + + + + + + 6.1 Introduction + + + + + + + + + + Next Prev Up +
    +

    6.1 Introduction

    + +

    + Once connected to an X server, a client can use CLX functions to + perform graphic operations on drawables. +

    + This section describes CLX functions to: +

      +
    • + Operate on areas and planes +
    • + Draw points +
    • + Draw lines +
    • + Draw rectangles +
    • + Draw arcs +
    • + Draw text +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_4_Exposure_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_4_Exposure_Events.html @@ -0,0 +1,325 @@ + + + + + + 12.12.4 Exposure Events + + + + + + + + + + Next Prev Up +
    +

    12.12.4 Exposure Events +

    + +

    + The X server cannot guarantee that a window's content is preserved + when the window is obscured or reconfigured. X requires client + applications to be capable of restoring the contents of a + previously-invisible window region whenever it is exposed. Therefore, + the X server sends events describing the exposed window and its exposed + region. For a simple window, a client can choose to redraw the entire + content whenever any region is exposed. For a complex window, a client + can redraw only the exposed region. +

    +
    + + + +
    :exposure + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :exposure + . +
    + +

    + An :exposure + event is sent when redisplay is needed for a window + region whose content has been lost. Redisplay is needed when + one of the following occurs: +

      +
    • + A region is exposed for a window and the X server has no + backing store for the region +
    • + A region of a viewable window is obscured and the X server + begins to honor the window's backing-store attribute of :always or :when-mapped +
    • + The X server begins to honor an unviewable window's + backing-store attribute of :always or :when-mapped + . +
    + +

    + The regions needing redisplay are decomposed into an arbitrary + set of rectangles, and an :exposure + event is generated for each rectangle. For a given action + causing + :exposure events, the set of events for a given window + are guaranteed to be reported contiguously. +

    + :exposure + events are never generated for :input-only + windows. +

    + All + :exposure events caused by a hierarchy change are + generated after any hierarchy event ( + :unmap-notify, + :map-notify, + :configure-notify, + :gravity-notify, or + :circulate-notify) caused by that change. All :exposure + events on a given window are generated after any + :visibility-notify event on that window, but it is not + required that all :exposure + events on all windows be generated after all visibility + events on all windows. The ordering of :exposure + events with respect to :focus-out + , + :enter-notify, and + :leave-notify events is not constrained. +

    +
    + window, event-window +
    + Type window. + The window needing redisplay. +
    + x +
    + Type card16. + The position of the left edge of the region to redisplay, + relative to the event-window. +
    + y +
    + Type card16. + The position of the top edge of the region to redisplay, + relative to the event-window. +
    + width +
    + Type card16. + The width of the region to redisplay. +
    + height +
    + Type card16. + The height of the region to redisplay. +
    + count +
    + Type card16. + If count is zero, then no more :exposure + events for this window follow. If count is nonzero, + then at least that many more :exposure + events for this window follow (and possibly more). +
    +
    +
    + +
    +
    + + + +
    :graphics-exposure + + Event Type +
    + + +
          + +

    + A + :graphics-exposure event is generated by a call to + copy-area or + copy-plane when the exposures attribute of the graphics + context is :on. A + :graphics-exposure event reports a destination region + whose content cannot be computed because the content of the + corresponding source region has been lost. For example, the + missing source region may be obscured or may lie outside the + current source drawable size. For a given action causing + :graphics-exposure events, the set of events for a + given destination are guaranteed to be reported contiguously. +

    +
    + drawable, event-window +
    + Type drawable + . The destination drawable for the + copy-area or + copy-plane function. +
    + x +
    + Type card16. + The position of the left edge of the destination region, + relative to the drawable. +
    + y +
    + Type card16. + The position of the top edge of the destination region, + relative to the drawable. +
    + width +
    + Type card16. + The width of the destination region. +
    + height +
    + Type card16. + The height of the destination region. +
    + count +
    + Type card16. + If count is zero then no more + :graphics-exposure events for the drawable + follow. If count is nonzero then at least that many more + :graphics-exposure events for the drawable + follow (and possibly more). +
    + major +
    + Type card8. + The major opcode for the graphics request generating the + event (62 for + copy-area, 63 for + copy-plane). +
    + minor +
    + Type card16. + The minor opcode for the graphics request generating the + event (0 for both + copy-area and + copy-plane). +
    +
    +
    + +
    +
    + + + +
    :no-exposure + + Event Type +
    + + +
          + +

    + A + :no-exposure event is generated by a call to + copy-area or + copy-plane when the exposures attribute of the graphics + context is :on. If no + :graphics-exposure events are generated, then a single + + :no-exposure event is sent. +

    +
    + drawable, event-window +
    + Type drawable + . The destination drawable for the + copy-area or + copy-plane function. +
    + major +
    + Type card8. + The major opcode for the graphics request generating the + event (62 for + copy-area, 63 for + copy-plane). +
    + minor +
    + Type card16. + The minor opcode for the graphics request generating the + event (0 for both + copy-area and + copy-plane). +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_3_Image_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_3_Image_Functions.html @@ -0,0 +1,461 @@ + + + + + + 7.3 Image Functions + + + + + + + + + + Next Prev Up + +
    +

    7.3 Image Functions

    + +

    + The following paragraphs describe the CLX functions used to: +

      +
    • + Create an image object. +
    • + Copy an image or a subimage. +
    • + Read an image from a + drawable. +
    • + Display an image to a + drawable. +
    + +
    +
    + + + +
    create-image + &key + :bit-lsb-first-p :bits-per-pixel :blue-mask + :byte-lsb-first-p :bytes-per-line :data :depth :format + :green-mask :height :name :plist :red-mask :width :x-hot + :y-hot + Function +
    + + +
          + +
    +
    + :bit-lsb-first-p +
    + For a returned image, true if the order of bits in each + :data byte is least-significant bit first. +
    + :bits-per-pixel +
    + One of 1, 4, 8, 16, 24, or 32. +
    + :blue-mask +
    + For :true-color or :direct-color images, a + pixel mask. +
    + :byte-lsb-first-p +
    + For a returned image, true if the :data byte + order is least-significant byte first. +
    + :bytes-per-line +
    + For a returned image, the number of :data bytes + per scanline. +
    + :data +
    + Either a list of bitmaps, a pixarray, or + an array of card8 + bytes. +
    + :depth +
    + The number of bits per displayed pixel. +
    + :format +
    + One of :bitmap, :xy-format, or :z-format. +
    + :green-mask +
    + For :true-color or :direct-color images, a + pixel mask. +
    + :height +
    + A card16 for + the image height in pixels. +
    + :name +
    + An optional + stringable for the image name. +
    + :plist +
    + An optional image property list. +
    + :red-mask +
    + For :true-color or :direct-color images, a + pixel mask. +
    + :width +
    + A card16 for + the image width in pixels. +
    + :x-hot +
    + For a cursor + image, the x position of the hot spot. +
    + :y-hot +
    + For a cursor image, the y position of the hot spot. +
    +

    + Creates an image object from the given :data and + returns either an image, image-xy, or an + image-z, depending on the type of image :data. If + the :data is a list, it is assumed to be a list + of bitmaps and an image-xy is created. If the + :data is a + pixarray, an image-z is created. Otherwise, the + :data must be an array of bytes (card8), in which + case a basic image object is created. +

    + If the :data is a list, each element must be a bitmap of + equal size. :width and :height default to the + bitmap width -- (array-dimension bitmap 1) -- and the + bitmap height -- (array-dimension bitmap 0) -- + respectively. :depth defaults to the number of bitmaps. +

    + If the :data is a + pixarray, :width and :height default + to the pixarray + width -- (array-dimension pixarray 1), and the + pixarray height -- (array-dimension pixarray 0), + respectively. :depth defaults to (pixarray-depth + :data). The :bits-per-pixel is rounded to a valid + size, if necessary. By default, the :bits-per-pixel is + equal to the :depth. +

    + If the :data is an array of card8, the + :width and :height are required to interpret the + image data correctly. The :bits-per-pixel defaults to + the :depth, and the :depth defaults to 1. + :bytes-per-line defaults to: +

    + (floor (length :data) (* :bits-per-pixel + :height)) +

    + The :format defines the storage format of image data + bytes and can be one of the following values: +

    +
    + :xy-pixmap +
    + The :data is organized as a set of bitmaps + representing image bit planes, appearing in most-significant + to least-significant bit order. +
    + :z-pixmap +
    + The :data is organized as a set of pixel values in + scanline order. +
    + :bitmap +
    + Similar to :xy-pixmap, except that the :depth + must be 1, and 1 and 0 bits represent the foreground and + background pixels, respectively. +
    + +

    + By default, the :format is :bitmap if :depth + is 1; otherwise, :z-pixmap. +

    +
    + image +
    + Type image. +
    +
    +
    + +
    +
    + + + +
    copy-image + image &key (:x 0) (:y 0) :width :height :result-type + Function +
    + + +
          + +
    +
    + image +
    + An image object. +
    + :x, :y +
    + card16 values + defining the position of the upper-left corner of the + subimage copied. +
    + :width, :height +
    + card16 values + defining the size of subimage copied. +
    + :result-type +
    + One of 'image-x, 'image-xy, or + 'image-z. +
    +

    + Returns a new image, of the given :result-type, + containing a copy of the portion of the image defined by + :x, :y, :width, and :height. By + default, :width is: +

    + (- (image-width + image) :x) +

    + and :height is: +

    + (- ( + image-height image) :y) +

    + If necessary, the new image is converted to the :result-type + , that can be one of the following values: +

    +
    + 'image-x +
    + A basic image object is returned. +
    + 'image-xy +
    + An image-xy is returned. +
    + 'image-z +
    + An image-z is returned. +
    + +
    +
    + new-image +
    + Type image. +
    +
    +
    + +
    +
    + + + +
    get-image + drawable &key + :x :y :width :height :plane-mask (:format :z-format + ) :result-type + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable. +
    + :x, :y +
    + card16 values + defining the upper-left drawable pixel returned. These arguments are + required. +
    + :width, :height +
    + card16 values + defining the size of the image returned. These + arguments are required. +
    + :plane-mask +
    + A pixel mask. +
    + :format +
    + Either :xy-pixmap or :z-pixmap. +
    + :result-type +
    + One of 'image-x, 'image-xy, or + 'image-z. +
    +

    + Returns an image containing pixel values from the region + of the drawable given by :x, :y, :width + , and :height. The bits for all planes selected by 1 + bits in the :plane-mask are returned as zero; the + default :plane-mask is all 1 bits. The :format of + the returned pixel values may be either :xy-format or + :z-format. +

    + The :result-type defines the type of image object + returned: +

    +
    + 'image-x +
    + A basic image object is returned. +
    + 'image-xy +
    + An image-xy is returned. +
    + 'image-z +
    + An image-z is returned. +
    + +

    + By default, :result-type is 'image-z if + :format is :z-format and 'image-xy if + :format is :xy-format. +

    +
    + image +
    + Type image. +
    +
    +
    + +
    +
    + + + +
    put-image + drawable gcontext + image &key (:src-x 0) (:src-y 0) :x :y + :width :height :bitmap-p + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context used to display the image. +
    + image +
    + An image object. +
    + :src-x, :src-y +
    + card16 values + defining the upper-left position of the image region + to display. +
    + :x, :y +
    + The position in the drawable where the image + region is displayed. These arguments are required. +
    + :width, :height +
    + card16 values + defining the size of the image region displayed. +
    + :bitmap-p +
    + If image is depth 1, then if true, foreground and + background pixels are used to display 1 and 0 bits of the + image. +
    +

    + Displays a region of the image defined by :src-x, + :src-y, :width, and :height on the + destination drawable, with the upper-left pixel of the image region displayed at the drawable position + given by :x and :y. By default, :width is: +

    + (- (image-width + image) :src-x) +

    + and :height is: +

    + (- ( + image-height image) :src-y) +

    + The following attributes of the gcontext are used to + display the image: clip-mask, clip-x, clip-y, function, + plane-mask, and subwindow-mode. +

    + The :bitmap-p argument applies only to images of depth + 1. In this case, if :bitmap-p is true or if the image + is a basic image object created with :format + :bitmap, the image is combined with the foreground + and background pixels of the gcontext. 1 + bits of the image are displayed in the foreground pixel + and 0 bits are displayed in the background pixel. +

    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_7_Drawing_Text.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_7_Drawing_Text.html @@ -0,0 +1,551 @@ + + + + + + 6.7 Drawing Text + + + + + + + + + + Next Prev + Up +
    +

    6.7 Drawing Text

    + +

    + CLX provides functions for drawing text using text fonts provided by + the X server. An X font is array of character bit maps indexed by + integer codes. See Section 8 for a complete discussion of the CLX + functions used to manage fonts and characters. +

    + Since Common Lisp programs typically represent text as sequences of + characters (that is, strings), CLX text functions must be prepared to + convert a Common Lisp character into the integer code used to index the + appropriate character bitmap in a given font. The :translate + argument to a text function is a function which performs this + conversion. The default :translate function handles all + characters that satisfy graphic-char-p by converting each + character into its ASCII code. Note that the assumption made by the + default :translate function--that is, that an X font indexes + bitmaps by ASCII codes--is often valid, but other encodings are + possible. In general, a :translate function can perform complex + transformations. It can be used to convert non-character input, to + handle non-ASCII character encodings, and to change the fonts used to + access character bitmaps. The complete behavior of a :translate + function is given below by describing a prototypical translate-function + . +

    + CLX offers two different ways to draw text--filled text and block text. + The draw-glyph + and draw-glyphs + functions create filled text, in which each character image is treated + as an area to be filled according to the fill-style of the given + graphics context, without otherwise disturbing the surrounding + background. In addition, filled text sends a complex type of server + request which allows a series of font indices, font changes, and + horizontal position changes to be compiled into a single request. + Filled text functions use the following graphics context attributes: + background, clip-mask, clip-x-origin, clip-y-origin, fill-style, font, + foreground, function, plane-mask, stipple, subwindow-mode, tile, + ts-x-origin, ts-y-origin. +

    + Block text is a rendering style commonly used by display terminals, in + which each character image appears in the foreground pixel inside a + rectangular character cell drawn in the graphics context background + pixel. The + draw-image-glyph and draw-image-glyphs + functions create block text. Block text functions use the + following graphics context attributes: background, clip-mask, + clip-x-origin, clip-y-origin, font, foreground, plane-mask, stipple, + subwindow-mode, tile, ts-x-origin, ts-y-origin. +

    +
    + + + +
    draw-glyph + drawable gcontext x y + element &key :translate :width (:size :default + ) + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context for drawing text. +
    + x, y +
    + The left baseline position for the character drawn. +
    + element +
    + A character or other object to be translated into a font + index. +
    + :translate +
    + A function to translate text to font indexes. Default is + #'translate-default. +
    + :width +
    + The total pixel width of the character actually drawn, if + known. +
    + :size +
    + Specifies the element size of the destination buffer given to + :translate (8, 16, or :default). +
    +

    + Draws a single character of filled text represented by the + given element. The given x and y specify + the left baseline position for the character. The first return + value is true if the character is successfully translated and + drawn, or nil if the :translate function did not + translate it. The second return value gives the total pixel + width of the character actually drawn, if known. +

    + Specifying a :width is a hint to improve performance. + The :width is assumed to be the total pixel width of the + character actually drawn. Specifying :width permits + appending the output of subsequent calls to the same protocol + request, provided gcontext has not been modified in the + interim. If :width is not specified, appending of + subsequent output might not occur (unless :translate + returns the character width). +

    + The :size specifies the element size of the destination + buffer given to :translate (either 8, 16, or :default + ). If :default is specified, the size is based on + the current font, if known; otherwise, 16 is used. +

    +
    + output-p +
    + Type boolean. +
    + width +
    + Type int32 or + null. +
    +
    +
    + +
    +
    + + + +
    draw-glyphs + drawable gcontext x y + sequence &key (:start 0) :end :translate :width + (:size :default) + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context for drawing text. +
    + x, y +
    + The left baseline position for the character drawn. +
    + sequence +
    + A sequence of characters or other objects to be translated + into font indexes. +
    + :start, :end +
    + Start and end indexes defining the elements to draw. +
    + :translate +
    + A function to translate text to font indexes. Default is + #'translate-default. +
    + :width +
    + The total total pixel width of the character actually drawn, + if known. +
    + :size +
    + The element size of the destination buffer given to + :translate (8, 16, or :default). +
    +

    + Draws the filled text characters represented by the given + sequence. :start and :end define the elements of + the sequence which are drawn. The given x and y + specify the left baseline position for the first character. The + first return value is nil if all characters are + successfully translated and drawn; otherwise, the index of the + first untranslated sequence element is returned. The second + return value gives the total pixel width of the characters + actually drawn, if known. +

    + Specifying a :width is a hint to improve performance. + The :width is assumed to be the total pixel width of the + character sequence actually drawn. Specifying :width + permits appending the output of subsequent calls to the same + protocol request, provided gcontext has not been + modified in the interim. If :width is not specified, + appending of subsequent output might not occur (unless + :translate returns the character width). +

    + The :size specifies the element size of the destination + buffer given to:translate (either 8, 16, or :default + ). If :default is specified, the size is based on + the current font, if known; otherwise, 16 is used. +

    +
    + new-start +
    + Type array-index + or null. +
    + width +
    + Type int32 or + null. +
    +
    +
    + +
    +
    + + + +
    draw-image-glyph + drawable gcontext x y + element &key :translate :width (:size :default + ) + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context for drawing text. +
    + x, y +
    + The left baseline position for the character drawn. +
    + element +
    + A character or other object to be translated into a font + index. +
    + :translate +
    + A function to translate text to font indexes. Default is + #'translate-default. +
    + :width +
    + The total pixel width of the character actually drawn, if + known. +
    + :size +
    + Specifies the element size of the destination buffer given to + :translate (8, 16, or :default). +
    +

    + Draws a single character of block text represented by the given + element. The given x and y specify the + left baseline position for the character. The first return + value is true if the character is successfully translated and + drawn, or nil if the :translate function did not + translate it. The :translate function is allowed to + return an initial font change. The second return value gives + the total pixel width of the character actually drawn, if known. +

    + The :translate function may not return a horizontal + position change, since + draw-image-glyph does not generate complex output + requests. +

    + Specifying a :width is a hint to improve performance. + The :width is assumed to be the total pixel width of the + character actually drawn. Specifying :width permits + appending the output of subsequent calls to the same protocol + request, provided gcontext has not been modified in the + interim. If :width is not specified, appending of + subsequent output might not occur (unless :translate + returns the character width). +

    + The :size specifies the element size of the destination + buffer given to :translate (either 8, 16, or :default + ). If :default is specified, the size is based on + the current font, if known; otherwise, 16 is used. +

    +
    + output-p +
    + Type boolean. +
    + width +
    + Type int32 or + null. +
    +
    +
    + +
    +
    + + + +
    draw-image-glyphs + drawable gcontext x y + sequence &key (:start 0) :end :translate + :width (:size :default) + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + x, y +
    + The left baseline position for the character drawn. +
    + gcontext +
    + The graphics context for drawing text. +
    + sequence +
    + A sequence of characters or other objects to be translated + into font indexes. +
    + :start, :end +
    + Start and end indexes defining the elements to draw. +
    + :translate +
    + A function to translate text to font indexes. Default is + #'translate-default. +
    + :width +
    + The total total pixel width of the character actually drawn, + if known. +
    + :size +
    + The element size of the destination buffer given to + :translate (8, 16, or :default). +
    +

    + Draws the block text characters represented by the given + sequence. :start and :end define the elements + of the sequence which are drawn. The given x and + y specify the left baseline position for the first + character. The first return value is nil if all + characters are successfully translated and drawn; otherwise, + the index of the first untranslated sequence element is + returned. The :translate function is allowed to return + an initial font change. The second return value gives the total + pixel width of the characters actually drawn, if known. +

    + The :translate function may not return a horizontal + position change, since + draw-image-glyphs does not generate complex output + requests. +

    + Specifying a :width is a hint to improve performance. + The :width is assumed to be the total pixel width of the + character sequence actually drawn. Specifying :width + permits appending the output of subsequent calls to the same + protocol request, provided gcontext has not been + modified in the interim. If :width is not specified, + appending of subsequent output might not occur (unless + :translate returns the character width). +

    + The :size specifies the element size of the destination + buffer given to :translate (either 8, 16, or :default + ). If :default is specified, the size will be based + on the current font, if known; otherwise, 16 is used. +

    +
    + new-start +
    + Type array-index + or null. +
    + width +
    + Type int32 or + null. +
    +
    +
    + +
    +
    + + + +
    translate-function + source source-start + source-end font destination destination-start + Function +
    + + +
          + +
    +
    + source +
    + A sequence of characters or other objects to be translated. +
    + source-start +
    + An array-index specifying the first source element to + be translated. +
    + source-end +
    + An array-index specifying the end of the source + subsequence to be translated. +
    + font +
    + The font indexed by translated source elements. +
    + destination +
    + A vector where translated source elements are stored. +
    + destination-start +
    + An array-index specifying the position to begin storing + translated source elements. +
    +

    + A function used as the :translate argument for text + functions. Converts elements of the source (sub)sequence + into font indexes for the given font and stores them + into the destination vector. +

    + The destination vector is created automatically by CLX. + destination is guaranteed to have room for (- + source-end source-start) integer elements, starting at + destination-start. Elements of destination can be + either card8 or + card16 + integers, depending on the context. font is the current + font, if known, or nil otherwise. Starting with the + element at source-start, + translate-function should translate as many elements of + source as possible (up to the source-end element) + into indexes in the current font, and store them into + destination. The first return value should be the source + index of the first untranslated element. +

    + The second return value indicates the changes which should be + made to the current text output request before translating the + remaining source elements. If no further elements need + to be translated, the second return value should be nil. + If a horizontal motion is required before further translation, + the second return value should be the change in x position. If + a font change is required for further translation, the second + return value should be the new font. +

    + If known, the pixel width of the translated text can be + returned as the third value; this can allow for appending of + subsequent output to the same protocol request, if no overall + width has been specified at the higher level. +

    +
    + first-not-done +
    + Type array-index + . +
    + to-continue +
    + Type int16, font, or null + . +
    + current-width +
    + Type int32 or + null. +
    +
    +
    + +
    + Next Prev + Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_5_Changing_Colors.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_5_Changing_Colors.html @@ -0,0 +1,141 @@ + + + + + + 9.3.5 Changing Colors + + + + + + + + + + Next Prev Up +
    +

    9.3.5 Changing Colors +

    + +

    + The following paragraphs describe the CLX functions to change the + colors in colormap cells. +

    +
    + + + +
    store-color + colormap pixel color + &key (:red-p t) (:green-p t) (:blue-p t + ) + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + pixel +
    + A pixel. +
    + color +
    + A color object or a stringable + containing a color name. +
    + :red-p, :green-p, :blue-p +
    + boolean + values indicating which color components to store. +
    +

    + Changes the contents of the colormap cell indexed by the + pixel. Components of the given color are stored + in the cell. The :red-p, :green-p, and :blue-p + arguments indicate which components of the given color + are stored. +

    + The color can be either a color object or a + stringable + containing a color name. If a color name is given, a + corresponding color value is looked up (see lookup-color + ) and used. Color name strings must contain only ISO + Latin-1 characters; case is not significant. +

    +
    + +
    +
    + + + +
    store-colors + colormap pixel-colors + &key (:red-p t) (:green-p t) (:blue-p t + ) + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + pixel-colors +
    + A list of the form ({pixel color}*). +
    + :red-p, :green-p, :blue-p +
    + boolean + values indicating which color components to store. +
    +

    + Changes the contents of multiple colormap cells. + pixel-colors is a list of the form ({ pixel color + }*), indicating a set of pixel values and the colors to store + in the corresponding cells. The :red-p, :green-p, + and :blue-p arguments indicate which components of the + given colors are stored. +

    + Each color can be either a + color object or a stringable + containing a color name. If a color name is given, a + corresponding color value is looked up (see lookup-color + ) and used. Color name strings must contain only ISO + Latin-1 characters; case is not significant. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_h.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_h.html @@ -0,0 +1,38 @@ + + + + + + H... + + + + + + + + + + Next Prev Up +
    +

    H...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index.html @@ -0,0 +1,87 @@ + + + + + + Index + + + + + + + + + + Next Prev Up +
    +

    Index

    + +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/7_2_3_Z-Format_Images.html +++ cmucl-20a-20090928/own-work/clx/clxman/7_2_3_Z-Format_Images.html @@ -0,0 +1,105 @@ + + + + + + 7.2.3 Z-Format Images + + + + + + + + + + Next Prev Up +
    +

    7.2.3 Z-Format Images +

    + +

    + The image-z subtype represents an image as a two-dimensional + array of pixels, in scanline order. The following paragraphs describe + the additional CLX functions that can be used to access image-z + objects. +

    +
    + + + +
    image-z-bits-per-pixel + image + Function +
    + + +
          + +
    +
    + image +
    + An image-z object. +
    +

    + Returns and (with setf) changes the number of bits per + data unit used to contain a pixel value for the image. + Depending on the storage format for image data, this value can + be larger than the actual image depth. +

    +
    + pixel-data-size +
    + One of 1, 4, 8, 16, 24, or 32. +
    +
    +
    + +
    +
    + + + +
    image-z-pixarray + image + Function +
    + + +
          + +
    +
    + image +
    + An image-z object. +
    +

    + Returns and (with setf) changes the two-dimensional + array of pixel data for the image. +

    +
    + pixarray +
    + Type pixarray + . +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/11_1_Atoms.html +++ cmucl-20a-20090928/own-work/clx/clxman/11_1_Atoms.html @@ -0,0 +1,293 @@ + + + + + + 11.1 Atoms + + + + + + + + + + Next Prev Up +
    +

    11.1 Atoms

    + +

    + In X, an atom is a unique ID used as the name for certain server + resources -- properties and selections. +

    + In CLX, an atom is represented by a keyword symbol. For convenience, + CLX functions also allow atoms to be specified by strings and + non-keyword symbols. xatom + is a CLX data type that permits either string or symbol values. A + string is equivalent to the xatom + given by (intern string 'keyword). A + symbol is equivalent to the xatom + given by ( intern (symbol-name symbol) + 'keyword). The symbol name string of an xatom must consist only of + ISO Latin characters. Note that the case of xatom strings is + important; the xatom + "Atom" is not the same as the xatom "ATOM". +

    + Certain atoms are already predefined by every X server. Predefined + atoms are designed to represent common names that are likely to be + useful for many client applications. Note that these atoms are + predefined only in the sense of having xatom and card29 values, not in the + sense of having required semantics. No interpretation is placed on the + meaning or use of an atom by the server. The xatom objects predefined + by CLX are listed below. + + + + + + + + + + + + + + + + + + + + + + + + +
    :arc + :italic_angle + :string +
    :atom + :max_space + :subscript_x +
    :bitmap + :min_space + :subscript_y +
    :cap_height + :norm_space + :superscript_x +
    :cardinal + :notice + :superscript_y +
    :colormap + :pixmap + :underline_position +
    :copyright + :point + :underline_thickness +
    :cursor + :point_size + :visualid +
    :cut_buffer0 + :primary + :weight +
    :cut_buffer1 + :quad_width + :window +
    :cut_buffer2 + :rectangle + :wm_class +
    :cut_buffer3 + :resolution + :wm_client_machine +
    :cut_buffer4 + :resource_manager + :wm_command +
    :cut_buffer5 + :rgb_best_map + :wm_hints +
    :cut_buffer6 + :rgb_blue_map + :wm_icon_name +
    :cut_buffer7 + :rgb_color_map + :wm_icon_size +
    :drawable + :rgb_default_map + :wm_name +
    :end_space + :rgb_gray_map + :wm_normal_hints +
    :family_name + :rgb_green_map + :wm_size_hints +
    :font + :rgb_red_map + :wm_transient_for +
    :font_name + :secondary + :wm_zoom_hints +
    :full_name + :strikeout_ascent :x_height +
    :integer + :strikeout_descent +
    + +

    + When creating a new atom, the following conventions should be obeyed in + order to minimize the conflict between atom names: +

      +
    • + Symbol names beginning with an underscore should be used for atoms + that are private to a particular vendor or organization. An + additional prefix should identify the organization. +
    • + Symbol names beginning with two underscores should be used for atoms + that are private to a single application or end user. +
    + +

    + CLX provides functions to convert between an xatom and its + corresponding ID integer. The data type of an atom ID is card29. The xatom representation is + usually sufficient for most CLX programs. However, it is occasionally + useful to be able to convert an atom ID returned in events or + properties into its corresponding xatom. +

    +
    + + + +
    atom-name + display atom-id + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + atom-id +
    + A card29. +
    +

    + Returns the atom keyword for the atom-id on the given + display server. +

    +
    + atom-name +
    + Type keyword. +
    +
    +
    + +
    +
    + + + +
    find-atom + display atom-name + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + atom-name +
    + An xatom. +
    +

    + Returns the atom ID for the given atom-name, if it + exists. If no atom of that name exists for the display server, + nil is returned. +

    +
    + atom-id +
    + Type card29 + or null. +
    +
    +
    + +
    +
    + + + +
    intern-atom + display atom-name + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + atom-name +
    + An xatom. +
    +

    + Creates an atom with the given name and returns its atom ID. + The atom can survive the interning client; it exists until the + last server connection has been closed and the server resets + itself. +

    +
    + atom-id +
    + Type card29 + or null. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/16_Errors.html +++ cmucl-20a-20090928/own-work/clx/clxman/16_Errors.html @@ -0,0 +1,37 @@ + + + + + + 16 Errors + + + + + + + + + + Next + Prev Up +
    +

    16 Errors

    + +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_i.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_i.html @@ -0,0 +1,101 @@ + + + + + + I... + + + + + + + + + + Next Prev Up +
    +

    I...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/11_3_Selections.html +++ cmucl-20a-20090928/own-work/clx/clxman/11_3_Selections.html @@ -0,0 +1,286 @@ + + + + + + 11.3 Selections + + + + + + + + + + Next Prev Up +
    +

    11.3 Selections

    + +

    + A selection is an atom used to identify data that can be shared among + all client programs connected to an X server. Unlike properties, the + data represented by a selection is stored by some client program, not + by the server. +

    + The data named by a selection is associated with a client window, which + is referred to as the selection owner. The server always knows + which window is the owner of a selection. Selections can be created + freely by clients using + intern-atom to create an atom. CLX provides functions to + inquire or change the owner of a selection and to convert a + selection. +

    + Conversion is the key to the use of selections for inter-client + communication. Suppose Client A wants to paste the contents of the data + named by selection S into his window WA. Client A calls convert-selection + on selection atom S, sending a conversion request to the + server. The server, in turn, sends a + :selection-request event to the current owner of S, + which is window WB belonging to Client B. The + :selection-request event contains the requestor window ( + WA), the selection atom (S), an atom identifying a + requested data type, and the name of a property of WA into which + the value of S will be stored. +

    + Since WB is the owner of S, it must be associated with + the data defined by Client B as the value of S. When WB + gets the + :selection-request event, Client B is expected to convert the + value of S to the requested data type (if possible) and store + the converted value in the given requestor property. Client B is then + expected to send a + :selection-notify event to the requestor window WA, + informing the requestor that the converted value for S is ready. + Upon receiving the + :selection-notify event, Client A can call get-property to + retrieve the converted value and to paste it into WA. +

    + NOTE: Clients using selections must always be prepared to handle + + :selection-request events and/or + :selection-notify events. There is no way for a client to ask + not to receive these types of events. +

    + Type atoms used in selection conversion can represent arbitrary + client-defined interpretations of the selection data. For example, if + the value of selection S is a text string, Client A might + request its typeface by requesting conversion to the :font type. + A type atom can also represent a request to the selection owner + to perform some action as a side-effect of conversion (for example, + :delete). Some of the predefined atoms of an X server are intended + to be used as selection types (for example, :colormap, :bitmap + , :string, and so forth) However, X does not impose any + requirements on the interpretation of type atoms. +

    + When multiple clients negotiate for ownership of a selection, certain + race conditions might be possible. For example, two clients might each + receive a user command to assert ownership of the :primary + selection, but the order in which the server processes these client + requests is unpredictable. As a result, the ownership request initiated + most recently by the user might be incorrectly overridden by the other + earlier ownership request. To prevent such anomalies, the server + records a last-changed timestamp for each change of selection + ownership. +

    + Although inter-client communication via selections is rather complex, + it offers important benefits. Since selection communication is mediated + by an X server, clients can share data even though they are running on + different hosts and using different networking protocols. Data storage + and conversion is distributed among clients so that the server is not + required to provide all possible data types or to store multiple forms + of selection data. +

    + Certain predefined atoms are used as standard selections, as described + in the X11 Inter-client Communications Conventions Manual. Some of the + standard selections covered by these conventions are: +

    +
    + :primary +
    + The primary selection. The main vehicle for inter-client cut + and paste operations. +
    + :secondary +
    + The secondary selection. In some environments, clients can use + this as an auxiliary to :primary. +
    + :clipboard +
    + Analogous to akill ring. Represents the most recently deleted data + item. +
    + +
    +
    + + + +
    convert-selection + selection type + requestor &optional property time + Function +
    + + +
          + +
    +
    + selection +
    + The xatom for + the selection name. +
    + type +
    + The xatom for + the requested data type. +
    + requestor +
    + The window to + receive the converted selection value. +
    + property +
    + The xatom for + the requestor property to receive the converted value. +
    + time +
    + A timestamp + . +
    +

    + Requests that the value of the selection be converted to + the specified type and stored in the given property + of the requestor window. +

    + If the selection has an owner, the X server sends a :selection-request event to the owner window. + Otherwise, if no owner exists, the server generates on the + requestor a :selection-notify event containing a nil + property atom. +

    + The given property specifies the requestor property that + will receive the converted value. If the property is + omitted, the selection owner will define a property to + use. The time furnishes a timestamp representing the + time of the conversion request; by default, the current server + time is used. +

    + NOTE: Standard conventions for inter-client + communication require that both the requestor property and the + time must be specified. If possible, the time should be the + time of a user event which initiated the conversion. + Alternatively, a timestamp can be obtained by calling change-property + to append zero-length data to some property; the + timestamp in the resulting :property-notify event can then be used. +

    +
    + +
    +
    + + + +
    selection-owner + display selection + &optional time + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + selection +
    + The xatom for + the selection name. +
    + time +
    + A timestamp + . +
    +

    + Returns and (with setf) changes the owner and the + last-changed time for the selection. If the owner + is nil, no owner for the selection exists. When + the owner window for a selection is destroyed, the + selection owner is set to nil without affecting the + last-changed time. +

    + The time argument is used only when changing the + selection owner. If the time is nil, the + current server time is used. If the time is earlier than + the current last-changed time of the selection or if the + time is later than the current server time, the owner is + not changed. Therefore, a client should always confirm + successful change of ownership by immediately calling selection-owner + . If the change in ownership is successful, the + last-changed time of the selection is set to the + specified time. +

    + If the change in ownership is successful and the new owner is + different from the previous owner, and if the previous owner is + not nil, a :selection-clear event is generated for the + previous owner window. +

    + NOTE: Standard conventions for inter-client + communication require that a non-nil time must be specified. If + possible, the time should be the time of a user event which + initiated the change of ownership. Alternatively, a timestamp + can be obtained by calling change-property to append + zero-length data to some property; the timestamp in the + resulting :property-notify event can then be used. +

    +
    + owner +
    + Type window + or null. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/3_Screens.html +++ cmucl-20a-20090928/own-work/clx/clxman/3_Screens.html @@ -0,0 +1,41 @@ + + + + + + 3 Screens + + + + + + + + + + Next Prev Up + +
    +

    3 Screens

    + +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/i.html +++ cmucl-20a-20090928/own-work/clx/clxman/i.html @@ -0,0 +1,87 @@ + + + + + + i + + + + + + + + + + Next Prev Up +
    +

    i

    + +
    +
    + identifier +
    + Each resource has an identifier, a unique value associated + with it that clients use to name the resource. An identifier can be + used over any connection to name the resource. +
    + inferiors +
    + All of the subwindows nested below a window: the children, the + children's children, and so on. +
    + initialization +
    + See contact initialization. +
    + input event +
    + See event. +
    + input focus +
    + Normally a window defining the scope for processing of keyboard + input. If a generated keyboard event would normally be reported to + this window or one of its inferiors, the event is reported normally; + otherwise, the event is reported with respect to the focus window. + The input focus also can be set such that all keyboard events are + discarded and that the focus window is dynamically taken to be the + root window of whatever screen the pointer is on at each keyboard + event. +
    + input-only window +
    + A window that cannot be used for graphics requests. input-only + windows are invisible, and can be used to control such things as + cursors, input event generation, and grabbing. input-only + windows cannot have input/output windows as inferiors. +
    + input/output window +
    + The normal kind of opaque window, used for both input and output. + Input/output windows can have both input/output and input-only + windows as inferiors. +
    + insensitivity +
    + See sensitivity. +
    + interactive-stream +
    + A contact subclass designed to integrate CLUE with the conventional + stream-based I/O of Common Lisp. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_4_3_Resource_Access_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_4_3_Resource_Access_Functions.html @@ -0,0 +1,213 @@ + + + + + + 13.4.3 Resource Access Functions + + + + + + + + + + Next Prev Up +
    +

    13.4.3 Resource Access + Functions

    + +

    + The following paragraphs describe the CLX functions used to return a + value from a resource database. +

    +
    + + + +
    get-resource + database + attribute-name attribute-class path-name path-class + Function +
    + + +
          + +
    +
    + database +
    + A resource-database. +
    + attribute-name +
    + A string or symbol giving an attribute name from a complete + resource name. +
    + attribute-class +
    + A string or symbol giving an attribute class name from a + complete resource class. +
    + path-name +
    + The path list from a complete resource name. path-name + and path-class must have the same length. +
    + path-class +
    + The path list from a complete resource class. path-name + and path-class must have the same length. +
    +

    + Returns the value of the resource binding in the database + whose resource name most closely matches the complete resource + name/class given by the path-name, path-class, + attribute-name, and attribute-class. The lookup + algorithm implements the precedence rules described previously + to determine the closest match. When comparing name elements, + case is significant only if both elements are strings; + otherwise, element matching is case-insensitive. +

    +
    + value +
    + Type t. +
    +
    +
    + +
    +
    + + + +
    get-search-table + database path-name + path-class + Function +
    + + +
          + +
    +
    + database +
    + A resource-database. +
    + path-name +
    + The path list from a complete resource name. path-name + and path-classmust have the same length. +
    + path-class +
    + The path list from a complete resource class. path-name + and path-class must have the same length. +
    +

    + Returns a table containing the subset of the database + that matches the path-name and path-class. + Resources using the same path-name and path-class + can be accessed much more efficiently by using this table as an + argument to get-search-resource. +

    +
    + search-table +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    get-search-resource + table attribute-name + attribute-class + Function +
    + + +
          + +
    +
    + table +
    + A search table returned by get-search-table. +
    + attribute-name +
    + A string or symbol giving an attribute name from a complete + resource name. +
    + attribute-class +
    + A string or symbol giving an attribute class name from a + complete resource class. +
    +

    + Returns the value of the resource binding in the search table + that most closely matches the attribute-name and + attribute-class. The table is computed by + get-search-table and represents a set of resource + bindings. The closest match is determined by the same algorithm + used in + get-resource. +

    + The following two forms are functionally equivalent: +

    +(get-resource
    +  database attribute-name attribute-class path-name path-class)
    +
    +(get-search-resource
    + (get-search-table database path-name path-class)
    + attribute-name attribute-class)
    +                      
    + +

    + However, the hard part of the search is done by + get-search-table. Looking up values for several + resource attributes that share the same path list can be done + much more efficiently with calls to get-search-resource. +

    +
    + value +
    + Type t. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_5_Programming_Considerations.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_5_Programming_Considerations.html @@ -0,0 +1,73 @@ + + + + + + 1.5 Programming Considerations + + + + + + + + + + Next Prev Up +
    +

    1.5 Programming Considerations +

    + +

    + The major programming considerations are as follows: +

      +
    • + Keyboards are the greatest variable between different + manufacturer's workstations. If you want your program to be + portable, you should be particularly conservative here. +
    • + Many display systems have limited amounts of off-screen memory. If + you can, you should minimize use of pixmaps and backing store. +
    • + The user should have control of his screen real-estate. Therefore, + you should write your applications to react to window management, + rather than presume control of the entire screen. What you do inside + of your top level window, however, is up to your application. +
    • + Coordinates and sizes in X are actually 16-bit quantities. They + usually are declared as an + int16 in the functions. Values larger than 16 bits can be + truncated silently. Sizes (width and height) are unsigned quantities. +
    • + The types color, colormap, cursor, display, font, gcontext, pixmap, screen, and window are defined + solely by a functional interface. Even though they are treated like + structures in this document, it is not specified whether they are + implemented as structures or classes. Although some interfaces are + described as functions, they are not required to be defined using + defun. (It is a requirement that they be functions as opposed to + macros or special forms.) +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_1_Introductions.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_1_Introductions.html @@ -0,0 +1,217 @@ + + + + + + 12.1 Introductions + + + + + + + + + + Next Prev Up +
    +

    12.1 Introductions

    + +

    + A client application uses CLX functions to send requests to an X + server over a display connection returned by the open-display + function. In return, the X server sends back replies and + events. Replies are synchronized with specific requests and return + requested server information. Events typically occur asynchronously. + Device events are generated by user input from both the keyboard and + pointer devices. Other events are side-effects of the requests sent by + CLX functions. The types of events returned by an X server are + summarized below. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Device Events + + Events Returned +
    Keyboard + + :key-press +
    :key-release +
    Pointer + + :button-press +
    :button-release +
    + :enter-notify +
    + :leave-notify +
    + :motion-notify +
    + Side-Effect Events + + Events Returned +
    Client communication + :client-message +
    + :property-notify +
    + :selection-clear +
    + :selection-notify +
    :selection-request +
    Color map state + + :colormap-notify +
    Exposure + :exposure + +
    + :graphics-exposure +
    + :no-exposure +
    Input focus + :focus-in + +
    :focus-out + +
    Keyboard and pointer state + :keymap-notify +
    :mapping-notify +
    Structure control + :circulate-request +
    :configure-request +
    + :map-request +
    Window state + :resize-request +
    + :circulate-notify +
    + :configure-notify +
    + :create-notify +
    + :destroy-notify +
    + :gravity-notify +
    + :map-notify +
    + :reparent-notify +
    + :unmap-notify +
    + :visibility-notify +
    + +

    + Client programs can override the server's normal distribution of + events bygrabbing the pointer or the keyboard. Grabbing causes + events from the pointer or keyboard device to be reported to a single + specified window, rather than to their ordinary destinations. It can + also cause the server to freeze the grabbed device, sending + queued events only when explicitly requested by the grabbing client. + Two kinds of grabs are possible: +

      +
    • + Active -- Events are immediately grabbed. +
    • + Passive -- Events are grabbed later, as soon as a specified device + event occurs. +
    + +

    + Grabbing an input device is performed rarely and usually only by + special clients, such as window managers. +

    + This section describes the CLX functions used to: +

      +
    • + Select events +
    • + Process an event on the event queue +
    • + Manage the event queue +
    • + Send events to other applications +
    • + Read and change the pointer position +
    • + Manage the keyboard input focus +
    • + Grab pointer and keyboard events +
    • + Release queued events +
    + +

    + This section also contains a detailed description of the content of + each type of event. + +


    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_n.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_n.html @@ -0,0 +1,41 @@ + + + + + + N... + + + + + + + + + + Next Prev Up +
    +

    N...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/11_2_Properties.html +++ cmucl-20a-20090928/own-work/clx/clxman/11_2_Properties.html @@ -0,0 +1,368 @@ + + + + + + 11.2 Properties + + + + + + + + + + Next Prev + Up +
    +

    11.2 Properties

    + +

    + For each window, an X server can record a set of properties. + Properties are a general mechanism for clients to associate arbitrary + data with a window, and for clients to communicate window data to each + other via the server. No interpretation is placed on property data by + the server itself. +

    + A property consists of a name, a type, a data format, and data. The + name of a property is given by an atom. The property type is another + atom used to denote the intended interpretation of the property data. + The property formats specifies whether the property data should be + treated as a set of 8-, 16-, or 32-bit elements. The property format + must be specified so that the X server can communicate property data + with the correct byte order. +

    + CLX provides functions to: +

      +
    • + Create or change a property +
    • + Return property data +
    • + List window properties +
    • + Delete a property +
    + +
    +
    + + + +
    change-property + window property data + type format &key (:mode :replace) (:start + 0) :end :transform + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + property +
    + A property name xatom + . +
    + data +
    + A sequence of property data elements. +
    + type +
    + The property type xatom + . +
    + format +
    + One of 8, 16, or 32. +
    + :mode +
    + One of :replace, :append, or :prepend. +
    + :start, :end +
    + Specify the subsequence of previous data replaced when + :mode is :replace. +
    + :transform +
    + A function that transforms each data element into a data + value to store. +
    +

    + Creates a new window property or changes an existing property. + A :property-notify event is generated for the + window. +

    + If the :mode is :replace, the new data, + type, and format replace any previous values. The + subsequence of previous data elements that are replaced is + defined by the :start and :end indexes. +

    + If the :mode is :prepend or :append, no + previous data is changed, but the new data is added at + the beginning or the end, respectively. For these modes, if the + property already exists, the new type and + format must match the previous values. +

    + The :transform, if given, is a function used to compute + the actual property data stored. The :transform, which + must accept a single data element and return a single + transformed data element, is called for each data element. If + the data is a string, the default :transform + function transforms each character into its ASCII code; + otherwise, the default is to store the data unchanged. +

    +
    + +
    +
    + + + +
    delete-property + window property + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + property +
    + A property name xatom + . +
    +

    + Deletes the window property. If the property + already exists, a :property-notify event is generated for the + window. +

    +
    + +
    +
    + + + +
    get-property + window property + &key :type (:start 0) :end :delete-p ( + :result-type 'list) :transform + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + property +
    + A property name xatom + . +
    + :type +
    + The requested type + xatom or nil. +
    + :start, :end +
    + Specify the subsequence of property data returned. +
    + :transform +
    + A function that transforms each data element into a data + value to return. +
    + :delete-p +
    + If true, the existing property can be deleted. +
    + :result-type +
    + The type of data sequence to return. Default is + 'list. +
    +

    + Returns a subsequence of the data for the window property. The + :start and :end indexes specify the property + data elements returned. The :transform function is + called for elements of the specified subsequence to compute the + data sequence returned. The property type and + format are also returned. The final return value gives the + actual number of data bytes (not elements) following the last + data element returned. +

    + If the property does not exist, the returned data + and type are nil and the returned format + and bytes-after are zero. +

    + If the given :type is non-nil but does not match + the actual property type, then the data returned is + nil, the type and format returned give the + actual property values, and the bytes-after returned + gives the total number of bytes (not elements) in the property + data. +

    + If the given :type is nil or if it matches the + actual property type, then: +

      +
    • + The data returned is the transformed subsequence of + the property data. +
    • + The type and format returned give the actual + property values. +
    • + The bytes-after returned gives the actual number of + data bytes (not elements) following the last data element + returned. +
    + +

    + In this case, the :delete-p argument is also examined. + If :delete-p is true and bytes-after is zero, the + property is deleted and a :property-notify event is generated for the + window. +

    +
    + data +
    + Type sequence. +
    + type +
    + Type xatom. +
    + format +
    + Type (member 8 16 32). +
    + bytes-after +
    + Type card32. +
    +
    +
    + +
    +
    + + + +
    list-properties + window &key ( + :result-type 'list) + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + :result-type +
    + The type of sequence to return. Default is 'list. +
    +

    + Returns a sequence containing the names of all window + properties. +

    +
    + properties +
    + Type sequence of keyword. +
    +
    +
    + +
    +
    + + + +
    rotate-properties + window properties + &optional (delta 1) + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + properties +
    + A sequence of xatom + values. +
    + delta +
    + The index interval between source and destination elements of + properties. +
    +

    + Rotates the values of the given window properties. The + value of property i in the given sequence is changed to + the value of the property at index (mod (+ i delta + ) (length properties)). This function operates + much like the rotatef macro in Common Lisp. +

    + If (mod delta (length properties)) + is non-zero, a :property-notify event is generated on the window + for each property, in the same order as they appear in the + properties sequence. +

    +
    + +
    + Next Prev + Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_3_Window_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_3_Window_Attributes.html @@ -0,0 +1,1481 @@ + + + + + + 4.3 Window Attributes + + + + + + + + + + Next Prev Up +
    +

    4.3 Window Attributes +

    + +

    + The following paragraphs describe the CLX functions used to return or + change window attributes. Using the with-state + macro improves the performance of attribute access by batching related + accesses in the minimum number of server requests. +

    +
    + + + +
    drawable-border-width + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable + object. +
    +

    + Returns the border-width of the drawable in + pixels. It always returns zero if the drawable is a + pixmap or an :input-only window. Used with setf, + this function also changes the border width of the + :input-only window. The default border width of a new + window is zero. +

    + Changing just the border width leaves the outer left corner of + a window in a fixed position but moves the absolute position of + the window's origin. It is an error to make the border + width of an :input-only window nonzero. +

    + When changing the border-width of a window, if the + override-redirect attribute of the window is :off and + some other client has selected :substructure-redirect on + the parent, a :configure-request event is generated, and no + further processing is performed. Otherwise, the border-width is + changed. +

    +
    + border-width +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    drawable-depth + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable + object. +
    +

    + Returns the depth of the specified drawable (bits per + pixel). +

    +
    + depth +
    + Type card8. +
    +
    +
    + +
    +
    + + + +
    drawable-height + drawable + Function +
    + + +
          + +
    +
    + inside-height +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    drawable-width + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable + object. +
    +

    + These functions return the height or width of the drawable + . These coordinates define the inside size of the + drawable, in pixels. Used with setf, these functions + also change the inside height or width of a window. However, + the height or width of a pixmap cannot be changed. +

    + Changing the width and height resizes a window without changing + its position or stacking priority. +

    + Changing the size of a mapped window may cause the window to + lose its contents and generate an :exposure + event. If a mapped window is made smaller, :exposure + events are generated on windows that it formerly obscured. +

    + When changing the size of a window, if the override-redirect + attribute of the window is :off and some other client + has selected :substructure-redirect on the parent, a :configure-request event is generated, and no + further processing is performed. Otherwise, if another client + has selected :resize-redirect on the window, a :resize-request event is generated, and the current + inside width and height are maintained. Note that the + override-redirect attribute of the window has no effect on + :resize-redirect and that :substructure-redirect on + the parent has precedence over :resize-redirect on the + window. +

    + When the inside size of the window is changed, the children of + the window can move according to their window gravity. + Depending on the window's bit gravity, the contents of the + window can also be moved. +

    +
    + inside-width +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    drawable-x + drawable + Function +
    + + +
          + +
    +
    + outside-left +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    drawable-y + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable + object. +
    +

    + These functions return the x or y coordinate of the specified drawable. They always return zero if the drawable + is a pixmap. These coordinates define the location of the top + left pixel of the window's border or of the window, if it + has no border. Used with setf, these functions also + change the x or y coordinate of a window. However, the x or y + coordinate of a pixmap cannot be changed. +

    + Changing the x and y coordinates moves a window without + changing its size or stacking priority. Moving a mapped window + generates + :exposure events on any formerly obscured windows. +

    + When changing the position of a window, if the + override-redirect attribute of the window is :off and + some other client has selected :substructure-redirect on + the parent, a :configure-request event is generated, and no + further processing is performed. Otherwise, the window is moved. +

    +
    + outside-top +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    window-all-event-masks + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns the inclusive-or of the event masks selected on the + specified window by all clients. +

    +
    + all-event-masks +
    + Type mask32. +
    +
    +
    + +
    +
    + + +
    setf + (window-background + ) window background + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + background +
    + Either a pixel + , a pixmap, :none, or :parent-relative. +
    +

    + Changes the background attribute of the window to + the specified value. This operation is not allowed on an + :input-only window. Changing the background does not cause + the window contents to be changed. Note that the background of + a window cannot be returned from the X server. The default + background of a new window is :none. +

    + In general, the server automatically fills in exposed areas of + the window when they are first made visible. A background + pixmap is tiled to fill each area. However, if the background + is :none, the server will not modify exposed areas. If + the background is :parent-relative, the window and its + parent must have the same depth. In this case, the window + shares the same background as its parent. The parent's + background is not copied and is reexamined whenever the + window's background is required. If the background is + :parent-relative, the background pixmap tile origin is the + same as the parent's; otherwise, the tile origin is the + window origin. +

    +
    + background +
    + Either a pixel + , a pixmap, :none, or :parent-relative. +
    +
    +
    + +
    +
    + + + +
    window-backing-pixel + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + backing-pixel attribute for the specified window. + Changing the backing-pixel attribute of a mapped window may + have no immediate effect. The default backing-pixel of a new + window is zero. +

    +
    + backing-pixel +
    + Type pixel. +
    +
    +
    + +
    +
    + + + +
    window-backing-planes + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + backing-planes attribute for the specified window. + Changing the backing-planes attribute of a mapped window may + have no immediate effect. The default backing-planes of a new + window is all one's. +

    +
    + backing-planes +
    + Type pixel. +
    +
    +
    + +
    +
    + + + +
    window-backing-store + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + backing-store attribute for the specified window. + Changing the backing-store attribute of an obscured window to :when-mapped or :always may have no immediate + effect. The default backing-store of a new window is + :not-useful. +

    +
    + backing-store-type +
    + One of :always, :not-useful, or :when-mapped + . +
    +
    +
    + +
    +
    + + + +
    window-bit-gravity + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the bit-gravity + attribute of the window. If a window is reconfigured + without changing its inside width or height, the contents of + the window move with the window and are not lost. Otherwise, + the contents of the resized window are either moved or lost, + depending on its bit-gravity attribute. The default bit-gravity + of a new window is :forget. +

    + For example, suppose a window's size is changed by W + pixels in width and H pixels in height. The following + table shows, for each bit-gravity value, the change in position + (relative to the window origin) that results for each pixel of + the window contents. + + + + + + + + + + + +
    + Bit-Gravity + + + X Change + + Y Change +
    :center + W/2 + H/2 +
    :east + W + H/2 +
    :north + W/2 + 0 +
    :north-east + W + 0 +
    :north-west + 0 + 0 +
    :south + W/2 + H +
    :south-east + W + H +
    :south-west + 0 + H +
    :west + 0 + H/2 +
    + +

    + A :static bit-gravity indicates the contents or window + should not move relative to the origin of the root window. +

    + A server can choose to ignore the specified bit-gravity + attribute and use :forget instead. A :forget + bit-gravity attribute indicates that the window contents are + always discarded after a size change, even if backing-store or + save-under attributes are :on. The window's + background is displayed (unless it is :none), and zero + or more + :exposure events are generated. +

    +
    + bit-gravity +
    + Type bit-gravity + . +
    +
    +
    + +
    +
    + + +
    setf + (window-border) window border + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + border +
    + Either a pixel + , a pixmap, + or :copy. +
    +

    + Changes the border attribute of the window to the + specified value. This operation is not allowed on an + :input-only window. Changing the border attribute also + causes the window border to be repainted. Note that the border + of a window cannot be returned from the X server. The default + border of a new window is :copy. +

    + A border pixmap is tiled to fill the border. The border pixmap + tile origin is the same as the background tile origin. A border + pixmap and the window must have the same root and depth. If the + border is :copy, the parent's border is copied and + used; subsequent changes to the parent's border do not + affect the window border. +

    +
    + border +
    + Either a pixel + , a pixmap, + or :copy. +
    +
    +
    + +
    +
    + + + +
    window-class + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns the class of the specified window. +

    +
    + class +
    + Either :input-output or :input-only. +
    +
    +
    + +
    +
    + + + +
    window-colormap + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + colormap attribute for the specified window. A value of + :copy is never returned, since the parent's colormap + attribute is actually copied, but the attribute can be set to :copy in a setf form. Changing the colormap of a + window (defining a new map, not changing the contents of the + existing map) generates a + :colormap-notify event. Changing the colormap of a + visible window may have no immediate effect on the screen (see + + install-colormap). The default colormap of a new window + is :copy. +

    +
    + colormap +
    + Type colormap + or null. +
    +
    +
    + +
    +
    + + + +
    window-colormap-installed-p + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns non-nil if the colormap associated with this + window is installed. Otherwise, this function returns nil + . +

    +
    + colormap-installed-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    setf (window-cursor) + window cursor + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + cursor +
    + Either cursor + or :none. +
    +

    + Changes the cursor attribute of the window to the + specified value. Changing the cursor of a root window to + :none restores the default cursor. Note that the cursor of + window cannot be returned from the X server. The default cursor + of a new window is :none. +

    +
    + cursor +
    + Type cursor + or :none. +
    +
    +
    + +
    +
    + + + +
    window-display + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns the display + object associated with the specified window. +

    +
    + display +
    + Type display. +
    +
    +
    + +
    +
    + + + +
    window-do-not-propagate-mask + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the + do-not-propagate-mask attribute for the window. The default + do-not-propagate-mask of a new window is zero. +

    + If a window receives an event from one of the user input + devices, and if no client has selected to receive the event, + the event can instead be propagated up the window hierarchy to + the first ancestor for which some client has selected it. + However, any event type selected by the do-not-propagate-mask + is not be propagated. The types of events that can be selected + by the do-not-propagate-mask are those of type + device-event-mask-class. See paragraph 12.2, Selecting + Events. +

    +
    + do-not-propagate-mask +
    + Type mask32. +
    +
    +
    + +
    +
    + + + +
    window-equal + window-1 window-2 + Function +
    + + +
          + +
    +
    + window-1, window-2 +
    + The windows to compare for equality. +
    +

    + Returns non-nil if the two arguments are the same + window, and nil if they are not. +

    +
    + boolean. +
    +
    +
    + +
    +
    + + + +
    window-event-mask + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + event-mask attribute for the window. The default + event-mask of a new window is zero. +

    +
    + event-mask +
    + Type mask32. +
    +
    +
    + +
    +
    + + + +
    window-gravity + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the gravity attribute of + the window. If a parent window is reconfigured without + changing its inside width or height, then all child windows + move with the parent and are not changed. Otherwise, each child + of the resized parent is moved, depending on the child's + gravity attribute. The default gravity of a new window is + :north-west. +

    + For example, suppose the size of the window's parent is + changed by W pixels in width and H pixels in + height. The following table shows, for each possible gravity + value, the resulting change in the window's position + relative to its parent's origin. When the window is moved, + two events are generated--a + :configure-notify event followed by a + :gravity-notify event. + + + + + + + + + + + +
    + Gravity + + X Change + + Y Change +
    :center + W/2 + H/2 +
    :east + W + H/2 +
    :north + W/2 + 0 +
    :north-east + W + 0 +
    :north-west + 0 + 0 +
    :south + W/2 + H +
    :south-east + W + H +
    :south-west + 0 + H +
    :west + 0 + H/2 +
    + +

    + A :static gravity indicates that the position of the + window should not move relative to the origin of the root + window. +

    + An :unmap gravity is like :north-west, except the + window is also unmapped and an + :unmap-notify event is generated. This + :unmap-notify event is generated after the + :configure-notify event is generated for the parent. +

    +
    + gravity +
    + Type win-gravity + . +
    +
    +
    + +
    +
    + + + +
    window-id + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns the unique ID assigned to window. +

    +
    + The resource-id + of the window. +
    +
    +
    + +
    +
    + + + +
    window-map-state + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns the map state of window. A window is + :unviewable if it is mapped but some ancestor is unmapped. +

    +
    + map-state +
    + One of :unmapped, :unviewable, or :viewable + . +
    +
    +
    + +
    +
    + + + +
    window-override-redirect + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + override-redirect attribute for window. The default + override-redirect of a new window is :off. +

    + The override-redirect attribute determines whether or not + attempts to change window geometry or parent hierarchy can be redirected by a window manager or some other client. The + functions that might be affected by the override-redirect + attribute are + circulate-window-down, + circulate-window-up, + drawable-border-width, + drawable-height, + drawable-width, drawable-x + , + drawable-y, map-window + , and window-priority. +

    +
    + override-redirect +
    + Either :on or :off. +
    +
    +
    + +
    +
    + + + +
    window-p + object + Function +
    + + +
          + +

    + Returns non-nil if the object argument is a + window; otherwise, it returns nil. +

    +
    + window-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    window-plist + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) sets the property list for the + specified window. This function provides a hook where + extensions can hang data. +

    +
    + plist +
    + A property list. +
    +
    +
    + +
    +
    + + +
    setf + (window-priority + window) (&optional sibling) mode + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + sibling +
    + An optional argument specifying that window is to be + restacked relative to this sibling window. +
    + mode +
    + One of :above, :below, :bottom-if, + :opposite, or :top-if. +
    +

    + Changes the stacking priority element of the window to + the specified value. It is an error if the sibling + argument is specified and is not actually a sibling of the + window. Note that the priority of an existing window cannot be + returned from the X server. +

    + When changing the priority of a window, if the + override-redirect attribute of the window is :off and + some other client has selected :substructure-redirect on the + parent, a :configure-request event is generated, and no further + processing is performed. Otherwise, the priority is changed. +

    +
    + mode +
    + One of :above, :below, :bottom-if, + :opposite, or :top-if. +
    +
    +
    + +
    +
    + + + +
    window-save-under + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns and (with setf) changes the value of the + save-under attribute for the specified window. Changing + the save-under attribute of a mapped window may have no + immediate effect. +

    +
    + save-under +
    + Either :on or :off. +
    +
    +
    + +
    +
    + + + +
    window-visual + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Returns the visual-type associated with the specified + window. +

    +
    + visual-type +
    + Type card29. +
    +
    +
    + +
    +
    + + + +
    with-state + drawable & + body body + Macro +
    + + +
          + +
    +
    + drawable +
    + A display. +
    + body +
    + The forms in which attributes accesses are batched. +
    +

    + Batches successive read and write accesses to window attributes + and drawable geometry, in order to minimize the number of + requests sent to the server. Batching occurs automatically + within the dynamic extent of the body. The body + is not executed within a with-display + form. +

    + All window attributes can be returned or changed in a single + request. Similarly, all drawable geometry values can be + returned or changed in a single request. with-state + combines accesses to these values into the minimum number + of server requests necessary to guarantee that each read access + returns the current server state of the drawable. The + number of server requests sent depends on the sequence of calls + to reader and setf functions within the dynamic extent + of the body. There are two groups of reader and setf + functions--the Window Attributes group and the Drawable + Geometry group--as shown in Table 4-1. + + + + + + + + + + + + + + + + + + + + + + + + + +
    Groups of Reader and Setf Functions
    + Group + + Reader Functions + + Setf Functions +
    Window Attributes + window-all-event-masks + window-background +
    + window-backing-pixel + + window-backing-pixel +
    window-backing-planes + window-backing-planes +
    + window-backing-store + + window-backing-store +
    window-bit-gravity + window-bit-gravity +
    + window-class + window-border +
    + window-colormap + + window-colormap +
    window-colormap-installed-p + window-cursor +
    window-do-not-propagate-mask + window-do-not-propagate-mask +
    + window-event-mask + + window-event-mask +
    + window-gravity + + window-gravity +
    + window-map-state + +
    + window-override-redirect + + window-override-redirect +
    + window-save-under + + window-save-under +
    + window-visual + +
    Drawable Geometry + drawable-border-width + drawable-border-width +
    + drawable-depth + + drawable-height +
    + drawable-height + + drawable-width +
    + drawable-root + + drawable-x +
    + drawable-width + + drawable-y +
    + drawable-x + window-priority +
    + drawable-y + +
    + +

    + The results from a sequence of calls to setf functions + in a given group are cached and sent in a single server + request, either upon exit from the body or when a reader + function from the corresponding group is called. +

    + with-state + sends a single request to update all its cached values + for the drawable before the first call to a reader + function within the body and also before the first call + to a reader function following a sequence of calls to setf + functions from the corresponding group. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/2_Displays.html +++ cmucl-20a-20090928/own-work/clx/clxman/2_Displays.html @@ -0,0 +1,46 @@ + + + + + + 2 Displays + + + + + + + + + + Next + Prev Up +
    +

    2 Displays

    + +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_4_Stacking_Order.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_4_Stacking_Order.html @@ -0,0 +1,122 @@ + + + + + + 4.4 Stacking Order + + + + + + + + + + Next Prev Up +
    +

    4.4 Stacking Order

    + +

    + Sibling windows can stack on top of each other. Windows above + can obscure or occlude lower windows. This relationship + between sibling windows is known as the stacking order. The + window-priority function can be used to change the stacking order + of a single window. CLX also provides functions to raise or lower + children of a window. Raising a mapped window can generate :exposure + events for the window and any mapped subwindows that were formerly + obscured. Lowering a mapped window can generate :exposure + events on any windows it formerly obscured. +

    +
    + + + +
    circulate-window-down + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Lowers the highest mapped child of the specified window + that partially or completely occludes another child to the + bottom of the stack. Completely unobscured children are + unaffected. Exposure processing is performed on formerly + obscured windows. +

    + If some other client has selected :substructure-redirect + on the window, a :circulate-request event is generated, and no + further processing is performed. Otherwise, the child window is + lowered and a + :circulate-notify event is generated if the window + is actually restacked. +

    +
    + +
    +
    + + + +
    circulate-window-up + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Raises the lowest mapped child of the specified window + that is partially or completely occluded by another child to + the top of the stack. Completely unobscured children are + unaffected. Exposure processing is performed on formerly + obscured windows. +

    + If another client has selected :substructure-redirect on + the window, a :circulate-request event is generated, and no + further processing is performed. Otherwise, the child window is + raised and a + :circulate-notify event is generated if the window + is actually restacked. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_f.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_f.html @@ -0,0 +1,129 @@ + + + + + + F... + + + + + + + + + + Next Prev Up +
    +

    F...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_3_Allocating_Colors.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_3_Allocating_Colors.html @@ -0,0 +1,324 @@ + + + + + + 9.3.3 Allocating Colors + + + + + + + + + + Next Prev Up +
    +

    9.3.3 Allocating Colors +

    + +

    + The following paragraphs describe the functions for allocating + read-only and read-write color cells, allocating color planes, and + freeing color cells. +

    +
    + + + +
    alloc-color + colormap color + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + color +
    + A color object + or a stringable + containing a color name. +
    +

    + Returns a pixel for a read-only color cell in the + colormap. The color in the allocated cell is the closest + approximation to the requested color possible for the + screen hardware. The other values returned give both the + approximate color stored in the cell and the exact color + requested. +

    + The requested color can be either a color object or a + stringable + containing a color name. If a color name is given, a + corresponding color value is looked up (see lookup-color + ) and used. Color name strings must contain only ISO + Latin-1 characters; case is not significant. +

    +
    + pixel +
    + Type pixel. +
    + screen-color, exact-color +
    + Type color. +
    +
    +
    + +
    +
    + + + +
    alloc-color-cells + colormap colors + &key (:planes 0) :contiguous-p (:result-type + 'list) + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + colors +
    + A positive number defining the length of the pixels sequence + returned. +
    + :planes +
    + A non-negative number defining the length of the masks + sequence returned. +
    + :contiguous-p +
    + If true, the masks form contiguous sets of bits. +
    + :result-type +
    + A subtype of sequence that indicates the type of + sequences returned. +
    +

    + Returns a sequence of pixels for read-write color + cells in the colormap. The allocated cells contain + undefined color values. The visual type class of the colormap must + be either :gray-scale, :pseudo-color, or + :direct-color. +

    + The colors argument and the :planes argument + define the number of pixels and the number of masks returned, + respectively. The number of colors must be positive, and the + number of planes must be non-negative. A total of (* colors + (expt 2 planes)) color cells are allocated. + The pixel values for the allocated cells can be computed by + combining the returned pixels and masks. +

    + The length of the returned masks sequence is equal to :planes + . Each mask of the returned masks sequence defines a single + bitplane. None of the masks have any 1 bits in common. Thus, by + selectively combining masks with logior, (expt 2 + planes) distinct combined plane masks can be computed. +

    + The length of the returned pixels sequence is equal to colors. None of the pixels have any 1 bits in common with + each other or with any of the returned masks. By combining + pixels and plane masks with logior, (* colors ( + expt 2 planes)) distinct pixel values can be + produced. +

    + If the colormap class is :gray-scale or + :pseudo-color, each mask will have exactly one bit + set. If the colormap + class is :direct-color, each mask will + have exactly three bits set. If :contiguous-p is true, + combining all masks with logior produces a plane mask + with either one set of contiguous bits (for :gray-scale + and :pseudo-color) or three sets of contiguous bits (for + :direct-color). +

    +
    + pixels, mask +
    + Type sequence of pixels. +
    +
    +
    + +
    +
    + + + +
    alloc-color-planes + colormap colors + &key (:reds 0) (:greens 0) (:blues 0) + :contiguous-p (:result-type 'list) + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + colors +
    + A positive number defining the length of the pixels sequence + returned. +
    + :planes +
    + A non-negative number defining the length of the masks + sequence returned. +
    + :contiguous-p +
    + If true, then the masks form contiguous sets of bits. +
    + :result-type +
    + A subtype of sequence that indicates the type of + sequences returned. +
    +

    + Returns a sequence of pixels for read-write color + cells in the colormap. The allocated cells contain + undefined color values. The visual type class of the colormap + must be either :gray-scale, :pseudo-color, + or :direct-color. +

    + The colors argument defines the number of pixels + returned. The :reds, :greens, and :blues + arguments define the number of bits set in the returned red, + green, and blue masks, respectively. The number of colors must + be positive, and the number of bits for each mask must be + non-negative. A total of (* colors (expt 2 (+ + reds greens blues))) color cells are allocated. The + pixel values for the allocated cells can be computed by + combining the returned pixels and masks. +

    + Each mask of the returned masks defines a pixel subfield for + the corresponding primary. None of the masks have any 1 bits in + common. By selectively combining subsets of the red, green, and + blue masks with logior, (expt 2 (+ reds greens + blues) distinct combined plane masks can be computed. +

    + The length of the returned pixels sequence is + equal to colors. None of the pixels have any 1 bits in + common with each other or with any of the returned masks. By + combining pixels and plane masks with logior, (* + colors (expt 2 (+ reds greens blues)) + distinct pixel values can be produced. +

    + If :contiguous-p is true, each of returned masks + consists of a set of contiguous bits. If the colormap class + is :direct-color, each returned mask lies within the + pixel subfield for its primary. +

    +
    + pixels +
    + Type sequence of pixel. +
    + red-mask, green-mask, blue-mask +
    + Type pixel. +
    +
    +
    + +
    +
    + + + +
    free-colors + colormap pixels + &optional (plane-mask 0) + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + pixels +
    + A sequence of pixel values. +
    + plane-mask +
    + A pixel value with no bits in common with any of the pixels + . +
    +

    + Frees a set of allocated color cells from the colormap. + The pixel values for the freed cells are computed by combining + the given pixels sequence and :plane-mask. The + total number of cells freed is: +

    + (* (length pixels) (expt 2 (logcount + plane-mask))) +

    + The :plane-mask must not have any bits in common with + any of the given pixels. The pixel values for the freed + cells are produced by using logior to combine each of + the given pixels with all subsets of the :plane-mask. +

    + Note that freeing an individual pixel allocated by + alloc-color-planes may not allow it to be reused until + all related pixels computed from the same plane mask are also + freed. +

    + A single error is generated if any computed pixel is invalid or + if its color cell is not allocated by the client. Even if an + error is generated, all valid pixel values are freed. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/10_3_Cursor_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/10_3_Cursor_Functions.html @@ -0,0 +1,115 @@ + + + + + + 10.3 Cursor Functions + + + + + + + + + + Next Prev Up + +
    +

    10.3 Cursor Functions +

    + +

    + The following paragraphs describe the CLX functions used to operate on + cursor objects. +

    +
    + + + +
    query-best-cursor + width height display + + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + width,height +
    + The requested cursor size. +
    +

    + Returns the cursor size closest to the requested width + and height that is best suited to the display. The + width and height returned define the largest cursor + size supported by the X server. Clients should always be + prepared to limit cursor sizes to those supported by the server. +

    +
    + width, height +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    recolor-cursor + cursor foreground + background + Function +
    + + +
          + +
    +
    + cursor +
    + A cursor + object. +
    + foreground +
    + A color object + specifying the new foreground color. +
    + background +
    + A color object + specifying the new background color. +
    +

    + Changes the color of the specified cursor. If the cursor + is displayed on a screen, the change is visible immediately. +

    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/w.html +++ cmucl-20a-20090928/own-work/clx/clxman/w.html @@ -0,0 +1,52 @@ + + + + + + w + + + + + + + + + + Next Prev Up +
    +

    w

    + +
    +
    + window gravity +
    + When windows are resized, subwindows can be repositioned + automatically relative to some position in the window. This + attraction of a subwindow to some part of its parent is known as + window gravity. +
    + window manager +
    + Manipulation of windows on the screen, and much of the user interface + (policy) is typically provided by a window manager client. +
    + window manager shell +
    + A subclass of shell called wm-shell that interacts with + the window manager. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_1_Introduction.html @@ -0,0 +1,52 @@ + + + + + + 13.1 Introduction + + + + + + + + + + Next + Prev Up +
    +

    13.1 Introduction

    + +

    + Users need a way to specify preferences for various user interface + values (for example, colors, fonts, title strings, and so forth). + Applications need a consistent method for determining the default + interface values that are specific to them. It is also useful if + application interface values can be modified by users without changes + to the program code. For example, this capability can make it easy to + change the color scheme of a user interface. In CLX, such interface + values are referred to as resources. CLX defines functions for + storing and retrieving interface resources from a resource database. A + user can store various user interface values as resources in a resource + database; a CLX application can then read these resource values and + modify its user interface accordingly. +

    + NOTE: The general term resource refers to any application + user interface value stored in a resource database. The term server + resource is used more specifically to refer to the types of objects + allocated by an X server and referenced by clients (for example, + windows, fonts, graphics contexts, and so forth). + +


    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_6_Drawing_Arcs.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_6_Drawing_Arcs.html @@ -0,0 +1,196 @@ + + + + + + 6.6 Drawing Arcs + + + + + + + + + + Next Prev Up +
    +

    6.6 Drawing Arcs

    + +

    + draw-arc draws a + single circular or an elliptical arc, while draw-arcs draws + multiple circular or elliptical arcs. draw-arc and draw-arcs use the + following graphics context components: arc-mode, background, cap-style, + clip-x, clip-y, clip-mask, dash-list, dash-offset, fill-style, + foreground, join-style, function, plane-mask, line-width, line-style, + stipple, subwindow-mode, tile, ts-x-origin, and ts-y-origin. +

    +
    + + + +
    draw-arc + drawable gcontext x y + width height angle1 angle2 &optional fill-p + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context for drawing the arc. +
    + x, y +
    + The x and y coordinates of the arc rectangle relative to the + origin of the drawable. Type is int16. +
    + width, height +
    + Specifies the width and height of the rectangle. These are + the major and minor axes of the arc. Type is card16. +
    + angle1 +
    + Specifies the start of the arc in radians. Type is angle. +
    + angle2 +
    + Specifies the direction and end point of the arc. Type is angle. +
    + fill-p +
    + Specifies whether the arc is filled or not. Type boolean. +
    +

    + Draws either a circular or an elliptical arc. Also, outlined or + filled arcs can be drawn. Each arc is specified by a rectangle ( + x, y, width, and height) and two + angles (angle1 and angle2). The angles are signed + integers in radians, with positive indicating counterclockwise + motion and negative indicating clockwise motion. The start of + the arc is specified by angle1, and the path and extent + of the arc is specified by angle2 relative to the start + of the arc. If the magnitude of angle2 is greater than + 360 degrees, it is truncated to 360 degrees. The x and y coordinates of the rectangle are relative to the + drawable's origin. +

    + For example, an arc specified as [x,y,width + ,height,angle1,angle2] has the origin of + the major and minor axes at: +

    + [x+(width/2),y+(height/2)] +

    + The infinitely thin path describing the entire circle/ellipse + intersects the horizontal axis at: +

    + [x,y+(height/2)] and [x+width + ,y+(height/2)] +

    + The intersection of the vertical axis is at: +

    + [x+(width/2),y] and [x+(width + /2),y+height] +

    + These coordinates can be fractional; that is, they are not + truncated to discrete coordinates. Note that the angle values + are slightly different in CLX than in the X protocol + specification. +

    + If fill-p is nil, then only the outline of the + arc is drawn. Otherwise, if fill-p is true, draw-arc + fills the area bounded by the arc outline and one or two line + segments, depending on the arc-mode. If the arc-mode is + :chord, the filled area is bounded by the arc outline and + the line segment joining the arc end points. If the arc-mode is + :pie-slice, the filled area is bounded by the arc + outline and the two line segments joining each arc end point + with the center point. +

    +
    + +
    +
    + + + +
    draw-arcs + drawable gcontext arcs + &optional fill-p + Function +
    + + +
          + +
    +
    + drawable +
    + Specifies the + drawable where you want the arcs drawn. +
    + gcontext +
    + Specifies the graphics context for drawing the arc. +
    + arcs +
    + A sequence containing the width, height, angle1, and angle2 + arguments defining the arcs. See draw-arc + for more detail. Type is arc-seq. +
    + fill-p +
    + Specifies whether the arcs are filled or not. Type is boolean. +
    +

    + Draws circular or elliptical, outlined or filled arcs. Each arc + is specified by a rectangle and two angles. For a more detailed + description, see + draw-arc. +

    + The arcs are filled in the order listed. For any given arc, no + pixel is drawn more than once. If regions intersect, the + intersecting pixels are drawn multiple times. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_j.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_j.html @@ -0,0 +1,32 @@ + + + + + + J... + + + + + + + + + + Next Prev Up +
    +

    J...

    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_2_Area_and_Plane_Operations.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_2_Area_and_Plane_Operations.html @@ -0,0 +1,299 @@ + + + + + + 6.2 Area and Plane Operations + + + + + + + + + + Next Prev Up +
    +

    6.2 Area and Plane Operations +

    + +

    + clear-area + clears an area or an entire window to the background. Since + pixmaps do not have backgrounds, they cannot be filled by using the + functions described in the following paragraphs. Instead, you should + use + draw-rectangle, which sets the pixmap to a known value. See + paragraph 6.5, Drawing Rectangles, for information on draw-rectangle + . +

    +
    + + + +
    clear-area + window &key ( + :x 0) (:y 0) :width :height :exposures-p + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + :x, :y +
    + Upper-left corner of the area to be cleared. These + coordinates are relative to the window origin. Type is + int16. +
    + :width +
    + The width of the area to clear or nil to clear to the + remaining width of the window. Type is card16 or + null. +
    + :height +
    + The height of the area to clear or nil to clear to the + remaining height of the window. Type is card16 or + null. +
    + :exposures-p +
    + Specifies if + :exposure events should be generated for the + affected areas. Type + boolean. +
    +

    + Draws a rectangular area in the specified window with + the background pixel or pixmap of the window. The :x + and :y coordinates are relative to the window + origin, and specify the upper-left corner of the rectangular + area that is to be cleared. A nil or zero value for + :height or :width clears the remaining area (height + - y or width - x). If the window has a defined + background tile, the rectangle is tiled by using a plane-mask + of all ones and a function of :copy. If the window + has background :none, the contents of the window + are not changed. In either case, if :exposures-p is non- + nil, then one or more :exposure + events are generated for regions of the rectangle that are + either visible or are being retained in a backing store. +

    + To clear the entire area in a specified window, use ( + clear-area window). +

    +
    + +
    +
    + + + +
    copy-area + source gcontext + source-x source-y width height destination destination-x + destination-y + Function +
    + + +
          + +
    +
    + source +
    + Source drawable + . +
    + gcontext +
    + The graphics context to use during the copy operation. +
    + source-x, source-y +
    + The x and y coordinates of the upper-left corner of the area + in the source drawable. These coordinates are relative to the + source drawable + origin. Type is + int16. +
    + width, height +
    + The width and height of the area being copied. These apply to + both the source and destination areas. Type is + card16. +
    + destination +
    + The destination + drawable. +
    + destination-x, destination-y +
    + The x and y coordinates of the upper left corner of the area + in the destination drawable. + These coordinates are relative to the destination drawable + origin. Type is int16 + . +
    +

    + Copies the specified rectangular area from the source drawable to the + specified rectangular area of the destination drawable, + combining them as specified in the supplied graphics context (gcontext). The x and y coordinates are + relative to their respective drawable origin, with each pair + specifying the upper left corner of the area. +

    + If either regions of the source area are obscured and + have not been retained in backing store, or regions outside the + boundaries of the source drawable are + specified, those regions are not copied. Instead, the following + occurs on all corresponding destination regions that are + either visible or are retained in backing store: +

      +
    • + If the destination rectangle is a window with a + background other than :none, these corresponding + regions of the destination are tiled, using plane-mask + of all ones and function of boole-1 (copy source), + with that background. +
    • + If the exposures attribute of the graphics context is :on + , then + :graphics-exposure events for all corresponding + destination regions are generated (regardless of tiling + or whether the destination is a window or a pixmap). +
    • + If exposures is :on but no regions are exposed, a + :no-exposure event is generated. Note that by + default, exposures is :on for new graphics contexts. + See Section 5, Graphics Contexts, for further information. +
    + +
    +
    + +
    +
    + + + +
    copy-plane + source gcontext plane + source-x source-y width height destination destination-x + destination-y + Function +
    + + +
          + +
    +
    + source +
    + The source drawable + . +
    + gcontext +
    + The graphics context to use during the copy operation. +
    + plane +
    + Specifies the bit-plane of the source drawable. + Exactly one bit must be set. Type is pixel. +
    + source-x, source-y +
    + The x and y coordinates of the upper-left + corner of the area in the source drawable. + These coordinates are relative to the source drawable + origin. Type is int16 + . +
    + width, height +
    + The width and height of the area being copied. These apply to + both the source and destination areas. Type is + card16. +
    + destination +
    + The destination + drawable. +
    + destination-x, destination-y +
    + The x and y coordinates of the upper-left corner of the + destination area in the destination drawable. + These coordinates are relative to the destination drawable + origin. Type is int16 + . +
    +

    + Uses a single bit plane of the specified rectangular area of + the source + drawable along with the specified graphics context ( + gcontext) to modify the specified rectangle area of the + destination drawable. The drawables specified by the + source and destination arguments must have the + same root but need not have the same depth. +

    + Effectively, this operation forms a pixmap of the same depth as + destination and with a size specified by the source + area. It then uses the foreground and background from the + graphics context (foreground where the bit-plane in source + contains a one bit, background where the bit-plane in + source contains a zero bit), and the equivalent of a + copy-area operation is performed with all the same + exposure semantics. This can also be thought of as using the + specified region of the source bit-plane as a stipple + with a fillstyle of :opaque-stippled for filling a + rectangular area of the destination. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_3_1_A_Simple_Menu.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_3_1_A_Simple_Menu.html @@ -0,0 +1,173 @@ + + + + + + 1.3.1 A Simple Menu + + + + + + + + + + Next Prev Up +
    +

    1.3.1 A Simple Menu

    + +

    + The example client program creates and displays a simple pop-up menu + consisting of a column of strings--a title string followed by + selectable menu item strings. The implementation uses one window to + represent the entire menu, plus a set of subwindows, one for each menu + item. Here is the definition of a structure which represents such a + menu. +

    +(defstruct (menu)
    +   "A simple menu of text strings."
    +   (title "Choose an item:")
    +   item-alist                   ;((item-window item-string))
    +   window
    +   gcontext
    +   width
    +   title-width
    +   item-width
    +   item-height
    +   (geometry-changed-p t))      ;nil if unchanged since displayed
    +        
    + +

    + The window slot will contain the window object that + represents the menu. The item- alist + represents the relationship between the menu items and their associated + subwindows. Each entry in item-alist is a list whose first + element is a (sub)window object and whose second element is the + corresponding item string. A + window object is an instance of a CLX-defined data type which + represents X windows. A window + object actually carries two pieces of information: an X window + ID integer and a display + object. A display + is another CLX-defined data type that represents a connection to a + specific X display server. The gcontext slot contains an + instance of a CLX data type known as a graphics context. + A graphics context is a set of display attribute values, such as + foreground color, fill style, line style, text font, and so forth. Each + X graphics request (and hence each CLX graphics function call) must + supply a graphics context to use in displaying the request. The + menu's gcontext will thus hold all of the attribute + values used during menu display. +

    + The first thing to do is make an instance of a menu object: +

    +(defun create-menu (parent-window text-color background-color text-font)
    +   (make-menu
    +      ;; Create menu graphics context
    +      :gcontext (CREATE-GCONTEXT :drawable   parent-window
    +                                 :foreground text-color
    +                                 :background background-color
    +                                 :font       text-font)
    +
    +      ;; Create menu window
    +      :window    (CREATE-WINDOW
    +                  :parent            parent-window
    +                  :class             :input-output
    +                  :x                 0                     ;temporary value
    +                  :y                 0                     ;temporary value
    +                  :width             16                    ;temporary value
    +                  :height            16                    ;temporary value
    +                  :border-width 2  
    +                  :border            text-color
    +                  :background        background-color
    +                  :save-under        :on
    +                  :override-redirect :on                   ;override window mgr when positioning
    +                  :event-mask        (MAKE-EVENT-MASK :leave-window :exposure))))
    +        
    + +

    + create-window + is one of the most important CLX functions, since it creates and + returns a window + object. Several of its options are shown here. The default window class + is :input-output, but X provides for :input-only windows, + too. Every window must have a parent window, except for a + system-defined root window, which represents an entire display + screen. The :event-mask keyword value, a CLX event-mask data type, + says that an input event will be received for the menu window when the + window is exposed and also when the pointer cursor leaves the window. + The window border is a pattern-filled or (as in this case) a + solid-colored boundary which is maintained automatically by the X + server; a client cannot draw in a window's border, since all + graphics requests are relative to the origin (upper-left corner) of the + window's interior and are clipped by the server to this inside + region. Turning on the :save-under option is a hint to the X + server that, when this window is made visible, it may be more efficient + to save the pixels it obscures, rather than require several client + programs to refresh their windows when the pop-up menu disappears. This + is a way to work around X's client-managed refresh policy when only + a small amount of screen space is needed temporarily. +

    + Why is :override-redirect turned on for the menu window? This is + actually a little unusual, because it prevents any window manager + client from redirecting the position of the menu when it is + popped up. Remember that the window manager represents the user's + policy for controlling the positions of his windows, so this kind of + redirection is ordinarily correct. However, in this case, as a favor to + the user, the menu avoids redirection in order to pop up the menu at a + very specific location; that is, under the pointer cursor. +

    + What about the item subwindows? The menu-set-item-list + function in the following example creates them whenever the menu's + item list is changed. The upper-left x and y coordinates and the width + and height are not important yet, because they are computed just before + the menu is displayed. This function also calls create-window + , demonstrating the equal treatment of parent and children windows in + the X window hierarchy. +

    +(defun menu-set-item-list (menu &rest item-strings)
    +  ;; Assume the new items will change the menu's width and height
    +  (setf (menu-geometry-changed-p menu) t)
    +
    +  ;; Destroy any existing item windows
    +  (dolist (item (menu-item-alist menu))
    +    (DESTROY-WINDOW (first item)))
    +  
    +  ;; Add (item-window item-string) elements to item-alist
    +  (setf (menu-item-alist menu)
    +        (let (alist)
    +          (dolist (item item-strings (nreverse alist))
    +            (push (list (CREATE-WINDOW
    +                         :parent       (menu-window menu)
    +                         :x            0           ;temporary value
    +                         :y            0           ;temporary value
    +                         :width        16          ;temporary value
    +                         :height       16          ;temporary value
    +                         :background   (GCONTEXT-BACKGROUND (menu-gcontext menu))
    +                         :event-mask   (MAKE-EVENT-MASK :enter-window
    +                                                        :leave-window
    +                                                        :button-press
    +                                                        :button-release))
    +                        item)
    +                  alist)))))
    +        
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_4_2_Keyboard_Mapping.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_4_2_Keyboard_Mapping.html @@ -0,0 +1,197 @@ + + + + + + 14.4.2 Keyboard Mapping + + + + + + + + + + Next Prev Up +
    +

    14.4.2 Keyboard Mapping +

    + +

    + The X server maintains a keyboard mapping that associates each keycode + with one or more keysyms. The following paragraphs describe the CLX + functions used to return or change the mapping of keycodes. +

    +
    + + + +
    change-keyboard-mapping + display keysyms + &key (:start 0) :end (:first-keycode :start + ) + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + keysyms +
    + A two-dimensional array of keysym (card32) values. +
    + :start, :end +
    + Indexes for the subsequence of keysyms used. +
    + :first-keycode +
    + A card8 + defining the first keycode mapping changed. +
    +

    + Changes the mapping of keycodes to keysyms. A :mapping-notify event is generated for all clients. +

    + The new keysyms are specified as a two-dimensional array + in which: +

    + (aref keysyms (+ :start i) j) +

    + is keysym j associated with keycode (+ :first-keycode + i). The maximum number of keysyms associated + with any one keycode is given by: +

    + (array-dimension keysyms 1) +

    + keysyms should contain nil elements to represent + those keysyms that are undefined for a given keycode. :start + and :end define the subsequence of the keysyms + array that defines the new mapping, and the number of + keycode mappings changed. By default, :end is given by: +

    + (array-dimension keysyms 0) +

    + The keycodes whose mappings are changed are given by + :first-keycode through the following: +

    + (+ :first-keycode (- :end :start) -1) +

    + keycodes outside this range of are not affected. + :first-keycode must not be less than ( + display-min-keycode display), and the last + keycode modified must not be greater than ( + display-max-keycode display). +

    +
    + +
    +
    + + + +
    keyboard-mapping + display &key + :first-keycode :start :end :data + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + :first-keycode +
    + A card8 + defining the first keycode mapping returned. +
    + :start, :end +
    + Indexes for the subsequence of the returned array which is + modified. +
    + :data +
    + If given, a two-dimensional array to receive the returned + keysyms. +
    +

    + Returns the keysyms mapped to the given range of keycodes for + the display keyboard. The mappings are returned in the + form of a two-dimensional array of card32 keysym + values. The :data argument, if given, must be a + two-dimensional array in which the returned mappings will be + stored. In this case: +

    + (array-dimension :data 1) +

    + defines the maximum number of keysyms returned for any keycode. + Otherwise, a new array is created and returned. +

    + Upon return: +

    + (aref mappings (+ :start i) j) +

    + will contain keysym j associated with keycode (+ + :first-keycode i) (or nil, if keysym j is + undefined for that keycode). +

    + :first-keycode specifies the first keycode whose mapping + is returned; by default, :first-keycode is ( + display-min-keycode display). :start and + :end define the subsequence of the returned array in + which the returned mappings are stored. By default, :start + is given by :first-keycode and :end is given + by: +

    + (1+ ( + display-max-keycode display)) +

    + :first-keycode must not be less than ( + display-min-keycode display), and the last + keycode returned must not be greater than ( + display-max-keycode display). +

    +
    + mappings +
    + Type (array card32 (* *)). +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/s.html +++ cmucl-20a-20090928/own-work/clx/clxman/s.html @@ -0,0 +1,151 @@ + + + + + + s + + + + + + + + + + Next Prev Up +
    +

    s

    + +
    +
    + save set +
    + The save set of a client is a list of other client's + windows that, if they are inferiors of one of the client's + windows at connection close, should not be destroyed and that should + be remapped if it is unmapped. Save sets are typically used by window + managers to avoid lost windows if the manager should terminate + abnormally. +
    + scanline +
    + A list of pixel or bit values viewed as a horizontal row (all values + having the same y coordinate) of an image, with the values ordered by + increasing x coordinate. +
    + scanline order +
    + An image represented in scanline order contains scanlines + ordered by increasing y coordinate. +
    + screen +
    + A server can provide several independent screens, which + typically have physically independent monitors. This would be the + expected configuration when there is only a single keyboard and + pointer shared among the screens. +
    + selection +
    +

    + A selection can be thought of as an indirect property with + dynamic type. That is, rather than having the property stored in + the server, it is maintained by some client (the owner). A + selection is global in nature, being thought of as belonging to the + user (but maintained by clients), rather than being private to a + particular window subhierarchy or a particular set of clients. When + a client asks for the contents of a selection, it specifies a + selection target type. This target type can be used to + control the transmitted representation of the contents. +

    + For example, if the selection is "the last thing the user + clicked on" and that is currently an image, then the target + type might specify whether the contents of the image should be sent + in XY Format or Z Format. The target type can also be used to + control the class of contents transmitted; that is, asking for the + looks (fonts, line spacing, indentation, and so forth) of a + paragraph selection, rather than the text of the paragraph. The + target type can also be used for other purposes; the semantics is + not constrained by the protocol. +

    + sensitivity +
    + A condition in which a user interface component of an application + will accept input. Conversely, when a contact is insensitive, events + of particular types are not dispatched to the contact and are ignored. +
    + server +
    + The server provides the basic windowing mechanism. It handles + IPC connections from clients, demultiplexes graphics requests onto + the screens, and multiplexes input back to the appropriate clients. +
    + server grabbing +
    + The server can be grabbed by a single client for exclusive + use. This prevents processing of any requests from other client + connections until the grab is complete. This is typically only a + transient state for such things as rubber-banding and pop-up menus, + or to execute requests indivisibly. +
    + server resource +
    + Windows, pixmaps, cursors, fonts, gcontexts, and colormaps are known + as resources. They all have unique identifiers associated with them + for naming purposes. The lifetime of a resource is bounded by the + lifetime of the connection over which the resource was created. See + resource. +
    + shell +
    + A composite that handles the duties required by standard conventions + for top-level X windows. +
    + sibling +
    + Children of the same parent window are known as sibling + windows. +
    + static color +
    + A degenerate case of pseudo color in which the RGB values are + predefined and read-only. +
    + static gray +
    + A degenerate case of gray scale in which the gray values are + predefined and read-only. The values are typically (near-)linear + increasing ramps. +
    + stacking order +
    + Sibling windows can stack on top of each other. Windows above + both obscure and occlude lower windows. This is similar to paper on a + desk. The relationship between sibling windows is known as the + stacking order. +
    + state +
    + A slot of contact that controls the visual effect of the + contact. +
    + stipple +
    + A bitmap that is used to tile a region to serve as an additional clip + mask for a fill operation with the foreground color. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_q.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_q.html @@ -0,0 +1,62 @@ + + + + + + Q... + + + + + + + + + + Next Prev Up +
    +

    Q...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_2_Selecting_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_2_Selecting_Events.html @@ -0,0 +1,216 @@ + + + + + + 12.2 Selecting Events + + + + + + + + + + Next Prev Up +
    +

    12.2 Selecting Events +

    + +

    + A client selects which types of events it receives from a + specific window. The window event-mask attribute, set by the client, + determines which event types are selected (see + window-event-mask in paragraph 4.3, Window Attributes). Most + types of events are received by a client only if they are selected for + some window. +

    + In the X protocol, an event-mask is represented as a bit string. CLX + also allows an event mask to be defined by a list of event-mask-class + keywords. The functions + make-event-keys and make-event-mask + can be used to convert between these two forms of an event-mask. In + general, including an + event-mask-class keyword in an event-mask causes one or more + related event types to be selected. The following table describes the + event types selected by each event-mask-class + keyword. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Event Mask Keyword + + Event Types Selected +
    :button-1-motion + + :motion-notify when :button-1 is down +
    :button-2-motion + + :motion-notify when :button-2 is down +
    :button-3-motion + + :motion-notify when :button-3 is down +
    :button-4-motion + + :motion-notify when :button-4 is down +
    :button-5-motion + + :motion-notify when :button-5 is down +
    :button-motion + + :motion-notify when any pointer button is down +
    + :button-press + + :button-press +
    :button-release + :button-release +
    :colormap-change + + :colormap-notify +
    :enter-window + + :enter-notify +
    :exposure + + :exposure + +
    :focus-change + :focus-in, :focus-out +
    + :key-press + + :key-press +
    :key-release + :key-release +
    :keymap-state + :keymap-notify +
    :leave-window + + :leave-notify +
    :owner-grab-button + Pointer events while button is grabbed +
    :pointer-motion + + :motion-notify +
    :pointer-motion-hint + Single + :motion-notify only +
    :property-change + + :property-notify +
    :resize-redirect + :resize-request +
    :structure-notify + :circulate-notify, :configure-notify, :destroy-notify, + :gravity-notify, :map-notify, :reparent-notify, :unmap-notify +
    :substructure-redirect + :circulate-request, :configure-request, :map-request +
    :visibility-change + + :visibility-notify +
    + +

    + Some types of events do not have to be selected to be received and + therefore are not represented in an event-mask. For example, the copy-plane + and + copy-area functions cause + :graphics-exposure and :no-exposure + events to be reported, unless exposures are turned :off in + the graphics context (see copy-area + and + copy-plane in paragraph 6.2, Area and Plane Operations, and + gcontext-exposures in paragraph 5.4.6, Exposures). Also, + :selection-clear, + :selection-request, + :selection-notify and + :client-message events can be received at any time, but they + are generally sent only to clients using selections (see paragraph + 12.12.7, Client Communications Events). + :mapping-notify is always sent to clients when the keyboard + mapping is changed. +

    + Any client can select events for any window. A window maintains a + separate event-mask for each interested client. In general, multiple + clients can select for the same events on a window. After the X server + generates an event, it sends it to all clients which selected it. + However, the following restrictions apply to sharing window events + among multiple clients. For a given window: +

      +
    • + Only one client at a time can include :substructure-redirect + in its event-mask +
    • + Only one client at a time can can include + :button-press in its event-mask +
    • + Only one client at a time can include :resize-redirect in its + event-mask +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_7_Screen_Saver.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_7_Screen_Saver.html @@ -0,0 +1,224 @@ + + + + + + 14.7 Screen Saver + + + + + + + + + + Next Prev Up +
    +

    14.7 Screen Saver

    + +

    + To prevent monitor damage, an X server implements a screen saver + function which blanks screens during periods of unuse. The screen saver + can be in one of three states: +

      +
    • + Disabled -- No screen blanking is done and screen content remains + unchanged. +
    • + Deactivated -- The server is being used. When the server input + devices are unused for a specific amount of time, the screen saver + becomes activated. +
    • + Activated -- The server input devices are unused. The screen saver + blanks all server screens or displays a server-dependent image. As + soon as an input event from either the pointer or the keyboard + occurs, the screen saver is deactivated and its timer is reset. +
    + +

    + The following paragraphs describe the CLX functions used to: +

      +
    • + Return or change screen saver control values. +
    • + Activate or reset the screen saver +
    + +
    +
    + + + +
    activate-screen-saver + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Activates the screen saver for the display server. +

    +
    + +
    +
    + + + +
    reset-screen-saver + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Deactivates the screen saver for the display server (if + necessary) and resets its timer, just as if a pointer or + keyboard event had occurred. +

    +
    + +
    +
    + + + +
    screen-saver + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Returns the current control values for the display + server screen saver. See + set-screen-saver. +

    +
    + timeout, period +
    + Type int16. +
    + blanking, exposures +
    + One of :yes or :no. +
    +
    +
    + +
    +
    + + + +
    set-screen-saver + display timeout + period blanking exposures + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + timeout +
    + Specifies the delay until timeout takes over. +
    + period +
    + Specifies the periodic change interval, if used. +
    + blanking +
    + Specifies whether the blanking option is available. +
    + exposures +
    + Specifies whether exposures are allowed during blanking. +
    +

    + Changes the current control values for the display + server screen saver. The screen saver is reset. The screen + saver is also disabled if: +

      +
    • + timeout is zero, or +
    • + Both blanking and exposures are disabled and + the server cannot regenerate the screen contents without + sending + :exposure events. +
    + +

    + The timeout specifies the (non-negative) number of + seconds of input device inactivity that must elapse before the + screen saver is activated. The timeout can be set to + :default to restore the server default timeout interval. +

    + If blanking is :yes and the screen hardware + supports blanking, blanking is enabled; that is, the screen + saver will simply blank all screens when it is activated. + blanking can be set to :default to restore the + server default state for blanking. +

    + If exposures is :yes, exposures are enabled. If + exposures are enabled, or if the server is capable of + regenerating screen contents without sending :exposure + events, the screen saver will display some + server-dependent image when activated. Frequently, this image + will consist of a repeating animation sequence, in which case period specifies the ( non-negative) number of seconds for + each repetition. A period of zero is a hint that no + repetition should occur. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/16_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/16_1_Introduction.html @@ -0,0 +1,998 @@ + + + + + + 16.1 Introduction + + + + + + + + + + Next Prev Up +
    +

    16.1 Introduction

    + +

    + CLX error conditions are hierarchial. The base error condition is x-error, and all + other conditions are built on top of x-error. x-error can be built + on a lower-level condition that is implementation dependent (this is + probably the error condition). +

    +
    + + + +
    define-condition + name ( + parent-types*) [({slot-specifier*}) {option*}] + Macro +
    + + +
          + +

    + Any new condition type must be defined with the + define-condition macro. A condition type has a name, + parent types, report message, and any number of slot items. See + the Lisp Reference manual for further information + regarding + define-condition. +

    + The following are the predefined error conditions that can + occur in CLX. +

    +
    + +
    +
    + + + +
    access-error + + Condition +
    + + +
          + +

    + An access-error + can occur for several reasons: +

      +
    • + A client attempted to grab a key/button combination already + grabbed by another client +
    • + A client attempted to free a colormap entry that it did not + already allocate +
    • + A client attempted to store into a read-only colormap entry +
    • + A client attempted to modify the access control list from + other than the local (or otherwise authorized) host +
    • + A client attempted to select an event type that another + client has already selected, and, that at most, one client + can select at a time +
    + +

    + An access-error + is a special case of the more general request-error + (see page 16-189 for information on request-error + ). +

    +
    + +
    +
    + + + +
    alloc-error + + Condition +
    + + +
          + +

    + The server failed to allocate the requested resource or server + memory. +

    + An alloc-error + is a special case of the more general request-error + (see page 16-189 for information on request-error + ). +

    +
    + +
    +
    + + + +
    atom-error + + Condition +
    + + +
          + +

    + A value for an atom argument does not name a defined + atom. +

    + An atom-error + is a special case of the more general request-error + (see page 16-189 for information on request-error + ). +

    +
    + +
    +
    + + + +
    closed-display + + Condition +
    + + +
          + +

    + The + closed-display condition is signaled when trying to + read or write a closed display (that is, + close-display has been called on the display object, + or a server-disconnect occurred). The closed-display + object is reported with the error. +

    + A + closed-display condition is a special case of the more + general x-error + (see page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    colormap-error + + Condition +
    + + +
          + +

    + A value for a colormap argument does not name a defined + colormap. +

    + A + colormap-error is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    connection-failure + + Condition +
    + + +
          + +

    + Signaled when an X11 server refuses a connection. The following + items are reported along with the error: +

      +
    • + major-version -- The major version of the X server + code. +
    • + minor-version -- The minor version of the X server + code. +
    • + host -- The host name for the X server. +
    • + display -- The display on which the error occurred. +
    • + reason -- A string indicating why the connection + failed. +
    + +

    + A + connection-failure is a special case of the more + general x-error + (see page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    cursor-error + + Condition +
    + + +
          + +

    + A value for a cursor argument does not name a defined + cursor. +

    + A cursor-error + is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    device-busy + + Condition +
    + + +
          + +

    + Signaled by (setf ( + pointer-mapping display) mapping) when + the set-pointer-mapping request returns a busy status. A + similar condition occurs in + set-modifier-mapping, but in this case, it returns a + boolean indicating success, rather than signaling an error. The + device-busy + condition returns the display object as part of the error. +

    + A device-busy + condition is a special case of the more general x-error (see + page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    drawable-error + + Condition +
    + + +
          + +

    + A value for a drawable argument does not name a defined + window or pixmap. +

    + A + drawable-error is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    font-error + + Condition +
    + + +
          + +

    + A value for a font or gcontext argument does not + name a defined font. +

    + A font-error + is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    gcontext-error + + Condition +
    + + +
          + +

    + A value for a gcontext argument does not name a defined + GContext. +

    + A + gcontext-error is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    id-choice-error + + Condition +
    + + +
          + +

    + The value chosen for a resource identifier is either not + included in the range assigned to the client or is already in + use. Under normal circumstances, this cannot occur and should + be considered a server or CLX library error. +

    + An + id-choice-error is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    implementation-error + + Condition +
    + + +
          + +

    + The server does not implement some aspect of the request. A + server that generates this error for a core request is + deficient. As such, this error is not listed for any of the + requests. However, clients should be prepared to receive such + errors and either handle or discard them. +

    + An + implementation-error is a special case of the more + general + resource-error (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    length-error + + Condition +
    + + +
          + +

    + The length of a request is shorter or longer than that + minimally required to contain the arguments. This usually means + an internal CLX error. +

    + A length-error + is a special case of the more general resource-error + (see page 16-189 for information on resource-error + ). +

    +
    + +
    +
    + + + +
    lookup-error + + Condition +
    + + +
          + +

    + CLX has the option of caching different resource types (see + *clx-cached-types*) in a hash table by resource ID. When + looking up an object in the hash table, if the type of the + object is wrong, a lookup-error is signaled. +

    + For example: The cursor with ID 123 is interned in the hash + table. An event is received with a field for window 123. When + 123 is looked up in the hash table, a cursor is found. Since a + window was expected, a lookup-error + is signaled. This error indicates a problem with the + extension code being used. The following items are reported + along with the error: +

      +
    • + id -- The resource ID. +
    • + display -- The display being used. +
    • + type -- The resource type. +
    • + object -- The resource object. +
    + +

    + A lookup-error + is a special case of the more general x-error (see + page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    match-error + + Condition +
    + + +
          + +

    + In a graphics request, the root and depth of the GContext does + not match that of the drawable. An :input-only window is + used as a drawable. Some argument or pair of arguments has the + correct type and range but fails to match in some other way + required by the request. An :input-only window locks + this attribute. The values do not exist for an :input-only + window. +

    + A match-error + is a special case of the more general request-error + (see page 16-189 for information on request-error + ). +

    +
    + +
    +
    + + + +
    missing-parameter + + Condition +
    + + +
          + +

    + One or more of the required keyword parameters is missing or + nil. The missing parameters are reported along with the + error. +

    + A + missing-parameter condition is a special case of the + more general x-error + (see page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    name-error + + Condition +
    + + +
          + +

    + A font or color of the specified name does not exist. +

    + A name-error + is a special case of the more general request-error + (see page 16-189 for information on request-error + ). +

    +
    + +
    +
    + + + +
    pixmap-error + + Condition +
    + + +
          + +

    + A value for a pixmap argument does not name a defined + pixmap. +

    + A pixmap-error + is a special case of the more general resource-error + . (See page 16-189 for information on resource-error + .) +

    +
    + +
    +
    + + + +
    reply-length-error + (x-error) ( + slots*) + Condition +
    + + +
          + +

    + The reply to a request has an unexpected length. The following + items are reported along with the error: +

      +
    • + reply-length -- The actual reply length. +
    • + expected-length -- The expected reply length. +
    • + display -- The display on which the error occurred. +
    + +

    + A + reply-length-error is a special case of the more + general x-error + (see page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    reply-timeout + + Condition +
    + + +
          + +

    + The *reply-timeout* parameter specifies the maximum + number of seconds to wait for a request reply, or nil to + wait forever (the default). When a reply has not been received + after * + reply-timeout* seconds, the reply-timeout + condition is signaled. The timeout period + and display are reported along with the error. +

    + A + reply-timeout condition is a special case of the more + general x-error + (see page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    request-error + + Condition +
    + + +
          + +

    + The following items are reported along with the error: +

    + The major or minor opcode does not specify a valid request. +

      +
    • + display -- The display on which the error occurred. +
    • + error-key -- The error (sub)type. +
    • + major -- The major opcode. +
    • + minor -- The minor opcode. +
    • + sequence -- The actual sequence number. +
    • + current-sequence -- The current sequence number. +
    + +

    + A + request-error condition is a special case of the more + general x-error + (see page 16-190 for information on x-error). +

    +
    + +
    +
    + + + +
    resource-error + + Condition +
    + + +
          + +

    + All X11 errors for incorrect resource IDs are built on top of resource-error + . These are colormap-error + , + cursor-error, drawable-error + , + font-error, gcontext-error + , + id-choice-error, pixmap-error + and + window-error. resource-error + is never signaled directly. +

    + A + resource-error is a special case of the more general request-error + (see page 16-189 for information on request-error + ). +

    +
    + +
    +
    + + + +
    sequence-error + + Condition +
    + + +
          + +

    + All X11 request replies contain the sequence number of their + request. If a reply's sequence does not match the request + count, a + sequence-error is signaled. A sequence-error + usually indicates a locking problem with a + multi-processing Lisp. The following items are reported along + with the error: +

      +
    • + display -- The display on which the error occurred. +
    • + req-sequence -- The sequence number in the reply. +
    • + msg-sequence -- The current sequence number. +
    + +

    + A + sequence-error condition is a special case of the more + general x-error + . (See page 16-190 for information on x-error.) +

    +
    + +
    +
    + + + +
    server-disconnect + + Condition +
    + + +
          + +

    + The connection to the server was lost. The display on which the + error occurred is reported along with the error. +

    + A + server-disconnect condition is a special case of the + more general x-error + . (See page 16-190 for information on x-error.) +

    +
    + +
    +
    + + + +
    unexpected-reply + + Condition +
    + + +
          + +

    + A reply was found when none was expected. This indicates a + problem with the extension code. The following items are + reported along with the error: +

      +
    • + display -- The display on which the error occurred. +
    • + req-sequence -- The sequence number in the reply. +
    • + msg-sequence -- The current sequence number. +
    • + length -- The message length of the reply. +
    + +

    + An + unexpected-reply condition is a special case of the + more general x-error + . (See page 16-190 for information on x-error.) +

    +
    + +
    +
    + + + +
    unknown-error + (request-error + ) (error-code) + Condition +
    + + +
          + +

    + An error was received from the server with an unknown error + code. This indicates a problem with the extension code. The + undefined error code is reported. +

    + An + unknown-error is a special case of the more general request-error + . (See page 16-189 for information on request-error + .) +

    +
    + +
    +
    + + + +
    value-error + (request-error + ) (value) + Condition +
    + + +
          + +

    + Some numeric value falls outside the range of values accepted + by the request. Unless a specific range is specified for an + argument, the full range defined by the argument's type is + accepted. Any argument defined as a set of alternatives can + generate this error. The erroneous value is reported. +

    + A value-error + is a special case of the more general request-error + . (See page 16-189 for information on request-error + .) +

    +
    + +
    +
    + + + +
    window-error + (resource-error + ) + Condition +
    + + +
          + +

    + A value for a window argument does not name a defined + window. +

    + A window-error + is a special case of the more general resource-error + . (See page 16-189 for information on resource-error + .) +

    +
    + +
    +
    + + + +
    x-error + + Condition +
    + + +
          + +

    + This is the most general error condition upon which all other + conditions are defined. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/6_4_Drawing_Lines.html +++ cmucl-20a-20090928/own-work/clx/clxman/6_4_Drawing_Lines.html @@ -0,0 +1,219 @@ + + + + + + 6.4 Drawing Lines + + + + + + + + + + Next Prev Up +
    +

    6.4 Drawing Lines

    + +

    + The draw-line, draw-lines, and draw-segments + functions use the following graphics context components: background, + cap-style, clip-x-origin, clip-y-origin, clip-mask, dash-list, + dash-offset, fill-style, foreground, function, plane-mask, line-width, + line-style, stipple, subwindow-mode, tile, ts-x-origin, and ts-y-origin. +

    + The draw-lines + function also uses the join-style graphics context component. +

    +
    + + + +
    draw-line + drawable gcontext x1 + y1 x2 y2 &optional relative-p + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context for drawing the line. +
    + x1, y1, x2, y2 +
    + The end points of the line. +
    + relative-p +
    + Specifies the coordinate mode used for drawing the line + either relative to the origin or the previous point. In + either case, the first point is always drawn relative to the + drawable's origin. +
    +

    + Draws a line from the point x1,y1 to the point + x2,y2. When relative-p is true, the first + point is relative to the destination origin but the second + point is relative to the first point. When relative-p is + nil, both points are relative to the destination origin. +

    +
    + +
    +
    + + + +
    draw-lines + drawable gcontext + points &key :relative-p :fill-p (:shape :complex) + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable. +
    + gcontext +
    + The graphics context for drawing the lines. +
    + points +
    + A list of points that define the lines. Type is point-seq. +
    + :relative-p +
    + The coordinate mode of the points. +
    + :fill-p +
    + When true, a filled polygon is drawn instead of a polyline. +
    + :shape +
    + A hint that allows the server to use the most efficient area + fill algorithm. Either :convex, :non-convex, or + :complex. +
    +

    + Draws a line between each pair of points in the points + list. The lines are drawn in the order listed and join + correctly at all intermediate points. The join-style graphics + context component defines the type of joint to use. When the + first and last points coincide, the first and last lines also + join correctly to produce a hollow polygon. +

    + When :relative-p is true, the first point is always + relative to the destination origin, but the rest are relative + to the previous point. When :relative-p is nil, + the rest of the points are drawn relative to the destination + origin. +

    + When :fill-p is true, the polygon defined by the + points list is filled. The :shape keyword provides + the server with a hint about how to fill the polygon. :shape + can be either :complex (by default), :convex + , or :non-convex. +

    + The :convex operand is the simplest type of area and the + fastest to fill. A fill area is convex if every straight line + connecting any two interior points is entirely inside the area. + For example, triangles and rectangles are convex polygons. +

    + The :non-convex operand is for filling an area that is + not convex and is also not self-intersecting. Filling this type + of area is harder than filling a convex area, but easier than + filling one that is self-intersecting. For example, the shape + of the letter "T" is non-convex and + non-self-intersecting. +

    + The :complex operand is the most general (and therefore + the hardest) type of fill area. A complex fill area can be + non-convex and self-intersecting. For example, draw the outline + of a bow tie, without lifting your pencil or tracing over an + edge twice. This shape is non-convex and intersects itself at + the knot in the middle. +

    + NOTE: Unless you are sure that a shape is :convex + or :non-convex, it should always be drawn as a + :complex shape. If :convex or :non-convex is + specified incorrectly, the graphics result is undefined. +

    +
    + +
    +
    + + + +
    draw-segments + drawable gcontext + segments + Function +
    + + +
          + +
    +
    + drawable +
    + The destination + drawable to receive the line segments. +
    + gcontext +
    + Specifies the graphics context for drawing the lines. +
    + segments +
    + The points list for the segments to draw. Type is seq. +
    +

    + Draws multiple lines, not necessarily connected. segments + is a sequence of the form {x1 y1 x2 y2}*, in which each + subsequence specifies the end points of a line segment. Line + segments are drawn in the order given by segments. + Unlike draw-lines + , no joining is performed at coincident end points. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_5_Client_Termination.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_5_Client_Termination.html @@ -0,0 +1,313 @@ + + + + + + 14.5 Client Termination + + + + + + + + + + Next Prev Up +
    +

    14.5 Client Termination +

    + +

    + The CLX functions affecting client termination are discussed in the + following paragraphs. +

    + When a display connection to an X server is closed, whether by an + explicit call to close-display or by some external condition, the server + automatically performs a sequence of operations to clean up server + state information associated with the closed connection. The effect of + these operations depends the close-down mode and the save-set + that the client has specified for the closed display connection. + The close-down mode of a display determines whether server resources + allocated by the connection are freed or not. The save-set identifies + windows that will remain after the connection is closed. +

    + The display save-set is used primarily by window managers that reparent + the top-level windows of other clients. For example, such a window + manager can automatically create a frame window that encloses a + top-level client window, along with a set of controls used for window + management. Ordinarily, termination of the window manager client would + then destroy all client windows! However, the window manager can + prevent this by adding to its save-set those windows created by other + clients that should be preserved. +

    + When a display connection closes, an X server performs the following + operations: +

      +
    1. + For each selection owned by a window created on the connection, the + selection owner is set to nil. +
    2. + An active or passive grab established for a window created on the + connection is released. +
    3. + If the connection has grabbed the server, the server is ungrabbed. +
    4. + Server resources and colormap cells allocated by the connection are + freed and destroyed, depending on the close-down mode, as follows: +
        +
      • + :retain-permanent -- All resources are marked permanent + , and no resources are destroyed. These resources can later + be destroyed by a call to kill-client + . +
      • + :retain-temporary -- All resources are marked temporary + , and no resources are destroyed. These resources can later + be destroyed by a call to kill-client + or + kill-temporary-clients. +
      • + :destroy -- All resources are destroyed. +
      +
    + +

    + When server resources allocated by a display connection are destroyed + -- whether by closing the connection with close-down mode :destroy + or by later calling kill-client + or + kill-temporary-clients -- then an X server performs the + following operations on each member of the save-set before actually + destroying resources. +

      +
    1. + If the save-set window is a descendant of a window created on the + connection, the save-set window is reparented. The new parent is the + closest ancestor such that the save-set window is no longer a + descendant of any window created on the connection. The position of + the reparented window with respect to its parent remains unchanged. +
    2. + If the save-set window is unmapped, then it is mapped. +
    + +

    + If the last connection open to an X server is closed with close-down + mode :destroy, the server resets its state to restore all + initial defaults. The server state after reset is the same as its + initial state when first started. When an X server resets, it performs + the following operations: +

      +
    • + All permanent and temporary server resources from previously-closed + connections are destroyed. +
    • + All but the predefined atoms are deleted. +
    • + All root window properties are deleted. +
    • + All device control attributes and mappings are restored to their + original default values. +
    • + The default background and cursor for all root windows are restored. +
    • + The default font path is restored. +
    • + The input focus is set to :pointer-root. +
    • + The access control list is reset. +
    + +

    + The following paragraphs describe the CLX functions used to: +

      +
    • + Add or remove a window from a display save-set. +
    • + Return or change the display close-down mode. +
    • + Force a connection to be closed or all its server resources to be + destroyed. +
    • + Force a connection to be closed and all temporary resources to be + destroyed. +
    + +
    +
    + + + +
    add-to-save-set + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Adds the specified window to the save-set of the + window display. The window must have been created by + some other display. Windows are removed automatically from the + save-set when they are destroyed. +

    +
    + +
    +
    + + + +
    close-down-mode + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Returns and (with setf) sets the close-down mode of the + client's resources at connection close. +

    +
    + mode +
    + One of :destroy, :retain-permanent, or + :retain-temporary. +
    +
    +
    + +
    +
    + + + +
    kill-client + display resource-id + + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + resource-id +
    + A valid card29 + resource ID. +
    +

    + Closes the display connection which created the given + resource-id. The resource-id must be valid, but need + not belong to the given display. +

    + If the closed connection was previously open, the connection is + closed according to its close-down mode. Otherwise, if the + connection had been previously terminated with close-down mode + :retain-permanent or :retain-temporary, then all + its retained server resources -- both permanent and temporary + -- are destroyed. +

    +
    + +
    +
    + + + +
    kill-temporary-clients + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Closes the display connection and destroys all retained + temporary server resources for this and all + previously-terminated connections. +

    + If the display connection was previously open, the + connection is closed according to its close-down mode. + Otherwise, if the display connection had been previously + terminated with close-down mode :retain-permanent or + :retain-temporary, then all its retained server resources + -- both permanent and temporary -- are destroyed. +

    +
    + +
    +
    + + + +
    remove-from-save-set + window + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    +

    + Removes the specified window from the save-set of the + window display. The window must have been created by + some other display. Windows are removed automatically from the + save-set when they are destroyed. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/2_3_Display_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/2_3_Display_Attributes.html @@ -0,0 +1,1053 @@ + + + + + + 2.3 Display Attributes + + + + + + + + + + Next Prev Up + +
    +

    2.3 Display Attributes +

    + +

    + The complete set of display attributes is discussed in the following + paragraphs. +

    +
    + + + +
    display-authorization-data + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the authorization data string for display that + was transmitted to the server by + open-display during connection setup. The data is + specific to the particular authorization protocol that was + used. The + display-authorization-name function returns the + protocol used. +

    +
    + authorization-data +
    + Type string. +
    +
    +
    + +
    +
    + + + +
    display-authorization-name + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the authorization protocol namestring for display + that was transmitted by + open-display to the server during connection setup. The + authorization-name indicates what authorization protocol + the client expects the server to use. Specification of valid + authorization mechanisms is not part of the X protocol. A + server that implements a different protocol than the client + expects, or a server that only implements the host-based + mechanism, can simply ignore this information. If both name and + data strings are empty, this is to be interpreted as "no + explicit authorization." +

    +
    + authorization-name +
    + Type string. +
    +
    +
    + +
    +
    + + + +
    display-bitmap-format + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + Returns the bitmap-format information for the specified + display. +
    +
    + bitmap-format +
    + Type + bitmap-format. +
    +
    +
    + +
    +
    + + + +
    display-byte-order + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + Returns the byte-order to be employed in communication + with the server for the given display. The possible values + are as follows: +
    +
    + :lsbfirst +
    + Values are transmitted least significant byte first. +
    + :msbfirst +
    + Values are transmitted most significant byte first. +
    + Except where explicitly noted in the protocol, all 16-bit and + 32-bit quantities sent by the client must be transmitted with + this byte-order, and all 16-bit and 32-bit quantities + returned by the server are transmitted with this byte-order + . +
    +
    + byte-order +
    + Either :lsbfirst or :msbfirst. +
    +
    +
    + +
    +
    + + + +
    display-display + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + Returns the display-number for the host associated with + display. +
    +
    + display-number +
    + Type integer. +
    +
    +
    + +
    +
    + + + +
    display-error-handler + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns and (with setf) sets the error-handler + function for the given display. CLX calls (one of) the + display error handler functions to handle server errors + returned to the connection. The default error handler, + default-error-handler, signals conditions as they occur. + See Section 16, Errors, for a list of the conditions that CLX + can signal. For more information about errors and error + handling, refer to the section entitled Common Lisp Condition + System in the Lisp Reference manual. +

    + If the value of error-handler is a sequence, it is + expected to contain a handler function for each specific error. + The error code is used as an index into the sequence to fetch + the appropriate handler function. If this element is a + function, it is called for all errors. Any results returned by + the handler are ignored since it is assumed the handler either + takes care of the error completely or else signals. The + arguments passed to the handler function are the display object, + a symbol naming the type of error, and a set of keyword-value + argument pairs that vary depending on the type of error. For + all core errors, the keyword-value argument pairs are: + + + + + +
    :current-sequence + card16 +
    :major + card8 +
    :minor + card16 +
    :sequence + card16 +
    + +

    + For colormap, + cursor, drawable, font, gcontext, + id-choice, pixmap + , and window + errors, the keyword-value pairs are the core error pairs + plus: + + +
    :resource-id + card32 +
    + +

    + For :atom errors, the keyword-value pairs are the core + error pairs plus: + + +
    :atom-id + card32 +
    + +

    + For :value errors, the keyword-value pairs are the core + error pairs plus: + + +
    :value + card32 +
    + +

    +
    + error-handler +
    + Type function or sequence. +
    +
    +
    + +
    +
    + + + +
    display-image-lsb-first-p + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Although the server is generally responsible for byte swapping + communication data to match the client, images + (pixmaps/bitmaps) are always transmitted and received in + formats (including byte order) specified by the server. Within + images for each scan-line unit in bitmaps or for each pixel + value in pixmaps, the leftmost bit in the image as displayed on + the screen is either the least or most significant bit in the + unit. For the given display, display-image-lsb-first-p returns non-nil if + the leftmost bit is the least significant bit; otherwise, it + returns nil. +

    +
    + image-lsb-first-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    display-keycode-range + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns min-keycode and max-keycode as multiple + values. See the + display-max-keycode and + display-min-keycode functions for additional + information. +

    +
    + min-keycode, max-keycode +
    + Type card8. +
    +
    +
    + +
    +
    + + + +
    display-max-keycode + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the maximum keycode value for the specified display + . This value is never greater than 255. Not all keycodes in + the allowed range are required to have corresponding keys. +

    +
    + max-keycode +
    + Type card8. +
    +
    +
    + +
    +
    + + + +
    display-max-request-length + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the maximum length of a request, in four-byte units, + that is accepted by the specified display. Requests + larger than this generate a length error, and the server will + read and simply discard the entire request. This length is + always at least 4096 (that is, requests of length up to and + including 16384 bytes are accepted by all servers). +

    +
    + max-request-length +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    display-min-keycode + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the minimum keycode value for the specified display + . This value is never less than eight. Not all keycodes in + the allowed range are required to have corresponding keys. +

    +
    + min-keycode +
    + Type card8. +
    +
    +
    + +
    +
    + + + +
    display-motion-buffer-size + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the approximate size of the motion buffer for the + specified display. The server can retain the recent + history of pointer motion at a finer granularity than is + reported by + :motion-notify events. Such history is available + through the + motion-events function. +

    +
    + motion-buffer-size +
    + Type card32. +
    +
    +
    + +
    +
    + + + +
    display-p + display + Function +
    + + +
          + +

    + Returns non-nil if display is a display object; + otherwise, returns nil. +

    +
    + display-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    display-pixmap-formats + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the list of + pixmap-format values for the given display. + This list contains one entry for each depth value. The entry + describes the format used to represent images of that depth. An + entry for a depth is included if any screen supports that + depth, and all screens supporting that depth must support + (only) the format for that depth. +

    +
    + pixmap-formats +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    display-plist + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns and (with setf) sets the property list for the + specified display. This function provides a hook where + extensions can add data. +

    +
    + plist +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    display-protocol-major-version + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the major version number of the X protocol associated + with the specified display. In general, the major + version would increment for incompatible changes. The returned + protocol version number indicates the protocol the server + actually supports. This might not equal the version supported + by the client. The server can (but need not) refuse connections + from clients that offer a different version than the server + supports. A server can (but need not) support more than one + version simultaneously. +

    +
    + protocol-major-version +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    display-protocol-minor-version + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the minor protocol revision number associated with the + specified display. In general, the minor version would + increment for small upward compatible changes in the X protocol. +

    +
    + protocol-minor-version +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    display-protocol-version + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns protocol-major-version and + protocol-minor-version as multiple values. See the display-protocol-major-version and display-protocol-minor-version functions for + additional information. +

    +
    + protocol-major-version, protocol-minor-version +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    display-resource-id-base + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the resource-id-base value that was returned + from the server during connection setup for the specified + display. This is used in combination with the + resource-id-mask to construct valid IDs for this connection. +

    +
    + resource-id-base +
    + Type resource-id + . +
    +
    +
    + +
    +
    + + + +
    display-resource-id-mask + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the resource-id-mask that was returned from the + server during connection setup for the specified display + . The resource-id-mask contains a single contiguous set + of bits (at least 18) which the client uses to allocate + resource IDs for types + window, pixmap + , cursor + , font, gcontext, and colormap by + choosing a value with (only) some subset of these bits set, and + oring it with the resource-id-base. Only values + constructed in this way can be used to name newly created + server resources over this connection. Server resource IDs + never have the top three bits set. The client is not restricted + to linear or contiguous allocation of server resource IDs. Once + an ID has been freed, it can be reused, but this should not be + necessary. +

    + An ID must be unique with respect to the IDs of all other + server resources, not just other server resources of the same + type. However, note that the value spaces of server resource + identifiers, atoms, visualids, and keysyms are distinguished by + context, and as such are not required to be disjoint (for + example, a given numeric value might be both a valid window ID, + a valid atom, and a valid keysym.) +

    +
    + resource-id-mask +
    + Type resource-id + . +
    +
    +
    + +
    +
    + + + +
    display-roots + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns a list of all the + screen structures available for the given display + . +

    +
    + roots +
    + A list of screens. +
    +
    +
    + +
    +
    + + + +
    display-vendor + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns vendor-name and release-number as + multiple values. See the + display-vendor-name and display-release-number + functions for additional information. +

    +
    + vendor-name, release-number +
    + Type card32. +
    +
    +
    + +
    +
    + + + +
    display-vendor-name + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns a string that provides some vendor identification of + the X server implementation associated with the specified + display. +

    +
    + vendor-name +
    + Type string. +
    +
    +
    + +
    +
    + + + +
    display-version-number + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the X protocol version number for this implementation + of CLX. +

    +
    + version-number +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    display-xid + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Returns the function that is used to allocate server resource + IDs for this display. +

    +
    + resource-allocator +
    + Type function. +
    +
    +
    + +
    +
    + + + +
    with-display + display &body + body + Macro +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + This macro is for use in a multi-process environment. with-display + provides exclusive access to the local display object + for multiple request generation. It need not provide immediate + exclusive access for replies. That is, if another process is + waiting for a reply (while not in a with-display + ), then synchronization need not (but can) occur + immediately. Except where noted, all routines effectively + contain an implicit with-display + where needed, so that correct synchronization is + always provided at the interface level on a per-call basis. + Nested uses of this macro work correctly. This macro does not + prevent concurrent event processing (see + with-event-queue). +

    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_4_Accessing_Resource_Values.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_4_Accessing_Resource_Values.html @@ -0,0 +1,61 @@ + + + + + + 13.4 Accessing Resource Values + + + + + + + + + + Next Prev Up +
    +

    13.4 Accessing Resource Values +

    + +

    + The power and flexibility of resource management is the result of the + way resource values in a resource database are accessed. A resource + binding binding stored in the database generally contains only a + partial resource name consisting of a mixture of name and class + identifiers and wildcard elements (that is, *). To look up a resource + value, an application program starts with two resource name lists of + the same length containing no wildcard elements -- a complete + resource name and a complete resource class. The + lookup algorithm returns the value for the resource binding whose + resource name is the closest match to the complete name and class + given. The definition of closest match takes into account the + top-down, parent-child hierarchy of resource names and also the + distinction between individual names and class names. +


    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_1_Introduction.html @@ -0,0 +1,48 @@ + + + + + + 1.1 Introduction + + + + + + + + + + Next Prev Up +
    +

    1.1 Introduction

    + +

    + This manual assumes a basic understanding of window systems and the + Common Lisp programming language. To provide an introduction to the + Common Lisp X Interface (CLX) programming, this section discusses the + following: +

      +
    • + Overview of the X Window System +
    • + Naming and argument conventions +
    • + Programming considerations +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/3_2_Screen_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/3_2_Screen_Attributes.html @@ -0,0 +1,620 @@ + + + + + + 3.2 Screen Attributes + + + + + + + + + + Next Prev Up + +
    +

    3.2 Screen Attributes +

    + +

    + In CLX, each display screen is represented by a screen structure. The display-roots + function returns the list of + screen structures for the display. The following paragraphs + discuss the attributes of CLX + screen structures. +

    +
    + + + +
    screen-backing-stores + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns a value indicating when the screen supports + backing stores, although it may be storage limited in the + number of windows it can support at once. The value returned + can be one of :always, :never, or :when-mapped + . +

    +
    + backing-stores-type +
    + One of :always, :never, or :when-mapped. +
    +
    +
    + +
    +
    + + + +
    screen-black-pixel + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    + Returns the black pixel value for the specified screen. +
    +
    + black-pixel +
    + Type pixel. +
    +
    +
    + +
    +
    + + + +
    screen-default-colormap + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    + Returns the default-colormap for the specified screen + . The default-colormap is initially associated with + the root window. Clients with minimal color requirements creating + windows of the same depth as the root may want to allocate from + this map by default. Most routine allocations of color should be + made out of this colormap. +
    +
    + default-colormap +
    + Type colormap + . +
    +
    +
    + +
    +
    + + + +
    screen-depths + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns an association list that specifies what drawable depths + are supported on the specified screen. Elements of the + returned association list have the form (depth visual*), + where each visual is a visual-info + structure. Pixmaps are supported for each depth listed, and + windows of that depth are supported if at least one visual type + is listed for the depth. A pixmap depth of one is always + supported and listed, but windows of depth one might not be + supported. A depth of zero is never listed, but zero-depth + :input-only windows are always supported. +

    +
    + depths +
    + Type alist. +
    +
    +
    + +
    +
    + + + +
    screen-event-mask-at-open + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the initial root event mask for the specified screen + . +

    +
    + event-mask-at-open +
    + Type mask32. +
    +
    +
    + +
    +
    + + + +
    screen-height + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the height of the specified screen in + pixel units. +

    +
    + height +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    screen-height-in-millimeters + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the height of the specified screen in + millimeters. The returned height can be used with the width in + millimeters to determine the physical size and the aspect ratio + of the screen. +

    +
    + height-in-millimeters +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    screen-max-installed-maps + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the maximum number of colormaps that can be installed + simultaneously with + install-colormap. +

    +
    + max-installed-colormaps +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    screen-min-installed-maps + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the minimum number of colormaps that can be guaranteed + to be installed simultaneously. +

    +
    + min-installed-colormaps +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    screen-p + screen + Function +
    + + +
          + +

    + Returns non-nil if the screen argument is a screen structure; + otherwise, returns nil. +

    +
    + screen-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    screen-plist + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns and (with setf) sets the property list for the + specified screen. This function provides a hook where + extensions can add data. +

    +
    + plist +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    screen-root + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the root-window for the specified screen. + This function is useful with functions that take a parent + window as an argument. The class of the root window is always :input-output. +

    +
    + root-window +
    + Type window + or null. +
    +
    +
    + +
    +
    + + + +
    screen-root-depth + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the depth of the root window for the specified screen + . Other depths can also be supported on this screen. +

    +
    + root-window-depth +
    + Type + image-depth. +
    +
    +
    + +
    +
    + + + +
    screen-root-visual + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the default visual type for the root window for the + specified screen. +

    +
    + root-window-visual +
    + Type card29. +
    +
    +
    + +
    +
    + + + +
    screen-save-unders-p + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + If true, the server can support the save-under mode in create-window + and in changing window attributes. +

    +
    + save-unders-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    screen-white-pixel + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the white pixel value for the specified screen. +

    +
    + white-pixel +
    + Type pixel. +
    +
    +
    + +
    +
    + + + +
    screen-width + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the width of the specified screen in pixel units. +

    +
    + width +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    screen-width-in-millimeters + screen + Function +
    + + +
          + +
    +
    + screen +
    + A screen. +
    +

    + Returns the width of the specified screen in + millimeters. The returned width can be used with the height in + millimeters to determine the physical size and the aspect ratio + of the screen. +

    +
    + width-in-millimeters +
    + Type card16. +
    +
    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/d.html +++ cmucl-20a-20090928/own-work/clx/clxman/d.html @@ -0,0 +1,75 @@ + + + + + + d + + + + + + + + + + Next Prev Up +
    +

    d

    + +
    +
    + depth +
    + The depth of a window or pixmap is number of bits per pixel it has. + The depth of a graphics context is the depth of the drawables it can + be used in conjunction with for graphics output. +
    + descendant +
    + If W is an inferior of A, then W is a descendant of A. +
    + device +
    + Keyboards, mice, tablets, track-balls, button boxes, and so forth, + are all collectively known as input devices. The core protocol + only deals with two devices: the keyboard and the pointer. +
    + direct color +
    + A class of colormap in which a pixel value is decomposed into three + separate subfields for indexing. One subfield indexes an array to + produce red intensity values, the second subfield indexes a second + array to produce blue intensity values, and the third subfield + indexes a third array to produce green intensity values. The RGB + values can be changed dynamically. +
    + dispatching an event +
    + The process of finding the appropriate contact and its actions. +
    + double-click +
    + A sequence of two clicks of the same button in rapid succession. +
    + drawable +
    + Both windows and pixmaps can be used as sources and destinations in + graphics operations. These are collectively known as drawables + . However, an :input-only window cannot be used as a source or + destination in a graphics operation. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_8_Declaring_Event_Types.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_8_Declaring_Event_Types.html @@ -0,0 +1,93 @@ + + + + + + 12.12.8 Declaring Event Types + + + + + + + + + + Next Prev Up +
    +

    12.12.8 Declaring Event Types +

    + +

    + CLX uses the + declare-event macro to define the event slot symbols that + access the contents of X events. Most client applications do not need + to use + declare-event because the declarations for all core X events + are already defined by CLX. Programmers using extensions to the X + protocol can use + declare-event to allow CLX to handle new event types returned + by an extended X server. +

    +
    + + + +
    declare-event + event-codes & + rest slot-declarations + Macro +
    + + +
          + +
    +
    + event-codes +
    + An event type keyword or a list of event type keywords. +
    + slot-declarations +
    + A list of clauses defining event slot symbols. +
    +

    + Defines a mapping between event slot symbols and the data items + in event messages received from an X server. +

    + The event-codes argument gives the event type keyword + for the event described. If several event types share the same + slots, then event-codes can be a list of event type + keywords. slot-declarations is a list containing an + element for each event data item. The order of + slot-declarations corresponds to the order of event data + items defined by the X protocol. +

    + Each element of slot-declarations is a list of the form ( + type slot-name*), where type is a Common Lisp + type specifier and slot-name is a slot name symbol. The + effect of such a list is to declare that the next data items in + the event have the given data type and are associated + with the given slot-name symbols. slot-name can + also be a list of slot name symbols; in this case, each symbol + in the list is an alias that refers to the same event data item. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_t.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_t.html @@ -0,0 +1,49 @@ + + + + + + T... + + + + + + + + + + Next Prev Up +
    +

    T...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/e.html +++ cmucl-20a-20090928/own-work/clx/clxman/e.html @@ -0,0 +1,111 @@ + + + + + + e + + + + + + + + + + Next Prev Up +
    +

    e

    + +
    +
    + event +
    + Clients receive information asynchronously via events. These + events can be either asynchronously generated from devices, or + generated as side effects of client requests. Events are grouped into + types; events are never sent to a client by the server unless the + client has specifically asked to be informed of that type of event, + but clients can force events to be sent to other clients. Events are + typically reported relative to a window. +
    + event compression +
    + Ignoring (or compressing) certain redundant input events. Compression + of redundant events is controlled by the class slots + compress-exposures and compress-motion, which are shared + by all instances of a contact class. +
    + event loop +
    + The fundamental application control structure: wait for an event, + figure out how to handle it, process the event, then go back and wait + for the next one. In CLUE, the event loop is implemented using the + process-next-event function. +
    + event mask +
    + Events are requested relative to a window. The set of event types a + client requests relative to a window are described using an event + mask. +
    + event propagation +
    + Device-related events propagate from the source window to + ancestor windows until some client has expressed interest in handling + that type of event, or until the event is discarded explicitly. +
    + event specification +
    + A notation for describing a certain sort of event. CLUE input + processing consists of matching an event with an event specification + found in a contact's event-translations slot and then + calling actions associated with the matching event specification. +
    + event synchronization +
    + Certain race conditions are possible when demultiplexing device + events to clients (in particular deciding where pointer and keyboard + events should be sent when in the middle of window management + operations). The event synchronization mechanism allows synchronous + processing of device events. +
    + event source +
    + The smallest window containing the pointer is the source of a + device related event. +
    + event translation +
    + The process of determining which contact action functions will be + executed. An event translation is a list found in a contact's + event-translations slot associating an event specification with + one or more action names. Also see class event translations. +
    + exposure event +
    + Servers do not guarantee to preserve the contents of windows when + windows are obscured or reconfigured. Exposure events are sent + to clients to inform them when contents of regions of windows have + been lost. +
    + extension +
    + Named extensions to the core protocol can be defined to extend + the system. Extension to output requests, resources, and event types + are all possible, and expected. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/2_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/2_1_Introduction.html @@ -0,0 +1,55 @@ + + + + + + 2.1 Introduction + + + + + + + + + + Next + Prev Up +
    +

    2.1 Introduction

    + +

    + A particular X server, together with its screens and input devices, is + called a display. The CLX + display object contains all the information about the + particular display and its screens, as well as the state that is needed + to communicate with the display over a particular connection. +

    + Before your program can use a display, you must establish a connection + to the X server driving your display. Once you have established a + connection, you then can use the CLX macros and functions discussed in + this section to return information about the display. This section + discusses how to: +

      +
    • + Open (connect) a display +
    • + Obtain information about a display +
    • + Access and change display attributes +
    • + Close (disconnect) a display +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_4_Naming_and_Argument_Conventions.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_4_Naming_and_Argument_Conventions.html @@ -0,0 +1,75 @@ + + + + + + 1.4 Naming and Argument Conventions + + + + + + + + + + Next Prev Up +
    +

    1.4 Naming and Argument + Conventions

    + +

    + Throughout CLX, a number of conventions for naming and syntax of the + CLX functions have been followed. These conventions are intended to + make the syntax of the functions more predictable. +

    + The major naming conventions are as follows: +

      +
    • + To better differentiate the CLX symbols from other symbols, they have + all been placed in the package XLIB. External symbols have been + explicitly exported. +
    • + The display argument, where used, is always first in the + argument list. +
    • + All server resource objects, where used, occur at the beginning of + the argument list, immediately after the display variable. +
    • + When a graphics context (gcontext) is present together with + another type of server resource (most commonly, a drawable), + the graphics context occurs in the argument list after the other + server resource. Drawables out rank all other server resources. +
    • + Source arguments always precede the destination arguments in the + argument list. +
    • + The x argument always precedes the y argument in the + argument list. +
    • + The width argument always precedes the height argument + in the argument list. +
    • + Where the x, y, width and height + arguments are used together, the x and y arguments + always precede the width and height arguments. +
    • + Where a mask is accompanied with a structure, the mask + always precedes the structure in the argument list. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_Colors.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_Colors.html @@ -0,0 +1,43 @@ + + + + + + 9 Colors + + + + + + + + + + Next Prev Up + +
    +

    9 Colors

    + +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/Glossary.html +++ cmucl-20a-20090928/own-work/clx/clxman/Glossary.html @@ -0,0 +1,77 @@ + + + + + + Glossary + + + + + + + + + + Next Prev Up +
    +

    Glossary

    + +
    +
      +
    • + a +
    • + b +
    • + c +
    • + d +
    • + e +
    • + f +
    • + g +
    • + h +
    • + i +
    • + k +
    • + m +
    • + o +
    • + p +
    • + r +
    • + s +
    • + t +
    • + u +
    • + v +
    • + w +
    • + x +
    • + z +
    +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_4_Finding_Colors.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_4_Finding_Colors.html @@ -0,0 +1,128 @@ + + + + + + 9.3.4 Finding Colors + + + + + + + + + + Next Prev Up +
    +

    9.3.4 Finding Colors +

    + +

    + A CLX program can ask the X server to return the colors stored in + allocated color cells. The server also maintains a dictionary of color + names and their associated color values. CLX provides a function to + look up the values for common colors by names such as "red", + "purple", and so forth. The following paragraphs describe the + CLX functions for returning the color values associated with color + cells or with color names. +

    +
    + + + +
    lookup-color + colormap name + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + name +
    + A stringable + color name. +
    +

    + Returns the color associated by the X server with the given + color name. The name must contain only ISO + Latin-1 characters; case is not significant. The first value + returned is the closest approximation to the requested color + possible on the screen hardware. The second value returned is + the true color value for the requested color. +

    +
    + screen-color, exact-color +
    + Type color. +
    +
    +
    + +
    +
    + + + +
    query-colors + colormap pixels + &key (:result-type 'list) + Function +
    + + +
          + +
    +
    + colormap +
    + A colormap. +
    + pixels +
    + A sequence of + pixel values. +
    + :result-type +
    + A subtype of sequence that indicates the type of + sequences returned. +
    +

    + Returns a sequence of the colors contained in the + allocated cells of the colormap specified by the given pixels. The values returned for unallocated cells are + undefined. +

    +
    + colors +
    + Type sequence of color. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_7_Managing_Input_Focus.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_7_Managing_Input_Focus.html @@ -0,0 +1,155 @@ + + + + + + 12.7 Managing Input Focus + + + + + + + + + + Next Prev Up +
    +

    12.7 Managing Input Focus +

    + +

    + CLX provides the set-focus-input and focus-input + functions to set and get the keyboard input focus window. +

    +
    + + + +
    set-input-focus + display focus + revert-to &optional time + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + focus +
    + The new input focus + window. +
    + revert-to +
    + The focus window + when focus is no longer viewable. +
    + time +
    + A timestamp + . +
    +

    + Changes the keyboard input focus and the last-focus-change + time. The function has no effect if the specified time + is earlier than the current last-focus-change time or is later + than the current server time; otherwise, the last-focus-change + time is set to the specified time. The + set-input-focus function causes the X server to + generate + :focus-in and :focus-out + events. +

    + If :none is specified as the focus, all keyboard + events are discarded until a new focus window is set. In this + case, the revert-to argument is ignored. +

    + If a window is specified as the focus argument, it + becomes the keyboard's focus window. If a generated + keyboard event would normally be reported to this window or one + of its inferiors, the event is reported normally; otherwise, + the event is reported with respect to the focus window. +

    + If :pointer-root is specified as the focus + argument, the input focus window is set to the root window of + the screen containing the pointer when each keyboard event + occurs. In this case, the revert-to argument is ignored. +

    + The specified focus window must be viewable at the time + of the request. If the focus window later becomes not + viewable, the new focus window depends on the revert-to + argument. If revert-to is specified as :parent, + the focus reverts to the parent (or the closest viewable + ancestor) and the new revert-to value is take to be + :none. If revert-to is :pointer-root or + :none, the focus reverts to that value. When the + focus reverts, :focus-in + and :focus-out + events are generated, but the last-focus-change time + is not affected. +

    +
    + +
    +
    + + + +
    input-focus + display + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    +

    + Returns the focus window, :pointer-root, or + :none, depending on the current state of the focus window. + revert-to returns the current focus revert-to state. +

    +
    + focus +
    + Type (or window (member :none :pointer-root)). +
    + revert-to +
    + Type (or window (member :none :pointer-root :parent + )). +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/k.html +++ cmucl-20a-20090928/own-work/clx/clxman/k.html @@ -0,0 +1,51 @@ + + + + + + k + + + + + + + + + + Next Prev Up +
    +

    k

    + +
    +
    + key grabbing +
    + Keys on the keyboard can be passively grabbed by a client. + When the key is pressed, the keyboard is then actively grabbed by the + client. +
    + keyboard grabbing +
    + A client can actively grab control of the keyboard, and key + events will be sent to that client rather than the client to which + the events would normally have been sent. +
    + keysym +
    + An encoding of a symbol on a keycap on a keyboard. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_b.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_b.html @@ -0,0 +1,55 @@ + + + + + + B... + + + + + + + + + + Next Prev Up +
    +

    B...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/x.html +++ cmucl-20a-20090928/own-work/clx/clxman/x.html @@ -0,0 +1,41 @@ + + + + + + x + + + + + + + + + + Next Prev Up +
    +

    x

    + +
    +
    + XY Format +
    + The data for a pixmap is said to be in XY Format if it is + organized as a set of bitmaps representing individual bit planes, + with the planes appearing from most to least significant in bit order. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/10_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/10_1_Introduction.html @@ -0,0 +1,63 @@ + + + + + + 10.1 Introduction + + + + + + + + + + Next + Prev Up +
    +

    10.1 Introduction

    + +

    + A cursor is a visible shape that appears at the current position + of the pointer device. The cursor shape moves with the pointer to + provide continuous feedback to the user about the current location of + the pointer. Each window can have a cursor attribute that defines the + appearance of the pointer cursor when the pointer position lies within + the window. See window-cursor. +

    + A cursor image is composed of a source bitmap, a mask bitmap, a hot + spot, a foreground color, and a background color. Either 1-bit + pixmaps or font glyphs can be used to specify source and mask bitmaps. + The source bitmap identifies the foreground and background pixels of + the cursor image; the mask bitmap identifies which source pixels are + actually drawn. The mask bitmap thus allows a cursor to assume any + shape. The hot spot defines the position within the cursor image that + is displayed at the pointer position. +

    + In CLX, a cursor is represented by a cursor object. This + section describes the CLX functions to: +

      +
    • + Create and free cursor objects +
    • + Change cursor colors +
    • + Inquire the best cursor size +
    • + Access cursor attributes +
    + +
    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_Resources.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_Resources.html @@ -0,0 +1,50 @@ + + + + + + 13 Resources + + + + + + + + + + Next Prev Up +
    +

    13 Resources

    + +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_11_Grabbing_a_Key.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_11_Grabbing_a_Key.html @@ -0,0 +1,180 @@ + + + + + + 12.11 Grabbing a Key + + + + + + + + + + Next Prev Up +
    +

    12.11 Grabbing a Key +

    + +

    + The following paragraphs describe the functions used for passively + grabbing and releasing the keyboard. +

    +
    + + + +
    grab-key + window key & + key (:modifiers 0) :owner-p :sync-pointer-p + :sync-keyboard-p :time + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + key +
    + The key (type card8 + ) to be grabbed or :any. +
    + :modifiers +
    + A modifier-mask + . +
    + :owner-p +
    + If true, all client windows receive keyboard input normally. +
    + :sync-pointer-p +
    + Indicates whether the pointer is in synchronous or + asynchronous mode. +
    + :sync-keyboard-p +
    + Indicates whether the keyboard is in synchronous or + asynchronous mode. +
    + :time +
    + A timestamp + . +
    +

    + This request establishes a passive grab on the keyboard. If the + specified key (which can also be a modifier key) is + pressed (whether or not any specified modifier keys are down), + and either of the following is true: +

      +
    • + window is an ancestor of (or is) the focus window +
    • + window is a descendant of the focus window and + contains the pointer +
    • + These constraints are not satisfied for any ancestor of + window, then the following occurs: +
        +
      • + The keyboard is actively grabbed as described in + grab-keyboard +
      • + The last-keyboard-grab time is set to the time that the key was pressed (as transmitted in the :key-press event) +
      • + The :key-press event is reported +
      +
    + The interpretation of the remaining arguments is as for + grab-keyboard. The active grab is terminated + automatically when the specified key has been released, + independent of the state of the modifier keys. +

    + A zero modifier mask is equivalent to issuing the request for + all possible modifier combinations (including the combination + of no modifiers). It is not required that all specified + modifiers have currently assigned keycodes. A key of + :any is equivalent to issuing the request for all possible + keycodes. Otherwise, the key must be in the range + specified by + display-min-keycode and + display-max-keycode in the connection setup. +

    +
    + +
    +
    + + + +
    ungrab-key + window key & + key (:modifiers 0) + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + key +
    + The key (type card8 + ) to be released or :any. +
    + :modifiers +
    + A modifier-mask + . +
    +

    + Releases the key combination on the specified window + if it was grabbed by this client. A zero modifier mask of + :any is equivalent to issuing the request for all + possible modifier combinations (including the combination of no + modifiers). A key of :any is equivalent to + issuing the request for all possible keycodes. ungrab-key + has no effect on an active grab. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_3_3_Menu_Input.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_3_3_Menu_Input.html @@ -0,0 +1,123 @@ + + + + + + 1.3.3 Menu Input + + + + + + + + + + Next Prev Up +
    +

    1.3.3 Menu Input

    + +

    + Now that a menu can be displayed, the sample client program must define + how the menu will process user input. The menu-choose + function (shown in the following example) has the classic structure of + an X client program. First, do some initialization (for example, + present the menu at a given location). Then, enter an input event loop. + Read an input event, process it, and repeat the loop until a + termination event is received. The event-case + macro continues reading an event from the menu window's display + object until one of its clauses returns non-nil. These clauses + specify the action to be taken for each event type and also bind values + from the event report to local variables, such as the event-window + receiving the event. Notice that the :force-output-p option + is enabled, causing + event-case to begin by sending any client requests which CLX + has not yet output to the server. To improve performance, CLX quietly + queues up requests and periodically sends them off in a batch. However, + in an interactive feedback loop such as this, it is important to keep + the display crisply up-to-date. +

    +(defun menu-choose (menu x y)
    +  ;; Display the menu so that first item is at x,y.
    +  (menu-present menu x y)
    +
    +  (let ((items (menu-item-alist menu))
    +        (mw    (menu-window menu))
    +        selected-item)
    +
    +    ;; Event processing loop
    +    (do () (selected-item)
    +      (EVENT-CASE ((DRAWABLE-DISPLAY mw) :force-output-p t)
    +                  (:exposure
    +                   (count)
    +                   ;; Discard all but final :exposure then display the menu
    +                   (when (zerop count) (menu-refresh menu))
    +                   t)
    +
    +                  (:button-release
    +                   (event-window)
    +                   ;;Select an item
    +                   (setf selected-item (second (assoc event-window items)))
    +                   t)
    +
    +                  (:enter-notify
    +                   (window)
    +                   ;;Highlight an item
    +                   (menu-highlight-item menu (find window items :key #'first))
    +                   t)
    +
    +                  (:leave-notify
    +                   (window kind)
    +                   (if (eql mw window)
    +                       ;; Quit if pointer moved out of main menu window
    +                       (setf selected-item (when (eq kind :ancestor) :none))
    +                     ;; Otherwise, unhighlight the item window left
    +                     (menu-unhighlight-item menu (find window items :key #'first)))
    +                   t)
    +
    +                  (otherwise
    +                   ()
    +                   ;;Ignore and discard any other event
    +                   t)))
    +
    +    ;; Erase the menu
    +    (UNMAP-WINDOW mw)
    +
    +    ;; Return selected item string, if any
    +    (unless (eq selected-item :none) selected-item)))
    +        
    + +

    + The event loop in menu-choose demonstrates an idiom used + in all X programs: the contents of a window are displayed (in this + case, by calling menu-refresh) only when an :exposure + event is received, signaling that the server has actually made the + window viewable. The handling of :exposure in + menu-choose also implements a little trick for improving + efficiency. In general, when a window is exposed after being previously + obscured (perhaps only partially), the server is free to send several :exposure + events, one for each rectangular tile of the exposed region. For small + windows like this menu, it is not worth the trouble to redraw the image + one tile at a time. So the code above just ignores all but the last + tile exposure and redraws everything in one call to menu-refresh + . + +


    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/9_3_Colormap_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/9_3_Colormap_Functions.html @@ -0,0 +1,113 @@ + + + + + + 9.3 Colormap Functions + + + + + + + + + + Next Prev Up +
    +

    9.3 Colormap Functions +

    + +

    + A colormap is represented in CLX by a colormap object. A CLX + program can create and manipulate several colormap objects. + However, the colors contained in a colormap are made + visible only when the colormap + is installed. Each window is associated with a colormap that is used + to translate window pixels into colors (see window-colormap + ). However, a window will appear in its true colors only if its + associated colormap + is installed. +

    + The total number of colormaps that can be installed depends on the + screen hardware. Most hardware devices allow exactly one colormap to be + installed at any time. That is, + screen-min-installed-maps and + screen-max-installed-maps are both equal to 1. Installing a new + colormap can cause a + previously installed colormap + to be uninstalled. It is important to remember that the set of + installed colormaps is a hardware resource shared cooperatively + among all client programs connected to an X server. +

    + A CLX program can control the contents of colormaps by + allocating color cells in one of two ways: read-only or read-write. + Allocating a read-only color cell establishes a color value for a + specified pixel value that cannot be changed. However, read-only color + cells can be shared among all client programs. Read-only allocation is + the best strategy for making use of limited colormap hardware in a + multi-client environment. +

    + Alternatively, allocating a read-write color cell allows a client the + exclusive right to set the color value stored in the cell. A cell + allocated read-write by one client cannot be allocated by another + client, not even as a read-only cell. Note that read-write allocation + is not allowed for screens whose visual type belongs to one of the + :static-gray, :static-color, or :true-color classes. + For screens of these classes, + colormap cells cannot be modified. +

    + Two entries of the default colormap, typically containing the colors + black and white, are automatically allocated read-only. The pixel + values for these entries can be returned by the functions + screen-black-pixel and + screen-white-pixel. Applications that need only two colors and + also need to operate on both monochrome and color screens should always + use these pixel values. The names black and white are + intended to reflect relative intensity levels and need not reflect the + actual colors displayed for these pixel values. +

    + Each screen has a default + colormap, which is initially installed. By conventions, clients + should allocate only read-only cells from the default colormap. +


    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_3_Copying_Graphics_Contexts.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_3_Copying_Graphics_Contexts.html @@ -0,0 +1,114 @@ + + + + + + 5.3 Copying Graphics Contexts + + + + + + + + + + Next Prev Up +
    +

    5.3 Copying Graphics Contexts +

    + +

    + CLX provides functions to copy some or all attribute values from one + graphics context to another. These functions are generally more + efficient than using setf to copy gcontext attributes + individually. +

    +
    + + + +
    copy-gcontext + source destination + Function +
    + + +
          + +
    +
    + source +
    + The source gcontext + . +
    + destination +
    + The destination + gcontext. +
    +

    + Copies all the values of the attributes of the source graphics + context into the destination graphics context. The source and + destination graphics contexts must have the same root and depth. +

    +
    + +
    +
    + + + +
    copy-gcontext-components + source destination + &rest keys + Function +
    + + +
          + +
    +
    + source +
    + The source gcontext + . +
    + destination +
    + The destination + gcontext. +
    + keys +
    + The remaining arguments are keywords, of type gcontext-key + , which specify which attributes of the graphics context + are to be copied. +
    +

    + Copies the values of the specified attributes of the source + graphics context to the destination graphics context. The + source and destination graphics contexts must have the same + root and depth. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/2_5_Closing_the_Display.html +++ cmucl-20a-20090928/own-work/clx/clxman/2_5_Closing_the_Display.html @@ -0,0 +1,77 @@ + + + + + + 2.5 Closing the Display + + + + + + + + + + Next Prev Up +
    +

    2.5 Closing the Display +

    + +

    + To close or disconnect a display from the X server, use close-display + . +

    +
    + + + +
    close-display + display + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    +

    + Closes the connection to the X server for the specified + display. It destroys all server resources (window, font, pixmap, colormap, cursor, and gcontext), that + the client application has created on this display, unless the + close down mode of the server resource has been changed (see + set-close-down-mode). Therefore, these server resources + should never be referenced again. In addition, this function + discards any output requests that have been buffered but have + not yet been sent. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/contents.html +++ cmucl-20a-20090928/own-work/clx/clxman/contents.html @@ -0,0 +1,70 @@ + + + + + + CLX Manual + + + + + + + + + Next +
    +

    CLX Manual

    +
    + +
    + Next +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/m.html +++ cmucl-20a-20090928/own-work/clx/clxman/m.html @@ -0,0 +1,55 @@ + + + + + + m + + + + + + + + + + Next Prev Up +
    +

    m

    + +
    +
    + managed +
    + A contact under geometry management control. +
    + mapped +
    + A window is said to be mapped if a map call has been performed + on it. Unmapped windows and their inferiors are never viewable or + visible. +
    + modifier keys +
    + SHIFT, CONTROL, META, SUPER, HYPER, ALT, Compose, Apple, CAPS LOCK, + Shift Lock, and similar keys are called modifier keys. +
    + monochrome +
    + A special case of static gray, in which there are only two colormap + entries. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_k.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_k.html @@ -0,0 +1,65 @@ + + + + + + K... + + + + + + + + + + Next Prev Up +
    +

    K...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_d.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_d.html @@ -0,0 +1,239 @@ + + + + + + D... + + + + + + + + + + Next Prev Up +
    +

    D...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_4_1_Keycodes_and_Keysyms.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_4_1_Keycodes_and_Keysyms.html @@ -0,0 +1,82 @@ + + + + + + 14.4.1 Keycodes and Keysyms + + + + + + + + + + Next Prev Up +
    +

    14.4.1 Keycodes and Keysyms +

    + +

    + A keycode represents a physical (or logical) key. In CLX, + keycodes are values of type (integer 8 255). A keycode value + carries no intrinsic information, although server implementors may + attempt to encode geometry (for example, matrix) information in some + fashion so it can be interpreted in a server- dependent fashion. The + mapping between keys and keycodes cannot be changed. +

    + A keysym is an encoding of a symbol on the cap of a key. In CLX, + keysyms are values of type + card32. The set of defined keysyms include the ISO Latin + character sets (1-4), Katakana, Arabic, Cyrillic, Greek, Technical, + Special, Publishing, APL, Hebrew, and miscellaneous keys found on + keyboards (RETURN, HELP, TAB, and so on). The encoding of keysyms is + defined by the X Protocol. +

    + A list of keysyms is associated with each keycode. The length of the + list can vary with each keycode. The list is intended to convey the set + of symbols on the corresponding key. By convention, if the list + contains a single keysym and if that keysym is alphabetic and case + distinction is relevant, then it should be treated as equivalent to a + two-element list of the lowercase and uppercase keysyms. For example, + if the list contains the single keysym for uppercase A, the client + should treat it as if it were a pair with lowercase as the first keysym + and uppercase A as the second keysym. +

    + For any keycode, the first keysym in the list should be chosen as the + interpretation of a key press when no modifier keys are down. The + second keysym in the list normally should be chosen when the :shift + modifier is on, or when the :lock modifier is on and + :lock is interpreted as :shift-lock. When the :lock + modifier is on and is interpreted as :caps-lock, it is suggested + that the :shift modifier first be applied to choose a keysym, + but if that keysym is lowercase alphabetic, the corresponding uppercase + keysym should be used instead. +

    + Other interpretations of :caps-lock are possible; for example, + it may be viewed as equivalent to :shift-lock, but only applying + when the first keysym is lowercase alphabetic and the second keysym is + the corresponding uppercase alphabetic. No interpretation of keysyms + beyond the first two in a list is suggested here. No spatial geometry + of the symbols on the key is defined by their order in the keysym list, + although a geometry might be defined on a vendor-specific basis. The X + server does not use the mapping between keycodes and keysyms. Rather, + the X server stores the mapping merely for reading and writing by + clients. + +


    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_g.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_g.html @@ -0,0 +1,174 @@ + + + + + + G... + + + + + + + + + + Next Prev Up +
    +

    G...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_Event_Types.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_Event_Types.html @@ -0,0 +1,96 @@ + + + + + + 12.12 Event Types + + + + + + + + + + Next Prev Up +
    +

    12.12 Event Types

    + +

    + The following paragraphs contain detailed descriptions of the contents + of each event type. In CLX, events are not actually represented by + structures, but rather by lists of keyword values passed to handler + functions or by values bound to symbols within the clauses of event-case + and event-cond + forms. Nevertheless, it is convenient to describe event contents + in terms of slots and to identify the components of events with slot + name symbols. In fact, CLX uses the + declare-event macro to define event slot symbols and to map + these symbols to specific event data items returned by the X server + (see paragraph 12.12.8, Declaring Event Types). +

    + The following paragraphs describe each event type, listing its event-key keyword + symbol and its slot name symbols. An event keyword symbol identifies a + specific event type. An event keyword symbol can be given as an + argument to send-event + or to an event handler function; it can also appear in the + event-match form of an event-case + clause. An event slot name symbol identifies a specific event data + item. Event slot names appear as keywords with associated values among + the arguments passed to send-event or to an event handler function; as non-keyword + symbols, they can also be in the event-slots form of an event-case + clause. +

    + In certain cases, more than one name symbol is defined for the same + event slot. For example, in + :key-press events, the symbols window and event-window + both refer to the same event data item. +


    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_1_Introduction.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_1_Introduction.html @@ -0,0 +1,96 @@ + + + + + + 8.1 Introduction + + + + + + + + + + Next Prev Up +
    +

    8.1 Introduction

    + +

    + An X server maintains a set of fonts used in the text operations + requested by client programs. An X font is an array of character bit + maps (or glyphs) indexed by integer codes. In fact, font glyphs + can also represent cursor shapes or other images and are not limited to + character images. X supports both linear and matrix encoding of font + indexes. With linear encoding, a font index is interpreted as a single + 16-bit integer index into a one-dimensional array of glyphs. With + matrix encoding, a font index is interpreted as a pair of 8-bit integer + indexes into a two-dimensional array of glyphs. The type of index + encoding used is font-dependent. +

    + In order to access or use a font, a client program must first open it + using the open-font + function, sending a font name string as an identifier. open-font creates a + CLX font object used to + refer to the font in subsequent functions. Afterward, calling open-font with the + same font name returns the same + font object. When a font is no longer in use, a client program + can call close-font + to destroy the font + object. +

    + A font has several attributes which describe its geometry and its + glyphs. CLX provides functions to return the attributes of a font, as + well functions for accessing the attributes of individual font glyphs. + Glyph attributes are referred to as character attributes, since + characters are the most common type of font glyphs. A font also has a + property list of values recorded by the X server. However, the set of + possible font properties and their values are not standardized and are + implementation-dependent. Typically, CLX maintains a cache of font and + character attributes, in order to minimize server requests. However, + the font cache mechanism is implementation-dependent and cannot be + controlled by the client. In some cases, CLX may create a pseudo-font + object solely for the purpose of accessing font attributes. A + pseudo-font is represented by a special type of font object that cannot be + used in a gcontext. + If necessary, CLX can automatically convert a pseudo-font into a true + font, if the name of the pseudo-font is known. +

    + The set of available fonts is server-dependent; that is, font names are + not guaranteed to be portable from one server to the next. However, the + public X implementation from MIT includes a set of fonts that are + typically available with most X servers. +

    + The following paragraphs describe CLX functions to: +

      +
    • + Open and close fonts. +
    • + List available fonts. +
    • + Access font attributes. +
    • + Access character attributes. +
    • + Return the size of a text string. +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_Windows_and_Pixmaps.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_Windows_and_Pixmaps.html @@ -0,0 +1,52 @@ + + + + + + 4 Windows and Pixmaps + + + + + + + + + + Next Prev Up +
    +

    4 Windows and Pixmaps +

    + +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/4_5_Window_Hierarchy.html +++ cmucl-20a-20090928/own-work/clx/clxman/4_5_Window_Hierarchy.html @@ -0,0 +1,266 @@ + + + + + + 4.5 Window Hierarchy + + + + + + + + + + Next Prev Up +
    +

    4.5 Window Hierarchy +

    + +

    + All the windows in X are arranged in a strict hierarchy. At the top of + the hierarchy are the root windows, which cover the display screens. + Each root window is partially or completely covered by its child + windows. All windows, except for root windows, have parents. Child + windows can have their own children. In this way, a tree of arbitrary + depth on each screen can be created. CLX provides several functions for + examining and modifying the window hierarchy. +

    +
    + + + +
    drawable-root + drawable + Function +
    + + +
          + +
    +
    + drawable +
    + A drawable. +
    +

    + Returns the root window of the specified drawable. +

    +
    + root-window +
    + Type window. +
    +
    +
    + +
    +
    + + + +
    query-tree + window &key ( + :result-type `list) + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + :result-type +
    + A valid type specifier for a sub-type of sequence. The + default is a list. +
    +

    + Returns the children windows, the parent window, + and the root window for the specified window. The + children are returned as a sequence of windows in current + stacking order, from bottom-most (first) to top-most (last). + The :result-type specifies the type of children sequence + returned. +

    +
    + children +
    + Type sequence of + window. +
    + parent +
    + Type window + or null. +
    + root +
    + Type window. +
    +
    +
    + +
    +
    + + + +
    reparent-window + window parent x y + Function +
    + + +
          + +
    +
    + window +
    + A window. +
    + parent +
    + The new parent window + . +
    + x, y +
    + The position (type + int16) of the window in its new parent. + These coordinates are relative to the parent's + origin, and specify the new position of the upper, left, + outer corner of the window. +
    +

    + Changes a window's parent within a single + screen. There is no way to move a window between screens. +

    + The specified window is reparented by inserting it as a + child of the specified parent. If the window is + mapped, an + unmap-window operation is automatically performed on + the specified window. The window is then removed + from its current position in the hierarchy and inserted as the + child of the specified parent. The window is + placed on top in the stacking order with respect to sibling + windows. +

    + After reparenting the specified window, a + :reparent-notify event is generated. The + override-redirect attribute of the window is passed on + in this event. Window manager clients normally should ignore + this event if this attribute is :on. See Section 12, + Events and Input, for more information on + :reparent-notify event processing. Finally, if the + specified window was originally mapped, a map-window + operation is automatically performed on it. +

    + The X server performs normal exposure processing on formerly + obscured windows. It might not generate :exposure + events for regions from the initial unmap-window + operation if they are immediately obscured by the + final + map-window operation. +

    + It is an error if any of the following are true: +

      +
    • + The new parent window is not on the same screen as the + old parent window. +
    • + The new parent window is the specified window + or an inferior of the specified window. +
    • + The specified window has a :parent-relative + background attribute and the new parent window is not + the same depth as the specified window. +
    + +
    +
    + +
    +
    + + + +
    translate-coordinates + source source-x + source-y destination + Function +
    + + +
          + +
    +
    + source +
    + A window + defining the source coordinate system. +
    + source-x, source-y +
    + Coordinates (int16 + ) relative to the origin of the source window. +
    + destination +
    + A window + defining the destination coordinate system. +
    +

    + Returns the position defined by source-x and source-y + (relative to the origin of the source window), + expressed as coordinates relative to the origin of the + destination window. +

    +
    + destination-x +
    + Type int16 or + null. +
    + destination-y +
    + Type int16 or + null. +
    + destination-child +
    + Type window + or null. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/13_3_Basic_Resource_Database_Functions.html +++ cmucl-20a-20090928/own-work/clx/clxman/13_3_Basic_Resource_Database_Functions.html @@ -0,0 +1,225 @@ + + + + + + 13.3 Basic Resource Database Functions + + + + + + + + + + Next Prev Up + +
    +

    13.3 Basic Resource Database + Functions

    + +

    + A resource-database structure is a CLX object that represents a + set of resource bindings. The following paragraphs describe the CLX + functions used to: +

      +
    • + Create a resource database +
    • + Add a resource binding +
    • + Remove a resource binding +
    • + Merge two resource databases +
    • + Map a function over the contents of a resource database +
    + +
    +
    + + + +
    make-resource-database + + Function +
    + + +
          + +

    + Returns an empty resource database. +

    +
    + resource-database +
    + Type resource-database. +
    +
    +
    + +
    +
    + + + +
    add-resource + database name-list + value + Function +
    + + +
          + +
    +
    + database +
    + The resource-database for the new resource binding. +
    + name-list +
    + A list containing strings or symbols specifying the name for + the resource binding. +
    + value +
    + The value associated with the name-list in the + resource binding. This can be an object of any type. +
    +

    + Adds the resource binding specified by name-list and + value to the given database. Only one value can be + associated with the name-list in the database. + This function replaces any value previously associated with the + name-list. +

    +
    + +
    +
    + + + +
    delete-resource + database name-list + Function +
    + + +
          + +
    +
    + database +
    + The resource-database containing the resource binding. +
    + name-list +
    + A list containing strings or symbols specifying the name for + the deleted resource binding. +
    +

    + Removes the resource binding specified by name-list from + the given database. +

    +
    + +
    +
    + + + +
    map-resource + database function + &rest args + Function +
    + + +
          + +
    +
    + database +
    + A resource-database. +
    + function +
    + A function object or function symbol. +
    + args +
    + A list of arguments to the function. +
    +

    + Calls the function for each resource binding in the database + . For each resource binding consisting of a name-list + and a value, the form (apply function +  name-list value args) is executed. +

    +
    + +
    +
    + + + +
    merge-resources + from-database + to-database + Function +
    + + +
          + +
    +
    + from-database +
    + The resource-database from which resource bindings are + read. +
    + to-database +
    + The resource-database to which resource bindings are + added. +
    +

    + Merges the contents of the from-database with the + to-database. map-resource invokes add-resource in order to add each resource binding + in the from-database to the to-database. The + updated to-database is returned. +

    +
    + to-database +
    + Type resource-database. +
    +
    +
    + +
    + Next Prev Up + +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/2_2_Opening_the_Display.html +++ cmucl-20a-20090928/own-work/clx/clxman/2_2_Opening_the_Display.html @@ -0,0 +1,85 @@ + + + + + + 2.2 Opening the Display + + + + + + + + + + Next Prev Up +
    +

    2.2 Opening the Display +

    + +

    + The open-display + function is used to open a connection to an X server. +

    +
    + + + +
    open-display + host &key + :display :protocol + Function +
    + + +
          + +
    +
    + host +
    + Specifies the name of the host machine on which the + server executes. A string must be acceptable as a host + , but otherwise the possible types are not constrained and + will likely be very system dependent. +
    + :display +
    + An integer that specifies which display device on the host + should be used for this connection. This is needed since + multiple displays can be controlled by a single X server. The + default is display 0 (zero). +
    + :protocol +
    + A keyword argument that specifies which network protocol + should be used for connecting to the server (for example, + :tcp, :dna, or :chaos). The set of possible + values and the default value are implementation specific. +
    + Returns a display + that serves as the connection to the X server and contains all + the information about that X server. +
    +
    + display +
    + Type display. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_v.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_v.html @@ -0,0 +1,44 @@ + + + + + + V... + + + + + + + + + + Next Prev Up +
    +

    V...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/14_4_3_Using_Keycodes_and_Keysyms.html +++ cmucl-20a-20090928/own-work/clx/clxman/14_4_3_Using_Keycodes_and_Keysyms.html @@ -0,0 +1,150 @@ + + + + + + 14.4.3 Using Keycodes and Keysyms + + + + + + + + + + Next Prev Up +
    +

    14.4.3 Using Keycodes and + Keysyms

    + +

    + The following paragraphs describe the CLX functions used to: +

      +
    • + Convert a keycode into a keysym +
    • + Convert a keysym into a character +
    + +
    +
    + + + +
    keycode-keysym + display keycode + keysym-index + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + keycode +
    + A card8. +
    + keysym-index +
    + A card8. +
    +

    + Returns the keysym at the given keysym-index from + the keysym list for the keycode in the current keyboard + mapping for the display server. +

    +
    + keysym +
    + Type keysym. +
    +
    +
    + +
    +
    + + + +
    keycode-character + display keysym + &optional (state 0) + Function +
    + + +
          + +
    +
    + display +
    + A display. +
    + keysym +
    + A keysym. +
    + state +
    + A mask16. +
    +

    + Returns the character associated with the keysym + and the state. The state is a mask16 bit mask + representing the state of the display modifier keys and + pointer buttons. See state-mask-key + in paragraph 1.6, Data Types. If the keysym does + not represent a Common Lisp character, then nil is + returned. +

    + The state determines the bits attribute of the returned + character, as follows: + + + + + +
    :control + char-control-bit +
    :mod-1 + char-meta-bit +
    :mod-2 + char-super-bit +
    :mod-3 + char-hyper-bit +
    + +

    +
    + character +
    + Type character or null. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_y.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_y.html @@ -0,0 +1,32 @@ + + + + + + Y... + + + + + + + + + + Next Prev Up +
    +

    Y...

    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_o.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_o.html @@ -0,0 +1,41 @@ + + + + + + O... + + + + + + + + + + Next Prev Up +
    +

    O...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_z.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_z.html @@ -0,0 +1,29 @@ + + + + + + Z... + + + + + + + + + Prev Up +
    +

    Z...

    + +
    + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/12_12_5_Window_State_Events.html +++ cmucl-20a-20090928/own-work/clx/clxman/12_12_5_Window_State_Events.html @@ -0,0 +1,667 @@ + + + + + + 12.12.5 Window State Events + + + + + + + + + + Next Prev Up +
    +

    12.12.5 Window State Events +

    + +

    + The following paragraphs describe the events that can be received when + a window becomes: +

      +
    • + Created +
    • + Destroyed +
    • + Invisible +
    • + Mapped +
    • + Moved +
    • + Reparented +
    • + Resized +
    • + Restacked +
    • + Unmapped +
    • + Visible +
    + +
    +
    + + + +
    :circulate-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :structure-notify on a window or + :substructure-notify on its parent. +
    + +

    + A + :circulate-notify event is generated whenever a + window is actually restacked as a result of a client + application calling + circulate-window-up or + circulate-window-down. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was restacked. +
    + place +
    + Type (member :top :bottom). If place is :top, + the window is now on top of all siblings. Otherwise, + it is below all siblings. +
    +
    +
    + +
    +
    + + + +
    :configure-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :structure-notify on a window or + :substructure-notify on its parent. +
    + +

    + The :configure-notify event is generated when the + position or size of a window actually changes as a result of a + client application setting its x, y, width + , height, or border-width attributes. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was moved or resized. +
    + x +
    + Type int16. + x and y specify the new upper-left corner position + of the window relative to its parent. +
    + y +
    + Type int16. + x and y specify the new upper-left corner position + of the window relative to its parent. +
    + width +
    + Type card16. + width and height specify the new size of the + window interior. +
    + height +
    + Type card16. + width and height specify the new size of the + window interior. +
    + border-width +
    + Type card16. + The new window border width. +
    + above-sibling +
    + Type (or null window). The sibling immediately below + the window. If above-sibling is nil, then the window is below all of its siblings. +
    + override-redirect-p +
    + Type boolean + . override-redirect-p is true if the override-redirect + attribute of the window is :on; otherwise, it + is nil. See window-override-redirect in paragraph 4.3, Window + Attributes. +
    + +

    + The X server can report + :create-notify events to clients wanting information + about creation of windows. The X server generates this event + whenever a client application creates a window by calling create-window + . +

    + To receive this event type in a client application, you setf + the :substructure-notify as the event-mask in the + parent window's event-mask slot. +

    +
    + +
    +
    + + + +
    :create-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :substructure-notify. +
    + +

    + The :create-notify event is generated when a window + is created and is sent to the parent window. +

    +
    + parent, event-window +
    + Type window. + The parent window receiving the event. +
    + window +
    + Type window. + The new window created. +
    + x +
    + Type int16. + x and y specify the initial upper-left corner + position of the window relative to the parent. +
    + y +
    + Type int16. + x and y specify the initial upper-left corner + position of the window relative to the parent. +
    + width +
    + Type card16. + width and height specify the initial size of + the window interior. +
    + height +
    + Type card16. + width and height specify the initial size of + the window interior. +
    + border-width +
    + Type card16. + The initial window border width. +
    + override-redirect-p +
    + Type boolean + . override-redirect-p is true if the override-redirect + attribute of the window is :on; otherwise, it + is nil. See window-override-redirect in paragraph 4.3, Window + Attributes. +
    +
    +
    + +
    +
    + + + +
    :destroy-notify + + Event Type +
    + + +
          + +
    +
    + Selected by +
    + :structure-notify on a window or + :substructure-notify on its parent. +
    + +

    + The + :destroy-notify event is generated when a window + is destroyed. The ordering of the + :destroy-notify events is such that for any given + window, + :destroy-notify is generated on all inferiors of a + window before + :destroy-notify is generated on the window. The + ordering among siblings and across subhierarchies is not + otherwise constrained. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was destroyed. +
    +
    +
    + +
    +
    + + + +
    :gravity-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :structure-notify on a window or + :substructure-notify on its parent. +
    + +

    + The X server can report + :gravity-notify events to clients wanting information + about when a window is moved because of a change in the + size of its parent. The X server generates this event whenever + a client application actually moves a child window as a result + of resizing its parent by calling with-state + with the appropriate arguments set. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was moved. +
    + x +
    + Type int16. x + and y specify the new upper-left corner position of the + window relative to its parent. +
    + y +
    + Type int16. x + and y specify the new upper-left corner position of the + window relative to its parent. +
    +
    +
    + +
    +
    + + + +
    :map-notify + + Event Type +
    + + +
          + +

    +

    +
    + Selected by: +
    + :structure-notify on a window or + :substructure-notify on its parent. +
    + +

    + The X server can report + :map-notify events to clients wanting information about + which windows are mapped. The X server generates this event + type whenever a client application changes the window + 's state from unmapped to mapped by calling map-window + or map-subwindow. +

    + To receive this event type, you setf :structure-notify + as the event-mask on the window's event-mask + slot. You can also receive this event type by setfing + the :substructure-notify event-mask on the parent window. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was mapped. +
    + override-redirect-p +
    + Type boolean + . override-redirect-p is true if the override-redirect + attribute of the window is :on; otherwise, it + is nil. See window-override-redirect in paragraph 4.3, Window + Attributes. +
    +
    +
    + +
    +
    + + + +
    :reparent-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :structure-notify on a window or + :substructure-notify on its old or new parent. +
    + +

    + The + :reparent-notify event is generated when a window + is reparented. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was reparented. +
    + parent +
    + Type window. + The new parent of the window. +
    + x +
    + Type int16. x + and y specify the upper-left corner position of the window + relative to its new parent. +
    + y +
    + Type int16. x + and y specify the upper-left corner position of the window + relative to its new parent. +
    + override-redirect-p +
    + Type boolean + . override-redirect-p is true if the override-redirect + attribute of the window is :on; otherwise, it + is nil. See window-override-redirect in paragraph 4.3, Window + Attributes. +
    +
    +
    + +
    +
    + + + +
    :unmap-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :structure-notify on a window or + :substructure-notify on its parent. +
    + +

    + The + :unmap-notify event is generated when a mapped window + is unmapped. +

    +
    + event-window +
    + Type window. + The window receiving the event. +
    + window +
    + Type window. + The window that was unmapped. +
    + configure-p +
    + Type boolean + . configure-p is true if the window has a + win-gravity attribute of :unmap, and the event was + generated because window's parent was resized. +
    +
    +
    + +
    +
    + + + +
    :visibility-notify + + Event Type +
    + + +
          + +
    +
    + Selected by: +
    + :visibility-change. +
    + +

    + The + :visibility-notify event is sent when the visibility of + a window changes. + :visibility-notify events are never generated on + :input-only windows. For the purposes of this event, the + visibility of the window is not affected by its + subwindows. +

    + All + :visibility-notify events caused by a hierarchy change + are generated after any hierarchy event caused by that change + (for example, + :unmap-notify, + :map-notify, + :configure-notify, + :gravity-notify, or + :circulate-notify). Any + :visibility-notify event on a given window is generated + before any + :exposure events on that window, but it is not required + that all + :visibility-notify events on all windows be generated + before all + :exposure events on all windows. The ordering of + :visibility-notify events with respect to :focus-out + , + :enter-notify, and + :leave-notify events is not constrained. +

    +
    + window, event-window +
    + Type window. + The window that changed in visibility. +
    + state +
    + Type (member :unobscured :partially-obscured + :fully-obscured). +

    + When the window was either unviewable or it was + viewable and at least partially obscured, and the window + changed to viewable and completely unobscured, then + state is :unobscured. +

    + When the window was either unviewable or it was + viewable and completely obscured, and the window + changed to viewable and partially obscured, then state + is :partially-obscured. +

    + When the window was either unviewable or it was at + least partially visible, and the window changed to + viewable and completely obscured, then state is + :fully-obscured. +

    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/the_index_c.html +++ cmucl-20a-20090928/own-work/clx/clxman/the_index_c.html @@ -0,0 +1,220 @@ + + + + + + C... + + + + + + + + + + Next Prev Up +
    +

    C...

    + + + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/3_1_Screens_and_Visuals.html +++ cmucl-20a-20090928/own-work/clx/clxman/3_1_Screens_and_Visuals.html @@ -0,0 +1,111 @@ + + + + + + 3.1 Screens and Visuals + + + + + + + + + + Next + Prev Up +
    +

    3.1 Screens and Visuals +

    + +

    + An X display supports graphical output to one or more screens. + Each screen has its own root window and window hierarchy. Each window + belongs to exactly one screen and cannot simultaneously appear on + another screen. +

    + The kinds of graphics hardware used by X screens can vary greatly in + their support for color and in their methods for accessing raster + memory. X uses the concept of a visual type (usually + referred to simply as a visual) which uniquely identifies the + hardware capabilities of a display screen. Fundamentally, a visual is + represented by a card29 + integer ID, which uniquely identifies the visual type relative to a + single display. CLX also represents a visual with a visual-info + structure that contains other attributes associated with a visual (see + paragraph 1.6, Data Types). A screen can support more than one depth + (that is, pixel size), and for each supported depth, a screen may + support more than one visual. However, it is more typical for a screen + to have only a single depth and a single visual type. +

    + A visual represents various aspects of the screen hardware, as follows: +

      +
    • + A screen can be color or gray-scale. +
    • + A screen can have a colormap that is either writable or read-only. +
    • + A screen can have a single colormap or separate colormaps for each of + the red, green, and blue components. With separate colormaps, a pixel + value is decomposed into three parts to determine indexes into each + of the red, green, and blue colormaps. +
    + +

    + CLX supports the following classes of visual types: :direct-color + , :gray-scale, :pseudo-color, :static-color, + :static-gray, and :true-color. The following tables show how + the characteristics of a screen determine the class of its visual type. +

    + For screens with a single colormap: + + + + +
    + + Color + + Gray-Scale +
    + Read-only + :static-color + :static-gray +
    + Writable + :pseudo-color + :gray-scale +
    + +

    + For screens with red, green, and blue colormaps: + + + +
    + Read-only + :true-color +
    + Writable + :direct-color + :gray-scale +
    + +

    + The visual class also indicates how screen colormaps are handled. See + paragraph 9.1, Colormaps and Colors. + +


    + Next + Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/5_Graphics_Contexts.html +++ cmucl-20a-20090928/own-work/clx/clxman/5_Graphics_Contexts.html @@ -0,0 +1,52 @@ + + + + + + 5 Graphics Contexts + + + + + + + + + + Next Prev + Up +
    +

    5 Graphics Contexts

    + +
    + +
    + Next Prev + Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_4_Font_Attributes.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_4_Font_Attributes.html @@ -0,0 +1,1041 @@ + + + + + + 8.4 Font Attributes + + + + + + + + + + Next Prev Up +
    +

    8.4 Font Attributes

    + +

    + The following paragraphs describe the CLX functions used to access font + attributes. +

    +
    + + + +
    font-all-chars-exist-p + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns true if glyphs exist for all indexes in the range + returned by + font-min-char and font-max-char + . Returns nil if an index in the range + corresponds to empty glyph. +

    +
    + exists-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    font-ascent + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the vertical ascent of the font used for + interline spacing. The ascent defines the nominal + distance in pixels from the baseline to the bottom of the + previous line of text. Some font glyphs may actually extend + beyond the font ascent. +

    +
    + ascent +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    font-default-char + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the index of the glyph drawn when an invalid or + empty glyph index is specified. If the default index specifies + an invalid or empty glyph, an invalid or empty index has no + effect. +

    +
    + index +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    font-descent + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the vertical descent of the font used for + interline spacing. The descent defines the nominal + distance in pixels from the baseline to the top of the next + line of text. Some font glyphs may actually extend beyond the + font descent. +

    +
    + descent +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    font-direction + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the nominal drawing direction for the font + . The font drawing direction is only a hint that indicates + whether the char-width of most font glyphs is positive ( + :left-to-right direction) or negative (:right-to-left + direction). Note that X does not provide any direct + support for vertical text. +

    +
    + direction +
    + Type + draw-direction. +
    +
    +
    + +
    +
    + + + +
    font-display + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the display + object associated with the specified font. +

    +
    + display +
    + Type display. +
    +
    +
    + +
    +
    + + + +
    font-equal + font-1 font-2 + Function +
    + + +
          + +
    +
    + font-1, font-2 +
    + The font + objects. +
    +

    + Returns true if the two arguments refer to the same server + resource and nil if they do not. +

    +
    + +
    +
    + + + +
    font-id + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the unique resource ID assigned to the specified font + . +

    +
    + id +
    + Type resource-id + . +
    +
    +
    + +
    +
    + + + +
    font-max-byte1 + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns zero if the font uses linear index encoding. + Otherwise, if the font uses matrix index encoding, a + value between 1 and 255 is returned that specifies the maximum + value for the most significant byte of font indexes. +

    +
    + max-byte1 +
    + Type card8. + +
    +
    +
    + +
    +
    + + + +
    font-max-byte2 + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns zero if the font uses linear index encoding. + Otherwise, if the font uses matrix index encoding, a + value between 1 and 255 is returned that specifies the maximum + value for the least significant byte of font indexes. +

    +
    + max-byte2 +
    + Type card8. + +
    +
    +
    + +
    +
    + + + +
    font-max-char + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum valid value used for linear encoded + indexes. This function is not meaningful for fonts that use + matrix index encoding. +

    +
    + index +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    font-min-byte1 + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns zero if the font uses linear index encoding. + Otherwise, if the font uses matrix index encoding, a + value between 1 and 255 is returned that specifies the minimum + value for the most significant byte of font indexes. +

    +
    + min-byte1 +
    + Type card8. +
    +
    +
    + +
    +
    + + + +
    font-min-byte2 + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns zero if the font uses linear index encoding. + Otherwise, if the font uses matrix index encoding, a + value between 1 and 255 is returned that specifies the minimum + value for the least significant byte of font indexes. +

    +
    + min-byte2 +
    + Type card8. +
    +
    +
    + +
    +
    + + + +
    font-min-char + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum valid value used for linear encoded + indexes. This function is not meaningful for fonts that use + matrix index encoding. +

    +
    + index +
    + Type card16. +
    +
    +
    + +
    +
    + + + +
    font-name + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the name of the font, or nil if font + is a pseudo-font. +

    +
    + name +
    + Type string or null. +
    +
    +
    + +
    +
    + + + +
    font-p + font + Function +
    + + +
          + +

    + Returns true if the argument is a font object and + nil otherwise. +

    +
    + font-p +
    + Type boolean. +
    +
    +
    + +
    +
    + + + +
    font-plist + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns and (with setf) sets the property list for the + specified font. This function provides a hook where + extensions can add data. +

    +
    + plist +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    font-properties + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the list of font properties recorded by the X + server. The returned list is a property list of keyword/value + pairs. The set of possible font property keywords is + implementation-dependent. +

    +
    + properties +
    + Type list. +
    +
    +
    + +
    +
    + + + +
    font-property + font name + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    + name +
    + A font property keyword. +
    +

    + Returns the value of the font property specified by the + name keyword. The property value, if it exists, is + returned as an uninterpreted 32-bit integer. +

    +
    + property +
    + Type int32 or + null. +
    +
    +
    + +
    +
    + + + +
    max-char-ascent + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum char-ascent + value for all characters in font. +

    +
    + ascent +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    max-char-attributes + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum + char-attributes value for all characters in font. +

    +
    + attributes +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    max-char-descent + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum + char-descent value for all characters in font. +

    +
    + descent +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    max-char-left-bearing + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum + char-left-bearing value for all characters in font + . +

    +
    + left-bearing +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    max-char-right-bearing + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum + char-right-bearing value for all characters in font + . +

    +
    + right-bearing +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    max-char-width + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the maximum char-width + value for all characters in font. +

    +
    + width +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    min-char-ascent + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum char-ascent + for all characters in font. +

    +
    + ascent +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    min-char-attributes + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum + char-attributes for all characters in font. +

    +
    + attributes +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    min-char-descent + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum + char-descent for all characters in font. +

    +
    + descent +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    min-char-left-bearing + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum + char-left-bearing for all characters in font. +

    +
    + left-bearing +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    min-char-right-bearing + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum + char-right-bearing for all characters in font. +

    +
    + right-bearing +
    + Type int16. +
    +
    +
    + +
    +
    + + + +
    min-char-width + font + Function +
    + + +
          + +
    +
    + font +
    + A font object. +
    +

    + Returns the minimum char-width + for all characters in font. +

    +
    + width +
    + Type int16. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/10_2_Creating_Cursors.html +++ cmucl-20a-20090928/own-work/clx/clxman/10_2_Creating_Cursors.html @@ -0,0 +1,213 @@ + + + + + + 10.2 Creating Cursors + + + + + + + + + + Next Prev Up +
    +

    10.2 Creating Cursors +

    + +

    + The following paragraphs describe the CLX functions used to create and + free cursor objects. +

    +
    + + + +
    create-cursor + &key :source + :mask :x :y :foreground :background + Function +
    + + +
          + +
    +
    + :source +
    + The source pixmap. This argument is required. +
    + :mask +
    + The mask pixmap. +
    + :x, :y +
    + The hot spot position in the :source. This argument is + required. +
    + :foreground +
    + A color object + specifying the foreground color. This argument is required. +
    + :background +
    + A color object + specifying the background color. This argument is required. +
    +

    + Creates and returns a cursor. :x and :y define + the position of the hot spot relative to the origin of the + :source. :foreground and :background colors must be + specified, even if the server only has a :static-gray or + :gray-scale screen. The :source, :x, and :y arguments must also be specified. +

    + The cursor image is drawn by drawing a pixel from the :source + bitmap at every position where the corresponding bit in + the :mask bitmap is 1. If the corresponding :source + bit is 1, a pixel is drawn in the :foreground + color; otherwise, a pixel is drawn in the :back-ground + color. If the :mask is omitted, all :source + pixels are drawn. If given, the :mask must be the same + size as the :source. +

    + An X server may not be able to support every cursor size. A + server is free to modify any component of the cursor to satisfy + hardware or software limitations. +

    + The :source and :mask can be freed immediately + after the cursor is created. Subsequent drawing in the + :source or :mask pixmap has an undefined effect on + the cursor. +

    +
    + cursor +
    + Type cursor. +
    +
    +
    + +
    +
    + + + +
    create-glyph-cursor + &key :source-font + :source-char :mask-font (:mask-char 0) :foreground + :background + Function +
    + + +
          + +
    +
    + :source-font +
    + The source font. This is a required argument. +
    + :source-char +
    + An index specifying a glyph in the source font. This is a + required argument. +
    + :mask-font +
    + The mask font. +
    + :mask-char +
    + An index specifying a glyph in the mask font. +
    + :foreground +
    + A color object + specifying the foreground color. This is a required argument. +
    + :background +
    + A color object + specifying the background color. This is a required argument. +
    +

    + Creates and returns a cursor defined by font glyphs. The source + bitmap is defined by the :source-font and :source-char + . The mask bitmap is defined by the :mask-font and :mask-char. It is an error if the :source-char and + :mask-char are not valid indexes for the :source-font + and :mask-font, respectively. The hot spot position + is defined by the "character origin" of the source + glyph, that is, the position [- char-left-bearing, + char-ascent] relative to the upper left corner of the + source glyph bitmap. +

    + Source and mask bits are compared after aligning the character + origins of the source and mask glyphs. The source and mask + glyphs need not have the same size or character origin + position. If the :mask-font is omitted, all source + pixels are drawn. +

    + An X server may not be able to support every cursor size. A + server is free to modify any component of the cursor to satisfy + hardware or software limitations. +

    + Either of the :source-font or :mask-font can be + closed after the cursor is created. +

    +
    + cursor +
    + Type cursor. +
    +
    +
    + +
    +
    + + + +
    free-cursor + cursor + Function +
    + + +
          + +
    +
    + cursor +
    + A cursor + object. +
    +

    + Destroys the cursor + object. Cursor server resources are freed when no other + references remain. +

    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/1_3_2_Displaying_the_Menu.html +++ cmucl-20a-20090928/own-work/clx/clxman/1_3_2_Displaying_the_Menu.html @@ -0,0 +1,172 @@ + + + + + + 1.3.2 Displaying the Menu + + + + + + + + + + Next Prev Up +
    +

    1.3.2 Displaying the Menu +

    + +

    + The menu-recompute-geometry function (shown in the + following example) handles the job of calculating the size of the menu, + based on its current item list and its current text font. CLX provides + a way to inquire the geometrical properties of a font object (for + example, its ascent and descent from the baseline) and also a text-extents + function. + text-extents returns the geometry of a given string as + displayed in a given font. Notice the use of the with-state + macro when setting a window's geometry attributes. CLX strives to + preserve the familiar setf style of accessing individual window + attributes, even though an attribute access actually involves sending a + request to a (possibly remote) server and/or waiting for a reply. with-state + tells CLX to batch together all read and write accesses to a given + window, using a local cache to minimize the number of server requests. + This CLX feature can result in a dramatic improvement in client + performance without burdening the programmer interface. +

    + menu-recompute-geometry causes all the item subwindows to + become mapped. Mapping a window means attempting to make it + visible on the screen. However, a subwindow will not actually be + visible until it and all of its ancestors are mapped. Even then, + another window might be covering up the subwindow. +

    +(defun menu-recompute-geometry (menu)
    +  (when (menu-geometry-changed-p menu)
    +    (let* ((menu-font   (GCONTEXT-FONT (menu-gcontext menu)))
    +           (title-width (TEXT-EXTENTS menu-font (menu-title menu)))
    +           (item-height (+ (FONT-ASCENT menu-font)
    +                           (FONT-DESCENT menu-font)
    +                           *menu-item-margin*))
    +           (item-width     0)
    +           (items          (menu-item-alist menu))
    +           menu-width)
    +
    +      ;; Find max item string width
    +      (setf item-width
    +            (+ *menu-item-margin*
    +               (dolist (next-item items item-width)
    +                 (setf item-width (max item-width
    +                                       (TEXT-EXTENTS menu-font (second next-item)))))))
    +
    +      ;; Compute final menu width, taking margins into account
    +      (setf menu-width (max title-width (+ item-width *menu-item-margin*)))
    +      (let ((window     (menu-window menu)))
    +
    +        ;; Update width and height of menu window
    +        (WITH-STATE (window)
    +                    (setf (DRAWABLE-WIDTH      window) menu-width
    +                          (DRAWABLE-HEIGHT window) (* (1+ (length items)) item-height)))
    +
    +        ;; Update width, height, position of item         windows
    +        (let ((item-left         (round (- menu-width item-width) 2))
    +              (next-item-top (- item-height (round *menu-item-margin* 2))))
    +          (dolist (next-item items)
    +            (let ((window (first next-item)))
    +              (WITH-STATE (window)
    +                          (setf (DRAWABLE-HEIGHT window) item-height
    +                                (DRAWABLE-WIDTH      window) item-width
    +                                (DRAWABLE-X          window) item-left
    +                                (DRAWABLE-Y          window) next-item-top)))
    +            (incf next-item-top item-height))))
    +
    +      ;; Map all item windows
    +      (MAP-SUBWINDOWS (menu-window menu))
    +
    +      ;; Save item geometry
    +      (setf (menu-item-width menu)         item-width
    +            (menu-item-height menu)        item-height
    +            (menu-width menu)              menu-width
    +            (menu-title-width menu)        title-width
    +            (menu-geometry-changed-p menu) nil))))
    +        
    + +

    + Of course, the sample client must know how to draw/redraw the menu and + its items, so the function menu-refresh is defined next to + handle that task (shown in the following example). Note that the + location of window output is given relative to the window origin. + Windows and subwindows have different coordinate systems. The location + of the origin (upper-left corner) of a subwindow's coordinate + system is given with respect to its parent window's coordinate + system. Negative coordinates are valid, although only output to the + +x/+y quadrant of a window's coordinate system will ever be visible. +

    +(defun menu-refresh (menu)
    +  (let* ((gcontext   (menu-gcontext menu))
    +         (baseline-y (FONT-ASCENT (GCONTEXT-FONT gcontext))))
    +    ;; Show title centered in "reverse-video"
    +    (let ((fg (GCONTEXT-BACKGROUND gcontext))
    +          (bg (GCONTEXT-FOREGROUND gcontext)))
    +      (WITH-GCONTEXT (gcontext :foreground fg :background bg)
    +                     (DRAW-IMAGE-GLYPHS
    +                      (menu-window menu)
    +                      gcontext
    +                      (round (- (menu-width menu)
    +                                (menu-title-width menu)) 2)     ;start x
    +                      baseline-y                                ;start y
    +                      (menu-title menu))))
    +
    +    ;; Show each menu item (position is relative to item window)
    +    (let ((box-margin (round *menu-item-margin* 2)))
    +      (dolist (item (menu-item-alist menu))
    +        (DRAW-IMAGE-GLYPHS
    +         (first item) gcontext
    +         box-margin                                             ;start x
    +         (+ baseline-y box-margin)                              ;start y
    +         (second item))))))
    +        
    + +

    + with-gcontext + is a CLX macro that allows you temporarily to modify a + graphics context within the dynamic scope of the macro body. draw-image-glyphs + is a CLX text drawing function which produces a terminal-like + rendering: foreground character on a background block. (More + sophisticated text rendering functions are also available.) The strange + use of glyphs instead of string here actually highlights + an important fact: X and Common Lisp have totally different concepts of + a character. A Common Lisp character is an object whose implementation + can comprehend a vast universe of text complexities (typefaces, type + styles, international character sets, symbols, and so forth). However, + to X, a string is just a sequence of integer indexes into the array of + bitmaps represented by a CLX font object. In general, draw-image-glyphs + , text-extents + , and other CLX text functions accept a :translate + keyword argument. Its value is a function which translates the + characters of a string argument into the appropriate font-and-index + pairs needed by CLX. This example relies upon the default translation + function, which simply uses char-code to compute an index into + the current font. + +


    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/clx/clxman/8_3_Listing_Fonts.html +++ cmucl-20a-20090928/own-work/clx/clxman/8_3_Listing_Fonts.html @@ -0,0 +1,205 @@ + + + + + + 8.3 Listing Fonts + + + + + + + + + + Next Prev Up +
    +

    8.3 Listing Fonts

    + +

    + The following paragraphs describe CLX functions that return fonts or + font names that match a given pattern string. Such pattern strings + should contain only ISO Latin-1 characters; case is not significant. + The following pattern characters can be used for wildcard + matching: +

    +

    +
    + #\* +
    + Matches any sequence of zero or more characters. +
    + #\? +
    + Matches any single character. +
    + +

    + For example, the pattern "T?mes Roman" matches the name + "Times Roman" but not the name "Thames Roman". However, + the pattern "T*mes Roman" matches both names. +

    +
    + + + +
    font-path + display &key ( + :result-type 'list) + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + :result-type +
    + Specifies the type of resulting sequence. +
    +

    + Returns a list (by default) of names containing the + current search path for fonts. With setf, this function + sets the search path for font lookup. There is only one search + path per server, not one per client. The interpretation of the + names is server-dependent, but they are intended to specify + directories to be searched in the order listed. +

    + Setting the path to the empty list restores the default path + defined for the server. Note that as a side-effect of executing + this request, the server is guaranteed to flush all cached + information about fonts for which there are currently no + explicit resource IDs allocated. +

    +
    + paths +
    + Type sequence of either string or pathname + . +
    +
    +
    + +
    +
    + + + +
    list-font-names + display pattern + &key (:max-fonts 65535) (:result-type 'list) + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + pattern +
    + A string used to match font names. Only font names that match + the pattern are returned. +
    + :max-fonts +
    + The maximum number of font names returned. Default is 65535. +
    + :result-type +
    + The type of sequence to return. Default is 'list. +
    +

    + Returns a sequence of strings containing the font names that + match the pattern. The fonts available are determined by + the font search path; see font-path). + The maximum number of font names returned is determined by + :max-fonts. +

    +
    + font-name +
    + Type sequence of string. +
    +
    +
    + +
    +
    + + + +
    list-fonts + display pattern + &key (:max-fonts 65535) (:result-type 'list) + Function +
    + + +
          + +
    +
    + display +
    + A display + object. +
    + pattern +
    + A string used to match font names. Only fonts whose name + matches the pattern are returned. +
    + :max-fonts +
    + The maximum number of fonts returned. Default is 65535. +
    + :result-type +
    + The type of sequence to return. Default is 'list. +
    +

    + Returns a sequence of pseudo-fonts corresponding to the + available fonts whose names match the pattern. The fonts + available are determined by the font search path; see font-path). + The maximum number of font + objects returned is determined by :max-fonts. +

    +
    + font +
    + Type sequence of + font. +
    +
    +
    + +
    + Next Prev Up +
    + © 1988, 1989 Texas Instruments + Incorporated +
    + Conversion to HTML made by + Gilbert Baumann. +
    + Last build: Tue Dec 16 23:30:42 1997 --- cmucl-20a-20090928.orig/own-work/tutorials/doe +++ cmucl-20a-20090928/own-work/tutorials/doe @@ -0,0 +1,4 @@ +sgml2txt -l CLOS-guide.sgml +sgml2latex -2e -a -l CLOS-guide.sgml +sgml2info -l CLOS-guide.sgml +sgml2html -img -l CLOS-guide.sgml --- cmucl-20a-20090928.orig/own-work/tutorials/other/cl.txt +++ cmucl-20a-20090928/own-work/tutorials/other/cl.txt @@ -0,0 +1,3317 @@ +From welch@thor.oar.net Thu Oct 20 16:53:41 EDT 1994 +Article: 15160 of comp.lang.lisp +Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!usenet.eel.ufl.edu!usenet.cis.ufl.edu!caen!math.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!ns.mcs.kent.edu!kira.cc.uakron.edu!malgudi.oar.net!malgudi.oar.net!welch +From: welch@thor.oar.net (Arun Welch) +Newsgroups: comp.lang.lisp +Subject: CL History (was Re: Why do people like C?) +Date: 20 Oct 94 15:34:10 +Organization: OARnet +Lines: 3244 +Message-ID: +References: <37eb4h$k4f@vertex.tor.hookup.net> + + + <3854ul$r5r@cantaloupe.srv.cs.cmu.edu> +NNTP-Posting-Host: thor.oar.net +In-reply-to: sef@CS.CMU.EDU's message of 20 Oct 1994 07:07:01 GMT + + +Hokay, before things get too far out of hand on this discussion... +JonL wrote the following over 10 years ago (my how time flies!), and +it's been floating around ever since. It's been posted at least +once before, and I'm willing to make updates to a master copy if +people wish to add to it, and I'll send it on to Mark once I'm done for +inclusion in his archives. Scott, you're the only one of the "gang of +five" still following this, you might have some insights... + + + +14-Sep-84 1636 JonL.pa@Xerox.ARPA Re: CL History +Received: from XEROX.ARPA by SU-AI.ARPA with TCP; 14 Sep 84 16:35:17 PDT +Received: from Semillon.ms by ArpaGateway.ms ; 14 SEP 84 16:31:56 PDT +Date: 14 Sep 84 16:31 PDT +From: JonL.pa@XEROX.ARPA +Subject: Re: CL History +In-reply-to: Dick Gabriel 's message of 14 Sep 84 08:48 + PDT +To: RPG@SU-AI.ARPA +cc: steele@TL-20A.ARPA, jonl.PA@XEROX.ARPA + +Below is a copy of a historical note which I sent to the group in August +1982, because the material was still fresh on my mind (and because it +was clear that Xerox was not then going to have a significant +involvement with Common Lisp, so that "history" would probably be my +last major contribution for some time to come). + +Incidentally, the technal staff -- Larry, Bill, and myself -- have been +asked by Xerox management *not* to attend the meeting next week. Beau +Sheil and Gary Moskovitz (the new head of the A.I. Systems Business +Unit) will represent Xerox. Sigh. + +------------------------------------------------------------------ + +Mail-from: Arpanet host MIT-MC rcvd at 24-AUG-82 1950-PDT +Date: 24 August 1982 22:44-EDT +From: Jon L White +Subject: Roots of "Yu-Shiang Lisp" +To: JONL at MIT-MC, RPG at SU-AI, Guy.Steele at CMU-10A, + Fahlman at CMU-10A +cc: MOON at MIT-MC, Shostak at SRI-CSL, Griss at UTAH-20, DLW at MIT-AI, + RG at MIT-AI, GSB at MIT-ML, Brooks at CMU-20C, + Scherliss at CMU-20C, Engelmore at USC-ISI, Balzer at USC-ISIB, + Hedrick at RUTGERS + + +In a brief attempt to remember the roots of "Yu-Shiang Lisp", subsequently +named COMMON LISP, I searched my old mail files which are still on-line, +and found a few tidbits of history. Mostly, my mail stuff got deleted, +but the "Call" for the conference at SRI on Apr 8, 1981, by Bob Engelmore +survived, along with an interchange, about a week after the "birth", +between Ed Feigenbaum and Scott Fahlman. These I've packeged up in the +file at MIT-MC JONL;COMMON HIST along with Chuck Hedrick's overall summary +of the April 8 meeting. + +I'd like to ask you all to jog your memory cells, and see if any of the +uncertainties below can be filled in, and if additional significant +steps towards the CommonLisp can be identified. Needless to say, this +listing is a view from where I was standing during those days. + + + + +Mar 12, 1981: Bob Engelmore invites many Lisp implementors and users + from the ARPA community to a conference at SRI to clear up issues + surrounding the future of Lisp. Since ARPA was diminishing its + support of Lisp development and maintenance, his "call" may have + had the seeds of CommonLisp in it's second paragraph: + " . . . There are now several respectable Lisp dialects in + use, and others under development. The efficiency, + transportability and programming environment varies significantly + from one to the other. Although this pluralism will probably + continue indefinitely, perhaps we can identify a single +"community + standard" that can be maintained, documented and distributed in a + professional way, as was done with Interlisp for many years. " + +Apr 8, 1981: Moby meeting at SRI. InterLisp crowd appears to be unified; +Scott Fahlman characterises the post-MacLisp crowd as 4 horses going in 5 +directions. Nils Nilsson, over a glass of beer, asks Jonl to join SRI in +beginning a Lisp development and maintenance center; Jonl insists on RPG +being a principal of the effort. The advantages of a Lisp with Arpa +support, which "... can be maintained, documented and distributed in a +professional way ...", appeared enormous. + +Apr 9, 1981: RPG, Jonl, and GLS ride in a cramped car to Livermore, +during which time the prospect of merging the Vax/NIL, S-1/NIL, and +Spice/Lisp projects is proposed to GLS. Some technical obstacles are +worked out. Later that night, at Brian Reed's house, SEF is apprised of +the prospects. He too quickly realizes the advantages of a common dialect +when presenting plans to funding agencies; more technical details are +worked out, in particular the administrative plan of the CMU folks that +the manual will be written first before coding commences, and the manual +will be under the control of GLS. + +Apr 10, 1981: Jonl and RPG meet with Nils Nilsson, Gary Hendrix, Karl +Leavitt, Jack Goldberg, and Rob Shostack; brief outline is made of what +SRI would contribute, what Lawrence-Livermore would contribute, and what +CMU would contribute. Nils takes plans to Arpa to "get a reading". + +Apr 13, 1981: More meetings between RPG, Jonl, and Goldberg, Leavitt, +Shostack. SRI has a proposal for a "portable InterLisp" in the works, and +the NIL/Spice plan is to be merged with that project, under the CSL +section. Details are worked out about how CMU will retain "ownership" of +the manual, but SRI will be a distribution center. + +Later that week: Nils reports mixed reception in Washington from Arpa. +SEF and GLS are already back at CMU. Plans are made to meet at CMU +sometime "soon" since the S-1/NIL group will be re-locating to CMU for the +summer. + +Next week: Feigenbaum gives tacit approval to the plan, in an Arpa-Net + letter to SEF. Such support is received with joy. + +May 1981: Jonl and Shostak prepare a written plan for SRI involvement, + with a view to obtaining ARPA funding. + +First week of June (Saturday): Meeting at CMU to resolve particular +language + issues. Attending were GLS, SEF, RPG, JONL, Bill Scherliss, and Rod + Brooks. A lot of time was spent on treatement of Multiple-values; + NIL versus () remains unresolved. Lunch is had at Ali Baba's, and + the name Yu-Shiang Lisp is proposed to replace Spice Lisp; also +proposed + is to retain the generic name NIL, but to specialize between +Spice/NIL + S-1/NIL, Vax/NIL etc. Importance is recognized of bringing in the + other post-MacLisp groups, notably Symbolics and LMI. + +July: Report from ARPA looks negative for any funding for proposal from +SRI. + +Summer: Symbolics greets the idea of a "standardizing" with much + support. Noftsker in particular deems it desirable to have a + common dialect on the Vax through which potential LispMachine + customers can be exposed to Lisp. Moon pushes for a name, which + by default seems to be heading for CommonLisp. GLS produces the + "Swiss Cheese" edition of the Spice Lisp manual. + +Sept: Change in administration in ARPA casts new light on SRI hopes: + A big "smile" is offered to the plan, it is met with approval, but + but not with money. Later on, it appears that hopes for an ARPA + proposal are futile; word is around even that ARPA is pulling out + of the InterLisp/VAX support. + +Last week of November 1981: Meeting in Cambridge, at Symbolics, to resolve +many issues; excelent "footwork" done by GLS to get a written notebook to +each attendee of the various issues, along with a Ballot sheet. First day +goes moderately; second day degenerates into much flaming. Many hard +issues postponed. Several other groups were now "aboard", in particular +the InterLisp community sent Bill vanMelle as a observer. + +[At some point in time, RPG contacted the Utah people to get them to + interested. Also, RPG dealt with Masinter as a representative of the + InterLisp Community? Bill Woods at BBN also expresses interest in + the development, so that InterLisp can keep "up to date".] + +Fall 1981: Michael Smith, major sales representative of DEC, asks for + advice on getting DEC into the lisp market. Both outside customers + and internal projects make it imperative that DEC do something soon. + Internally, Chinnaswamy in Engineering at the Marlborough plant, and + John Ulrich in the new "Knowledge Engineering" project at Tewksbury + apply internal pressure for DEC to take action quickly. + +Mid December, 1981: Sam Fuller calls several people in to DEC for +consultation about what DEC can do to support Lisp. Jonl makes a case for +DEC joining the CommonLisp bandwagon, rather than any of the other options +namely: jump in wholeheartedly behind InterLisp/VAX, or behind Vax/NIL, +or (most likely) strike aout afresh with their own DEC Lisp. Chuch +Hedrick is given a contract by DEC's LCG (the TOPS-20 people) to do an +extended- addressing 20-Lisp, of whatever flavor is decided upon by the +VAX group. + +Jan 1982: DEC gives CMU a short contract to develop a CommonLisp on the +VAX. + +Spring 1982: Discussion continues via ARPA-net mails, culminating in a + very productive day long session at CMU on Aug 21, 1981. + + 18-Dec-81 0918 HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) information about Common Lisp implementation +Date: 18 Dec 1981 1214-EST +From: HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) +Subject: information about Common Lisp implementation +To: rpg at SU-AI, jonl at MIT-AI + +We are about to sign a contract with DEC's LCG whereby they sponsor us +to produce an extended addressing Lisp. We are still discussing whether +this should be Interlisp or Common Lisp. I can see good arguments in +both directions, and do not have a strong perference, but I would +slightly prefer Common Lisp. Do you know whether there are any +implementations of Common Lisp, or something reasonably close to it? I +am reconciled to producing my own "kernel", probably in assembly +language, though I have some other candidates in mind too. But I would +prefer not to have to do all of the Lisp code from scratch. + +As you may know, DEC is probably going to support a Lisp for the VAX. My +guess is that we will be very likely to do the same dialect that is +decided upon there. The one exception would be if it looks like MIT (or +someone else) is going to do an extended implementation of Common Lisp. +If so, then we would probably do Interlisp, for completeness. + +We have some experience in Lisp implementation now, since Elisp (the +extended implementation of Rutgers/UCI Lisp) is essentially finished. +(I.e. there are some extensions I want to put in, and some optimizations, +but it does allow any sane R/UCI Lisp code to run.) The interpreter now +runs faster than the original R/UCI lisp interpreter. Compiled code is +slightly slower, but we think this is due to the fact that we are not +yet compiling some things in line that should be. (Even CAR is not +always done in line!) The compiler is Utah's portable compiler, +modified for the R/UCI Lisp dialect. It does about what you would want +a Lisp compiler to do, except that it does not open code arithmetic +(though a later compiler has some abilities in that direction). I +suspect that for a Common Lisp implementation we would try to use the +PDP-10 Maclisp compiler as a base, unless it is too crufty to understand +or modify. Changing compilers to produce extended code turns out not to +be a very difficult job. +------- + + 21-Dec-81 0702 HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) Re: Extended-addressing Common Lisp +Date: 21 Dec 1981 0957-EST +From: HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) +Subject: Re: Extended-addressing Common Lisp +To: JONL at MIT-XX +cc: rpg at SU-AI +In-Reply-To: Your message of 18-Dec-81 1835-EST + +thanks. At the moment the problem is that DEC is not sure whether they +are interested in Common Lisp or Interlisp. We will probably +follow the decision they make for the VAX, which should be done +sometime within a month. What surprised me about that was from what I +can hear one of Interlisp's main advantages was supposed to be that the +project was further along on the VAX than the NIL project. That sounds +odd to me. I thought NIL had been released. You might want to talk +with some of the folks at DEC. The only one I know is Kalman Reti, +XCON.RETI@DEC-MARLBORO. +------- + + 21-Dec-81 1512 HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) Common Lisp +Date: 21 Dec 1981 1806-EST +From: HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) +Subject: Common Lisp +To: rpg at SU-AI, griss at UTAH-20 + +I just had a conversation with JonL which I found to be somewhat +unsettling. I had hoped that Common Lisp was a sign that the Maclisp +community was willing to start doing a common development effort. It +begins to look like this is not the case. It sounds to me like the most +we can hope for is a bunch of Lisps that will behave quite differently, +have completely different user facilities, but will have a common subset +of language facilities which will allow knowlegable users to write +transportable code, if they are careful. I.e. it looks a lot like the +old Standard Lisp effort, wherein you tried to tweak existing +implementations to support the Standard Lisp primitives. I thought more +or less everyone agreed that hadn't worked so well, which is why the new +efforts at Utah to do something really transportable. I thought +everybody agreed that these days the way you did a Lisp was to write +some small kernel in an implementation language, and then have a lot of +Lisp code, and that the Lisp code would be shared. + +Supposing that we and DEC do agree to proceed with Common Lisp, would +you be interested in starting a Common Lisp sub-conspiracy, i.e. a group +of people interested in a shared Common Lisp implementation? While we +are going to have support from DEC, that support is going to be $70K +(including University overhead) which is going to be a drop in the +bucket if we have to do a whole system, rather than just a VM and some +tweaking. + +------- + + 21-Dec-81 0717 HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) Re: Common Lisp +Date: 21 Dec 1981 1012-EST +From: HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) +Subject: Re: Common Lisp +To: RPG at SU-AI +In-Reply-To: Your message of 20-Dec-81 2304-EST + +thanks. Are you sure Utah is producing Common Lisp? they have a thing +they call Standard Lisp, which is something completely different. I have +never heard of a Common Lisp project there, and I work very closely with +their Lisp development people so I think I would have. +------- + +I visited there the middle of last month for about 3 days and talked +the technical side of Common Lisp being implemented in their style. Martin told +me that if we only insisted on a small virtual machine with most of the +rest in Lisp code from the Common Lisp people he'd like to do it. + +I've been looking at their stuff pretty closely for the much behind schedule +Lisp evaluation thing and I'm pretty impressed with them. We discussed +grafting my S-1 Lisp compiler front end on top of their portable compiler. + -rpg- + 02-Jan-82 0908 Griss at UTAH-20 (Martin.Griss) Com L +Date: 2 Jan 1982 1005-MST +From: Griss at UTAH-20 (Martin.Griss) +Subject: Com L +To: guy.steele at CMU-10A, rpg at SU-AI +cc: griss at UTAH-20 + +I have retrieved the revisions and decisions, will look them over. +I will try to set up arrangements to be at POPL Mondat-Wednesday, +depends on flights, + +What is Common LISP schedule, next meeting, etc? Will we be invited to +attend, or is this one of topics for us to dicuss, etc. at POPL. +What in fact are we to dicuss, and what should I be thinking about. +As I explained, I hope to finish this round of PSL implementation +on DEC-20, VAX and maybe even first version on 68000 by then. +We then will fill in some missing features, and start bringup up REDUCE, +meta-compiler, BIGfloats, and PictureRLISP graphics. At that point I +have accomplished a significant amount of my NSF goals this year. + +Next step is to signficantly improve PSL, SYSLISP, merge with Mode Analysis +phase for improved LISP<->SYSLISP comunications and efficiency. + +At the same time, we will be looking over various LISP systems to see what sort of good +features can be adapted, and what sort of compatibility packages (eg, UCI-LISP +package, FranzLISP package, etc). + +Its certainly in this pahse that I could easily attempt to modify PSL to +provide a ComonLISP kernel, assuming that we have not already adapted much of the +code. +M +------- + + 15-Jan-82 0109 RPG Rutgers lisp development project + 14-Jan-82 1625 HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) Rutgers lisp development project +Mail-from: ARPANET site RUTGERS rcvd at 13-Jan-82 2146-PST +Date: 14 Jan 1982 0044-EST +From: HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility) +Subject: Rutgers lisp development project +To: bboard at RUTGERS, griss at UTAH-20, admin.mrc at SU-SCORE, jsol at RUTGERS +Remailed-date: 14 Jan 1982 1622-PST +Remailed-from: Mark Crispin +Remailed-to: Feigenbaum at SUMEX-AIM, REG at SU-AI + +It now appears that we are going to do an implementation of Common Lisp +for the DEC-20. This project is being funded by DEC. + + Why are we doing this project at all? + +This project is being done because a number of our researchers are going +to want to be able to move their programs to other systems than the +DEC-20. We are proposing to get personal machines over the next few +years. Sri has already run into problem in trying to give AIMDS to +someone that only has a VAX. Thus we think our users are going to want +to move to a dialect that is widely portable. + +Also, newer dialects have some useful new features. Although these +features can be put into Elisp, doing so will introduce +incompatibilities with old programs. R/UCI Lisp already has too many +inconsistencies introduced by its long history. It is probably better +to start with a dialect that has been designed in a coherent fashion. + + Why Common Lisp? + +There are only three dialects of Lisp that are in wide use within the +U.S. on a variety of systems: Interlisp, meta-Maclisp, and Standard +Lisp. (By meta-Maclisp I mean a family of dialects that are all +related to Maclisp and generally share ideas.) Of these, Standard Lisp +has a reputation of not being as "rich" a language, and in fact is not +taken seriously by most sites. This is not entirely fair, but there is +probably nothing we can do about that fact at this stage. So we are left +with Interlisp and meta-Maclisp. A number of implementors from the +Maclisp family have gotten together to define a common dialect that +combines the best features of their various dialects, while still being +reasonable in size. A manual is being produced for it, and once +finished will remain reasonably stable. (Can you believe it? +Documentation before coding!) This dialect is now called Common Lisp. +The advantages of Common Lisp over Interlisp are: + + - outside of BBN and Xerox, the Lisp development efforts now going on + all seem to be in the Maclisp family, and now are being + redirected towards Common Lisp. These efforts include + CMU, the Lisp Machine companies (Symbolics, LMI), LRL and MIT. + + - Interlisp has some features, particularly the spaghetti stack, + that make it impossible to implement as efficiently and cleanly + as Common Lisp. (Note that it is possible to get as good + effiency out of compiled code if you do not use these features, + and if you use special techniques when compiling. However that + doesn't help the interpreter, and is not as clean.) + + - Because of these complexities in Interlisp, implementation is a + large and complex job. ARPA funded a fairly large effort at + ISI, and even that seems to be marginal. This comment is based + on the report on the ISI project produced by Larry Masinter, + interlisp-vax-rpt.txt. Our only hope would be to take + the ISI implementation and attempt to transport it to the 20. + I am concerned that the result of this would be extremely slow. + I am also concerned that we might turn out not to have the + resources necessary to do it a good job. + + - There seems to be a general feeling that Common Lisp will have a + number of attractive features as a language. (Notice that I am + not talking about user facilities, which will no doubt take some + time before they reach the level of Interlisp.) Even people + within Arpa are starting to talk about it as the language of the + future. I am not personally convinced that it is seriously + superior to Interlisp, but it is as good (again, at the language + level), and the general Maclisp community seems to have a number + of ideas that are significantly in advance of what is likely to + show up in Interlisp with the current support available for it. + +There are two serious disadvantages of Common Lisp: + + - It does not exist yet. As of this week, there now seem to be + sufficient resources committed to it that we can be sure it will + be implemented. The following projects are now committed, at a + level sufficient for success: VAX (CMU), DEC-20 (Rutgers), PERQ + and other related machines (CMU), Lisp Machine (Symbolics), S-1 + (LRL). I believe this is sufficient to give the language a + "critical mass". + + - It does not have user facilities defined for it. CMU is heavily + committed to the Spice (PERQ) implementation, and will produce + the appropriate tools. They appear to be funded sufficiently + that this will happen. + + Why is DEC funding it, and what will be + our relationship with them? + +LCG (the group within DEC that is responsible for the DEC-20) is +interested in increasing the software that will support the full 30-bit +address space possible in the DEC-20 architecture. (Our current +processor will only use 23 bits of this, but this is still much better +than what was supported by the old software, which is 18 bits.) They +are proceeding at a reasonable rate with the software that is supported +by DEC. However they recognize that many important languages were +developed outside of DEC, and that it will not be practical for them +to develop large-address-space implementations of all of them in-house. +Thus DEC is attempting to find places that are working on the more +important of these languages, and they are funding efforts to develop +large address versions. They are sponsoring us for Lisp, and Utah +for C. Pascal is being done in a slightly complex fashion. (In fact +some of our support from DEC is for Pascal.) + +DEC does not expect to make money directly from these projects. We will +maintain control over the software we develop, and could sell support +for it if we wanted to. We are, of course, expected to make the software +widely available. (Most likely we will submit it to DECUS but also +distribute it ourselves.) What DEC gets out of it is that the large +address space DEC-20 will have a larger variety of software available +for it than otherwise. I believe this will be an important point for +them in the long run, since no one is going to want to buy a machine for +which only the Fortran compiler can generate programs larger than 256K. +Thus they are facing the following facts: + - they can't do things in house nearly as cheaply as universities + can do them. + - universities are no longer being as well funded to do language + development, particularly not for the DEC-20. + + How will we go about it? + +We have sufficient funding for one full-time person and one RA. Both +DEC and Rutgers are very slow about paperwork. But these people should +be in place sometime early this semester. The implementation will +involve a small kernel, in assembly language, with the rest done in +Lisp. We will get the Lisp code from CMU, and so will only have to do +the kernel. This project seems to be the same size as the Elisp +project, which was done within a year using my spare time and a month of +so of Josh's time. It seems clear that we have sufficient manpower. (If +you think maybe we have too much, I can only say that if we finish the +kernel sooner than planned, we will spend the time working on user +facilities, documentation, and helping users here convert to it.) CMU +plans to finish the VAX project in a year, with a preliminary version in +6 months and a polished release in a year. Our target is similar. +------- + + 19-Jan-82 1448 Feigenbaum at SUMEX-AIM more on common lisp +Scott: + Here are some messages I received recently. I'm worried about +Hedrick and the Vax. I'm not too worried about Lisp Machine, you guys, +and us guys (S-1). I am also worried about Griss and Standard Lisp, +which wants to get on the bandwagon. I guess I'd like to settle kernel +stuff first, fluff later. + + I understand your worry about sequences etc. Maybe we could try +to split the effort of studying issues a little. I dunno. It was just +a spur of the moment thought. + -rpg- + +19-Jan-82 1448 Feigenbaum at SUMEX-AIM more on common lisp +Date: 19 Jan 1982 1443-PST +From: Feigenbaum at SUMEX-AIM +Subject: more on common lisp +To: gabriel at SU-AI + +Mail-from: ARPANET host PARC-MAXC rcvd at 19-Jan-82 1331-PST +Date: 19 Jan 1982 13:12 PST +From: Masinter at PARC-MAXC +to: Feigenbaum@sumex-aim +Subject: Common Lisp- reply to Hedrick + +It is a shame that such misinformation gets such rapid dissemination.... + +Date: 19 Jan 1982 12:57 PST +From: Masinter at PARC-MAXC +Subject: Re: CommonLisp at Rutgers +To: Hedrick@Rutgers +cc: Masinter + +A copy of your message to "bboard at RUTGERS, griss at UTAH-20, admin.mrc at +SU-SCORE, jsol at RUTGERS" was forwarded to me. I would like to rebut some of +the points in it: + +I think that Common Lisp has the potential for being a good lisp dialect which +will carry research forward in the future. I do not think, however, that people +should underestimate the amount of time before Common Lisp could possibly be a +reality. + +The Common Lisp manual is nowhere near being complete. Given the current +rate of progress, the Common Lisp language definition would probably not be +resolved for two years--most of the hard issues have merely been deferred (e.g., +T and NIL, multiple-values), and there are many parts of the manual which are +simply missing. Given the number of people who are joining into the discussion, +some drastic measures will have to be taken to resolve some of the more serious +problems within a reasonable timeframe (say a year). + +Beyond that, the number of things which would have to be done to bring up a +new implementation of CommonLisp lead me to believe that the kernel for +another machine, such as the Dec-20, would take on the order of 5 man-years at +least. For many of the features in the manual, it is essential that the be built +into the kernel (most notably the arithmetic features and the multiple-value +mechanism) rather than in shared Lisp code. I believe that many of these may +make an implementation of Common Lisp more "difficult to implement efficiently +and cleanly" than Interlisp. + +I think that the Interlisp-VAX effort has been progressing quite well. They have +focused on the important problems before them, and are proceeding quite well. I +do not know for sure, but it is likely that they will deliver a useful system +complete with a programming enviornment long before the VAX/NIL project, +which has consumed much more resources. When you were interacting with the +group of Interlisp implementors at Xerox, BBN and ISI about implementing +Interlisp, we cautioned you about being optimistic about the amount of +manpower required. What seems to have happened is that you have come away +believing that Common Lisp would be easier to implement. I don't think that is +the case by far. + +Given your current manpower estimate (one full-time person and one RA) I do +not believe you have the critical mass to bring off a useful implemention of +Common Lisp. I would hate to see a replay of the previous situation with +Interlisp-VAX, where budgets were made and machines bought on the basis of a +hopeless software project. It is not that you are not competent to do a reasonable +job of implementation, it is just that creating a new implementation of an already +specified language is much much harder than merely creating a new +implementation of a language originally designed for another processor. + +I do think that an Interlisp-20 using extended virtual addressing might be +possible, given the amount of work that has gone into making Interlisp +transportable, the current number of compatible implementations (10, D, Jericho, +VAX) and the fact that Interlisp "grew up" in the Tenex/Tops-20 world, and that +some of the ordinarily more difficult problems, such as file names and operating +system conventions, are already tuned for that operating system. I think that a +year of your spare time and Josh for one month seems very thin. + +Larry +------- + + 20-Jan-82 2132 Fahlman at CMU-20C Implementations +Date: 21 Jan 1982 0024-EST +From: Fahlman at CMU-20C +Subject: Implementations +To: rpg at SU-AI +cc: steele at CMU-20C, fahlman at CMU-20C + +Dick, + +I agree that, where a choice must be made, we should give first priority +to settling kernel-ish issues. However, I think that the debate on +sequence functions is not detracting from more kernelish things, so I +see no reason not to go on with that. + +Thanks for forwarding Masinter's note to me. I found him to be awfully +pessimistic. I believe that the white pages will be essentially complete +and in a form that just about all of us can agree on within two months. +Of course, the Vax NIL crowd (or anyone else, for that matter) could delay +ratification indefinitely, even if the rest of us have come together, but I +think we had best deal with that when the need arises. We may have to +do something to force convergence if it does not occur naturally. My +estimate may be a bit optimistic, but I don't see how anyone can look at +what has happened since last April and decide that the white pages will +not be done for two years. + +Maybe Masinter's two years includes the time to develop all of the +yellow pages stuff -- editors, cross referencers, and so on. If so, I +tend to agree with his estimate. To an Interlisper, Common Lisp will +not offer all of the comforts of home until all this is done and stable, +and a couple of years is a fair estimate for all of this stuff, given +that we haven't really started thinking about this. I certainly don't +expect the Interlisp folks to start flocking over until all this is +ready, but I think we will have the Perq and Vax implementations +together within 6 months or so and fairly stable within a year. + +I had assumed that Guy had been keeping you informed of the negotiations +we have had with DEC on Common Lisp for VAX, but maybe he has not. The +situation is this: DEC has been extremely eager to get a Common Lisp up +on Vax VMS, due to pressure from Slumberger and some other customers, +plus their own internal plans for building some expert systems. Vax NIL +is not officially abandoned, but looks more and more dubious to them, +and to the rest of us. A couple of months ago, I proposed to DEC that +we could build them a fairly decent compiler just by adding a +post-processor to the Spice Lisp byte-code compiler. This +post-processor would turn the simple byte codes into in-line Vax +instructions and the more complex ones into jumps off to hand-coded +functions. Given this compiler, one could then get a Lisp system up +simply by using the Common Lisp in Common Lisp code that we have +developed for Spice. The extra effort to do the Vax implementation +amounts to only a few man-months and, once it is done, the system will +be totally compatible with the Spice implementation and will track any +improvements. With some additional optimizations and a bit of tuning, +the performance of this sytem should be comparable to any other Lisp on +the Vax, and probably better than Franz. + +DEC responded to this proposal with more enthusiasm than I expected. It +is now nearly certain that they will be placing two DEC employees +(namely, ex-CMU grad students Dave McDonald and Water van Roggen) here +in Pittsburgh to work on this, with consulting by Guy and me. The goal +is to get a Common Lisp running on the Vax in six months, and to spend +the following 6 months tuning and polishing. I feel confident that this +goal will be met. The system will be done first for VMS, but I think we +have convinced DEC that they should invest the epsilon extra effort +needed to get a Unix version up as well. + +So even if MIT totally drops the ball on VAX NIL, I think that it is a +pretty safe bet that a Common Lisp for Vax will be up within a year. If +MIT wins, so much the better: the world will have a choice between a +hairy NIL and a basic Common Lisp implementation. + +We are suggesting to Chuck Hedrick that he do essentially the same thing +to bring up a Common Lisp for the extended-address 20. If he does, then +this implementation should be done in finite time as well, and should +end up being fully compatible with the other systems. If he decides +instead to do a traditinal brute-force implementation with lots of +assembly code, then I tend to agree with Masinter's view: it will take +forever. + +I think we may have come up with an interesting kind of portability +here. Anyway, I thought you would be interested in hearing all the +latest news on this. + +-- Scott +------- + + 12-Sep-82 1623 RPG Vectors versus Arrays +To: common-lisp at SU-AI + +Watching the progress of the Common Lisp committee on the issue +of vectors over the past year I have come to the conclusion that +things are on the verge of being out of control. There isn't an +outstanding issue with regard to vectors versus arrays that +disturbs me especially as much as the trend of things - and almost +to the extent that I would consider removing S-1 Lisp from Common Lisp. + +When we first started out there were vectors and arrays; strings and bit +vectors were vectors, and we had the situation where a useful data +structure - derivable from others, though it is - had a distinct name and +a set of facts about them that a novice user could understand without too +much trouble. At last November's meeting the Symbolics crowd convinced us +that changing things were too hard for them, so strings became +1-dimensional arrays. Now, after the most recent meeting, vectors have +been canned and we are left with `quick arrays' or `simple arrays' or +something (I guess they are 1-dimensional arrays, are named `simple +arrays', and are called `vectors'?). + +Of course it is trivial to understand that `vectors' are a specialization +of n-dimensional arrays, but the other day McCarthy said something that +made me wonder about the idea of generalizing too far along these lines. +He said that mathematicians proceed by inventing a perfectly simple, +understandable object and then writing it up. Invariably someone comes +along a year later and says `you weren't thinking straight; your idea is +just a special case of x.' Things go on like this until we have things +like category theory that no one can really understand, but which have the +effect of being the most general generalization of everything. + +There are two questions: one regarding where the generalization about vectors +and arrays should be, and one regarding how things have gone politically. + +Perhaps in terms of pure programming language theory there is nothing +wrong with making vectors a special case of arrays, even to the extent of +making vector operations macros on array operations. However, imagine +explaining to a beginner, or a clear thinker, or your grandchildren, that +to get a `vector' you really make a `simple array' with all sorts of +bizarre options that simply inform the system that you want a streamlined +data structure. Imagine what you say when they ask you why you didn't just +include vectors to begin with. + +Well, you can then go on to explain the joys of generalizations, how +n-dimensional arrays are `the right thing,' and then imagine how you +answer the question: `why, then, is the minimum maximum for n, 63?' I +guess that's 9 times easier to answer than if the minimum maximum were 7. + +Clearly one can make this generalization and people can live with it. +We could make the generalization that LIST can take some other options, +perhaps stating that we want a CDR-coded list, and it can define some +accessor functions, and some auxilliary storage, and make arrays a +specialization of CONS cells, but that would be silly (wouldn't it??). + +The point is that vectors are a useful enough concept to not need to suffer +being a specialization of something else. + +The political point I will not make, but will leave to your imagination. + + -rpg- + + 12-Sep-82 1828 MOON at SCRC-TENEX Vectors versus Arrays +Date: Sunday, 12 September 1982 21:23-EDT +From: MOON at SCRC-TENEX +To: Dick Gabriel +Cc: common-lisp at SU-AI +Subject: Vectors versus Arrays + +I think the point here, which perhaps you don't agree with, is that +"vector" is not a useful concept to a user (why is a vector different from +a 1-dimensional array?) It's only a useful concept to the implementor, who +thinks "vector = load the Lisp pointer into a base register and index off +of it", but "array = go call an interpretive subroutine to chase indirect +pointers", or the code-bummer, who thinks "vector = fast", "array = slow". +Removing the vector/array distinction from the guts of the language is in +much the same spirit as making the default arithmetic operators generic +across all types of numbers. + +I don't think anyone from "the Symbolics crowd convinced us that changing +things were too hard for them"; our point was always that we thought it was +silly to put into a language designed in 1980 a feature that was only there +to save a few lines of code in the compiler for the VAX (and the S1), when +the language already requires declarations to achieve efficiency on those +machines. + +If you have a reasonable rebuttal to this argument, I at least will listen. +It is important not to return to "four implementations going in four different +directions." + + 12-Sep-82 2131 Scott E. Fahlman RPG on Vectors versus Arrays +Date: Sunday, 12 September 1982 23:47-EDT +From: Scott E. Fahlman +To: common-lisp at SU-AI +Subject: RPG on Vectors versus Arrays + + +I'm sure each of us could design a better language than Common Lisp is +turning out to be, and that each of those languages would be different. +My taste is close to RPG's, I think: in general, I like primitives that +I can build with better than generalizations that I can specialize. +However, Common Lisp is politics, not art. If we can come up with a +single language that we can all live with and use for real work, then we +will have accomplished a lot more than if we had individually gone off +an implemented N perfect Lisp systems. + +When my grandchildren, if any, ask me why certain things turned out in +somewhat ugly ways, I will tell them that it is for the same reason that +slaves count as 3/5 of a person in the U.S. Constitution -- that is the +price you pay for keeping the South on board (or the North, depending). +A few such crocks are nothing to be ashamed of, as long as the language +is still something we all want to use. Even with the recent spate of +ugly compromises, I think we're doing pretty well overall. + +For the record, I too believe that Common Lisp would be a clearer and +more intuitive language if it provided a simple vector data type, +documented as such, and presented hairy multi-D arrays with fill +pointers and displacement as a kind of structure built out of these +vectors. This is what we did in Spice Lisp, not to fit any particular +instruction set, but because it seemed obviously right, clear, and +easily maintainable. I have always felt, and still feel, that the Lisp +Machine folks took a wrong turn very early when they decided to provide +a hairy array datatype as primary with simple vectors as a degenerate +case. + +Well, we proposed that Common Lisp should uniformly do this our way, +with vectors as primary, and Symbolics refused to go along with this. I +don't think this was an unreasonable refusal -- it would have required +an immense effort for them to convert, and most of them are now used to +their scheme and like it. They have a big user community already, +unlike the rest of us. So we have spent the last N months trying to +come up with a compromise whereby they could do things their way, we +could do things our way, and everything would still be portable and +non-confusing. + +Unfortunately, these attempts to have it both ways led to all sorts of +confusing situations, and many of us gradually came to the conclusion +that, if we couldn't have things entirely our way, then doing things +pretty much the Lisp Machine way (with the addition of the simple-vector +hack) was the next best choice. In my opinion, the current proposal is +slightly worse than making vectors primary, but not much worse, and it +is certainly something that I can live with. The result in this case is +close to what Symbolics wanted all along, but I don't think this is the +result of any unreasonable political tactics on their part. Of course, +if RPG is seriously unhappy with the current proposal, we will have to +try again. There is always the possibility that the set of solutions +acceptable to RPG or to the S1 group does not intersect with the set +acceptable to Symbolics, and that a rift is inevitable, but let us hope +that it does not come down to that. + +-- Scott + + 13-Sep-82 1133 RPG Reply to Moon on `Vectors versus Arrays' +To: common-lisp at SU-AI +The difference to a user between a vector and an array is that an array is +a general object, with many features, and a vector is a commonly used +object with few features: in the array-is-king scheme one achieves a +vector via specialization. An analogy can be made between arrays/vectors +and Swiss Army knives. A Swiss army knife is a fine piece of engineering; +and, having been at MIT for a while 10 years ago, I know that they are +well-loved there. However, though a keen chef might own a Swiss Army +knife, he uses his boning knife to de-bone - he could use his Swiss Army +knife via specialization. We all think of programs as programs, not as +categories with flow-of-control as mappings, and, though the latter +is correct, it is the cognitive overhead of it that makes us favor the +former over the latter. + +To me the extra few lines of code in the compiler are meaningless (why +should a few extra lines bother the co-author of a 300-page compiler?); a +few extra lines of emitted code are not very relevant either if it comes +to that (it is , after all, an S-1). Had I been concerned with saving `a +few lines of code in the compiler' you can trust that I would have spoken +up earlier about many other things. + +The only point I am arguing is that the cognitive overhead of making +vectors a degenerate array *may* be too high. + + -rpg- + + 14-Sep-82 1823 JonL at PARC-MAXC Re: `Vectors versus Arrays', and the original compromise +Date: 14 Sep 1982 18:23 PDT +From: JonL at PARC-MAXC +Subject: Re: `Vectors versus Arrays', and the original compromise +In-reply-to: RPG's message of 13 Sep 1982 1133-PDT +To: Dick Gabriel , Moon@mit-mc +cc: common-lisp at SU-AI + +During the Nov 1981 CommonLisp meeting, the LispM folks (Symbolics, and +RG, and RMS) were adamantly against having any datatype for "chunked" +data other than arrays. I thought, however, that some sort of compromise was +reached shortly afterwards, at least with the Symbolics folks, whereby VECTORs +and STRINGs would exist in CL pretty much the way they do in other lisps not +specifically intended for special purpose computers (e.g., StandardLisp, PSL, +Lisp/370, VAX/NIL etc). + +It was admitted that the Lispm crowd could emulate these datatypes by some +trivial variations on their existing array mechanisms -- all that would be forced +on the Lispm crowd is some kind of type-integrity for vectors and strings, and +all that would be forced on the implementors of the other CLs would be the +minimal amount for these two "primitive" datatypes. Portable code ought to use +CHAR or equivalent rather than AREF on strings, but that wouldn't be required, +since all the generic operations would still work for vectors and strings. + +So the questions to be asked are: + 1) How well have Lisps without fancy array facilities served their + user community? How well have they served the implementors + of that lisp? Franz and PDP10 MacLisp have only primitive + array facilities, and most of the other mentioned lisps have nothing + other than vectors and strings (and possibly bit vectors). + 2) How much is the cost of requiring full-generality arrays to be + part of the white pages? For example, can it be assured that all + memory management for them will be written in portable CL, and + thus shared by all implementations? How many different compilers + will have to solve the "optimization" questions before the implementation + dependent upon that compiler will run in real time? + 3) Could CL thrive with all the fancy stuff of arrays (leaders, fill pointers, + and even multiple-dimensioning) in the yellow pages? Could a CL + system be reasonably built up from only the VECTOR- and STRING- + specific operations (along with a primitive object-oriented thing, which for + lack of a better name I'll call EXTENDs, as in the NIL design)? As one + data point, I'll mention that VAX/NIL was so built, and clever things + like Flavors were indeed built over the primitives provided. +I'd think that the carefully considered opinions of those doing implementations +on "stock" hardware should prevail, since the extra work engendered for the +special-purpose hardware folks has got to be truly trivial. + +It turns out that I've moved from the "stock" camp into the "special-purpose" +camp, and thus in one sense favor the current LispM approach to index- +accessible data (one big uniform data frob, the ARRAY). But this may +turn out to be relatively unimportant -- in talking with several sophisticated +Interlisp users, it seems that the more important issues for them are the ability +to have arrays with user-tailorable accessing methods (I may have to remind +you all that Interlisp doesn't even have multi-dimension arrays!), and the ability +to extend certain generic operators, like PLUS, to arrays (again, the reminder that +Interlisp currently has no standard for object-oriented programming, or for +procedural attachment). + + + 04-Oct-82 2145 STEELE at CMU-20C /BALLOT/ +Date: 5 Oct 1982 0041-EDT +From: STEELE at CMU-20C +Subject: /BALLOT/ +To: common-lisp at SU-AI +cc: b.steele at CMU-10A + +????????????????????????????????????????????????????????????????????????????? +? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? +? % ================================================================= % ? +? % = $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ = % ? +? % = $ +++++++++++++++++++++++++++++++++++++++++++++++++++++ $ = % ? +? % = $ + ############################################### + $ = % ? +? % = $ + # ///////////////////////////////////////// # + $ = % ? +? % = $ + # / The October 1982 Common LISP Ballot / # + $ = % ? +? % = $ + # ///////////////////////////////////////// # + $ = % ? +? % = $ + ############################################### + $ = % ? +? % = $ +++++++++++++++++++++++++++++++++++++++++++++++++++++ $ = % ? +? % = $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ = % ? +? % ================================================================= % ? +? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? +????????????????????????????????????????????????????????????????????????????? + +Here is what you have all been waiting for! I need an indication of +consensus or lack thereof on the issues that have been discussed by +network mail since the August 1982 meeting, particularly on those issues +that were deferred for proposal for which proposals have now been made. + +There are 28 questions, each requiring only a one-letter answer. As always, +if you don't like any of the choices, answer "x". To make my life easier +by permitting mechanical collation of responses, please respond as follows: + (a) send a reply message to Guy.Steele @ CMU-10A. + (b) *PLEASE* be sure the string "/BALLOT/" is in the subject line, + as it is in this message (the double quotes, not the slashes, + are metasyntactic!). + (c) The very first non-blank line of your message should have + exactly 29 non-blank characters on it. The first should be a + tilde ("~") and the rest should be your votes. + You may put spaces between the letters to improve readability. + (d) Following the first non-blank line, place any remarks about + issues on which you voted "x". +Thank you for your help. I would appreciate response by Friday, October 8. +--Guy + +1. How shall the case for a floating-point exponent specifier +output by PRINT and FORMAT be determined? + (a) upper case, for example 3.5E6 + (b) lower case, for example 3.5e6 + (c) a switch + (d) implementation-dependent + +2. Shall we change the name SETF to be SET? (y) yes (n) no + +3. Shall there be a type specifier QUOTE, such that (QUOTE x) = (MEMBER x)? +Then MEMBER can be eliminated; (MEMBER x y z) = (OR 'x 'y 'z). Also one can +write such things as (OR INTEGER 'FOO) instead of (OR INTEGER (MEMBER FOO)). + (y) yes (n) no + +4. Shall MOON's proposal for LOAD keywords, revised as shown below, be used? + (y) yes (n) no +---------------------------------------------------------------- +Date: Wednesday, 25 August 1982, 14:01-EDT +From: David A. Moon + [slightly revised] +Here is a revised proposal: + +Keyword Default Meaning + +:PACKAGE NIL NIL means use file's native package, non-NIL + is a package or name of package to load into. + +:VERBOSE *LOAD-VERBOSE* T means print a message saying what file is + being loaded into which package. + +:PRINT NIL T means print values of forms as they are evaluated. + +:ERROR T T means handle errors normally; NIL means that + a file-not-found error should return NIL + rather than signalling an error. LOAD returns + the pathname (or truename??) of the file it + loaded otherwise. + +:SET-DEFAULT-PATHNAME *LOAD-SET-DEFAULT-PATHNAME* + T means update the pathname default + for LOAD from the argument, NIL means don't. + +:STREAM NIL Non-NIL means this is an open stream to be + loaded from. (In the Lisp machine, the + :CHARACTERS message to the stream is used to + determine whether it contains text or binary.) + The pathname argument is presumed to be associated + with the stream, in systems where that information + is needed. + +The global variables' default values are implementation dependent, according +to local conventions, and may be set by particular users according to their +personal taste. + +I left out keywords to allow using a different set of defaults from the normal +one and to allow explicit control over whether a text file or a binary file +is being loaded, since these don't really seem necessary. If we put them in, +the consistent names would be :DEFAULT-PATHNAME, :CHARACTERS, and :BINARY. +---------------------------------------------------------------- + +5. Shall closures over dynamic variables be removed from Common LISP? + (y) yes (n) no + +6. Shall LOOP, as summarized below, be included in Common LISP? + (y) yes (n) no +---------------------------------------------------------------- +Date: 26 August 1982 18:51-EDT +From: David A. Moon + +Here is an extremely brief summary of the proposed new LOOP design, which +has not yet been finalized. Consult the writeup on LOOP in the Lisp +Machine manual or MIT LCS TM-169 for background information. Constructive +comments are very welcome, but please reply to BUG-LOOP at MIT-ML, not to +me personally. + +(LOOP form form...) repeatedly evaluates the forms. + +In general the body of a loop consists of a series of clauses. Each +clause is either: a series of one or more lists, which are forms to be +evaluated for effect, delimited by a symbol or the end of the loop; or +a clause-introducing symbol followed by idiosyncratic syntax for that +kind of clause. Symbols are compared with SAMEPNAMEP. Atoms other than +symbols are in error, except where a clause's idiosyncratic syntax permits. + +1. Primary clauses + +1.1 Iteration driving clauses + +These clauses run a local variable through a series of values and/or +generate a test for when the iteration is complete. + +REPEAT +FOR/AS ... +CYCLE ... + + I won't go into the full syntax here. Features include: setting + to values before starting/on the first iteration/on iterations after + the first; iterating through list elements/conses; iterating through + sequence elements, forwards or backwards, with or without sequence-type + declaration; iterating through arithmetic progressions. CYCLE reverts + to the beginning of the series when it runs out instead of terminating + the iteration. + + It is also possible to control whether or not an end-test is generated + and whether there is a special epilogue only evaluated when an individual + end-test is triggered. + +1.2 Prologue and Epilogue + +INITIALLY form form... forms to be evaluated before starting, but + after binding local variables. +FINALLY form form... forms to be evaluated after finishing. + +1.3 Delimiter + +DO a sort of semicolon needed in odd situations to terminate a clause, + for example between an INITIALLY clause and body forms when no named + clause (e.g. an iteration-driving clause) intervenes. + We prefer this over parenthesization of clauses because of the + general philosophy that it is more important to make the simple cases + as readable as possible than to make micro-improvements in the + complicated cases. + +1.4 Blockname + +NAMED name Gives the block generated by LOOP a name so that + RETURN-FROM may be used. + +This will be changed to conform with whatever is put into Common Lisp +for named PROGs and DOs, if necessary. + +2. Relevant special forms + +The following special forms are useful inside the body of a LOOP. Note +that they need not appear at top level, but may be nested inside other +Lisp forms, most usefully bindings and conditionals. + +(COLLECT [USING ] [INTO ] [BACKWARDS] + [FROM ] [IF-NONE ] [[TYPE] ]) +This special form signals an error if not used lexically inside a LOOP. +Each time it is evaluated, is evaluated and accumulated in a way +controlled by ; the default is to form an ordered list. +The accumulated values are returned from the LOOP if it is finished +normally, unless INTO is used to put them into a variable (which gets +bound locally to the LOOP). Certain accumulation modes (boolean AND and +OR) cause immediate termination of the LOOP as soon as the result is known, +when not collecting into a variable. + +Collection modes are extensible by the user. A brief summary of predefined +ones includes aggregated boolean tests; lists (both element-by-element and +segment-by-segment); commutative/associative arithmetic operators (plus, +times, max, min, gcd, lcm, count); sets (union, intersection, adjoin); +forming a sequence (array, string). + +Multiple COLLECT forms may appear in a single loop; they are checked for +compatibility (the return value cannot both be a list of values and a +sum of numbers, for example). + +(RETURN value) returns immediately from a LOOP, as from any other block. +RETURN-FROM works too, of course. + +(LOOP-FINISH) terminates the LOOP, executing the epilogue and returning +any value defined by a COLLECT special form. + +[Should RESTART be interfaced to LOOP, or only be legal for plain blocks?] + +3. Secondary clauses + +These clauses are useful abbreviations for things that can also be done +using the primary clauses and Lisp special forms. They exist to make +simple cases more readable. As a matter of style, their use is strongly +discouraged in complex cases, especially those involving complex or +nested conditionals. + +3.1 End tests + +WHILE (IF (NOT ) (LOOP-FINISH)) +UNTIL (IF (LOOP-FINISH)) + +3.2 Conditionals + +WHEN The clause is performed conditionally. +IF synonymous with WHEN +UNLESS opposite of WHEN + +AND May be suffixed to a conditional. These two +ELSE might be flushed as over-complex. + +3.3 Bindings + +WITH ... Equivalent to wrapping LET around the LOOP. + This exists to promote readability by decreasing + indentation. + +3.4 Return values + +RETURN synonymous with (RETURN ) + +COLLECT ... synonymous with (COLLECT ...) +NCONC ... synonymous with (COLLECT ... USING NCONC) +APPEND, SUM, COUNT, MINIMIZE, etc. are analogous +ALWAYS, NEVER, THEREIS abbreviations for boolean collection + +4. Extensibility + +There are ways for users to define new iteration driving clauses which +I will not go into here. The syntax is more flexible than the existing +path mechanism. + +There are also ways to define new kinds of collection. + +5. Compatibility + +The second generation LOOP will accept most first-generation LOOP forms +and execute them in the same way, although this was not a primary goal. +Some complex (and unreadable!) forms will not execute the same way or +will be errors. + +6. Documentation + +We intend to come up with much better examples. Examples are very +important for developing a sense of style, which is really what LOOP +is all about. +---------------------------------------------------------------- + +7. Regardless of the outcome of the previous question, shall CYCLE +be retained and be renamed LOOP, with the understanding that statements +of the construct must be non-atomic, and atoms as "statements" are +reserved for extensions, and any such extensions must be compatible +with the basic mening as a pure iteration construct? + (y) yes (n) no + +8. Shall ARRAY-DIMENSION be changed by exchanging its arguments, +to have the array first and the axis number second, to parallel +other indexing operations? + (y) yes (n) no + +9. Shall MACROEXPAND, as described below, replace the current definition? + (y) yes (n) no +---------------------------------------------------------------- +Date: Sunday, 29 August 1982, 21:26-EDT +From: David A. Moon + +Here is my promised proposal, with some help from Alan. + +MACRO-P becomes a predicate rather than a pseudo-predicate. +Everything on pages 92-93 (29July82) is flushed. + +Everything, including the compiler, expands macros by calling MACROEXPAND +or MACROEXPAND-1. A variable, *MACROEXPAND-HOOK*, is provided to allow +implementation of displacing, memoization, etc. + +The easiest way to show the details of the proposal is as code. I'll try to +make it exemplary. + +(DEFVAR *MACROEXPAND-HOOK* 'FUNCALL) + +(DEFUN MACROEXPAND (FORM &AUX CHANGED) + "Keep expanding the form until it is not a macro-invocation" + (LOOP (MULTIPLE-VALUE (FORM CHANGED) (MACROEXPAND-1 FORM)) + (IF (NOT CHANGED) (RETURN FORM)))) + +(DEFUN MACROEXPAND-1 (FORM) + "If the form is a macro-invocation, return the expanded form and T. + This is the only function that is allowed to call macro expander functions. + *MACROEXPAND-HOOK* is used to allow memoization." + (DECLARE (VALUES FORM CHANGED-FLAG)) + + (COND ((AND (PAIRP FORM) (SYMBOLP (CAR FORM)) (MACRO-P (CAR FORM))) + (LET ((EXPANDER (---get expander function--- (CAR FORM)))) + ---check for wrong number of arguments--- + (VALUES (FUNCALL *MACROEXPAND-HOOK* EXPANDER FORM) T))) + (T FORM))) + +;You can set *MACROEXPAND-HOOK* to this to get traditional displacing +(DEFUN DISPLACING-MACROEXPAND-HOOK (EXPANDER FORM) + (LET ((NEW-FORM (FUNCALL EXPANDER FORM))) + (IF (ATOM NEW-FORM) + (SETQ NEW-FORM `(PROGN ,NEW-FORM))) + (RPLACA FORM (CAR NEW-FORM)) + (RPLACD FORM (CDR NEW-FORM)) + FORM)) + +The above definition of MACROEXPAND-1 is oversimplified, since it can +also expand other things, including lambda-macros (the subject of a separate +proposal that has not been sent yet) and possibly implementation-dependent +things (substs in the Lisp machine, for example). + +The important point here is the division of labor. MACROEXPAND-1 takes care +of checking the length of the macro-invocation to make sure it has the right +number of arguments [actually, the implementation is free to choose how much +of this is done by MACROEXPAND-1 and how much is done by code inserted into +the expander function by DEFMACRO]. The hook takes care of memoization. The +macro expander function is only concerned with translating one form into +another, not with bookkeeping. It is reasonable for certain kinds of +program-manipulation programs to bind the hook variable. + +I introduced a second value from MACROEXPAND-1 instead of making MACROEXPAND +use the traditional EQ test. Otherwise a subtle change would have been +required to DISPLACING-MACROEXPAND-HOOK, and some writers of hooks might get +it wrong occasionally, and their code would still work 90% of the time. + + +Other issues: + +On page 93 it says that MACROEXPAND ignores local macros established by +MACROLET. This is clearly incorrect; MACROEXPAND has to get called with an +appropriate lexical context available to it in the same way that EVAL does. +They are both parts of the interpreter. I don't have anything to propose +about this now; I just want to point out that there is an issue. I don't +think we need to deal with the issue immediately. + +A related issue that must be brought up is whether the Common Lisp subset +should include primitives for accessing and storing macro-expansion +functions. Currently there is only a special form (MACRO) to set a +macro-expander, and no corresponding function. The Lisp machine expedient of +using the normal function-definition primitive (FDEFINE) with an argument of +(MACRO . expander) doesn't work in Common Lisp. Currently there is a gross +way to get the macro expander function, but no reasonable way. I don't have +a clear feeling whether there are programs that would otherwise be portable +except that they need these operations. +---------------------------------------------------------------- + +10. Shall all global system-defined variables have names beginning +and ending with "*", for example *PRINLEVEL* instead of PRINLEVEL +and *READ-DEFAULT-FLOAT-FORMAT* instead of READDEFAULT-FLOAT-FORMAT? + (y) yes (n) no + +11. Same question for named constants (other than T and NIL), such as +*PI* for PI and *MOST-POSITIVE-FIXNUM* for MOST-POSITIVE-FIXNUM. + (y) yes (n) no (o) yes, but use a character other than "*" + +12. Shall a checking form CHECK-TYPE be introduced as described below? + (y) yes (n) no +---------------------------------------------------------------- +Date: Thursday, 26 August 1982, 03:04-EDT +From: David A. Moon + +See p.275 of the 29 July Common Lisp manual and p.275 of the revision +handed out at the Lisp conference. + +I suggest that we include CHECK-ARG-TYPE in the language. Although +CHECK-ARG, CHECK-ARG-TYPE, and ASSERT have partially-overlapping +functionality, each has its own valuable uses and I think all three +ought to be in the language. + +Note that CHECK-ARG and CHECK-ARG-TYPE are used when you want explicit +run-time checking, including but not limited to writing the interpreter +(which of course is written in Lisp, not machine language!). + +The details: +CHECK-ARG-TYPE arg-name type &OPTIONAL type-string [macro] + +If (TYPEP arg-name 'type) is false, signal an error. The error message +includes arg-name and a "pretty" English-language form of type, which +can be overridden by specifying type-string (this override is rarely +used). Proceeding from the error sets arg-name to a new value and +makes the test again. + +Currently arg-name must be a variable, but it should be generalized to +any SETF'able place. + +type and type-string are not evaluated. + +This isn't always used for checking arguments, since the value of any +variable can be checked, but it is usually used for arguments and there +isn't an alternate name that more clearly describes what it does. + +Date: 2 Sep 1982 12:30 PDT +From: JonL at PARC-MAXC + +PDP10 MacLisp and VAX/NIL have had the name CHECK-TYPE for several +years for essentially this functionality (unless someone has recently renamed +it). Since it is used to certify the type of any variable's value, it did not +include the "-ARG" part. The motivation was to have a "checker" which was +more succinct than CHECK-ARGS, but which would generally open-code the +type test (and hence introduce no delay to the non-error case). + +I rather prefer the semantics you suggested, namely that the second argument +to CHECK-TYPE be a type name (given the CommonLisp treatment of type +hierarchy). At some level, I'd think a "promise" of fast type checking should +be guaranteed (in compiled code) so that persons will prefer to use this +standardized facililty; without some indication of performance, one would +be tempted to write his own in order not to slow down the common case. +---------------------------------------------------------------- + +13. Shall a checking form CHECK-SUBSEQUENCE be introduced as described below? + (y) yes (n) no +---------------------------------------------------------------- +Date: 2 Sep 1982 12:30 PDT +From: JonL at PARC-MAXC + +If the general sequence functions continue to thrive in CommonLisp, I'd +like to suggest that the corresponding CHECK-SUBSEQUENCE macro (or +whatever renaming of it should occur) be included in CommonLisp. + + CHECK-SUBSEQUENCE ( ) &optional ) + +provides a way to certify that holds a sequence datum of the type +, or of any suitable sequence type (e.g., LIST, or STRING or +VECTOR etc) if is null; and that the indicated subsequence +in it is within the size limits. + +[GLS: probably is more appropriate than for Common LISP.] +---------------------------------------------------------------- + +14. Shall the functions LINE-OUT and STRING-OUT, eliminated in November, +be reinstated? + (y) yes (n) no + +15. Shall the REDUCE function be added as described below? + (y) yes (n) no +---------------------------------------------------------------- +Date: 3 September 1982 1756-EDT (Friday) +From: Guy.Steele at CMU-10A + +I would like to mildly re-propose the REDUCE function for Common +LISP, now that adding it would require only one new function, not ten +or fifteen: + +REDUCE function sequence &KEY :START :END :FROM-END :INITIAL-VALUE + The specified subsequence of "sequence" is reduced, using the "function" + of two arguments. The reduction is left-associative, unless + :FROM-END is not false, in which case it is right-associative. + If the an :INITIAL-VALUE is given, it is logically placed before the + "sequence" (after it if :FROM-END is true) and included in the + reduction operation. If no :INITIAL-VALUE is given, then the "sequence" + must not be empty. (An alternative specification: if no :INITIAL-VALUE + is given, and "sequence" is empty, then "function" is called with + zero arguments and the result returned. How about that? This idea + courtesy of Dave Touretzky.) + + (REDUCE #'+ '(1 2 3 4)) => 10 + (REDUCE #'- '(1 2 3 4)) => -8 + (REDUCE #'- '(1 2 3 4) :FROM-END T) => -2 ;APL-style + (REDUCE #'LIST '(1 2 3 4)) => (((1 2) 3) 4) + (REDUCE #'LIST '(1 2 3 4) :FROM-END T) => (1 (2 (3 4))) + (REDUCE #'LIST '(1 2 3 4) :INITIAL-VALUE 'FOO) => ((((FOO 1) 2) 3) 4) + (REDUCE #'LIST '(1 2 3 4) :FROM-END T :INITIAL-VALUE 'FOO) + => (1 (2 (3 (4 FOO)))) +---------------------------------------------------------------- + +16. Shall the Bawden/Moon solution to the "invisible block" problem +be accepted? The solution is to define (RETURN x) to mean precisely +(RETURN-FROM NIL x), and to specify that essentially all standard +iterators produce blocks named NIL. A block with a name other than +NIL cannot capture a RETURN, only a RETURN-FROM with a matching name. + (y) yes (n) no + +17. Shall the TAGBODY construct be incorporated? This expresses just +the behavior of the GO aspect of a PROG. Any atoms in the body +are not evaluated, but serve as tags that may be specified to GO. +Tags have lexical scope and dynamic extent. TAGBODY always returns NIL. + (y) yes (n) no + +18. What shall be done about RESTART? The following alternatives seem to +be the most popular: + (a) Have no RESTART form. + (b) RESTART takes the name of a block. What happens when you say + (RESTART NIL) must be clarified for most iteration constructs. + (c) There is a new binding form called, say, RESTARTABLE. + Within (RESTARTABLE FOO . body), (RESTART FOO) acts as a jump + to the top of the body of the enclosing, matching RESTARTABLE form. + RESTART tags have lexical scope and dynamic extent. + +19. Shall there be a built-in identity function, and if so, what shall it +be called? + (c) CR (i) IDENTITY (n) no such function + +20. Shall the #*... bit-string syntax replace #"..."? That is, shall what +was before written #"10010" now be written #*10010 ? + (y) yes (n) no + +21. Which of the two outstanding array proposals (below) shall be adopted? + (s) the "simple" proposal + (r) the "RPG memorial" proposal + (m) the "simple" proposal as amended by Moon +---------------------------------------------------------------- +*********** "Simple" proposal ********** +Date: Thursday, 16 September 1982 23:27-EDT +From: Scott E. Fahlman + +Here is a revision of my array proposal, fixed up in response to some of +the feedback I've received. See if you like it any better than the +original. In particular, I have explictly indicated that certain +redundant forms such as MAKE-VECTOR should be retained, and I have +removed the :PRINT keyword, since I now believe that it causes more +trouble than it is worth. A revised printing proposal appears at the +end of the document. + + +Arrays can be 1-D or multi-D. All arrays can be created by MAKE-ARRAY +and can be accessed with AREF. Storage is done via SETF of an AREF. +The term VECTOR refers to any array of exactly one dimension. +Vectors are special, in that they are also sequences, and can be +referenced by ELT. Also, only vectors can have fill pointers. + +Vectors can be specialized along several distinct axes. The first is by +the type of the elements, as specified by the :ELEMENT-TYPE keyword to +MAKE-ARRAY. A vector whose element-type is STRING-CHAR is referred to +as a STRING. Strings, when they print, use the "..." syntax; they also +are the legal inputs to a family of string-functions, as defined in the +manual. A vector whose element-type is BIT (alias (MOD 2)), is a +BIT-VECTOR. These are special because they form the set of legal inputs +to the boolean bit-vector functions. (We might also want to print them +in a strange way -- see below.) + +Some implementations may provide a special, highly efficient +representation for simple vectors. A simple vector is (of course) 1-D, +cannot have a fill pointer, cannot be displaced, and cannot be altered +in size after its creation. To get a simple vector, you use the :SIMPLE +keyword to MAKE-ARRAY with a non-null value. If there are any +conflicting options specified, an error is signalled. If an +implementation does not support simple vectors, this keyword/value is +ignored except that the error is still signalled on inconsistent cases. + +We need a new set of type specifiers for simple things: SIMPLE-VECTOR, +SIMPLE-STRING, and SIMPLE-BIT-VECTOR, with the corresponding +type-predicate functions. Simple vectors are referenced by AREF in the +usual way, but the user may use THE or DECLARE to indicate at +compile-time that the argument is simple, with a corresponding increase +in efficiency. Implementations that do not support simple vectors +ignore the "simple" part of these declarations. + +Strings (simple or non-simple) self-eval; all other arrays cause an +error when passed to EVAL. EQUAL descends into strings, but not +into any other arrays. EQUALP descends into arrays of all kinds, +comparing the corresponding elements with EQUALP. EQUALP is false +if the array dimensions are not the same, but it is not sensitive to +the element-type of the array, whether it is simple, etc. In comparing +the dimensions of vectors, EQUALP uses the length from 0 to the fill +pointer; it does not look at any elements beyond the fill pointer. + +The set of type-specifiers required for all of this is ARRAY, VECTOR, +STRING, BIT-VECTOR, SIMPLE-VECTOR, SIMPLE-STRING, SIMPLE-BIT-VECTOR. +Each of these has a corresponding type-P predicate, and each can be +specified in list from, along with the element-type and dimension(s). + +MAKE-ARRAY takes the following keywords: :ELEMENT-TYPE, :INITIAL-VALUE, +:INITIAL-CONTENTS, :FILL-POINTER, and :SIMPLE. There is still some +discussion as to whether we should retain array displacement, which +requires :DISPLACED-TO and :DISPLACED-INDEX-OFFSET. + +The following functions are redundant, but should be retained for +clarity and emphasis in code: MAKE-VECTOR, MAKE-STRING, MAKE-BIT-VECTOR. +MAKE-VECTOR takes the same keywords as MAKE-ARRAY, but can only take a +single integer as the dimension argument. MAKE-STRING and +MAKE-BIT-VECTOR are like MAKE-VECTOR, but do not take the :ELEMENT-TYPE +keyword, since the element-type is implicit. Similarly, we should +retain the forms VREF, CHAR, and BIT, which are identical in operation +to AREF, but which declare their aray argument to be VECTOR, STRING, or +BIT-VECTOR, respectively. + +If the :SIMPLE keyword is not specified to MAKE-ARRAY or related forms, +the default is NIL. However, vectors produced by random forms such as +CONCATENATE are simple, and vectors created when the reader sees #(...) +or "..." are also simple. + +As a general rule, arrays are printed in a simple format that, upon +being read back in, produces a form that is EQUALP to the original. +However, some information may be lost in the printing process: +element-type restrictions, whether a vector is simple, whether it has a +fill pointer, whether it is displaced, and the identity of any element +that lies beyond the fill pointer. This choice was made to favor ease +of interactive use; if the user really wants to preserve in printed form +some complex data structure containing non-simple arrays, he will have +to develop his own printer. + +A switch, SUPPRESS-ARRAY-PRINTING, is provided for users who have lots +of large arrays around and don't want to see them trying to print. If +non-null, this switch causes all arrays except strings to print in a +short, non-readable form that does not include the elements: +#. In addition, the printing of arrays and vectors (but not +of strings) is subject to PRINLEVEL and PRINLENGTH. + +Strings, simple or otherwise, print using the "..." syntax. Upon +read-in, the "..." syntax creates a simple string. + +Bit-vectors, simple or otherwise, print using the #"101010..." syntax. +Upon read-in, this format produces a simple bit-vector. Bit vectors do +observe SUPPRESS-ARRAY-PRINTING. + +All other vectors print out using the #(...) syntax, observing +PRINLEVEL, PRINLENGTH, and SUPPRESS-ARRAY-PRINTING. This format reads +in as a simple vector of element-type T. + +All other arrays print out using the syntax #nA(...), where n is the +number of dimensions and the list is a nest of sublists n levels deep, +with the array elements at the deepest level. This form observes +PRINLEVEL, PRINLENGTH, and SUPPRESS-ARRAY-PRINTING. This format reads +in as an array of element-type T. + +Query: I am still a bit uneasy about the funny string-like syntax for +bit vectors. Clearly we need some way to read these in that does not +turn into a type-T vector. An alternative might be to allow #(...) to +be a vector of element-type T, as it is now, but to take the #n(...) +syntax to mean a vector of element-type (MOD n). A bit-vector would +then be #2(1 0 1 0...) and we would have a parallel notation available +for byte vectors, 32-bit word vectors, etc. The use of the #n(...) +syntax to indicate the length of the vector always struck me as a bit +useless anyway. One flaw in this scheme is that it does not extend to +multi-D arrays. Before someone suggests it, let me say that I don't +like #nAm(...), where n is the rank and m is the element-type -- it +would be too hard to remember which number was which. But even with +this flaw, the #n(...) syntax might be useful. + +********** "RPG memorial" proposal ********** +Date: Thursday, 23 September 1982 00:38-EDT +From: Scott E. Fahlman + +Several people have stated that they dislike my earlier proposal because +it uses the good names (VECTOR, STRING, BIT-VECTOR, VREF, CHAR, BIT) on +general 1-D arrays, and makes the user say "simple" when he wants one of +the more specialized high-efficiency versions. This makes extra work +for users, who will want simple vectors at least 95% of the time. In +addition, there is the argument that simple vectors should be thought of +as a first-class data-type (in implementations that provide them) and +not as a mere degenerate form of array. + +Just to see what it looks like, I have re-worked the earlier proposal to +give the good names to the simple forms. This does not really eliminate +any of the classes in the earlier proposal, since each of those classes +had some attributes or operations that distinguished it from the others. + +Since there are getting to be a lot of proposals around, we need some +nomencalture for future discussions. My first attempt, with the +user-settable :PRINT option should be called the "print-switch" +proposal; the next one, with the heavy use of the :SIMPLE switch should +be the "simple-switch" proposal; this one can be called the "RPG +memorial" proposal. Let me know what you think about this vs. the +simple-switch version -- I can live with either, but I really would like +to nail this down pretty soon so that we can get on with the +implementation. + +Arrays can be 1-D or multi-D. All arrays can be created by MAKE-ARRAY +and can be accessed with AREF. Storage is done via SETF of an AREF. +1-D arrays are special, in that they are also of type SEQUENCE, and can +be referenced by ELT. Also, only 1-D arrays can have fill pointers. + +Some implementations may provide a special, highly efficient +representation for simple 1-D arrays, which will be of type VECTOR. A +vector is 1-dimensional, cannot have a fill pointer, cannot be +displaced, and cannot be altered in size after its creation. To get a +vector, you use the :VECTOR keyword to MAKE-ARRAY with a non-null value. +If there are any conflicting options specified, an error is signalled. +The MAKE-VECTOR form is equivalent to MAKE-ARRAY with :VECTOR T. + +A STRING is a VECTOR whose element-type (specified by the :ELEMENT-TYPE +keyword) is STRING-CHAR. Strings are special in that they print using +the "..." syntax, and they are legal inputs to a class of "string +functions". Actually, these functions accept any 1-D array whose +element type is STRING-CHAR. This more general class is called a +CHAR-SEQUENCE. + +A BIT-VECTOR is a VECTOR whose element-type is BIT, alias (MOD 2). +Bit-vectors are special in that they print using the #*... syntax, and +they are legal inputs to a class of boolean bit-vector functions. +Actually, these functions accept any 1-D array whose element-type is +BIT. This more general class is called a BIT-SEQUENCE. + +All arrays can be referenced via AREF, but in some implementations +additional efficiency can be obtained by declaring certain objects to be +vectors, strings, or bit-vectors. This can be done by normal +type-declarations or by special accessing forms. The form (VREF v n) is +equivalent to (AREF (THE VECTOR v) n). The form (CHAR s n) is +equivalent to (AREF (THE STRING s) n). The form (BIT b n) is equivalent +to (AREF (THE BIT-VECTOR b) n). + +If an implementation does not support vectors, the :VECTOR keyword is +ignored except that the error is still signalled on inconsistent cases; +The additional restrictions on vectors are not enforced. MAKE-VECTOR is +treated just like the equivalent make-array. VECTORP is true of every +1-D array, STRINGP of every CHAR-SEQUENCE, and BIT-VECTOR of every +BIT-SEQUENCE. + +CHAR-SEQUENCEs, including strings, self-eval; all other arrays cause an +error when passed to EVAL. EQUAL descends into CHAR-SEQUENCEs, but not into +any other arrays. EQUALP descends into arrays of all kinds, comparing +the corresponding elements with EQUALP. EQUALP is false if the array +dimensions are not the same, but it is not sensitive to the element-type +of the array, whether it is a vector, etc. In comparing the dimensions of +vectors, EQUALP uses the length from 0 to the fill pointer; it does not +look at any elements beyond the fill pointer. + +The set of type-specifiers required for all of this is ARRAY, VECTOR, +STRING, BIT-VECTOR, SEQUENCE, CHAR-SEQUENCE, and BIT-SEQUENCE. +Each of these has a corresponding type-P predicate, and each can be +specified in list from, along with the element-type and dimension(s). + +MAKE-ARRAY takes the following keywords: :ELEMENT-TYPE, :INITIAL-VALUE, +:INITIAL-CONTENTS, :FILL-POINTER, :DISPLACED-TO, :DISPLACED-INDEX-OFFSET, +and :VECTOR. + +The following functions are redundant, but should be retained for +clarity and emphasis in code: MAKE-VECTOR, MAKE-STRING, MAKE-BIT-VECTOR. +MAKE-VECTOR takes a single length argument, along with :ELEMENT-TYPE, +:INITIAL-VALUE, and :INITIAL-CONTENTS. MAKE-STRING and MAKE-BIT-VECTOR +are like MAKE-VECTOR, but do not take the :ELEMENT-TYPE keyword, since +the element-type is implicit. + +If the :VECTOR keyword is not specified to MAKE-ARRAY or related forms, +the default is NIL. However, sequences produced by random forms such as +CONCATENATE are vectors. + +Strings always are printed using the "..." syntax. Bit-vectors always +are printed using the #*... syntax. Other vectors always print using +the #(...) syntax. Note that in the latter case, any element-type +restriction is lost upon readin, since this form always produces a +vector of type T when it is read. However, the new vector will be +EQUALP to the old one. The #(...) syntax observes PRINLEVEL, +PRINLENGTH, and SUPPRESS-ARRAY-PRINTING. The latter switch, if non-NIL, +causes the array to print in a non-readable form: #. + +CHAR-SEQUENCEs print out as though they were strings, using the "..." +syntax. BIT-SEQUENCES print out as BIT-STRINGS, using the #*... syntax. +All other arrays print out using the #nA(...) syntax, where n is the +number of dimensions and the list is actually a list of lists of lists, +nested n levels deep. The array elements appear at the lowest level. +The #A syntax also observes PRINLEVEL, PRINLENGTH, and +SUPPRESS-ARRAY-PRINTING. The #A format reads in as a non-displaced +array of element-type T. + +Note that when an array is printed and read back in, the new version is +EQUALP to the original, but some information about the original is lost: +whether the original was a vector or not, element type restrictions, +whether the array was displaced, whether there was a fill pointer, and +the identity of any elements beyond the fill-pointer. This choice was +made to favor ease of interactive use; if the user really wants to +preserve in printed form some complex data structure containing more +complex arrays, he will have to develop his own print format and printer. + +********** Moon revision of "simple" proposal ********** +Date: Thursday, 30 September 1982 01:59-EDT +From: MOON at SCRC-TENEX + +I prefer the "simple switch" to the "RPG memorial" proposal, with one +modification to be found below. The reason for this preference is that +it makes the "good" name, STRING for example, refer to the general class +of objects, relegating the efficiency decision to a modifier ("simple"). +The alternative makes the efficiency issue too visible to the casual user, +in my opinion. You have to always be thinking "do I only want this to +work for efficient strings, which are called strings, or should it work +for all kinds of strings, which are called arrays of characters?". +Better to say, "well this works for strings, and hmm, is it worth +restricting it to simple-strings to squeeze out maximal efficiency"? + +Lest this seem like I am trying to sabotage the efficiency of Lisp +implementations that are stuck with "stock" hardware, consider the +following: + +In the simple switch proposal, how is (MAKE-ARRAY 100) different from +(MAKE-ARRAY 100 :SIMPLE T)? In fact, there is only one difference--it is +an error to use ADJUST-ARRAY-SIZE on the latter array, but not on the +former. Except for this, simpleness consists, simply, of the absence of +options. This suggests to me that the :SIMPLE option be flushed, and +instead a :ADJUSTABLE-SIZE option be added (see, I pronounce the colons). +Even on the Lisp machine, where :ADJUSTABLE-SIZE makes no difference, I +think it would be an improvement, merely for documentation purposes. Now +everything makes sense: if you don't ask for any special features in your +arrays, you get simple ones, which is consistent with the behavior of the +sequence functions returning simple arrays always. And if some +implementation decides they need the sequence functions to return +non-simple arrays, they can always add additional keywords to them to so +specify. The only time you need to know about the word "simple" at all is +if you are making type declarations for efficiency, in which case you have +to decide whether to declare something to be a STRING or a SIMPLE-STRING. +And it makes sense that the more restrictive declaration be a longer word. +This also meets RPG's objection, which I think boils down to the fact +that he thought it was stupid to have :SIMPLE T all over his programs. +He was right. + +I'm fairly sure that I don't understand the portability issues that KMP +brought up (I don't have a whole lot of time to devote to this). But I +think that in my proposal STRINGP and SIMPLE-STRINGP are never the same +in any implementation; for instance, in the Lisp machine STRINGP is true +of all strings, while SIMPLE-STRINGP is only true of those that do not +have fill-pointers. If we want to legislate that the :ADJUSTABLE-SIZE +option is guaranteed to turn off SIMPLE-STRINGP, I expect I can dig up +a bit somewhere to remember the value of the option. This would in fact +mean that simple-ness is a completely implementation-independent concept, +and the only implementation-dependence is how much (if any) efficiency +you gain by using it, and how much of that efficiency you get for free +and how much you get only if you make declarations. + +Perhaps the last sentence isn't obvious to everyone. On the LM-2 Lisp +machine, a simple string is faster than a non-simple string for many +operations. This speed-up happens regardless of declarations; it is a +result of a run-time dispatch to either fast microcode or slow microcode. +On the VAX with a dumb compiler and no tuning, a simple string is only +faster if you make declarations. On the VAX with a dumb compiler but some +obvious tuning of sequence and string primitives to move type checks out of +inner loops (making multiple copies of the inner loop), simple strings are +faster for these operations, but still slow for AREF unless you make a type +declaration. On the VAX with a medium-smart compiler that does the same +sort of tuning on user functions, simple strings are faster for user +functions, too, if you only declare (OPTIMIZE SPEED) [assuming that the +compiler prefers space over speed by default, which is the right choice in +most implementations], and save space as well as time if you go whole hog +and make a type declaration. On the 3600 Lisp machine, you have sort of a +combination of the first case and the last case. + +I also support the #* syntax for bit vectors, rather than the #" syntax. +It's probably mere temporal accident that the simple switch proposal +uses #" while the RPG memorial proposal uses #*. + +To sum up: + +A vector is a 1-dimensional array. It prints as #(foo bar) or # +depending on the value of a switch. + +A string is a vector of characters. It always prints as "foo". Unlike +all other arrays, strings self-evaluate and are compared by EQUAL. + +A bit-vector is a vector of bits. It always prints as #*101. Since as +far as I can tell these are redundant with integers, perhaps like integers +they should self-evaluate and be compared by EQUAL. I don't care. + +A simple-vector, simple-string, or simple-bit-vector is one of the above +with none of the following MAKE-ARRAY (or MAKE-STRING) options specified: + + :FILL-POINTER + :ADJUSTABLE-SIZE + :DISPLACED-TO + :LEADER-LENGTH, :LEADER-LIST (in implementations that offer them) + +There are type names and predicates for the three simple array types. In +some implementations using the type declaration gets you more efficient +code that only works for that simple type, which is why these are in the +language at all. There are no user-visible distinctions associated with +simpleness other than those implied by the absence of the above MAKE-ARRAY +options. +---------------------------------------------------------------- + +22. Shall the following proposal for the OPTIMIZE declaration be adopted? + (y) yes (n) no +---------------------------------------------------------------- +Date: Wednesday, 15 September 1982 20:51-EDT +From: Scott E. Fahlman + +At the meeting I volunteered to produce a new proposal for the OPTIMIZE +declaration. Actually, I sent out such a proposal a couple of weeks +ago, but somehow it got lost before reaching SU-AI -- both that machine +and CMUC have been pretty flaky lately. I did not realize that the rest +of you had not seen this proposal until a couple of days ago. +Naturally, this is the one thing I did not keep a copy of, so here is my +reconstruction. I should say that this proposal is pretty ugly, but it +is the best that I've been able to come up with. If anyone out there +can do better, feel free. + +Guy originally proposed a format like (DECLARE (OPTIMIZE q1 q2 q3)), +where each of the q's is a quality from the set {SIZE, SPEED, SAFETY}. +(He later suggested to me that COMPILATION-SPEED would be a useful +fourth quality.) The ordering of the qualities tells the system which +to optimize for. The obvious problem is that you sometimes want to go +for, say, SPEED above all else, but usually you want some level of +compromise. There is no way in this scheme to specify how strongly the +system should favor one quality over another. We don't need a lot of +gradations for most compilers, but the simple ordering is not expressive +enough. + +One possibility is to simply reserve the OPTIMIZE declaration for the +various implementations, but not to specify what is done with it. Then +the implementor could specify in the red pages whatever declaration +scheme his compiler wants to follow. Unfortunately, this means that +such declarations would be of no use when the code is ported to another +Common Lisp, and users would have no portable way to flag that some +function is an inner loop and should be super-fast, or whatever. The +proposal below tries to provide a crude but adequate optimization +declaration for portable code, while still making it possible for users +to fine-tune the compiler's actions for particular implementations. + +What I propose is (DECLARE (OPTIMIZE (qual1 value1) (qual2 value2) ...), +where the qualities are the four mentioned above and each is paired with +a value from 0 to 3 inclusive. The ordering of the clauses doesn't +matter, and any quality not specified gets a default value of 1. The +intent is that {1, 1, 1, 1} would be the compiler's normal default -- +whatever set of compromises the implementor believes is appropriate for +his user community. A setting of 0 for some value is an indication that +the associated quality is unimportant in this context and may be +discrimintaed against freely. A setting of 2 indicates that the quality +should be favored more than normal, and a setting of 3 means to go all +out to favor that quality. Only one quality should be raised above 1 at +any one time. + +The above specification scheme is crude, but sufficiently expressive for +most needs in portable code. A compiler implementor will have specific +decisions to make -- whether to suppress inline expansions, whether to +type-check the arguments to CAR and CDR, whether to check for overflow +on arithmetic declared to be FIXNUM, whether to run the peephole +optimizer, etc. -- and it is up to him to decide how to tie these +decisions to the above values so as to match the users expressed wishes. +These decision criteria should be spelled out in that implementation's red +pages. For example, it might be the case that the peephole optimizer is +not run if COMPILER-SPEED > 1, that type checking for the argument to +CAR and CDR is suppressed if SPEED > SAFETY+1, etc. +---------------------------------------------------------------- + +23. Shall it be permitted for macros calls to expand into DECLARE forms +and then be recognized as valid declarations? For example: +(DEFMACRO CUBOIDS (&REST VARS) + `(DECLARE (TYPE (ARRAY SHORT-FLONUM 3) ,@VARS) + (SPECIAL ,@VARS) + (OPTIMIZE SPEED) + (INLINE HACK-CUBOIDS))) +(DEFUN CUBOID-EXPERT (A B C D) + (CUBOIDS A C) + ...) +This would not allows macros calls *within* a DECLARE form, only allow +macros to expand into a DECLARE form. + (y) yes (n) no + +24. Shall there be printer control variables ARRAY-PRINLEVEL and +ARRAY-PRINLENGTH to control printing of arrays? These would not +limit the printing of strings. + (y) yes (n) no + +25. Shall lambda macros, as described below, be incorporated into +the language, and if so, shall they occupy the function name space +or a separate name space? + (f) function name space (s) separate name space (n) no lambda macros +---------------------------------------------------------------- +Date: Wednesday, 22 September 1982, 02:27-EDT +From: Howard I. Cannon + +This is the documentation I wrote for lambda-macros as I implemented +them on the Lisp Machine. Please consider this a proposed definition. + +Lambda macros may appear in functions where LAMBDA would have previously +appeared. When the compiler or interpreter detects a function whose CAR +is a lambda macro, they "expand" the macro in much the same way that +ordinary Lisp macros are expanded -- the lambda macro is called with the +function as its argument, and is expected to return another function as +its value. Lambda macros may be accessed with the (3:lambda-macro* +2name*) function specifier. + +defspec lambda-macro function-spec lambda-list &body body +Analagously with 3macro*, defines a lambda macro to be called +2function-spec*. 2lambda-list* should consist of one variable, which +will be the function that caused the lambda macro to be called. The +lambda macro must return a function. For example: + +lisp +(lambda-macro ilisp (x) + `(lambda (&optional ,@(second x) &rest ignore) . ,(cddr x))) +endlisp + +would define a lambda macro called 3ilisp* which would cause the +function to accept arguments like a standard Interlisp function -- all +arguments are optional, and extra arguments are ignored. A typical call +would be: + +lisp +(fun-with-functional-arg #'(ilisp (x y z) (list x y z))) +endlisp + +Then, any calls to the functional argument that +3fun-with-functional-arg* executes will pass arguments as if the +number of arguments did not matter. +enddefspec + +defspec deflambda-macro +3deflambda-macro* is like 3defmacro*, but defines a lambda macro +instead of a normal macro. +enddefspec + +defspec deflambda-macro-displace +3deflambda-macro-displace* is like 3defmacro-displace*, but defines +a lambda macro instead of a normal macro. +enddefspec + +defspec deffunction function-spec lambda-macro-name lambda-list &body body +3deffunction* defines a function with an arbitrary lambda macro +instead of 3lambda*. It takes arguments like 3defun*, expect that +the argument immediatly following the function specifier is the name of +the lambda macro to be used. 3deffunction* expands the lambda macro +immediatly, so the lambda macro must have been previously defined. + +For example: + +lisp +(deffunction some-interlisp-like-function ilisp (x y z) + (list x y z)) +endlisp + +would define a function called 3some-interlisp-like-function*, that +would use the lambda macro called 3ilisp*. Thus, the function would +do no number of arguments checking. +enddefspec +---------------------------------------------------------------- + +26. Shall the floating-point manipulations described below be adopted? + (y) as described by MOON + (a) as amended (FLOAT-SIGN changed) by GLS + (n) do not adopt them +---------------------------------------------------------------- +Date: Thursday, 30 September 1982 05:55-EDT +From: MOON at SCRC-TENEX + +I am not completely happy with the FLOAT-FRACTION, FLOAT-EXPONENT, and +SCALE-FLOAT functions in the Colander edition. At the meeting in August I +was assigned to make a proposal. I am slow. + +A minor issue is that the range of FLOAT-FRACTION fails to include zero (of +course it has to), and is inclusive at both ends, which means that there +are two possible return values for some numbers. I guess that this ugliness +has to stay because some implementations require this freedom for hardware +reasons, and it doesn't make a big difference from a numerical analysis point +of view. My proposal is to include zero in the range and to add a note about +two possible values for numbers that are an exact power of the base. + +A more major issue is that some applications that break down a flonum into +a fraction and an exponent, or assemble a flonum from a fraction and an +exponent, are best served by representing the fraction as a flonum, while +others are best served by representing it as an integer. An example of +the former is a numerical routine that scales its argument into a certain +range. An example of the latter is a printing routine that must do exact +integer arithmetic on the fraction. + +In the agenda for the August meeting it was also proposed that there be +a function to return the precision of the representation of a given flonum +(presumably in bits); this would be in addition to the "epsilon" constants +described on page 143 of the Colander. + +A goal of all this is to make it possible to write portable numeric functions, +such as the trigonometric functions and my debugged version of Steele's +totally accurate floating-point number printer. These would be portable +to all implementations but perhaps not as efficient as hand-crafted routines +that avoided bignum arithmetic, used special machine instructions, avoided +computing to more precision than the machine really has, etc. + +Proposal: + +SCALE-FLOAT x e -> y + + y = (* x (expt 2.0 e)) and is a float of the same type as x. + SCALE-FLOAT is more efficient than exponentiating and multiplying, and + also cannot overflow or underflow unless the final result (y) cannot + be represented. + + x is also allowed to be a rational, in which case y is of the default + type (same as the FLOAT function). + + [x being allowed to be a rational can be removed if anyone objects. But + note that this function has to be generic across the different float types + in any case, so it might as well be generic across all number types.] + +UNSCALE-FLOAT y -> x e + The first value, x, is a float of the same type as y. The second value, e, + is an integer such that (= y (* x (expt 2.0 e))). + + The magnitude of x is zero or between 1/b and 1 inclusive, where b is the + radix of the representation: 2 on most machines, but examples of 8 and + 16, and I think 4, exist. x has the same sign as y. + + It is an error if y is a rational rather than a float, or if y is an + infinity. (Leave infinity out of the Common Lisp manual, though). + It is not an error if y is zero. + +FLOAT-MANTISSA x -> f +FLOAT-EXPONENT x -> e +FLOAT-SIGN x -> s +FLOAT-PRECISION x -> p + f is a non-negative integer, e is an integer, s is 1 or 0. + (= x (* (SCALE-FLOAT (FLOAT f x) e) (IF (ZEROP S) 1 -1))) is true. + It is up to the implementation whether f is the smallest possible integer + (zeros on the right are removed and e is increased), or f is an integer with + as many bits as the precision of the representation of x, or perhaps a "few" + more. The only thing guaranteed about f is that it is non-negative and + the above equality is true. + + f is non-negative to avoid problems with minus zero. s is 1 for minus zero + even though MINUSP is not true of minus zero (otherwise the FLOAT-SIGN function + would be redundant). + + p is an integer, the number of bits of precision in x. This is a constant + for each flonum representation type (except perhaps for variable-precision + "bigfloats"). + + [I am amenable to converting these four functions into one function that + returns four values if anyone can come up with a name. EXPLODE-FLOAT is + the best so far, and it's not very good, especially since the traditional + EXPLODE function has been flushed from Common Lisp. Perhaps DECODE-FLOAT.] + + [I am amenable to adding a function that takes f, e, and s as arguments + and returns x. It might be called ENCODE-FLOAT or MAKE-FLOAT. It ought to + take either a type argument or an optional fourth argument, the way FLOAT + takes an optional second argument, which is an example of the type to return.] + +FTRUNC x -> fp ip + The FTRUNC function as it is already defined provides the fraction-part and + integer-part operations. + +These functions exist now in the Lisp machines, with different names and slightly +different semantics in some cases. They are very easy to write. + +Comments? Suggestions for names? + +Date: 4 October 1982 2355-EDT (Monday) +From: Guy.Steele at CMU-10A + +I support Moon's proposal, but would like to suggest that FLOAT-SIGN +be modified to + (FLOAT-SIGN x &optional (y (float 1 x))) + returns z such that x and z have same sign and (= (abs y) (abs z)). +In this way (FLOAT-SIGN x) returns 1.0 or -1.0 of the same format as x, +and FLOAT-SIGN of two arguments is what the IEEE proposal calls COPYSIGN, +a useful function indeed in numerical code. +--Guy +---------------------------------------------------------------- + +27. Shall DEFMACRO, DEFSTRUCT, and other defining forms also be +allowed to take documentation strings as possible and appropriate? + (y) yes (n) no + +28. Shall the following proposed revision of OPEN keywords be accepted? + (y) yes (n) no +---------------------------------------------------------------- +Date: Monday, 4 October 1982, 17:08-EDT +From: Daniel L. Weinreb + +OPEN takes a filename as its first argument. The rest of its arguments +are keyword/value pairs. + +WITH-OPEN-STREAM's first subform is a list of a variable (to be bound to +a stream), a filename, and the rest of the elements are keyword/value +pairs. + +The keywords are as follows, with their possible values and defaults: + +:DIRECTION :INPUT (the default), :OUTPUT, :APPEND, :OVERWRITE, :PROBE + :INPUT - The file is expected to exist. Output operations are not allowed. + :OUTPUT - The file is expected to not exist. A new file is created. Input + operations are not allowed. + :APPEND - The file is expected to exist. Input operations are not allowed. + New characters are appened to the end of the existing file. + :OVERWRITE - The file is expected to exist. All operations are allowed. + The "file pointer" starts at the beginning of the file. + :PROBE - The file may or may not exist. Neither input nor output operations + are allowed. Furthermore, it is not necessary to close the stream. + +:CHARACTERS T (the default), NIL, :DEFAULT + T - Open the file for reading/writing of characters. + NIL - Open the file for reading/writing of bytes (non-negative integers). + :DEFAULT - Let the file system decide, based on the file it finds. + +:BYTE-SIZE a fixnum or :DEFAULT (the default) + a fixnum - Use this byte size. + :DEFAULT - Let the file system decide, based on the file it finds. + +:IF-EXISTS :ERROR (the default), :NEW-VERSION, :RENAME, + :RENAME-AND-DELETE, :OVERWRITE, :APPEND, :REPLACE + Ignored if direction is not :OUTPUT. This tells what to do if the file + that you're trying to create already exists. + :ERROR - Signal an error. + :NEW-VERSION - Create a file with the same filename except with "latest" version. + :RENAME - Rename the existing file to something else and proceed. + :RENAME-AND-DELETE - Rename the existing file and delete (but don't expunge, + if your system has undeletion) it, and proceed. + :OVERWRITE - Open for :OVERWRITE instead. (If your file system doesn't have + this, use :RENAME-AND-DELETE if you have undeletion and :RENAME otherwise.) + :APPEND - Open for :APPEND instead. + :REPLACE - Replace the existing file, deleting it when the stream is closed. + +:IF-DOES-NOT-EXIST :ERROR (the default), :CREATE + Ignored if direction is neither :APPEND nor :OVERWRITE + :ERROR - Signal an error. + :CREATE - Create the file and proceed. + + +Notes: + +I renamed :READ-ALTER to :OVERWRITE; :READ-WRITE might also be good. + +The :DEFAULT values are very useful, although some systems cannot figure +out this information. :CHARACTERS :DEFAULT is especially useful for +LOAD. Having the byte size come from the file only when the option is +missing, as the latest Common Lisp manual says, is undesirable because +it makes things harder for programs that are passing the value of that +keyword argument as computed from an expression. + +Example of OPEN: + (OPEN "f:>dlw>lispm.init" :DIRECTION :OUTPUT) + +Example of WITH-OPEN-FILE: + (WITH-OPEN-FILE (STREAM "f:>dlw>lispm.init" :DIRECTION :OUTPUT) ...) + +OPEN can be kept Maclisp compatible by recognizing whether the second +argument is a list or not. Lisp Machine Lisp does this for the benefit +of old programs. The new syntax cannot be mistaken for the old one. + +I removed :ECHO because we got rid of MAKE-ECHO-STREAM at the last +meeting. + +Other options that the Lisp Machine will probably have, and which might +be candidates for Common Lisp, are: :INHIBIT-LINKS, :DELETED, +:PRESERVE-DATES, and :ESTIMATED-SIZE. +---------------------------------------------------------------- +------- + + 13-Oct-82 1309 STEELE at CMU-20C Ballot results +Date: 13 Oct 1982 1608-EDT +From: STEELE at CMU-20C +Subject: Ballot results +To: common-lisp at SU-AI + +????????????????????????????????????????????????????????????????????????????? +? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? +? % ================================================================= % ? +? % = $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ = % ? +? % = $ +++++++++++++++++++++++++++++++++++++++++++++++++++++ $ = % ? +? % = $ + ############################################### + $ = % ? +? % = $ + # ///////////////////////////////////////// # + $ = % ? +? % = $ + # / The October 1982 Common LISP Ballot / # + $ = % ? +? % = $ + # / RESULTS / # + $ = % ? +? % = $ + # ///////////////////////////////////////// # + $ = % ? +? % = $ + ############################################### + $ = % ? +? % = $ +++++++++++++++++++++++++++++++++++++++++++++++++++++ $ = % ? +? % = $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ = % ? +? % ================================================================= % ? +? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? +????????????????????????????????????????????????????????????????????????????? + +Here are the tabulated votes on the October 1982 Common LISP Ballot. For +each issue the summary vote shown between "***" is what I take to be a +consensus, with a "?" added if I am a bit uncertain. I will edit the +manual according to these guidelines unless someone screams loudly and +soon over some issue. A few of the issues had a very mixed response; +these I have labeled "Controversial" and will take no immediate action on. +--Guy + +1. How shall the case for a floating-point exponent specifier +output by PRINT and FORMAT be determined? + (a) upper case, for example 3.5E6 + (b) lower case, for example 3.5e6 + (c) a switch + (d) implementation-dependent + +Issue 1: *** B? *** +Hedrick: B Wholey: - Fahlman: B Weinreb: B Killian: B +Zubkoff: C Moon: B van Roggen: D Masinter: A RMS: B +Dyer: B Bawden: - Feinberg: B Ginder: B Burke et al.: B +Brooks: - Gabriel: A DECLISP: B Steele: C Dill: D +Scherlis: - Pitman: B Anderson: B + +2. Shall we change the name SETF to be SET? (y) yes (n) no + +Issue 2: *** N *** +Hedrick: N Wholey: N Fahlman: N Weinreb: N Killian: X +Zubkoff: Y Moon: N van Roggen: Y Masinter: N RMS: N +Dyer: N Bawden: N Feinberg: N Ginder: N Burke et al.: N +Brooks: N Gabriel: N DECLISP: N Steele: N Dill: N +Scherlis: Y Pitman: N Anderson: N + +Killian: I have been convinced that renaming SETF to SET would be +wrong because it would require changing lots of old code. But, +you seem to have ignored the rest of my suggestion in your +ballot, namely eliminating those horrid "F"s at the end of +several function names (INCF, GETF etc.). If you don't do this, +then you're being inconsistent by not naming PUSH PUSHF, etc. +The "F" at the end of "SETF" would then be there purely for +compatibility, and could be renamed when another Lisp dialect +is designed, years hence. + +Pitman: I think we should do this, but not at this time. + +RMS: I very strongly do not want to have to change uses of the +traditional function SET in the Lisp machine system. + +Feinberg: A better name than SETF (or SET) should be found. + +3. Shall there be a type specifier QUOTE, such that (QUOTE x) = (MEMBER x)? +Then MEMBER can be eliminated; (MEMBER x y z) = (OR 'x 'y 'z). Also one can +write such things as (OR INTEGER 'FOO) instead of (OR INTEGER (MEMBER FOO)). + (y) yes (n) no + +Issue 3: *** Y? *** +Hedrick: X Wholey: Y Fahlman: N Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: N Masinter: Y RMS: - +Dyer: X Bawden: Y Feinberg: Y Ginder: - Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: N Steele: Y Dill: Y +Scherlis: Y Pitman: Y Anderson: - + +4. Shall MOON's proposal for LOAD keywords, revised as shown below, be used? + (y) yes (n) no + +Issue 4: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: X RMS: - +Dyer: Y Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: X Anderson: - + +Moon: I thought we agreed to make LOAD take a stream as its first argument, +instead of a pathname, and flush the :STREAM keyword. :ERROR should +control only "file does not exist" errors, not "host down", "directory +does not exist", "illegal character in file name", "no access to file", +and "file cannot be read because of disk error". Nor should it affect +errors due to evaluation of forms in the file. So I think it needs a +better name; how about :NONEXISTENT-OK? + +Masinter: :ERROR, :SET-DEFAULT-PATHNAME options to LOAD should be +rationalized with OPEN; the handling here of search paths should +logically be handled by passing on some of the options from LOAD to OPEN +rather than having LOAD do special path-name processing. This is because +users who manipulate files want to do similar hacking, and the mechanism +should be common. + +Pitman: I would vote YES except: As suggested by someone when it was +proposed, any mention of packages should be stricken pending the release +of a package system specification. + +Dill: :PACKAGE & :VERBOSE should be flushed, since they are package system +dependent. + +5. Shall closures over dynamic variables be removed from Common LISP? + (y) yes (n) no + +Issue 5: *** Y? *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: N Killian: - +Zubkoff: - Moon: - van Roggen: Y Masinter: - RMS: - +Dyer: X Bawden: - Feinberg: Y Ginder: Y Burke et al.: - +Brooks: - Gabriel: N DECLISP: Y Steele: Y Dill: Y +Scherlis: Y Pitman: N Anderson: - + +6. Shall LOOP, as summarized below, be included in Common LISP? + (y) yes (n) no + +Issue 6: Controversial +Hedrick: N Wholey: N Fahlman: N Weinreb: Y Killian: Y +Zubkoff: X Moon: - van Roggen: N Masinter: X RMS: N +Dyer: Y Bawden: Y Feinberg: N Ginder: N Burke et al.: Y +Brooks: N Gabriel: X DECLISP: Y Steele: N Dill: N +Scherlis: N Pitman: N Anderson: N + +Fahlman: I am in favor of adding the LOOP package as described (once it is +completed) to the language as a portable yellow pages module. I feel +rather strongly that it is premature to add LOOP to the white pages. + +Zubkoff: The LOOP macro should be kept in the yellow pages until we've +had a chance to use it for a while and determine whether or not it is the +"right" thing. + +Masinter: I feel strongly that the white pages SHOULD include a LOOP construct. +I care less about which one, but I like most of Moon's proposal better than DO +and what I saw of LetS. I'd get rid of AND and ELSE. I don't understand +if the "COLLECT" lexical scoping includes scoping under macro expansion. + +Pitman: As a yellow-pages extension is ok by me. I strongly oppose its +placement in the white pages. + +Feinberg: We should carefully examine all iteration construct proposals +before committing to any particular one. I feel strongly about +this. I would very much like to see complete documentation +on Loop and any other loop construct which might be included +in Common Lisp, especially before we decide to incorporate them +into the white pages. + +Gabriel: I believe that a LOOP construct of some sort is needed: I am +constantly bumping into the limitations of MacLisp-style DO. The +Symbolics people claim that LOOP, as defined in the current proposal, is +well thought-out and indispensible. Not having used it particularly, I +cannot pass judgement on this. I advocate putting LOOP into the hottest +regions of the Yellow Pages, meaning that people should use it immediately +so that any improvements to clarity can be made rapidly. The best possible +LOOP should then be moved to the White Pages. +My prejudice is that LOOP code is very difficult to understand. On the +other hand, closures are difficult for many people to understand, and +perhaps the difficulty is due to unfamiliarity in the LOOP case as it is +in the closure case. +In my current programming I do not define my own iteration construct +(though I have in the past) because I've found that other people (such as +myself at a later date) do not readily understand my code when it contains +idiosyncratic control structures. If we do not standardize on a LOOP +construct soon we will be faced with the fact of many people defining +their own difficult-to-understand control structures. + +7. Regardless of the outcome of the previous question, shall CYCLE +be retained and be renamed LOOP, with the understanding that statements +of the construct must be non-atomic, and atoms as "statements" are +reserved for extensions, and any such extensions must be compatible +with the basic mening as a pure iteration construct? + (y) yes (n) no + +Issue 7: *** Y? *** +Hedrick: Y Wholey: - Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: - Moon: Y van Roggen: N Masinter: Y RMS: - +Dyer: Y Bawden: Y Feinberg: N Ginder: - Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: N Steele: Y Dill: X +Scherlis: Y Pitman: Y Anderson: N + +Feinberg: I don't think we should make any commitment at all, even to this +extent. Loop is too nice a word to give up before we even agree about +installing it into the language. + +8. Shall ARRAY-DIMENSION be changed by exchanging its arguments, +to have the array first and the axis number second, to parallel +other indexing operations? + (y) yes (n) no + +Issue 8: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: - RMS: Y +Dyer: Y Bawden: - Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: - Pitman: Y Anderson: Y + +9. Shall MACROEXPAND, as described below, replace the current definition? + (y) yes (n) no + +Issue 9: *** Y *** +Hedrick: Y Wholey: - Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: - Moon: Y van Roggen: Y Masinter: Y RMS: - +Dyer: Y Bawden: Y Feinberg: - Ginder: - Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: X Anderson: - + +Killian: This is ok as far as it goes, but I intend to suggest +additions when I find the time. + +Masinter: This seems right but not quite fully specified, e.g. LAMBDA-MACRO. + +Pitman: I would vote YES except: +I am uncomfortable with saying that a form returns two +values and then returning only one (letting the rest default to NIL). +Does Common-Lisp specify anything on this? In any case, I would ammend +the (cond ((and (pairp ...) ...) (values (...) t)) + (t form)) +to (cond (...) (t (values form nil))) to make it clear that two values +are always returned. If this modification is made, I am happy with this +proposal. + +10. Shall all global system-defined variables have names beginning +and ending with "*", for example *PRINLEVEL* instead of PRINLEVEL +and *READ-DEFAULT-FLOAT-FORMAT* instead of READDEFAULT-FLOAT-FORMAT? + (y) yes (n) no + +Issue 10: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: N +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: X +Dyer: N Bawden: N Feinberg: Y Ginder: Y Burke et al.: X +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: Y Anderson: Y + +RMS: I would prefer a character other than *, such as "-". +It is easier to type, and easier to type correctly. + +Bawden: I am in favor of variables named *FOO* over variables named FOO only +when that doesn't introduce an incompatibility with existing Lisps. That is +why I voted NO on 10, because it involved an incompatible change to variables +like PRINLEVEL. I voted YES for 11 because currently we have no named +constants as far as I know so there is no incompatibility. + +Burke et al.: I really like only ONE "*" at the beginning of the name. I got +tired of shifting for two years ago, but conversely couldn't stand to +not have the specialness of the variable not be obvious. + +11. Same question for named constants (other than T and NIL), such as +*PI* for PI and *MOST-POSITIVE-FIXNUM* for MOST-POSITIVE-FIXNUM. + (y) yes (n) no (o) yes, but use a character other than "*" + +Issue 11: Controversial +Hedrick: Y Wholey: N Fahlman: Y Weinreb: Y Killian: N +Zubkoff: Y Moon: N van Roggen: Y Masinter: Y RMS: X +Dyer: N Bawden: Y Feinberg: Y Ginder: Y Burke et al.: X +Brooks: O Gabriel: Y DECLISP: Y Steele: N Dill: X +Scherlis: - Pitman: Y Anderson: Y + +Fahlman: Whatever is done about global vars, global constants should be the +same. I oppose option 3 or any plan to make them look syntactically +different. + +Moon: I like to use the stars to mean "someone may bind this" rather than +"don't use this as a local variable name", which is why I voted no on +putting stars around constants. However, others might disagree with me +and I will defer to the majority. I do think stars around variable names +are important. + +12. Shall a checking form CHECK-TYPE be introduced as described below? + (y) yes (n) no + +Issue 12: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: - +Dyer: Y Bawden: Y Feinberg: - Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: Y +Scherlis: Y Pitman: Y Anderson: Y + +13. Shall a checking form CHECK-SUBSEQUENCE be introduced as described below? + (y) yes (n) no + +Issue 13: Controversial +Hedrick: N Wholey: - Fahlman: N Weinreb: - Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: - RMS: - +Dyer: N Bawden: - Feinberg: N Ginder: Y Burke et al.: N +Brooks: - Gabriel: Y DECLISP: Y Steele: Y Dill: N +Scherlis: Y Pitman: Y Anderson: Y + +Feinberg: It seems like we're taking this type checking stuff a little +too far. Let the user write his own type checking code, or +make a yellow pages package called Carefully (or Lint) or +something. + +Dill: There should be a succinct way about talking about the contents +of sequences, but this particular one doesn't have the right functionality. +I prefer a regular-expression notation of some form, but don't have it +well enough worked out to propose one. Lets leave it out of the language +until someone figures out how to do it well. + +14. Shall the functions LINE-OUT and STRING-OUT, eliminated in November, +be reinstated? + (y) yes (n) no + +Issue 14: *** Y *** +Hedrick: N Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: - Moon: - van Roggen: Y Masinter: - RMS: - +Dyer: X Bawden: - Feinberg: Y Ginder: - Burke et al.: Y +Brooks: - Gabriel: - DECLISP: Y Steele: Y Dill: X +Scherlis: - Pitman: Y Anderson: - + +15. Shall the REDUCE function be added as described below? + (y) yes (n) no + +Issue 15: *** Y *** +Hedrick: N Wholey: - Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: - +Dyer: Y Bawden: - Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: Y +Scherlis: Y Pitman: - Anderson: N + +Moon: Should the name be REDUCE, or something else? Hearn aside, the name +doesn't instantly convey to me what it does. I haven't come up with an +alternative suggestion, however. + +Pitman: I have no use for this but have no strong objection. + +16. Shall the Bawden/Moon solution to the "invisible block" problem +be accepted? The solution is to define (RETURN x) to mean precisely +(RETURN-FROM NIL x), and to specify that essentially all standard +iterators produce blocks named NIL. A block with a name other than +NIL cannot capture a RETURN, only a RETURN-FROM with a matching name. + (y) yes (n) no + +Issue 16: *** Y *** +Hedrick: Y Wholey: - Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: - RMS: N +Dyer: Y Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: Y Anderson: - + +RMS: I am strongly opposed to anything that would require me to find +all the named PROGs in the Lisp machine system which have simple +RETURNs that return from them. This would make a lot of extra work +for me. Please don't impose this on me. + +Dill: It seems to me that it ought to be possible to exploit lexical +scoping to solve problems like this in a more general way. If this is +possible, then this proposeal is redundant. + +17. Shall the TAGBODY construct be incorporated? This expresses just +the behavior of the GO aspect of a PROG. Any atoms in the body +are not evaluated, but serve as tags that may be specified to GO. +Tags have lexical scope and dynamic extent. TAGBODY always returns NIL. + (y) yes (n) no + +Issue 17: *** Y *** +Hedrick: N Wholey: - Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: X +Dyer: Y Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: N +Scherlis: - Pitman: Y Anderson: Y + +RMS: Why must GOBODY [sic] always return NIL just because PROG does? +It is just as easy to make GOBODY return the value of the last form in +it. We can consider a PROG to expand into a GOBODY followed by a NIL. + +Feinberg: A better name than TAGBODY should be found. + +18. What shall be done about RESTART? The following alternatives seem to +be the most popular: + (a) Have no RESTART form. + (b) RESTART takes the name of a block. What happens when you say + (RESTART NIL) must be clarified for most iteration constructs. + (c) There is a new binding form called, say, RESTARTABLE. + Within (RESTARTABLE FOO . body), (RESTART FOO) acts as a jump + to the top of the body of the enclosing, matching RESTARTABLE form. + RESTART tags have lexical scope and dynamic extent. + +Issue 18: *** A *** +Hedrick: A Wholey: A Fahlman: A Weinreb: A Killian: A +Zubkoff: A Moon: A van Roggen: A Masinter: A RMS: C +Dyer: A Bawden: A Feinberg: A Ginder: A Burke et al.: A +Brooks: A Gabriel: B DECLISP: A Steele: C Dill: X +Scherlis: - Pitman: C Anderson: A + +Fahlman: I now believe that RESTART is more trouble than it is worth. I am +strongly opposed to any plan, such as option 3, that would add a RESTART +form but make it impossible to use this with the implicit block around a +DEFUN. If you have to introduce a RESTARTABLE block, you may as +well use PROG/GO. + +19. Shall there be a built-in identity function, and if so, what shall it +be called? + (c) CR (i) IDENTITY (n) no such function + +Issue 19: *** I *** +Hedrick: I Wholey: I Fahlman: I Weinreb: I Killian: - +Zubkoff: I Moon: I van Roggen: I Masinter: I RMS: I +Dyer: X Bawden: I Feinberg: I Ginder: I Burke et al.: I +Brooks: I Gabriel: - DECLISP: I Steele: I Dill: X +Scherlis: I Pitman: I Anderson: - + +RMS: The canonical identity function is now called PROG1, but the name +IDENTITY is ok by me. + +20. Shall the #*... bit-string syntax replace #"..."? That is, shall what +was before written #"10010" now be written #*10010 ? + (y) yes (n) no + +Issue 20: *** Y *** +Hedrick: Y Wholey: - Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: - +Dyer: X Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: N DECLISP: Y Steele: Y Dill: Y +Scherlis: Y Pitman: Y Anderson: Y + +21. Which of the two outstanding array proposals (below) shall be adopted? + (s) the "simple" proposal + (r) the "RPG memorial" proposal + (m) the "simple" proposal as amended by Moon + +Issue 21: *** M? *** +Hedrick: M Wholey: - Fahlman: M Weinreb: M Killian: M +Zubkoff: M Moon: M van Roggen: M Masinter: - RMS: M +Dyer: - Bawden: M Feinberg: M Ginder: M Burke et al.: M +Brooks: R Gabriel: X DECLISP: M Steele: M Dill: M +Scherlis: M Pitman: M Anderson: M + +Brooks: if not "r" then I prefer "m". + +Gabriel: I prefer the "RPG memorial", but I do not feel so strong +about this that I would sink the Common Lisp effort over it. + +22. Shall the following proposal for the OPTIMIZE declaration be adopted? + (y) yes (n) no + +Issue 22: *** Y *** +Hedrick: Y Wholey: - Fahlman: Y Weinreb: Y Killian: N +Zubkoff: Y Moon: Y van Roggen: Y Masinter: N RMS: - +Dyer: Y Bawden: - Feinberg: N Ginder: Y Burke et al.: Y +Brooks: - Gabriel: Y DECLISP: Y Steele: - Dill: X +Scherlis: N Pitman: X Anderson: X + +Pitman: I would vote YES except: +The use of numbers instead of keywords bothers me. The section saying +which numbers can be which values and how those values will be interpreted +seems to FORTRANesque to me. I think these values should be just keywords +or the tight restrictions on their values should be lifted. The only use +for numbers would be to allow users a fluid range of possibilities. + +Feinberg: Keywords instead of numbers would be nicer. How about +:dont-care, :low, :medium, :high? + +Dill: I don't think that we need an optimize declaration in common lisp. +It's not necessary for portability, and intensely dependent on compiler +implementations. If we must have one, I strongly favor the Fahlman proposal +over proposals that would have symbolic specifications. + +23. Shall it be permitted for macros calls to expand into DECLARE forms +and then be recognized as valid declarations? +This would not allows macros calls *within* a DECLARE form, only allow +macros to expand into a DECLARE form. + (y) yes (n) no + +Issue 23: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: - +Dyer: Y Bawden: Y Feinberg: Y Ginder: - Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: Y Anderson: Y + +Pitman: I also support allowing multiple declare forms at the top of +a bind form. ie, + (LAMBDA (X Y) (DECLARE (SPECIAL X)) (DECLARE (SPECIAL Y)) +for ease in macros. Steele's proposed evaluator did this and it wasn't +notably expensive. + +24. Shall there be printer control variables ARRAY-PRINLEVEL and +ARRAY-PRINLENGTH to control printing of arrays? These would not +limit the printing of strings. + (y) yes (n) no + +Issue 24: Controversial +Hedrick: N Wholey: Y Fahlman: N Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: N RMS: - +Dyer: Y Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: - Gabriel: N DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: N Anderson: Y + +25. Shall lambda macros, as described below, be incorporated into +the language, and if so, shall they occupy the function name space +or a separate name space? + (f) function name space (s) separate name space (n) no lambda macros + +Issue 25: Controversial +Hedrick: N Wholey: - Fahlman: N Weinreb: Y Killian: F +Zubkoff: - Moon: S van Roggen: S Masinter: D RMS: S +Dyer: S Bawden: S Feinberg: N Ginder: - Burke et al.: S +Brooks: N Gabriel: F DECLISP: S Steele: N Dill: N +Scherlis: - Pitman: S Anderson: N + +Fahlman: I seem to be unable to locate any explanation of why Lambda macros +are useful enough to be worth the bother. Looks like needless hair to +me, but I seem to dimly recall some arguments for why they were needed. +I'm not passionately opposed, but every page full of hairy stuff in the +manual hurts us. + +Masinter: Spec here not consistent with MACROEXPAND proposal. + +Feinberg: Once again, hair that I don't think needs to be standardized on. +I think most users would never need this, and perhaps a better +way to do this can be thought of. + +26. Shall the floating-point manipulations described below be adopted? + (y) as described by MOON + (a) as amended (FLOAT-SIGN changed) by GLS + (n) do not adopt them + +Issue 26: *** A *** +Hedrick: A Wholey: A Fahlman: A Weinreb: A Killian: A +Zubkoff: A Moon: Y van Roggen: A Masinter: - RMS: - +Dyer: - Bawden: - Feinberg: - Ginder: A Burke et al.: - +Brooks: - Gabriel: A DECLISP: A Steele: A Dill: X +Scherlis: - Pitman: - Anderson: Y + +Killian: Since TRUNC was renamed TRUNCATE at the last meeting, the +FTRUNC in this proposal would have to become FTRUNCATE. + +27. Shall DEFMACRO, DEFSTRUCT, and other defining forms also be +allowed to take documentation strings as possible and appropriate? + (y) yes (n) no + +Issue 27: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: Y +Dyer: Y Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: Y Pitman: Y Anderson: Y + +28. Shall the following proposed revision of OPEN keywords be accepted? + (y) yes (n) no + +Issue 28: *** Y *** +Hedrick: Y Wholey: Y Fahlman: Y Weinreb: Y Killian: Y +Zubkoff: Y Moon: Y van Roggen: Y Masinter: Y RMS: - +Dyer: Y Bawden: Y Feinberg: Y Ginder: Y Burke et al.: Y +Brooks: Y Gabriel: Y DECLISP: Y Steele: Y Dill: X +Scherlis: - Pitman: X Anderson: Y + +DECLISP: Either READ-ALTER, READ-WRITE OR UPDATE should replace the :OVERWRITE +keyword for :DIRECTION. Overwrite suggests that an existing file will be +destroyed by having new data written into the same space. +------- + +Then, any calls to the functional argument that +3fun-with-functional-arg* executes will pass arguments as if the +number of arguments did not matter. +enddefspec + +defspec deflambda-macro +3deflambda-macro* is like 3defmacro*, but defines a lambda macro +instead of a normal macro. +enddefspec + +defspec deflambda-macro-displace +3deflambda-macro-displace* is like 3defmacro-displace*, but defines +a lambda macro instead of a normal macro. +enddefspec + +defspec deffunction function-spec lambda-macro-name lambda-list &body body +3deffunction* defines a function with an arbitrary lambda macro +instead of 3lambda*. It takes arguments like 3defun*, expect that +the argument immediatly following the function specifier is the name of +the lambda macro to be used. 3deffunction* expands the lambda macro +immediatly, so the lambda macro must have been previously defined. + +For example: + +lisp +(deffunction some-interlisp-like-function ilisp (x y z) + (list x y z)) +endlisp + +would define a function called 3some-interlisp-like-function*, that +would use the lambda macro called 3ilisp*. Thus, the function would +do no number of arguments checking. +enddefspec +---------------------------------------------------------------- + +26. Shall the floating-point manipulations described below be adopted? + (y) as described by MOON + (a) as amended (FLOAT-SIGN changed) by GLS + (n) do not adopt them +---------------------------------------------------------------- +Date: Thursday, 30 September 1982 05:55-EDT +From: MOON at SCRC-TENEX + +I am not completely happy with the FLOAT-FRACTION, FLOAT-EXPONENT, and +SCALE-FLOAT functions in the Colander edition. At the meeting in August I +was assigned to make a proposal. I am slow. + +A minor issue is that the range of FLOAT-FRACTION fails to include zero (of +course it has to), and is inclusive at both ends, which means that there +are two possible return values for some numbers. I guess that this ugliness +has to stay because some implementations require this freedom for hardware +reasons, and it doesn't make a big difference from a numerical analysis point +of view. My proposal is to include zero in the range and to add a note about +two possible values for numbers that are an exact power of the base. + +A more major issue is that some applications that break down a flonum into +a fraction and an exponent, or assemble a flonum from a fraction and an +exponent, are best served by representing the fraction as a flonum, while +others are best served by representing it as an integer. An example of +the former is a numerical routine that scales its argument into a certain +range. An example of the latter is a printing routine that must do exact +integer arithmetic on the fraction. + +In the agenda for the August meeting it was also proposed that there be +a function to return the precision of the representation of a given flonum +(presumably in bits); this would be in addition to the "epsilon" constants +described on page 143 of the Colander. + +A goal of all this is to make it possible to write portable numeric functions, +such as the trigonometric functions and my debugged version of Steele's +totally accurate floating-point number printer. These would be portable +to all implementations but perhaps not as efficient as hand-crafted routines +that avoided bignum arithmetic, used special machine instructions, avoided +computing to more precision than the machine really has, etc. + +Proposal: + +SCALE-FLOAT x e -> y + + y = (* x (expt 2.0 e)) and is a float of the same type as x. + SCALE-FLOAT is more efficient than exponentiating and multiplying, and + also cannot overflow or underflow unless the final result (y) cannot + be represented. + + x is also allowed to be a rational, in which case y is of the default + type (same as the FLOAT function). + + [x being allowed to be a rational can be removed if anyone objects. But + note that this function has to be generic across the different float types + in any case, so it might as well be generic across all number types.] + +UNSCALE-FLOAT y -> x e + The first value, x, is a float of the same type as y. The second value, e, + is an integer such that (= y (* x (expt 2.0 e))). + + The magnitude of x is zero or between 1/b and 1 inclusive, where b is the + radix of the representation: 2 on most machines, but examples of 8 and + 16, and I think 4, exist. x has the same sign as y. + + It is an error if y is a rational rather than a float, or if y is an + infinity. (Leave infinity out of the Common Lisp manual, though). + It is not an error if y is zero. + +FLOAT-MANTISSA x -> f +FLOAT-EXPONENT x -> e +FLOAT-SIGN x -> s +FLOAT-PRECISION x -> p + f is a non-negative integer, e is an integer, s is 1 or 0. + (= x (* (SCALE-FLOAT (FLOAT f x) e) (IF (ZEROP S) 1 -1))) is true. + It is up to the implementation whether f is the smallest possible integer + (zeros on the right are removed and e is increased), or f is an integer with + as many bits as the precision of the representation of x, or perhaps a "few" + more. The only thing guaranteed about f is that it is non-negative and + the above equality is true. + + f is non-negative to avoid problems with minus zero. s is 1 for minus zero + even though MINUSP is not true of minus zero (otherwise the FLOAT-SIGN function + would be redundant). + + p is an integer, the number of bits of precision in x. This is a constant + for each flonum representation type (except perhaps for variable-precision + "bigfloats"). + + [I am amenable to converting these four functions into one function that + returns four values if anyone can come up with a name. EXPLODE-FLOAT is + the best so far, and it's not very good, especially since the traditional + EXPLODE function has been flushed from Common Lisp. Perhaps DECODE-FLOAT.] + + [I am amenable to adding a function that takes f, e, and s as arguments + and returns x. It might be called ENCODE-FLOAT or MAKE-FLOAT. It ought to + take either a type argument or an optional fourth argument, the way FLOAT + takes an optional second argument, which is an example of the type to return.] + +FTRUNC x -> fp ip + The FTRUNC function as it is already defined provides the fraction-part and + integer-part operations. + +These functions exist now in the Lisp machines, with different names and slightly +different semantics in some cases. They are very easy to write. + +Comments? Suggestions for names? + +Date: 4 October 1982 2355-EDT (Monday) +From: Guy.Steele at CMU-10A + +I support Moon's proposal, but would like to suggest that FLOAT-SIGN +be modified to + (FLOAT-SIGN x &optional (y (float 1 x))) + returns z such that x and z have same sign and (= (abs y) (abs z)). +In this way (FLOAT-SIGN x) returns 1.0 or -1.0 of the same format as x, +and FLOAT-SIGN of two arguments is what the IEEE proposal calls COPYSIGN, +a useful function indeed in numerical code. +--Guy +---------------------------------------------------------------- + +27. Shall DEFMACRO, DEFSTRUCT, and other defining forms also be +allowed to take documentation strings as possible and appropriate? + (y) yes (n) no + +28. Shall the following proposed revision of OPEN keywords be accepted? + (y) yes (n) no +---------------------------------------------------------------- +Date: Monday, 4 October 1982, 17:08-EDT +From: Daniel L. Weinreb + +OPEN takes a filename as its first argument. The rest of its arguments +are keyword/value pairs. + +WITH-OPEN-STREAM's first subform is a list of a variable (to be bound to +a stream), a filename, and the rest of the elements are keyword/value +pairs. + +The keywords are as follows, with their possible values and defaults: + +:DIRECTION :INPUT (the default), :OUTPUT, :APPEND, :OVERWRITE, :PROBE + :INPUT - The file is expected to exist. Output operations are not allowed. + :OUTPUT - The file is expected to not exist. A new file is created. Input + operations are not allowed. + :APPEND - The file is expected to exist. Input operations are not allowed. + New characters are appened to the end of the existing file. + :OVERWRITE - The file is expected to exist. All operations are allowed. + The "file pointer" starts at the beginning of the file. + :PROBE - The file may or may not exist. Neither input nor output operations + are allowed. Furthermore, it is not necessary to close the stream. + +:CHARACTERS T (the default), NIL, :DEFAULT + T - Open the file for reading/writing of characters. + NIL - Open the file for reading/writing of bytes (non-negative integers). + :DEFAULT - Let the file system decide, based on the file it finds. + +:BYTE-SIZE a fixnum or :DEFAULT (the default) + a fixnum - Use this byte size. + :DEFAULT - Let the file system decide, based on the file it finds. + +:IF-EXISTS :ERROR (the default), :NEW-VERSION, :RENAME, + :RENAME-AND-DELETE, :OVERWRITE, :APPEND, :REPLACE + Ignored if direction is not :OUTPUT. This tells what to do if the file + that you're trying to create already exists. + :ERROR - Signal an error. + :NEW-VERSION - Create a file with the same filename except with "latest" version. + :RENAME - Rename the existing file to something else and proceed. + :RENAME-AND-DELETE - Rename the existing file and delete (but don't expunge, + if your system has undeletion) it, and proceed. + :OVERWRITE - Open for :OVERWRITE instead. (If your file system doesn't have + this, use :RENAME-AND-DELETE if you have undeletion and :RENAME otherwise.) + :APPEND - Open for :APPEND instead. + :REPLACE - Replace the existing file, deleting it when the stream is closed. + +:IF-DOES-NOT-EXIST :ERROR (the default), :CREATE + Ignored if direction is neither :APPEND nor :OVERWRITE + :ERROR - Signal an error. + :CREATE - Create the file and proceed. + + +Notes: + +I renamed :READ-ALTER to :OVERWRITE; :READ-WRITE might also be good. + +The :DEFAULT values are very useful, although some systems cannot figure +out this information. :CHARACTERS :DEFAULT is especially useful for +LOAD. Having the byte size come from the file only when the option is +missing, as the latest Common Lisp manual says, is undesirable because +it makes things harder for programs that are passing the value of that +keyword argument as computed from an expression. + +Example of OPEN: + (OPEN "f:>dlw>lispm.init" :DIRECTION :OUTPUT) + +Example of WITH-OPEN-FILE: + (WITH-OPEN-FILE (STREAM "f:>dlw>lispm.init" :DIRECTION :OUTPUT) ...) + +OPEN can be kept Maclisp compatible by recognizing whether the second +argument is a list or not. Lisp Machine Lisp does this for the benefit +of old programs. The new syntax cannot be mistaken for the old one. + +I removed :ECHO because we got rid of MAKE-ECHO-STREAM at the last +meeting. + +Other options that the Lisp Machine will probably have, and which might +be candidates for Common Lisp, are: :INHIBIT-LINKS, :DELETED, +:PRESERVE-DATES, and :ESTIMATED-SIZE. +---------------------------------------------------------------- +------- + + 14-Aug-83 1216 FAHLMAN@CMU-CS-C.ARPA Things to do +Received: from CMU-CS-C by SU-AI with TCP/SMTP; 14 Aug 83 12:16:28 PDT +Received: ID ; Sun 14 Aug 83 15:16:47-EDT +Date: Sun, 14 Aug 1983 15:16 EDT +From: Scott E. Fahlman +To: common-lisp @ SU-AI.ARPA +Subject: Things to do + + +A bunch of things were put off without decisions or were patched over in +the effort to get agreement on the first edition. Most of the people +who have been intensively involved in the language design will be tied +up for another couple of months getting their implementations up to spec +and tweaking them for performance. However, it is perhaps not too soon +to begin thinking about what major additions/changes we want to get into +the second edition, so that those who want to make proposals can begin +preparing them and so that people can make their plans in light of what +is likely to be coming. + +Here's a list of the major things that I see on the agenda for the next +year or so. Some are yellow-pages packages, some have deep roots +and require white-pages support, and some are so pervasive that they +will probably migrate into the white pages after a probationary period +in yellow-land. I'm sure I'm forgetting a few things that have already +been suggested. I'm also sure that people will have some additional +proposals to make. I am not including very minor and trivial changes +that we might want to make in the language as we gain some experience +with it. + +1. Someone needs to implement the transcendental functions for complex +numbers in a portable way so that we can all use these. The functions +should be parameterized so that they will work for all the various +floating-point precisions that implementations might offer. The design +should be uncontroversial, since it is already specified in the manual. +I don't think we have any volunteers to do this at present. + +2. We need to re-think the issue of function specs, and agree on what +should go into the white pages next time around. Moon's earlier +proposal, or some subset of it, is probably what we want to go with. + +3. At one point HIC offered to propose a minimal set of white-pages +support for efficient implementation of a portable flavor system, and to +supply the portable part. The white-pages support would also be usable +by other object-oriented paradigms with different inheritance schemes +(that's the controversial part). After a brief exchange of messages, +HIC got super-busy on other matters and we haven't heard much since +then. Either HIC or someone else needs to finish this proposal, so that +we can put in the low-level support and begin playing with the portable +implementation of flavors. Only after more Common Lisp users have had +some opportunity to play with flavors will it make sense to consider +including them (or some variation) in the white pages. There is a lot +of interest in this out in user-land. + +4. We need some sort of iteration facility more powerful than DO. The +existing proposals are some extensively cleaned-up revision of LOOP and +Dick Waters' LETS package. There may be some other ideas out there as +well. Probably the best way to proceed here is for the proponents of +each style to implement their package portably for the yellow pages and +let the customers decide what they like. If a clear favorite emerges, +it will probably be absorbed into the white pages, though this would not +preclude personal use of the other style. None of these things requires +white-pages support -- it is just a matter of what we want to encourage +users to use, and how strongly. + +5. A good, portable, user-modifiable pretty printer is needed, and if it +were done well enough I see no reason not to put the user-visible +interface in the white pages next time around. Waters' GPRINT is one +candidate, and is being adopted as an interim pretty-printer by DEC. +The last time I looked, the code for that package was impenetrable and +the interface to it was excessively hairy, but I've heard that it has +been simplified. Maybe this is what we want to go with. Other options? + +6. We need to work out the business of taxonomic error-handling. Moon +has a proposal in mind, I believe. A possible problem is that this +wants to be white-pages, so if it depends on flavors it gets tied up +with the issue of making flavors white-pages as well. + +7. The Hemlock editor, a public-domain Emacs-clone written in portable +Common Lisp, is now running on the Perq and Vax implementations. We +have a lot of additional commands and modes to implement and some tuning +to do, but that should happen fairly rapidly over the next few months. +Of course, this cannot just be moved verbatim to a new implementation +and run there, since it interacts closely with screen-management and +with the file system. Once Hemlock is polished, it will provide a +reasonable minimum editing/top-level environment for any Common Lisp +implementation that takes the trouble to adapt it to the local system. +This should eliminate the need for hairy rubout-handlers, interlispy +top-levels, S-expression editors, and some other "environment" packages. +We plan to add some version of "info mode" at some point and to get the +Common Lisp Manual and yellow pages documents set up for tree-structured +access by this package, but that won't happen right away. + +8. Someone ought to put together a reasonable package of macro-writer's +aids: functions that know which things can be evaluated multiple times +without producing side-effects, type-analysis hacks, and other such +goodies. + +If you have items to add to this list, let me know. + +-- Scott + + 18-Aug-83 1006 @MIT-MC:benson@SCRC-TENEX What to do next +Received: from MIT-MC by SU-AI with TCP/SMTP; 18 Aug 83 10:06:04 PDT +Date: Thursday, 18 August 1983 11:54-EDT +From: dlw at SCRC-TENEX, benson at SCRC-TENEX +Subject: What to do next +To: fahlman at cmuc +Cc: common-lisp at su-ai + + +Scott, I appreciated your summary of pending issues in Common Lisp, and +I certainly think we should proceed to work on these things. However, I +think that the "next things to do", after we get out the initial real +Common Lisp manual, are: + +(1) Create a Common Lisp Virtual Machine specification, and gather a +body of public domain Lisp code which, when loaded into a proto-Lisp +that meets the spec, produces a complete Common Lisp interpreter that +meets the full language spec. (This doesn't address the portable +compiler problem.) + +(2) Establish an official Common Lisp subset, suitable for +implementation on 16-bit microcomputers such as the 68000 and the 8088. +I understand that Gabriel is interested in 68000 implementations, and I +am trying to interest Bob Rorscharch (who implemented IQLISP, which is +an IBM PC implementation of a UCILISP subset) in converting his product +into a Common Lisp implementation. + +There are a lot of problems with subsetting. You can't leave out +multiple values, beacuse several primitives return multiple values and +you don't want to omit all of these primitives (and you don't want to +discourage the addition of new primitives that return multiple values, +in future versions of Common Lisp). You can't leave out packages, at +least not entirely, because keywords are essential to many functions. +And many things, if removed, would have to be replaced by something +significantly less clean. We'd ideally like to remove things that (a) +can be removed without creating the need for an unclean simpler +substitute, and (b) aren't used by the rest of the system. In other +words, we have to find modular chunks to break off. And, of course, +any problem that works in the subset has to work and do exactly the +same thing in full Common Lisp, unless the program has some error +(in the "it is an error" sense). The decision as to what goes +in and what goes out should be made in light of the fact that +an implementation might be heavily into "autoloading". + +Complex numbers can easily be omitted. + +The requirement for all the floating point precisions can be +omitted. Of course, Common Lisp is flexiable in this regard anyway. + +Rational numbers could be left out. They aren't hard, per se, but +they're just another thing to do. The "/" function on two integers +would have to signal an error. + +Packages could be trimmed down to only be a feature that supplies +keywords; most of the package system might be removable. + +Lexical scoping might possibly be removable. You could remove support +for LABELS, FLET, and MACROLET. You can't remove internal functions +entirely (i.e. MAPCAR of a lambda-expression can't be removed) but they +might have some restrictions on them. + +Adjustable arrays could be removed. Fill pointers could go too, +although it's not clear that it's worth it. In the extreme, you could +only have simple arrays. You could even remove multi-D arrays +entirely, or only 1-D and 2-D. + +Several functions look like they might be big, and aren't really +required. Some candidates: COERCE, TYPE-OF, the hard version +of DEFSETF (whatever you call it), LOOP, + +TYPEP and SUBTYPEP are hard to do, but it's hard to see how +to get rid of the typing system! SUBTYPEP itself might go. + +Multiple values would be a great thing to get rid of in the subset, but +there are the Common Lisp primitives that use multiple values. Perhaps +we should add new primitives that return these second values only, for +the benefit of the subset, or something. + +Catch, throw, and unwind-protect could be removed, although they're +sure hard to live without. + +Lots of numeric stuff is non-critical: GCD, LCM, CONJUGATE, the +exponentials and trascendentals, rationalize, byte manipulation, random +numbers. + +The sequence functions are a lot of work and take a lot of room in your +machine. It would be nice to do something about this. Unfortunately, +simply omitting all the sequence functions takes away valuable basic +functionality such as MEMQ. Perhaps the subset could leave out some of +the keywords, like :test and :test-not and :from-end. + +Hash tables are not strictly necessary, although the system itself +are likely to want to use some kind of hash tables somewhere, +maybe not the user-visible ones. + +Maybe some of the defstruct options could be omitted, though I don't +think that getting rid of defstruct entirely would be acceptable. + +Some of the make-xxx-stream functions are unnecessary. + +Some of the hairy reader syntax is not strictly necessary. The circular +structure stuff and load-time evaluation are the main candidates. + +The stuff to allow manipulation of readtables is not strictly necessary, +or could be partially restricted. + +Some of the hairy format options could be omitted. I won't go into +detail on this. + +Some of the hairy OPEN options could go, although I'd hate to be the one +to decide which options are the non-critical ones. Also some of the +file operations (rename, delete, attribute manipulation) could go. + +The debugging tools might be optional although probably they just +get autoloaded anyway. + + 23-Mar-84 2248 GS70@CMU-CS-A Common Lisp Reference Manual +Received: from CMU-CS-A.ARPA by SU-AI.ARPA with TCP; 23 Mar 84 22:48:17 PST +Date: 24 Mar 84 0130 EST (Saturday) +From: Guy.Steele@CMU-CS-A +To: common-lisp@SU-AI +Subject: Common Lisp Reference Manual + +The publisher of the Common Lisp Reference Manual is Digital Press. I +understand that they may be negotiating with manufacturers to allow +them to reprint the manual in various ways as part of their product +documentation. I am leaving the business and legal aspects of this up +to Digital Press, and referring all corporate inquiries to them. My +goal is primarily to ensure that (a) no one publishes a manual that +claims to be about Common Lisp when it doesn't satisfy the Common Lisp +specifications, and (b) to make sure that everyone involved in the +Common Lisp effort is properly credited. I certainly do not want to +block anyone from implementing or using Common Lisp, or even a subset, +superset, or side-set of Common Lisp, as long as any differences are +clearly and correctly stated in the relevant documentation, and as long +as the Common Lisp Reference Manual is recognized and credited as the +definitive document on Common Lisp. This requires a certain balance +between free permission and tight control. This is why I am letting +the publisher handle it; they almost certainly have more experience +with such things than I do. + +I have asked the editor at Digital Press to arrange for complimentary +copies to be sent to everyone who has contributed substantially to the +Common Lisp effort. This will include most of the people on this +mailing list, I imagine. The set of people I have in mind is listed in +the acknowledgements of the book--seventy or eighty persons +altogether--so if you see a copy of the book and find your name in that +list, you might want to wait a bit for your complimentary copy to show +up before buying one. (Because of the large number of copies involved, +they aren't really complimentary, which is to say the publisher isn't +footing the cost: the cost of them will be paid out of the royalties. +I estimate that the royalties from the entire first print run will just +about cover these free copies. It seems only fair to me that everyone +who contributed to the language design should get a copy of the final +version!) + +The nominal schedule calls for the typesetter to take about five weeks +to produce camera-ready copy from the files I sent to them on magnetic +tape. The process of printing, binding, and distribution will then take +another four to five weeks. So at this point we're talking availability +at about the end of May. This is a tight and optimistic schedule; don't +blame Digital Press if it slides. (I'm certainly not about to cast any +stones!) Unless you're an implementor wanting to order a thousand +copies to distribute with your system, please don't bother the folks at +Digital Press until then; they've got enough problems. I'll send more +information to this mailing list as the date approaches. + +One last note. The book is about 400 pages of 8.5" by 11" Dover output. +Apparently the publisher and typesetter decided that this made the lines +too wide for easy reading, so they will use a 6" by 9" format. This +will make the shape of the book approximately cubical. Now, there are +26 chapters counting the index, and a Rubik's cube has 26 exterior cubies. +I'll let you individually extrapolate and fantasize from there. +--Guy + + 20-Jun-84 2152 GS70@CMU-CS-A.ARPA "ANSI Lisp" rumor +Received: from CMU-CS-A.ARPA by SU-AI.ARPA with TCP; 20 Jun 84 21:52:02 PDT +Date: 21 Jun 84 0050 EDT (Thursday) +From: Guy.Steele@CMU-CS-A.ARPA +To: masinter.pa@XEROX.ARPA +Subject: "ANSI Lisp" rumor +CC: common-lisp@SU-AI.ARPA +In-Reply-To: "masinter.pa@XEROX.ARPA's message of 2 Jun 84 20:55-EST" + +I do not know of any official effort within ANSI to do anything at all +about LISP. Here is what I do know: I have been told that a group +in China has suggested that perhaps an ISO standard for LISP should +be promulgated. I know nothing more about it than that. However, +at the request of David Wise and J.A.N. Lee, I have sent a copy of +the Common LISP Manual to J.A.N. Lee, who has been involved with +standards of various kinds at ACM. (David Wise is a member of the SIGPLAN +council, or whatever it is called, and is the LISP expert within that +body.) The idea is that if either an ISO or ANSI standards effort +were to be undertaken, Wise and Lee feel that such an effort should +certainly take the work done on Common LISP into account, and they want +people in the standards organizations to be aware of the Common LISP +work. I sent a copy of the Table of Contents to Lee several months +ago, and it was my understanding that he might choose to circulate +copies of it to, for example, members of the SIGPLAN council. +That's where it stands. I repeat, I know of no effort actually to +start a standards effort; Wise and Lee merely want certain people to +be prepared by already having information about Common LISP if any of +a number of possible developments should unfold. +--Guy + + +-- +--------------------------------------------------------------------------- +Arun Welch 2455 Northstar Rd +Network Engineer Columbus, OH 43221 +OARnet welch@oar.net + + +Article 15162 of comp.lang.lisp: +Path: cantaloupe.srv.cs.cmu.edu!sef +From: sef@CS.CMU.EDU (Scott Fahlman) +Newsgroups: comp.lang.lisp +Subject: Re: CL History (was Re: Why do people like C?) +Date: 20 Oct 1994 23:49:27 GMT +Organization: School of Computer Science, Carnegie Mellon University +Lines: 34 +Message-ID: <386vm7$b80@cantaloupe.srv.cs.cmu.edu> +References: <37eb4h$k4f@vertex.tor.hookup.net> + + + <3854ul$r5r@cantaloupe.srv.cs.cmu.edu> + +NNTP-Posting-Host: sef-pmax.slisp.cs.cmu.edu +In-reply-to: welch@thor.oar.net's message of 20 Oct 94 15:34:10 +Originator: sef@SEF-PMAX.SLISP.CS.CMU.EDU + + +In article welch@thor.oar.net (Arun Welch) writes: + + Scott, you're the only one of the "gang of + five" still following this, you might have some insights... + +I didn't spot anything in Jonl's old message that is factually +incorrect. It is, of course, a view of those parts of the Common Lisp +startup that Jonl was most involved in. My account would emphasize +other things, but I don't have time to write a Common Lisp history +(and have probably forgotten too much to do this without digging +through a lot of old documents). I'm busy with Dylan now, plus +several other projects. + +I think this old account does show that there were several overtures +to get the Xerox/Interlisp community aboard the Common Lisp bandwagon +early on, though these were unsuccessful -- neither side was willing +to give up certain well-loved features of their preferred Lisp +environments. + +Note that all of this occurred LONG before the X3J13 group was set up, +which was the subject of the earlier message. + +-- Scott + +=========================================================================== +Scott E. Fahlman Internet: sef+@cs.cmu.edu +Principal Research Scientist Phone: 412 268-2575 +School of Computer Science Fax: 412 268-5576 (new!) +Carnegie Mellon University Latitude: 40:26:46 N +5000 Forbes Avenue Longitude: 79:56:55 W +Pittsburgh, PA 15213 Mood: :-) +=========================================================================== + + + --- cmucl-20a-20090928.orig/own-work/tutorials/other/evo_lisp.ps +++ cmucl-20a-20090928/own-work/tutorials/other/evo_lisp.ps @@ -0,0 +1,8362 @@ +%!PS-Adobe-2.0 +%%Creator: dvips 5.497 Copyright 1986, 1992 Radical Eye Software +%%Title: main.dvi +%%CreationDate: Thu May 6 12:20:51 1993 +%%Pages: 80 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSCommandLine: /usr/local/bin/dvips main.dvi +%DVIPSSource: TeX output 1993.05.06:1208 +%%BeginProcSet: tex.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N} +B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0] +concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize +-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix +currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put +setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed +true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N +/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix +fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{ +CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn +put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 +0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data +dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 +ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 +sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N +/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get +S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height +sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 +-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup +type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 +ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N} +B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add +.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict +/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook} +if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255 +{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 +div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N +/ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{ +pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 +getinterval(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 +TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 +-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{ +gsave transform round exch round exch itransform moveto rulex 0 rlineto 0 +ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N +/tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} +B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B +/w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{ +p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save +N}B /eos{SS restore}B end +%%EndProcSet +TeXDict begin 40258431 52099146 1000 300 300 +(/tmp_mnt/users/lang1/gls/HOPL2/v11/main.dvi) @start /Fa 1 +52 df<0FC030707038703870380038003000E00FC0007000380018001C601CF01CF018E0386070 +1FC00E137F9211>51 D E /Fb 9 87 df<00E00001F00001F00001B00001B00003B80003B80003 +B800031800071C00071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C +07001C07007F1FC0FF1FE07F1FC013197F9816>65 D<01F18007FF800FFF801F0F803C07807807 +80780380700380F00000E00000E00000E00000E00000E00000E00000E00000F000007003807803 +807803803C07801F0F000FFE0007FC0001F00011197E9816>67 D<7F1FC0FFBFE07F1FC01C0700 +1C07001C07001C07001C07001C07001C07001FFF001FFF001FFF001C07001C07001C07001C0700 +1C07001C07001C07001C07001C07007F1FC0FFBFE07F1FC013197F9816>72 +DI76 D<7FF800FFFE007FFF001C0F801C0380 +1C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C0000 +1C00001C00001C00001C00007F0000FF80007F000012197F9816>80 D<7FE000FFF8007FFC001C +1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C +0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82 +D<07E3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80001FF00007FC +0000FE00000F00000780000380000380E00380E00380F00780F80F00FFFE00FFFC00C7F0001119 +7E9816>I86 D E /Fc 76 124 df<0001FC000703000C03001C07001C03001800003800 +00380000380000380000700007FFFC00701C00701C00701C00E03800E03800E03800E03800E070 +01C07001C07001C07001C0E201C0E201C0E20380E4038064038038038000030000070000060000 +C60000E40000CC00007000001825819C17>12 D18 +D<03070E1C3860C0800808729C15>I<183C3C3C0404080810204080060C779C0D>39 +D<00030006000800180030006000C000C0018003000300060006000C000C001C00180018003800 +30003000700070006000600060006000E000E000E000E000E00060006000600060006000200030 +00100008000800102A7B9E11>I<001000100008000C0004000600060006000600060007000700 +07000700070006000600060006000E000E000C000C001C001800180038003000300060006000C0 +00C001800300030006000C00180010006000C000102A809E11>I<183878380808101020404080 +050C7D830D>44 DI<3078F06005047C830D>I<0000030000070000 +0E00000C00001C0000180000380000300000700000E00000C00001C00001800003800003000007 +00000600000E00001C0000180000380000300000700000600000E00000C00001C0000380000300 +000700000600000E00000C00001C0000180000380000700000600000E00000C00000C000001829 +7F9E15>I<003C0000C6000183000303000603000603800E03800C03801C03801C030038070038 +0700380700380700700E00700E00700E00700E00E01C00E01C00E01C00E03800E03800E03000C0 +6000E0600060C0007180001E0000111D7B9B15>I<00020006000C001C007C039C003800380038 +0038007000700070007000E000E000E000E001C001C001C001C003800380038003800780FFF00F +1C7C9B15>I<003C0000C3000101800201800201C00441C00441C00841C00841C00841C0108380 +1083801107000E0600000C0000180000300000C000010000060000080000100100100200200200 +4006007E0C00C7F80083F80080E000121D7C9B15>I<003E0000C1800101800200C00400C00440 +C00841C00841C00841C0088380070380000700000E0001F800003800000C00000C00000E00000E +00000E00000E00700E00E01C00801C0080380080300040600021C0001F0000121D7C9B15>I<00 +01800001C0000380000380000380000300000700000700000600000E00000C00001C0000180000 +180000300000300000600000400000C600018E00010E00020E00061C000C1C00181C003F1C0040 +F800803F0000380000380000700000700000700000700000E00000600012247E9B15>I<00C060 +00FFC001FF8001FE00010000010000020000020000020000020000047800058C00060600040600 +080600000700000700000600000E00000E00700E00700C00E01C00801800803800403000406000 +21C0001F0000131D7C9B15>I<000F0000308000C0800183800383800300000600000E00000C00 +001C00001CF0003B18003C0C00380C00780C00700E00700E00700E00601C00E01C00E01C00E01C +00E03800E03800E0700060600060C0002180001E0000111D7B9B15>I<09C04017E0801FE0803C +6100302700601A00400600400400800C0080080000180000100000300000600000600000600000 +C00000C00001C0000180000380000380000300000700000700000700000E00000E00000C000012 +1D799B15>I<001E000061000081800180800300C00300C0060180060180060180070300078600 +03CC0003F00001F000037800063C00081E00180E00300E00600600600600600600C00C00C00C00 +C0180060100060200030C0000F0000121D7C9B15>I<003C0000C6000183000303000603000E03 +000C03801C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C +00001C00001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>I<06 +0F0F06000000000000000000003078F06008127C910D>I<030007800780030000000000000000 +00000000000000000000000000180038007800380008000800100010002000400040008000091A +7D910D>I<0000180000001800000038000000380000007800000078000000B8000001B8000001 +38000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C0000 +7FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E001C001E00 +FF00FFC01A1D7E9C1F>65 D<01FFFE00003C0780003803C0003801C0003801C0003801C0007001 +C0007003C0007003C00070078000E0070000E00E0000E03C0000FFF80001C01C0001C00E0001C0 +0F0001C00F0003800F0003800F0003800F0003800F0007001E0007001C0007003C00070078000E +01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60003002E000E003C001C001C0038001C007 +0000C00E0000801E0000801C0000803C0000803C000000780000007800000078000000F0000000 +F0000000F0000000F0000000F0000400F0000400F0000400F00008007000080070001000380020 +00180040000C0180000706000001F800001B1E7A9C1E>I<01FFFE00003C0780003801C0003801 +C0003800E0003800E0007000F00070007000700070007000F000E000F000E000F000E000F000E0 +00F001C001E001C001E001C001E001C001C0038003C003800380038007800380070007000E0007 +001C0007003800070070000E01C000FFFF00001C1C7D9B1F>I<01FFFFE0003C00E00038006000 +38004000380040003800400070004000700040007020400070200000E0400000E0400000E0C000 +00FFC00001C0800001C0800001C0800001C0800003810100038001000380020003800200070004 +000700040007000C00070018000E007800FFFFF0001B1C7D9B1C>I<01FFFFC0003C01C0003800 +C00038008000380080003800800070008000700080007020800070200000E0400000E0400000E0 +C00000FFC00001C0800001C0800001C0800001C080000381000003800000038000000380000007 +0000000700000007000000070000000F000000FFF000001A1C7D9B1B>I<0003F020001E0C6000 +3002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C0000803C000000 +780000007800000078000000F0000000F0000000F001FFC0F0001E00F0001C00F0001C00F0001C +00F0001C00700038007000380038003800180078000C0090000707100001F800001B1E7A9C20> +I<01FFCFFE003C01E0003801C0003801C0003801C0003801C00070038000700380007003800070 +038000E0070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E0003801C0003 +801C0003801C0003801C00070038000700380007003800070038000F007800FFE7FF001F1C7D9B +1F>I<01FFC0003C0000380000380000380000380000700000700000700000700000E00000E000 +00E00000E00001C00001C00001C00001C000038000038000038000038000070000070000070000 +0700000F0000FFE000121C7E9B10>I<007FF0000780000700000700000700000700000E00000E +00000E00000E00001C00001C00001C00001C000038000038000038000038000070000070000070 +0000700060E000E0E000C0C00081C0008380004700003C0000141D7B9B16>I<01FFE0003C0000 +380000380000380000380000700000700000700000700000E00000E00000E00000E00001C00001 +C00001C00001C0000380080380080380080380100700100700300700600700E00E03C0FFFFC015 +1C7D9B1A>76 D<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E +002E00004E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001 +070438000107043800010708380001071038000207107000020720700002072070000207407000 +040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC00251C7D9B25>I<01FC +03FE001C0070003C0060002E0040002E0040002E00400047008000470080004700800043808000 +83810000838100008181000081C1000101C2000101C2000100E2000100E2000200E40002007400 +02007400020074000400380004003800040038000C0018001C001000FF8010001F1C7D9B1F>I< +0007F000001C1C0000700E0000E0070001C0038003800380070003800E0003C01E0003C01C0003 +C03C0003C03C0003C0780003C0780003C0780003C0F0000780F0000780F0000780F0000F00F000 +0F00F0000E00F0001E00F0003C0070003800700070007800E0003801C0001C0380000E0E000003 +F800001A1E7A9C20>I<01FFFC00003C070000380380003801C0003801C0003801C0007003C000 +7003C0007003C00070038000E0078000E0070000E00E0000E0380001FFE00001C0000001C00000 +01C0000003800000038000000380000003800000070000000700000007000000070000000F0000 +00FFE000001A1C7D9B1C>I<0007F000001C1C0000700E0000E0070001C0078003800380070003 +800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C0780003C0F0000780F000 +0780F0000780F0000F00F0000F00F0000E00F0001E00F0001C0070783800708070007104E00039 +05C0001D0780000F0E040003FC040000040C0000060800000E1800000FF0000007F0000007E000 +000380001A257A9C20>I<01FFF800003C0E000038070000380380003803800038038000700780 +007007800070078000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C0600001C070 +0001C07000038070000380700003807000038070000700F0000700F0400700F0400700F0800F00 +7880FFE0790000001E001A1D7D9B1E>I<000F8400304C00403C00801801001803001803001806 +001006001006000007000007000003E00003FC0001FF00007F800007C00001C00001C00000C000 +00C02000C02000C0600180600180600300600200F00400CC180083E000161E7D9C17>I<1FFFFF +C01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C0080001C00000038 +00000038000000380000003800000070000000700000007000000070000000E0000000E0000000 +E0000000E0000001C0000001C0000001C0000001C0000003C000007FFE00001A1C799B1E>I<7F +F0FF800F001C000E0018000E0010000E0010000E0010001C0020001C0020001C0020001C002000 +3800400038004000380040003800400070008000700080007000800070008000E0010000E00100 +00E0010000E0020000E0020000E0040000E00400006008000030300000104000000F800000191D +779B1F>III<01FF81FE001E00F0001C0060001E0080000E0180000E0100000F020000070400 +00070800000790000003A0000003C0000001C0000001C0000001E0000002E0000004E0000008F0 +000010700000207000006038000040380000803C0001001C0002001C0006001E001E001E00FF80 +FFC01F1C7E9B1F>II<00FFFF8000F0070001C00E0001801E0001001C000100380002007000 +0200E0000201C0000001C0000003800000070000000E0000001C0000001C000000380000007000 +0000E0080001C0100001C0100003801000070020000E0020001C0060003C00C0003801C0007007 +8000FFFF8000191C7D9B19>I<003F80007F0000600000600000600000C00000C00000C00000C0 +000180000180000180000180000300000300000300000300000600000600000600000600000C00 +000C00000C00000C00001800001800001800001800003000003000003000003000006000006000 +00600000600000C00000C00000FE0000FE000011297E9E0D>I<003F80007F0000030000030000 +0300000600000600000600000600000C00000C00000C00000C0000180000180000180000180000 +300000300000300000300000600000600000600000600000C00000C00000C00000C00001800001 +8000018000018000030000030000030000030000060000060000FE0000FE00001129819E0D>93 +D<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F12 +7B9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039C03E6038303830703870 +3870387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C0818 +1C3838300070007000E000E000E000E000E000E008E010602030C01F000E127B9113>I<001F80 +000380000380000700000700000700000700000E00000E00000E00000E0003DC00063C000C3C00 +181C00383800303800703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E400 +6264003C3800111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000 +E0086010602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C0000380000 +380000380000380000380003FF8000700000700000700000700000700000E00000E00000E00000 +E00000E00001C00001C00001C00001C00001C000038000038000038000030000030000070000C6 +0000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C38 +1C381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0F +C00001C00001C0000380000380000380000380000700000700000700000700000E78000E8C000F +0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C0038380070388070388070708070 +7100E03200601C00111D7D9C15>I<01800380010000000000000000000000000000001C002600 +470047008E008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>I< +0006000E0006000000000000000000000000000000F00118021802180438043800380038007000 +700070007000E000E000E000E001C001C001C001C003800380C300E700CE0078000F24819B0D> +I<0FC00001C00001C0000380000380000380000380000700000700000700000700000E0F000E11 +000E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070E20070E20070E2 +0070E400E06400603800111D7D9C13>I<1F800380038007000700070007000E000E000E000E00 +1C001C001C001C0038003800380038007000700070007000E400E400E400E40068003800091D7C +9C0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701 +C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D12 +7C9122>I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C +1C00381C40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E +700E700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008E0 +C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C00381800703800703000707000706 +000E8C000E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I<03 +C4062C0C3C181C3838303870387038E070E070E070E070E0E0C0E0C0E061E063C03DC001C001C0 +038003800380038007803FF00E1A7B9113>I<3C3C26C2468747078E068E000E000E001C001C00 +1C001C0038003800380038007000300010127C9112>I<01F006080C080C1C18181C001F001FC0 +0FF007F0007800386030E030C030806060C01F000E127D9111>I<00C001C001C001C003800380 +03800380FFE00700070007000E000E000E000E001C001C001C001C00384038403840388019000E +000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C +1C001C1C003838803838801838801839001C5900078E0011127C9116>I<1E06270E470E470687 +0287020E020E021C041C041C041C0818083808181018200C4007800F127C9113>I<1E01832703 +874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E04180C04181C04181C +081C1C100C263007C3C018127C911C>I<070E0019910010E38020E38041C30041C00001C00001 +C000038000038000038000038000070200670200E70400CB04008B080070F00011127D9113>I< +1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007F0007000 +7000E0E0C0E1C0818047003C00101A7C9114>I<038207C20FEC08381008001000200040008001 +000200040008081008383067F043E081C00F127D9111>II +E /Fd 1 126 df<000C0000001E0000001E0000003F0000003300000073800000E1C00001C0E0 +000180600003807000070038000E001C001C000E003800070070000380E00001C0700003803800 +07001C000E000E001C0007003800038070000180600001C0E00000E1C000007380000033000000 +3F0000001E0000001E0000000C00001A1F7E991F>125 D E /Fe 4 35 df<00F000030C000E06 +041C0704380708300708700790700790E003A0E003A0E003C0E00380E00380E00380600780601B +883061900F80E016127E911B>11 D<0001F000061800080C00100C00200E00400E00800E00801C +01001C010018010038020FF00210C0020FE0020030040030040030040038040038080070080070 +0800700800E01800E01800C0140180140300230E0020F800200000200000400000400000400000 +40000080000080000017257F9C17>I<01F807000C0018003800300070007FC0E000E000E000E0 +00E00060006000300018600F800D127E9111>15 D<00FC03FE0E07180010002000200010801740 +1FC0200040004000800080008004400870303FE00F8010147F9213>34 D +E /Ff 2 92 df58 D91 D E /Fg 5 83 df<000C0000000C0000000C0000001E00 +00001E0000003F000000270000002700000043800000438000004380000081C0000081C0000081 +C0000100E0000100E00001FFE000020070000200700006007800040038000400380008001C0008 +001C001C001E00FF00FFC01A1A7F991D>65 D<003F0201C0C603002E0E001E1C000E1C00063800 +06780002700002700002F00000F00000F00000F00000F00000F000007000027000027800023800 +041C00041C00080E000803003001C0C0003F00171A7E991C>67 D77 D<007F000001C1C000070070000E0038001C +001C003C001E0038000E0078000F0070000700F0000780F0000780F0000780F0000780F0000780 +F0000780F0000780F000078078000F0078000F0038000E003C001E001C001C000E003800070070 +0001C1C000007F0000191A7E991E>79 D82 D E /Fh 1 1 df0 +D E /Fi 1 111 df<383C0044C6004702004602008E06000C06000C06000C0C00180C00180C40 +181840181880300880300F00120E7F8D15>110 D E /Fj 4 53 df<03000700FF000700070007 +00070007000700070007000700070007000700070007000700070007007FF00C157E9412>49 +D<0F8030E040708030C038E0384038003800700070006000C00180030006000C08080810183FF0 +7FF0FFF00D157E9412>I<0FE030306018701C701C001C00180038006007E000300018000C000E +000EE00EE00EC00C401830300FE00F157F9412>I<00300030007000F001F00170027004700870 +1870107020704070C070FFFE0070007000700070007003FE0F157F9412>I +E /Fk 6 113 df<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3F +FC1FF807E010127D9317>15 D17 D<000000C0000003C000000F0000003C00 +0000F0000003C000000F0000001C00000078000001E00000078000001E00000078000000E00000 +00780000001E0000000780000001E0000000780000001C0000000F00000003C0000000F0000000 +3C0000000F00000003C0000000C000000000000000000000000000000000000000000000000000 +000000FFFFFFC0FFFFFFC01A247C9C23>20 D<0100000000020000000002000000000400000000 +080000000010000000002000000000FFFFFFFFF8FFFFFFFFF82000000000100000000008000000 +00040000000002000000000200000000010000000025107C922D>32 D<00000004000000000200 +00000002000000000100000000008000000000400000000020FFFFFFFFFCFFFFFFFFFC00000000 +2000000000400000000080000000010000000002000000000200000000040026107D922D>I<00 +00000018000000003800000000300000000070000000006000000000E000000000C000000001C0 +000000018000000003800000000300000000070000000006000000000E000000000C000000001C +0000000018000000003800000000300000000070000000006000000000E000000000C000060001 +C0001E000180002F000380004F000300008780070000078006000003C00E000003C00C000003C0 +1C000001E018000001E038000000F030000000F070000000786000000078E00000003CC0000000 +3DC00000001F800000001F800000000F000000000F00000000060000000006000000252E7E8126 +>112 D E /Fl 88 128 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0 +000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01 +C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E +01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00 +000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 +C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001 +C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E +01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E +01C07FCFF8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00 +E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E +00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 +0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF +80211D809C23>I18 D<1C1C3C3870C0800607779C15>I<3C4281 +8181423C0807759D1F>23 D<6060F0F0F8F86868080808080808101010102020404080800D0C7F +9C15>34 D<00E00000019000000308000003080000070800000708000007080000070800000710 +000007100000072000000740000003C03FE003800F00038006000380040005C0040009C0080010 +E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E007002070078040 +3009C0401830E18007C03E001B1F7E9D20>38 D<60F0F8680808081010204080050C7C9C0C>I< +004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000E0 +00E000E000E000E000E000E000E000600060006000700030003000180018000C000C0006000200 +0100008000400A2A7D9E10>I<800040002000100018000C000C00060006000300030003800180 +0180018001C001C001C001C001C001C001C001C001C001C001C001C00180018001800380030003 +00060006000C000C00180010002000400080000A2A7E9E10>I<60F0F070101010102020408004 +0C7C830C>44 DI<60F0F06004047C830C>I<0003000300070006000600 +0E000C001C0018001800380030003000700060006000E000C000C001C001800380030003000700 +060006000E000C000C001C001800180038003000700060006000E000C000C00010297E9E15>I< +03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E0 +07E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C7000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700 +0F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C +001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830 +201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF8 +0FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C00005C +0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C +00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF8 +3FF03FC020002000200020002000200023E024302818301C200E000E000F000F000F600FF00FF0 +0FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070 +006000E3E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C30 +03E0101D7E9B15>I<4000007FFF807FFF007FFF00400200800400800400800800001000001000 +00200000600000400000C00000C00001C000018000018000038000038000038000038000078000 +078000078000078000078000078000030000111D7E9B15>I<03E00C301008200C200660066006 +60067006780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C0036002600430 +0C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E00760 +07700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>I<60 +F0F0600000000000000000000060F0F06004127C910C>I<60F0F0600000000000000000000060 +F0F0701010101020204080041A7C910C>I<0FE03038401CE00EF00EF00EF00E000C001C003000 +6000C0008001800100010001000100010001000000000000000000000003000780078003000F1D +7E9C14>63 D<000600000006000000060000000F0000000F0000000F0000001780000017800000 +1780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F800 +0100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F001E001F +00FF80FFF01C1D7F9C1F>65 DI<001F808000E061800180198007 +0007800E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000 +F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080380000 +801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>IIII<001F808000E06180018019800700 +07800E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000F0 +000000F0000000F0000000F0000000F000FFF0F0000F8070000780780007807800078038000780 +1C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>III<1FFF00F800780078007800780078007800 +780078007800780078007800780078007800780078007800787078F878F878F878F0F040E021C0 +1F00101D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E001C00 +07003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F0 +0001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C000700 +0E000E0007001C000380380000E0E000003F80001B1E7E9C20>I +I<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003C07800 +03C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E070 +0001C0780003C0780003C0380003803C0E07801C1107000E208E0007205C0003A0780000F0E020 +003FE0200000602000003060000038E000003FC000003FC000001F8000000F001B257E9C20>I< +FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C +000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078000F00 +78000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C20000007C01C +1D7E9B1F>I<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F80000 +7C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0 +C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F +0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 +000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>III< +FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F002007802780 +20078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E08001E081 +E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E007C00003C +003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>I<7FF0FFC0 +0FC03E000780180003C0180003E0100001E0200001F0600000F0400000788000007D8000003D00 +00001E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F00000C0 +F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>II< +7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C00007800 +00F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00203C00607800E0 +F803E0FFFFE0141C7E9B19>II<08081010202040404040808080808080B0 +B0F8F8787830300D0C7A9C15>II<0810204040808080B0F87830050C7D9C +0C>96 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C +00E01C40E01C40E01C40603C40304E801F870012127E9115>II<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C0 +0E127E9112>I<003F000007000007000007000007000007000007000007000007000007000007 +0003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007 +00700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFE +E000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E00 +0E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C0038 +1C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C0 +00C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C +001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C000 +000000000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E0 +00E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03 +F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C060018070 +03803003001806000E1C0003F00012127F9115>II<03C1000C3300180B00300F +00700700700700E00700E00700E00700E00700E00700E00700600700700700300F00180F000C37 +0007C700000700000700000700000700000700000700000700003FE0131A7E9116>II< +1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F +9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C +001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F0300 +07020003840001C80001D80000F00000700000780000F800009C00010E00020E00060700040380 +1E07C0FF0FF81512809116>II<7FFC70386038407040F040E041C003C0038007 +000F040E041C043C0C380870087038FFF80E127F9112>III<6060F0F0F0F060600C047C9C15>127 D E /Fm 58 125 +df<00003FE00000E0100001803800038078000300780007003000070000000700000007000000 +0E0000000E0000000E000000FFFFE0000E00E0001C01C0001C01C0001C01C0001C01C0001C0380 +0038038000380380003803800038070000380700007007000070071000700E2000700E2000700E +2000E00E2000E0064000E0038000E0000000C0000001C0000001C000003180000079800000F300 +0000620000003C0000001D29829F1A>12 D<00003FCE0000E0EE000181FC000381FC000300DC00 +07001C0007003800070038000E0038000E0038000E0070000E007000FFFFF0001E0070001C00E0 +001C00E0001C00E0001C00E0001C01C0003801C0003801C0003801C00038038000380380007003 +800070038800700710007007100070071000E0071000E0032000E001C000E0000000C0000001C0 +000001C000003180000079800000F3000000620000003C0000001F29829F1B>I<00E001F001F0 +03E003E003E003C003C003C0038007800700070007000600060006000C000C000C000800080008 +00000000000000000000007000F800F800F000E0000C217BA00E>33 D<0E1F3F3F1D0102020404 +081020C0080E779F0E>39 D<000100020004000800100020006000C0018001800300070006000E +000C001C0018003800380030007000700060006000E000E000C000C000C000C000C000C000C000 +C000C000C000C000C000C0004000600060002000100010000800102E79A113>I<001000000800 +000400000600000200000300000300000300000100000180000180000180000180000180000180 +000180000380000380000380000300000300000300000700000700000600000600000E00000C00 +000C00001C0000180000380000300000700000600000E00000C000018000010000030000060000 +0C0000180000300000600000800000112E80A113>I<1C3C3C3C3C040408081020204080060E7D +840E>44 D<7FF0FFE07FE00C037D8A10>I<70F8F8F0E005057B840E>I<000200020006000E003C +00DC031C001C0038003800380038007000700070007000E000E000E000E001C001C001C001C003 +800380038003800780FFF80F1E7B9D17>49 D<001F000061800080E00100E00200700220700420 +700410700820F00820F00820F00840E00881E00703C0000380000700000C000018000060000080 +000300000400000800401000401000802001807E030047FF0041FE0080FC00807800141F7C9D17 +>I<070F1F1F0E0000000000000000000070F8F8F0E008147B930E>58 D<000002000000060000 +00060000000E0000001E0000001E0000003F0000002F0000004F0000004F0000008F0000010F00 +00010F0000020F0000020F0000040F00000C0F0000080F0000100F0000100F0000200F80003FFF +800040078000C007800080078001000780010007800200078002000780060007801E000F80FF80 +7FF81D207E9F22>65 D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C00 +3C003C003C003C0078007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C0 +01E001C001E001E001E001E001E001E003C001E003C001E003C001E003C001C0078003C0078007 +8007800F0007801E000F007800FFFFE0001E1F7D9E20>I<0000FE0200078186001C004C003800 +3C0060003C00C0001C01C0001803800018070000180F0000181E0000101E0000103C0000003C00 +000078000000780000007800000078000000F0000000F0000000F0000000F0000000F000008070 +00008070000080700001003800010038000200180004000C001800060020000381C00000FE0000 +1F217A9F21>I<01FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E003C000E +003C000E0078000E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01E000 +3C01E0003C01E0003C01E0007803C0007003C0007003C000E003C001C0078001C0078003800780 +0E0007801C000F007000FFFFC0001F1F7D9E22>I<01FFFFFE001E001C001E000C001E0004001E +0004003C0004003C0004003C0004003C00040078080800780800007808000078180000F0300000 +FFF00000F0300000F0300001E0200001E0200001E0200001E0001003C0002003C0002003C00040 +03C00040078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FFFFFC +001E0038001E0018001E0008001E0008003C0008003C0008003C0008003C000800780010007808 +00007808000078080000F0100000F0300000FFF00000F0300001E0200001E0200001E0200001E0 +200003C0000003C0000003C0000003C00000078000000780000007800000078000000F800000FF +F800001E1F7D9E1E>I<01FFF3FFE0001F003E00001E003C00001E003C00001E003C00003C0078 +00003C007800003C007800003C007800007800F000007800F000007800F000007800F00000F001 +E00000FFFFE00000F001E00000F001E00001E003C00001E003C00001E003C00001E003C00003C0 +07800003C007800003C007800003C007800007800F000007800F000007800F000007800F00000F +801F0000FFF1FFE000231F7D9E22>72 D<01FFF0001F00001E00001E00001E00003C00003C0000 +3C00003C0000780000780000780000780000F00000F00000F00000F00001E00001E00001E00001 +E00003C00003C00003C00003C0000780000780000780000780000F8000FFF800141F7D9E12>I< +01FFF800001F0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800 +0000780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E0 +000001E0008003C0010003C0010003C0030003C00200078006000780060007800C0007801C000F +007800FFFFF800191F7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F800001700017800 +00170001780000270002F00000270004F00000270004F00000270008F00000470009E000004700 +11E00000470021E00000470021E00000870043C00000838043C00000838083C00000838083C000 +0103810780000103820780000103820780000103840780000203840F00000203880F0000020390 +0F00000203900F00000401E01E00000401E01E00000401C01E00000C01801E00001C01803E0000 +FF8103FFC0002A1F7D9E29>I<01FF007FE0001F000F00001F0004000017800400001780040000 +278008000023C008000023C008000023C008000041E010000041E010000041F010000040F01000 +0080F0200000807820000080782000008078200001003C400001003C400001003C400001001E40 +0002001E800002001E800002000F800002000F800004000F0000040007000004000700000C0007 +00001C00020000FF80020000231F7D9E22>I<0001FC0000070700001C01C0003000E000E00060 +01C000700380007007800038070000380E0000381E0000381C0000383C0000383C000038780000 +78780000787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C07000 +03807000070078000F0038001E0038003C001C0070000E00E0000783800001FC00001D217A9F23 +>I<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C003C003C003C003C003C00 +78007800780078007800F0007800E000F003C000F00F0000FFFC0000F0000001E0000001E00000 +01E0000001E0000003C0000003C0000003C0000003C00000078000000780000007800000078000 +000F800000FFF000001E1F7D9E1F>I<0001FC0000070700001C01C0003000E000E000E001C000 +700380007007800078070000380F0000381E0000381E0000383C0000383C000078780000787800 +00787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C07000038070 +1C070070200F0038411E0038413C001C4170000E41E0000743808001FD00800001018000010100 +00038300000386000003FE000003FC000001F8000000F0001D297A9F23>I<01FFFF00001E03C0 +001E00E0001E0070001E0078003C0078003C0078003C0078003C0078007800F0007800F0007801 +E0007801C000F0070000F01E0000FFF00000F0380001E01C0001E01E0001E00E0001E00F0003C0 +1E0003C01E0003C01E0003C01E0007803C0007803C0807803C0807803C100F801C10FFF00C2000 +0007C01D207D9E21>I<0007E040001C18C0003005800060038000C0038001C001800180010003 +80010003800100038001000380000003C0000003C0000003F8000001FF800001FFE000007FF000 +001FF0000001F80000007800000078000000380000003800200038002000380020003000600070 +00600060006000E0007000C000E8038000C606000081F800001A217D9F1A>I<0FFFFFF01E0780 +E0180780201007802020078020200F0020600F0020400F0020400F0020801E0040001E0000001E +0000001E0000003C0000003C0000003C0000003C00000078000000780000007800000078000000 +F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003E00000FFFF0000 +1C1F789E21>I<7FFC1FF807C003C00780010007800100078001000F0002000F0002000F000200 +0F0002001E0004001E0004001E0004001E0004003C0008003C0008003C0008003C000800780010 +00780010007800100078001000F0002000F0002000F0002000F0004000F0004000700080007001 +000030020000380400000C18000007E000001D20779E22>I87 D<00FFF07FE0000F801F +00000F001C00000F801000000780300000078020000007C040000003C080000003C100000003E2 +00000001E400000001EC00000001F800000000F000000000F800000000F800000000F800000001 +7C000000023C000000063C000000043E000000081E000000101E000000201F000000400F000000 +800F000001800F8000010007800007000780001F000FC000FFC07FF800231F7E9E22>I<00F180 +0389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20 +F01C40F01C40703C40705C40308C800F070013147C9317>97 D<07803F8007000700070007000E +000E000E000E001C001C001CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01C +E03CE038607060E031C01F0010207B9F15>I<007E0001C1000300800E07801E07801C07003C02 +00780000780000780000F00000F00000F00000F00000F0000070010070020030040018380007C0 +0011147C9315>I<0000780003F80000700000700000700000700000E00000E00000E00000E000 +01C00001C000F1C00389C00707800E03801C03803C0380380700780700780700780700F00E00F0 +0E00F00E00F00E20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C20701 +0E011C013C013802780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315 +>I<00007800019C00033C00033C000718000700000700000E00000E00000E00000E00000E0001 +FFE0001C00001C00001C00001C0000380000380000380000380000380000700000700000700000 +700000700000700000E00000E00000E00000E00000C00001C00001C0000180003180007B0000F3 +00006600003C00001629829F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C0 +1E01C01E01C03C03803C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00 +000E00001C00001C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C0 +0001C00001C00001C000038000038000038000038000070000070000071E000763000E81800F01 +C00E01C00E01C01C03801C03801C03801C0380380700380700380700380E10700E20700C20701C +20700C40E00CC060070014207D9F17>I<00C001E001E001C00000000000000000000000000000 +0E003300230043804300470087000E000E000E001C001C001C003840388030807080310033001C +000B1F7C9E0E>I<0001800003C00003C000038000000000000000000000000000000000000000 +0000003C00004600008700008700010700010700020E00000E00000E00000E00001C00001C0000 +1C00001C0000380000380000380000380000700000700000700000700000E00000E00030E00079 +C000F180006300003C00001228829E0E>I<01E0000FE00001C00001C00001C00001C000038000 +0380000380000380000700000700000703C00704200E08E00E11E00E21E00E40C01C80001D0000 +1E00001FC00038E000387000387000383840707080707080707080703100E03100601E0013207D +9F15>I<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C +0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C>I<1C0F80 +F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E00E01C000E00 +E01C000E00E01C001C01C038001C01C038001C01C038001C01C070803803807100380380610038 +0380E10038038062007007006600300300380021147C9325>I<1C0F802630C047406047806047 +00704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C038438038838030838070838 +03107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801E0 +7801E07801E0F003C0F003C0F003C0F00780F00700700F00700E0030180018700007C00013147C +9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01C0 +3C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E00000E00000E00 +000E00001C00001C0000FFC000171D809317>I<00F0400388C00705800E03801C03803C038038 +0700780700780700780700F00E00F00E00F00E00F00E00F01C00F01C00703C00705C0030B8000F +380000380000380000700000700000700000700000E00000E0000FFE00121D7C9315>I<1C1E00 +2661004783804787804707804703008E00000E00000E00000E00001C00001C00001C00001C0000 +38000038000038000038000070000030000011147C9313>I<00FC030206010C030C070C060C00 +0F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<018001C00380 +03800380038007000700FFF007000E000E000E000E001C001C001C001C00380038003800382070 +4070407080708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C0870380 +0E03800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C380 +14147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E00801C01 +001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00C1C0 +3300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E0380401C0700 +801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E13080003E1F0001B14 +7C931E>I<0383800CC4401068E01071E02071E02070C040E00000E00000E00000E00001C00001 +C00001C00001C040638080F38080F38100E5810084C60078780013147D9315>I<0E00C03300E0 +2301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C07001C0E00 +180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E06000C0C000438000 +3E0000131D7C9316>I124 D E /Fn 10 113 +df<007C0001C3000701810E01C11E00C11C00E23C00E27800E27800E47800E4F000E8F000F0F0 +00F0F000E0F000E07000E07003E030046118383207C01C18147E931D>11 +D<0000F800030600040600080300100300200300400700400700800700800601000E01000C0107 +F80104700207D802001C02001C02001E04001E04001E04001E04001E08003C08003C08003C0800 +781800701400F01400E01201C0218700207C002000002000004000004000004000004000008000 +0080000080000018297F9F1A>I<060007000E000E000E000E001C001C001C0038003800380038 +0070107020E020E040608063003C000C147E9310>19 D<07000001C00000E00000E00000F00000 +7000007000007800003800003800003C00001C00001C00001E00000E00000E00000F0000070000 +0F0000378000638000C38001C3C00381C00701C00E01E01C00E03800E07000F0F00070E00070C0 +003815207D9F1B>21 D<70F8F8F87005057C840D>58 D<00F1800389C00707800E03801C03803C +0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C4030 +8C400F078014147E9318>97 D<07803F8007000700070007000E000E000E000E001C001C001CF0 +1D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010 +207E9F14>I<1E07C07C00231861860023A032030043C034030043803803804380380380870070 +07000700700700070070070007007007000E00E00E000E00E00E000E00E00E000E00E01C101C01 +C01C201C01C038201C01C038401C01C0184038038018801801800F0024147E9328>109 +D<1E07802318C023A06043C0704380704380708700E00700E00700E00700E00E01C00E01C00E01 +C00E03821C03841C07041C07081C03083803101801E017147E931B>I<03C1E004621804741C08 +781C08701E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01C03803807803807003 +80E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FFC00017 +1D819317>112 D E /Fo 49 124 df<387CFEFFFF7F3B03030706060C1C18702008117CA210> +39 D<00180030006000C001C00380070007000E001E001C003C003C003C007800780078007800 +F800F000F000F000F000F000F000F000F000F000F000F000F80078007800780078003C003C003C +001C001E000E0007000700038001C000C00060003000180D317BA416>II45 +D<387CFEFEFE7C3807077C8610>I<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C +7C007CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E +FC007EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C> +48 D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F800 +01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 +01F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>I<03FC000FFF003C1FC07007 +E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F +80001F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFF +F0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F +03F81F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C +00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I< +0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E0 +0307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E0 +0007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801FFF +001FFE001FF8001BC00018000018000018000018000019FC001FFF001E0FC01807E01803E00003 +F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF +0003F80015207D9F1C>I<001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C +00007C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C +007E7C007E7C007E3C007C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<600000 +7800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600 +000C00001C0000180000380000780000780000F00000F00000F00001F00001F00001F00003F000 +03F00003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC00601E00C00 +701800701800383800383C00383F00383F80783FE0701FF8E01FFFC00FFF8007FFC003FFE007FF +F01E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C00381F01 +F00FFFC001FF0017207E9F1C>I<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC007CFC +007CFC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00 +007C00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003F80017207E9F1C>I< +387CFEFEFE7C380000000000000000387CFEFEFE7C3807167C9510>I66 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0 +000F800F800007801F800007803F000003803F000003807F000001807E000001807E00000180FE +00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +7E000000007E000001807F000001803F000001803F000003801F800003000F8000030007C00006 +0003F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128>IIII73 D76 DII<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80 +003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE +00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0 +7E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC +0003F001F80000FC07E000003FFF80000007FC000023227DA12A>II<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000C +F8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF +00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80 +18227DA11F>83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E0 +03F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F80000 +0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800 +000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 +00000003F800000003F8000003FFFFF80003FFFFF80022227EA127>I<07FC001FFF803F07C03F +03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC +01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C00 +00FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF +8000FE0014167E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E00 +00003E0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E +003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC00 +3E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F +>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC +0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F80 +00FFC001E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00 +FFFC000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 +0F80000F80000F80000F80000F80000F80007FF8007FF80013237FA211>I104 D<1C003F007F007F007F003F001C0000 +00000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F00 +1F001F001F001F001F001F001F00FFE0FFE00B247EA310>I108 DII<00FE0007FFC00F83E01E00F03E +00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E +00F81F01F00F83E007FFC000FE0017167E951C>II< +FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F0000 +1F00001F00001F00001F00001F00001F00001F0000FFF000FFF00013167E9517>114 +D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF +00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001 +80000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F +80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F +81800F830007C30003FE0000F80011207F9F16>III121 +D123 D E /Fp 37 122 df<0000FF8000000FFFE000003FFF +F00000FF80F80001FE01FC0003F803FC0007F803FC0007F003FC0007F003FC0007F001F80007F0 +00F00007F000000007F000000007F000000007F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007 +F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC00 +07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC +0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1F +FFC0222A7FA926>12 D<000700000F00007F0007FF00FFFF00FFFF00F8FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +007FFFFE7FFFFE7FFFFE17277BA622>49 D<00FF800007FFF0001FFFFC003F03FE007C01FF807F +00FF80FF807FC0FF807FC0FF803FE0FF803FE0FF803FE07F003FE01C003FE000003FE000003FE0 +00007FC000007FC00000FF800000FF000001FE000003FC000003F8000007E000000FC000001F80 +00003F00E0007C00E000F800E001F001C003E001C003C001C007FFFFC00FFFFFC01FFFFFC03FFF +FFC07FFFFF80FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800001FFF00007FFFC000F81 +FE001F81FF003FC0FF803FE0FF803FE0FF803FE0FF803FE0FF803FE0FF801FC0FF000701FF0000 +01FE000003FC000007F80000FFF00000FF800000FFF0000003FC000001FF000000FF800000FFC0 +00007FC000007FE01E007FE07F807FE07F807FE0FFC07FE0FFC07FE0FFC07FE0FFC07FC0FFC0FF +C07F80FF807E01FF803F83FE000FFFFC0007FFF00000FF80001B277DA622>I<00000F0000001F +0000003F0000007F0000007F000000FF000001FF000003FF000003FF000007FF00000F7F00001E +7F00003C7F00003C7F0000787F0000F07F0001E07F0001C07F0003C07F0007807F000F007F001E +007F001E007F003C007F0078007F00F0007F00FFFFFFF8FFFFFFF8FFFFFFF80000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF00007FFFF8007FFFF8007FFFF81D277EA622>I< +180003001F803F001FFFFF001FFFFE001FFFFC001FFFFC001FFFF0001FFFE0001FFF80001FFC00 +001E0000001E0000001E0000001E0000001E0000001E3FC0001FFFF0001FFFFC001F80FF001F00 +7F801E007F8000003FC000003FC000003FE000003FE01C003FE07F003FE0FF003FE0FF803FE0FF +803FE0FF803FE0FF003FC0FF007FC07C007F803C00FF003F01FE000FFFFC0003FFF00000FF8000 +1B277DA622>I<00003FF003800003FFFE0780000FFFFF8F80003FF00FFF8000FF8001FF8001FF +0000FF8007FC00007F800FFC00003F800FF800001F801FF000001F803FF000000F803FE000000F +807FE0000007807FE0000007807FC000000780FFC000000000FFC000000000FFC000000000FFC0 +00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000 +00FFC0000000007FC0000000007FE0000003807FE0000003803FE0000003803FF0000003801FF0 +000007800FF8000007000FFC00000F0007FE00001E0001FF00003C0000FF8000F800003FF007F0 +00000FFFFFC0000003FFFF000000003FF0000029297CA832>67 DIII73 D76 +D80 D82 +D<007F80E003FFF1E00FFFFFE01F807FE03F001FE03E0007E07E0003E07C0003E0FC0001E0FC00 +01E0FC0000E0FE0000E0FF0000E0FF800000FFF80000FFFF80007FFFF8007FFFFE003FFFFF001F +FFFFC00FFFFFC007FFFFE001FFFFF0003FFFF00001FFF800001FF8000007F8000007F8E00003F8 +E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF +00F0FFFE00E01FF0001D297CA826>I87 D<01FF80000FFFF0001FFFFC003FC1FE003FC0FF003FC07F003FC03F803FC03F800F003F80 +00003F8000003F80003FFF8001FFFF800FFC3F801FE03F803F803F807F003F80FF003F80FE003F +80FE003F80FE003F80FF007F807F00FF807F81FFC03FFFDFFC0FFF0FFC01FC03FC1E1B7E9A21> +97 DI<001FF00000FFFE0003FFFF000FF0 +7F801FE07F803FC07F803F807F807F807F807F001E00FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF0000007F8000007F8000003FC001C03FC003C01FE00380 +0FF80F8003FFFF0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF80000 +0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800 +000003F800000003F800000003F800000003F800003FC3F80001FFF3F80003FFFFF8000FF03FF8 +001FE00FF8003FC007F8003F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003 +F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F80 +03F8003F8007F8003FC007F8001FC01FF8000FF03FF80007FFFBFF8001FFE3FF80003F83FF8021 +2A7EA926>I<003FE00001FFF80003FFFE000FF07F001FC03F803FC01FC03F800FC07F800FC07F +0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF000000 +7F8000007F8000003F8000E03FC001E01FE001C00FF807C003FFFF0000FFFE00001FF0001B1B7E +9A20>I<0003F800001FFE00007FFF0001FE7F8003FC7F8003F87F8007F87F8007F07F8007F03F +0007F0000007F0000007F0000007F0000007F0000007F00000FFFFC000FFFFC000FFFFC00007F0 +000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007 +F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000 +07F000007FFF80007FFF80007FFF8000192A7EA915>I<00FF81F003FFE7FC0FFFFFFC1FC1FCFC +3F80FE7C3F007E387F007F007F007F007F007F007F007F007F007F007F007F003F007E003F80FE +001FC1FC000FFFF8001FFFE00038FF8000380000003C0000003C0000003E0000003FFFF8003FFF +FF001FFFFFC00FFFFFE00FFFFFF03FFFFFF07E000FF8FE0003F8FC0001F8FC0001F8FC0001F8FE +0003F87E0003F07F0007F03FC01FE00FFFFF8003FFFE00007FF0001E287E9A22>II<07801FE01FE03FF03FF03FF03FF01FE01FE007800000 +00000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F +E00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<000780001FE000 +1FE0003FF0003FF0003FF0003FF0001FE0001FE000078000000000000000000000000000000000 +000000FFF000FFF000FFF00007F00007F00007F00007F00007F00007F00007F00007F00007F000 +07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 +07F00007F00007F00007F00007F07E07F0FF07F0FF07F0FF0FE0FF1FE0FF1FC07FFF003FFE0007 +F000143785AA15>I108 DII<003FE00001FFFC0003FFFE000FF07F801FC01FC03F800FE03F800FE0 +7F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007 +F8FF0007F87F0007F07F0007F03F800FE03F800FE01FC01FC00FF07F8007FFFF0001FFFC00003F +E0001D1B7E9A22>II114 D<03FE700FFFF03FFFF07E01 +F07C00F0F80070F80070FC0070FE0000FFE000FFFE007FFF803FFFE01FFFF007FFF800FFFC0007 +FC0001FCE000FCE0007CF0007CF8007CF800F8FE01F8FFFFF0FFFFC0E1FF00161B7E9A1B>I<00 +700000700000700000700000F00000F00001F00001F00003F00007F0001FF000FFFFF0FFFFF0FF +FFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 +F00007F03807F03807F03807F03807F03807F03807F87803F8F001FFF000FFC0003F8015267FA5 +1B>III121 D E /Fq 20 119 df<1C3E7E7E3A020204 +0408081020C0070E7D840D>44 D<07FFFFF8007C0078003C0038003C0018007800180078000800 +78000800780008007800080078080800F0100000F0100000F0100000F0300000FFF00000F07000 +01E0200001E0200001E0200001E0200001E0000801E0001003C0001003C0001003C0002003C000 +2003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>69 D<0001FC04000F030C003C +009C0070007C00E0003C01C0003803800018078000180F0000181F0000181E0000183E0000103C +0000007C0000007C0000007C0000007C000000F8000000F8000000F8007FFCF80003E0780001E0 +780001E0780003C0780003C03C0003C03C0003C01C0003C00E0007C007000B800380118001E060 +80003F80001E217B9F24>71 D<07FFF000007E0000003C0000003C000000780000007800000078 +000000780000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000001 +E0000001E0000001E0000001E0000001E0008001E0010003C0010003C0010003C0030003C00200 +03C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C>76 D<003F040060CC01803C0380 +1C03001C0700180600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FF +C0007FE00007E00001E00000E00000F00000F04000E04000E04000E04000E06000C0600180E003 +80F80300C60C0081F80016217D9F19>83 D<07F8000C0C001E06001E07001C0700000700000700 +00070000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F01E10F02E20784F401F8780 +14147D9317>97 D<0700003F00000F00000700000700000E00000E00000E00000E00000E00000E +00001C00001C7C001D87001E03801C01C01C01C03801C03801E03801E03801E03801E03801E070 +03C07003C0700380700780700700700E00E81C00C4380083E00013207B9F19>I<0000700003F0 +0000F00000700000700000E00000E00000E00000E00000E00000E00001C000F9C00305C00E03C0 +1C03C03801C0780380700380F00380F00380F00380F00380E00700E00700E00700E00700E00700 +700F00301E00186F000F8FE014207C9F19>100 D<00F800070E000E07001C0700380380780380 +700380F00380F00380FFFF80F00000E00000E00000E00000E00000F001007002003004001C1800 +07E00011147D9314>I<0007800018C00031E00061E000E1C000C00001C00001C00001C00001C0 +0001C0000380007FF8000380000380000380000380000700000700000700000700000700000700 +000E00000E00000E00000E00000E00000E00001C00001E0000FFE00013207E9F0E>I<01C003E0 +03E003E001C000000000000000000000000003801F800780038003800700070007000700070007 +000E000E000E000E000E000E001C001E00FF800B1F7F9E0C>105 D<00E007E001E000E000E001 +C001C001C001C001C001C00380038003800380038003800700070007000700070007000E000E00 +0E000E000E000E001C001E00FFC00B207F9F0C>108 D<038F801F90E007A0E003C06003806007 +80E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E +03C0FFCFF815147E9319>110 D<00FC000387000E01801C00C03800E03800E07000F0F000F0F0 +00F0F000F0F000F0E001E0E001E0E001C0E003C0F00380700700380E001C1C0007E00014147D93 +17>I<00E3E007EC3800F01C00E01E00E00E01C00E01C00F01C00F01C00F01C00F01C00F03801E +03801E03801C03803C0380380380700740E00721C0071F000700000700000700000E00000E0000 +0E00000E00001E0000FFC000181D809319>I<038E001FB38007C78003C7800383000780000700 +000700000700000700000700000E00000E00000E00000E00000E00000E00001C00001E0000FFE0 +0011147E9312>114 D<01F2060E080618061802380438001E001FE00FF003F8003C401C400C40 +0C600C6018E010D0608FC00F147E9312>I<0080010001000100030007000F001E00FFF80E000E +000E000E001C001C001C001C001C001C00380038203820382038203840384018800F000D1C7C9B +12>I<1C0380FC1F803C07801C03801C0380380700380700380700380700380700380700700E00 +700E00700E00700E00701E00701E00703C00305E001F9FC012147B9319>II E /Fr 1 59 df<40E04003037D8209>58 +D E /Fs 1 14 df<00FF0003FFC00F00F01C003838001C70000E600006E00007C00003C00003C0 +0003C00003C00003C00003E0000760000670000E38001C1C00380F00F003FFC000FF0018167D90 +1E>13 D E /Ft 53 124 df<03F00E181818180018001800FFF818181818181818181818181818 +18181818187E7E0F11809012>12 D<080008001E004900088088808980880048007C003E000B00 +09800880C880888088004B003C00080009147E920F>36 D<020408103020604040C0C0C0C0C0C0 +C0C0404060203010080402071A7F920C>40 D<8040201018080C0404060606060606060604040C +081810204080071A7E920C>I<40E060202040408003087E8209>44 DI<40E0 +4003037E8209>I<0180018003800300030007000600060006000E000C000C001C001800180038 +00300030003000700060006000E000C000C00009197E920F>I<1F00318060C04040C060C060C0 +60C060C060C060C060C060404060C031801F000B107F8F0F>I<0C003C00CC000C000C000C000C +000C000C000C000C000C000C000C000C00FF8009107E8F0F>I<1F00618040C08060C060006000 +6000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001 +800F00008000400060C060C060804060801F000B107F8F0F>I<0300030007000F000B00130033 +0023004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C002000200020002F +0030802040006000600060C06080C061801F000B107F8F0F>I<40007FE07FC080808080010002 +00040004000C0008000800180018001800180018000B117E900F>55 D<1F002080404040404040 +70803F000F00338061C0C060C060C060404060801F000B107F8F0F>I<1F00318060C0C040C060 +C060C06040E021E01E600060004060C0608043003E000B107F8F0F>I<00C00000C00000C00001 +6000016000023000023000023000041800041800080C000FFC00080C00100600100600300700FC +1FC012117F9016>65 D<03F10C0B1807300360014001C000C000C000C000C00040016001300218 +020C0C03F010117E9016>67 D<03F1000C0B00180700300300600100400100C00000C00000C000 +00C03FC0C003004003006003003003001803000C070003F90012117E9017>71 +DII76 DII<03E0000C1800100400200200600300400100C00180C00180C00180C00180C001 +806003006003003006003006000C180003E00011117E9017>II<1F2060E000608020802080 +0060003E001F8000C00060002080208020C040E0C09F000B117E9011>83 +D<7FFF8060C18040C080C0C0C080C04080C04000C00000C00000C00000C00000C00000C00000C0 +0000C00000C00000C0000FFC0012117F9016>II< +3E006300018001800F8031804180C190C19063903DE00C0B7F8A0F>97 DI<1F8030C06000C0 +00C000C000C000C000604030801F000A0B7F8A0E>I<01E0006000600060006000600F6030E060 +60C060C060C060C060C060606030E01F780D117F9011>I<1F00318060C0C0C0FFC0C000C000C0 +00604030801F000A0B7F8A0E>I<07000D801800180018001800FE001800180018001800180018 +001800180018007E00091180900A>I<1EF0331061806180618033003E00400060003F803FC060 +E0C060C060C06060C01F000C117F8A0F>II<30703000000000F0303030303030303030FC06 +12809108>I108 +DII<1F00318060C0C060C0 +60C060C060C06060C031801F000B0B7F8A0F>II<0F2030E06060C060C060C060C060C060606030 +E01F60006000600060006001F80D107F8A10>II<3E028280783E038181C2BC080B7F8A0C>I<10103030FE30303030303232 +32321C070F7F8E0C>IIII121 +D123 D E /Fu 62 124 df<000FE000007FF80000F81C0001E07C0003E07C +0007C07C0007C07C0007C0380007C0000007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C0 +3E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007 +C03E0007C03E0007C03E0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>12 +D45 D<387CFEFEFE7C3807077C860F>I<01FC0007FF001F07 +C01E03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01 +F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E03E01E03C01F8FC007FF0001FC +00151D7E9C1A>48 D<00E00001E0000FE000FFE000F3E00003E00003E00003E00003E00003E000 +03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000 +03E00003E00003E00003E000FFFF80FFFF80111D7C9C1A>I<07F0001FFE00383F007C1F80FE0F +C0FE0FC0FE0FE0FE07E07C07E03807E0000FE0000FC0000FC0001F80001F00003E0000780000F0 +0000E00001C0000380600700600E00601C00E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A +>I<01FC0007FF000E0F801E0FC03F07E03F07E03F07E03F07E01E0FC0000FC0000F80001F0001 +FC0001FC00000F800007C00003E00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC03F078 +07E03C0FC01FFF8003FC00151D7E9C1A>I<0001C00003C00007C00007C0000FC0001FC0003BC0 +0073C00063C000C3C00183C00383C00703C00E03C00C03C01803C03803C07003C0E003C0FFFFFE +FFFFFE0007C00007C00007C00007C00007C00007C000FFFE00FFFE171D7F9C1A>I<3803803FFF +803FFF003FFE003FFC003FF0003F800030000030000030000030000033F8003FFE003C1F00380F +803007C00007C00007E00007E07807E0FC07E0FC07E0FC07E0FC07C0780FC0600F80381F001FFC +0007F000131D7D9C1A>I<003F0001FFC007E0E00F81E01F03F01E03F03E03F07C03F07C01E07C +0000FC1000FCFF00FDFFC0FD03E0FE01F0FE01F0FC01F8FC01F8FC01F8FC01F87C01F87C01F87C +01F83C01F03E01F01E03E00F07C007FF8001FE00151D7E9C1A>I<6000007FFFF87FFFF87FFFF0 +7FFFE07FFFE0E001C0C00380C00700C00E00000C00001C0000380000780000780000F00000F000 +00F00001F00001F00001F00003F00003F00003F00003F00003F00003F00003F00003F00001E000 +151E7D9D1A>I<01FC0007FF000E07801C01C01800E03800E03800E03C00E03F00E03FC1C01FE3 +801FFF000FFE0007FF8007FFC01FFFE03C3FF0780FF07803F8F001F8F000F8F00078F00078F000 +707800707C00E03E03C00FFF8003FC00151D7E9C1A>I<01FC000FFF001F07803E03C07C03E07C +01E0FC01F0FC01F0FC01F0FC01F8FC01F8FC01F8FC01F87C03F87C03F83E05F81FFDF807F9F800 +41F80001F03C01F07E01F07E03E07E03E07E07C03C0780381F001FFC0007F000151D7E9C1A>I< +387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>I<0000E000000000E000000001 +F000000001F000000001F000000003F800000003F800000006FC00000006FC0000000EFE000000 +0C7E0000000C7E000000183F000000183F000000303F800000301F800000701FC00000600FC000 +00600FC00000C007E00000FFFFE00001FFFFF000018003F000018003F000030001F800030001F8 +00060001FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 +DI<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E +1F80001E3F00000E3F00000E7F0000067E0000067E000006FE000000FE000000FE000000FE0000 +00FE000000FE000000FE0000007E0000007E0000067F0000063F0000063F00000C1F80000C0FC0 +001807E0003803F0007000FE01C0003FFF800007FC001F1F7D9E26>III<0007FC0200003FFF0E0000FE03DE0003F000FE0007E0003E000FC0001E +001F80001E003F00000E003F00000E007F000006007E000006007E00000600FE00000000FE0000 +0000FE00000000FE00000000FE00000000FE003FFFE0FE003FFFE07E00007E007E00007E007F00 +007E003F00007E003F00007E001F80007E000FC0007E0007E0007E0003F000FE0000FE01FE0000 +3FFF8E000007FC0600231F7D9E29>71 DII<03FFFC03FFFC000FC0000FC0000FC0000FC0000FC0000FC000 +0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000 +0FC0100FC07C0FC0FE0FC0FE0FC0FE0FC0FE1F807C3F003FFE000FF000161F7F9E1B>I76 DII<001FF80000FFFF0001F81F8007E007E00FC003F01F8001 +F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE00007FFE00007FFE00007FFE00007FFE00 +007FFE00007FFE00007FFE00007FFE00007F7E00007E7F0000FE7F0000FE3F0000FC3F8001FC1F +8001F80FC003F007E007E001F81F8000FFFF00001FF800201F7D9E27>II82 D<03FC080FFF381E03F83800F8700078700038F00038F00018F00018 +F80000FC00007FC0007FFE003FFF801FFFE00FFFF007FFF000FFF80007F80000FC00007C00003C +C0003CC0003CC0003CE00038E00078F80070FE01E0E7FFC081FF00161F7D9E1D>I<7FFFFFFC7F +FFFFFC7C07E07C7007E01C6007E00C6007E00CE007E00EC007E006C007E006C007E006C007E006 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0 +000007E0000007E0000007E0000007E0000007E0000007E0000007E00003FFFFC003FFFFC01F1E +7E9D24>IIIII<3FFFFF803FFFFF803F803F803E007F003800FE003800FE007001 +FC007003F8006003F8006007F000600FE000000FE000001FC000003F8000003F8000007F000000 +FE000000FE000001FC018003F8018003F8018007F001800FE003800FE003801FC003003F800700 +3F800F007F001F00FE007F00FFFFFF00FFFFFF00191F7D9E20>90 D<07FC001FFF003F0F803F07 +C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05 +E07E0DE03FF9FE0FE07E17147F9319>97 DI<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC00 +00FC00007C00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<0007F80007F800 +00F80000F80000F80000F80000F80000F80000F80000F80000F80000F801F8F80FFEF81F83F83E +01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E +01F81F07F80FFEFF03F8FF18207E9F1D>I<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8 +FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007E00003E00183F00380F807007FFE000FF80 +15147F9318>I<001F8000FFC001F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C0 +0007C000FFFC00FFFC0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0 +0007C00007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07FFFE0F +079E1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC001800001800001C +00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78003C78003C3F01F80F +FFE001FF00171E7F931A>II<1C00 +3F007F007F007F003F001C00000000000000000000000000FF00FF001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>I107 DIII<01FF0007FFC01F83 +F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00 +F83E00F81F83F007FFC001FF0017147F931A>II<01F818 +07FE381F87783F01F83E01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F8 +7E00F87E00F83F01F81F87F80FFEF803F8F80000F80000F80000F80000F80000F80000F80000F8 +0007FF0007FF181D7E931C>II<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006F81EFF +FCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFFFC0F800F800F800F +800F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>IIIIII< +3FFFE03FFFE03C0FC0381FC0701F80603F00607E0060FE0000FC0001F80003F00007E0600FE060 +0FC0601F80E03F00C07F01C07E03C0FFFFC0FFFFC013147F9317>II E /Fv 15 119 df69 D +76 D<3FFFFFFFFFFF003FFFFFFFFFFF003FFFFFFFFFFF003FFFFFFFFFFF003FE00FFE01FF007F +800FFE007F807F000FFE001F807E000FFE001F807C000FFE000F807C000FFE000F8078000FFE00 +078078000FFE00078078000FFE00078078000FFE000780F0000FFE0003C0F0000FFE0003C0F000 +0FFE0003C0F0000FFE0003C000000FFE00000000000FFE00000000000FFE00000000000FFE0000 +0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000F +FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000 +00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE +00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000 +7FFFFFFFC000007FFFFFFFC000007FFFFFFFC000007FFFFFFFC00032307DAF39>84 +D<000FFE0000007FFFC00001FFFFE00003FE0FF00007F803F8000FF001FC001FF000FE003FE000 +FF003FE000FF007FC0007F007FC0007F807FC0007F80FFC0007F80FFC0007F80FFFFFFFF80FFFF +FFFF80FFFFFFFF80FFC0000000FFC0000000FFC00000007FC00000007FC00000007FE00000003F +E00007803FE00007801FF0000F800FF8001F0007FC003E0003FF01FC0000FFFFF800003FFFE000 +0007FF000021207E9F26>101 D<0000FF000007FFC0001FFFF0007FC7F000FF8FF801FF0FF801 +FF0FF803FE0FF803FE0FF803FE07F003FE01C003FE000003FE000003FE000003FE000003FE0000 +03FE000003FE0000FFFFF800FFFFF800FFFFF800FFFFF80003FE000003FE000003FE000003FE00 +0003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE +000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003 +FE00007FFFF8007FFFF8007FFFF8007FFFF8001D327EB119>I<01FC00000000FFFC00000000FF +FC00000000FFFC00000000FFFC000000000FFC0000000007FC0000000007FC0000000007FC0000 +000007FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007 +FC0000000007FC0000000007FC0000000007FC03FC000007FC1FFF000007FC7FFFC00007FCF87F +C00007FDE03FE00007FFC01FE00007FF801FF00007FF001FF00007FE001FF00007FE001FF00007 +FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001F +F00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007 +FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF000FFFFE3FFFF80FFFFE3FF +FF80FFFFE3FFFF80FFFFE3FFFF8029327DB12E>104 D<03F00007F8000FFC001FFE001FFE001F +FE001FFE001FFE001FFE000FFC0007F80003F00000000000000000000000000000000000000000 +000001FC00FFFC00FFFC00FFFC00FFFC000FFC0007FC0007FC0007FC0007FC0007FC0007FC0007 +FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007 +FC0007FC0007FC00FFFFC0FFFFC0FFFFC0FFFFC012337EB216>I<01FC00FFFC00FFFC00FFFC00 +FFFC000FFC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC00 +07FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC00 +07FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC00 +07FC0007FC0007FC00FFFFE0FFFFE0FFFFE0FFFFE013327EB116>108 D<01F803FC0000FFF81F +FF0000FFF87FFFC000FFF8F87FC000FFF9E03FE0000FFBC01FE00007FB801FF00007FF001FF000 +07FE001FF00007FE001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC00 +1FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF000 +07FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC00 +1FF000FFFFE3FFFF80FFFFE3FFFF80FFFFE3FFFF80FFFFE3FFFF8029207D9F2E>110 +D<0007FE0000003FFFC00000FFFFF00003FE07FC0007F801FE000FF000FF001FE0007F803FE000 +7FC03FC0003FC07FC0003FE07FC0003FE07FC0003FE0FFC0003FF0FFC0003FF0FFC0003FF0FFC0 +003FF0FFC0003FF0FFC0003FF0FFC0003FF0FFC0003FF07FC0003FE07FC0003FE07FC0003FE03F +E0007FC03FE0007FC01FE0007F800FF000FF0007F801FE0003FE07FC0001FFFFF800003FFFC000 +0007FE000024207E9F29>I<01FC0FF000FFFCFFFE00FFFFFFFF80FFFFE07FE0FFFF803FF007FF +001FF807FC000FF807FC000FFC07FC0007FE07FC0007FE07FC0007FE07FC0003FF07FC0003FF07 +FC0003FF07FC0003FF07FC0003FF07FC0003FF07FC0003FF07FC0003FF07FC0003FF07FC0003FF +07FC0007FE07FC0007FE07FC0007FC07FC000FFC07FE000FF807FF001FF007FF803FE007FFE07F +C007FFFFFF8007FCFFFE0007FC1FE00007FC00000007FC00000007FC00000007FC00000007FC00 +000007FC00000007FC00000007FC00000007FC00000007FC000000FFFFE00000FFFFE00000FFFF +E00000FFFFE00000282E7E9F2E>I<00FF870007FFFF001FFFFF003F807F007E003F007C001F00 +FC000F00FC000F00FE000F00FF000000FFC00000FFFF0000FFFFE0007FFFF8003FFFFE001FFFFF +000FFFFF0003FFFF8000FFFFC00007FFC000007FC0F0001FC0F0001FC0F8000FC0F8000FC0FC00 +0F80FE001F80FF001F00FF807F00FFFFFC00F3FFF800E07FC0001A207D9F21>115 +D<003C00003C00003C00003C00003C00007C00007C00007C0000FC0000FC0001FC0001FC0003FC +0007FC001FFFFEFFFFFEFFFFFEFFFFFE07FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC +0007FC0007FC0007FC0007FC0007FC0007FC0007FC0007FC0F07FC0F07FC0F07FC0F07FC0F07FC +0F07FC0F07FC1F03FE1E03FF3E01FFFC007FF8000FE0182E7EAD20>I<01FC0007F000FFFC03FF +F000FFFC03FFF000FFFC03FFF000FFFC03FFF0000FFC003FF00007FC001FF00007FC001FF00007 +FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001F +F00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007FC001FF00007 +FC001FF00007FC001FF00007FC003FF00007FC003FF00007FC007FF00007FC007FF00003FC00FF +F80003FE03DFFF8001FFFF9FFF80007FFF1FFF80000FF81FFF8029207D9F2E>II E /Fw 87 127 df<00C00001E00001E00001E00001E00001E00001E00001E00001E0 +0001E00001E00001E00001E00001E00001E00001E00001E00001E00041E080F1E3C0FDEFC03FFF +000FFC0007F80003F00001E00001E00000C000121C7D9B18>12 D<70F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F870000000000070F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E0 +38E038E038E038E038E03860300D0E7B9C18>I<030600078F00078F00078F00078F00078F0007 +8F007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FF +FFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<3803007C0780 +7C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E007C3C007C3C00387C00007800007800 +00F80000F00001F00001E00001E00003E00003C00003C00007C0000783800787C00F87C00F0EE0 +0F0EE01F0EE01E0EE01E0EE03E0EE03C07C03C07C018038013247E9F18>37 +D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F01C73F01CE3F00FE3800FC7 +000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E0787070FC707FFF +E03FCFE00F03C0141C7F9B18>I<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001 +E003C007800F001E001C00380038007000700070007000E000E000E000E000E000E000E000E000 +7000700070007000380038001C001E000F00078003C001F000F000700C24799F18>I<6000F000 +78003C001E000F000780038001C001C000E000E000E000E0007000700070007000700070007000 +7000E000E000E000E001C001C0038007800F001E003C007800F00060000C247C9F18>I<01C000 +01C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80 +F1C780C1C18001C00001C00001C00001C00011147D9718>I<00600000F00000F00000F00000F0 +0000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F0 +0000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FF +FF807FFF0011047D8F18>I<3078FCFC78300606778518>I<000300000780000780000F80000F00 +001F00001E00001E00003E00003C00007C0000780000780000F80000F00001F00001E00003E000 +03C00003C00007C0000780000F80000F00000F00001F00001E00003E00003C00003C00007C0000 +780000F80000F00000F0000060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803 +807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001 +E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380 +038007800F803F80FF80FB80438003800380038003800380038003800380038003800380038003 +800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F0 +00E0F000E06000E00000E00000E00001C00001C00003C0000780000F00001E00003C0000780000 +F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE00 +3FFF007807807803C07801C03001C00001C00003C0000380000F0003FF0003FE0003FF00000780 +0003C00001C00000E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800 +131C7E9B18>I<001F00003F0000770000770000E70001E70001C7000387000787000707000E07 +001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF80007000007000007000007000007 +00000700007FF000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF8038000038000038000038 +00003800003800003800003800003BF8003FFE003FFF003C07801803C00001C00000E00000E060 +00E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>I<007E0001FF00 +07FF800F83C01E03C01C03C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0 +F001C0F000E0E000E0F000E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F800 +131C7E9B18>II<03F8000FFE001FFF003E0F8038038070 +01C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E0 +00E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<03F000 +0FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001E0E001E07001E07803E03C0FE0 +1FFFE00FFEE003F0E00000E00001C00001C00001C0300380780780780F00783E003FFC001FF000 +07C000131C7E9B18>I<3078FCFC783000000000000000003078FCFC78300614779318>I<183C7E +7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<000300000780001F80 +003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000FC00007E00003F00001FC000 +07E00003F00001FC00007E00003F00001F8000078000030011187D9918>I<7FFFC0FFFFE0FFFF +E0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F0 +0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80001F80003F0000 +7E0001FC0003F00007E0001FC0003F00007E0000FC0000F0000060000011187D9918>I<0FF000 +3FFC007FFF00700F00F00380F00380600780000F00003E00007C0001F00001E00003C00003C000 +03C00003C00003C00003800000000000000000000000000000000003800007C00007C00007C000 +038000111C7D9B18>I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1 +E0E1C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C1C +001E00E00F83E007FFC001FF80007E00131C7E9B18>I<00700000F80000F80000D80000D80001 +DC0001DC0001DC00018C00038E00038E00038E00038E000306000707000707000707000707000F +FF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>II<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E07000 +00E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000E03800E03C00 +E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C +03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C +00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>III<01F1C003FDC00FFFC01F0FC01C03C038 +03C03801C07001C07001C0700000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF070 +01C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7F07F0 +FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC0 +1FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF8 +7F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<01FFC003FFC001FFC0000E00000E0000 +0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 +0E00000E00000E00000E00F00E00F00E00F03C007FFC003FF0000FC000121C7D9B18>I<7F07F0 +FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0001DF0001DF000 +1FB8001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87F8 +7F03F0151C7F9B18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00 +000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00 +700E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>II<7E07F0 +FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C0 +1C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C0 +7F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E003 +80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F007 +80700700780F007FFF003FFE000FF800111C7D9B18>II<0FF800 +3FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380 +E00380E00380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE00 +0FFC00001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F +801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07 +001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18 +>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000007000007800003F00001F +F00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FF +FF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E07038007000 +007000007000007000007000007000007000007000007000007000007000007000007000007000 +00700000700000700000700007FF0007FF0007FF00151C7F9B18>IIII<7F8FE07F9FE07F8FE00E07 +000F0700070E00078E00039C0003DC0001F80001F80000F00000F00000700000F00000F80001F8 +0001DC00039E00038E00070F000707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18 +>II<3FFFE07FFFE07FFFE07001C07003C0700780700700000F00 +001E00001C00003C0000780000700000F00001E00001C00003C0000780000700000F00001E00E0 +1C00E03C00E07800E07000E0FFFFE0FFFFE0FFFFE0131C7E9B18>II93 +D<061E3E387070E0E0E0F8FC7C7C38070E789E18>96 D<1FE0003FF8007FFC00781E00300E0000 +070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01F +FBF007E1F014147D9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00 +0EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F0070 +0F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E07803803 +00700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01FFF +8007FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000038003 +E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E0038070 +0780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00 +380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C0 +1FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0 +007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E +1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0003800001C +00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC00F +FF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00 +0EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 +0E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C0000380 +000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001C0 +0001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18 +>I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C001C001C001C00 +1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE0 +3F800E277E9C18>II<7FE000FFE0007FE00000E00000E00000E0 +0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 +0000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000 +FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C +001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914 +819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E +00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE00 +1FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C0 +3C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00 +700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF +800E3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318 +>I<01E38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E0 +0380700780700780380F803C1F801FFF800FFB8003E38000038000038000038000038000038000 +0380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E000 +03C00003C0000380000380000380000380000380000380000380000380000380007FFE00FFFF00 +7FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC +0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01 +80000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003 +80000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F98 +18>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 +0E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8F +F01E03C00E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC +0001DC0000F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F800007000 +00F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8F +F0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE +0000CC0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0 +007F80003F00001E0000151E7F9318>I<060C1F1E3FBEFBF8F1F060C00F067C9B18>126 +D E /Fx 89 125 df<001F83E000F06E3001C078780380F8780300F03007007000070070000700 +700007007000070070000700700007007000FFFFFF800700700007007000070070000700700007 +007000070070000700700007007000070070000700700007007000070070000700700007007000 +070070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381 +E00701E00701E0070000070000070000070000070000070000FFFFE00700E00700E00700E00700 +E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 +E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700E007 +00E00700E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E007 +00E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE1720809F19>I< +001F81F80000F04F040001C07C06000380F80F000300F00F000700F00F00070070000007007000 +000700700000070070000007007000000700700000FFFFFFFF0007007007000700700700070070 +070007007007000700700700070070070007007007000700700700070070070007007007000700 +70070007007007000700700700070070070007007007000700700700070070070007007007007F +E3FE3FF02420809F26>I<07070F1C383060C00808779F17>19 D<70F8F8F8F8F8F8F870707070 +7070707070702020202020000000000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A +0402040204020804080410081008201040200F0E7E9F17>I<0080008007E00C98108420826082 +4081C087C08FC08FC086E080F08078803F803FE01FF807FC00FE009E008E00870087F083F083F0 +838083808240864084208818B007C000800080008010257DA117>36 D<70F8FCFC740404040808 +10102040060E7C9F0D>39 D<0020004000800100020006000C000C001800180030003000300070 +00600060006000E000E000E000E000E000E000E000E000E000E000E000E0006000600060007000 +300030003000180018000C000C000600020001000080004000200B2E7DA112>I<800040002000 +100008000C00060006000300030001800180018001C000C000C000C000E000E000E000E000E000 +E000E000E000E000E000E000E000C000C000C001C001800180018003000300060006000C000800 +10002000400080000B2E7DA112>I<000600000006000000060000000600000006000000060000 +000600000006000000060000000600000006000000060000000600000006000000060000FFFFFF +F0FFFFFFF000060000000600000006000000060000000600000006000000060000000600000006 +00000006000000060000000600000006000000060000000600001C207D9A23>43 +D<70F8FCFC74040404080810102040060E7C840D>II<70F8F8F8700505 +7C840D>I<00030003000700060006000E000C000C001C00180018003800300030007000600060 +00E000C000C001C00180018001800380030003000700060006000E000C000C001C001800180038 +0030003000700060006000E000C000C000102D7DA117>I<03F0000E1C001C0E00180600380700 +700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0 +F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003F000 +121F7E9D17>I<018003800F80F380038003800380038003800380038003800380038003800380 +03800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C +1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C000078000078000 +0F00000E00001C0000380000700000600000C0000180000300000600400C00401800401000803F +FF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80 +000F80000F00000F00000E00001C0000380003F000003C00000E00000F000007800007800007C0 +2007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<0006 +00000600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E +00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E +00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE00010000010000010 +000010000010000010000011F000161C00180E001007001007800003800003800003C00003C000 +03C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I< +007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000F21C00 +F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380 +3807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001008002 +0080020080040000080000080000100000200000200000400000400000C00000C00001C0000180 +00038000038000038000038000078000078000078000078000078000078000078000030000121F +7D9D17>I<03F0000C0C001006003003002001806001806001806001807001807803003E03003F +06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C0 +00C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600 +380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0 +180BC00E13C003E3C0000380000380000380000700300700780600780E00700C00201800107000 +0FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8 +F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFF +FFF00000000000000000000000000000000000000000000000000000000000000000FFFFFFF07F +FFFFE01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C001800180 +010003000200020002000200020002000000000000000000000007000F800F800F8007000E207D +9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0000009E0000009 +E0000009E0000010F0000010F0000010F00000207800002078000020780000403C0000403C0000 +403C0000801E0000801E0000FFFE0001000F0001000F0001000F00020007800200078002000780 +040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 DI<00 +0FC040007030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C000040 +7C00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000 +00F8000000780000007C0000407C0000403C0000401C0000401E0000800E000080070001000380 +020001C0040000703800000FC0001A217D9F21>IIII<000FE0200078186000E004E0038002 +E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F800 +0000F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C +0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820000FE000 +1E217D9F24>III<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00 +003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00 +003C00203C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>III +II<001F800000F0F00001C0380007801E000F000F000E000700 +1E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001 +F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C00 +03C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>II<001F800000F0F00001C0380007801E000F000F000E0007001E0007 +803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F800 +01F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C0003E03C0003C03C0F03C01E +1087800E2047000F204F0007A03E0001E0380000F0F010001FB010000030100000383000003870 +00003FF000001FE000001FE000000FC0000007801C297D9F23>II<07E0800C1980100780300380600180600180E00180E00080E00080E00080F00000 +F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001C0 +8001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE078 +0F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000 +000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 +00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800007FF +FE001C1F7E9E21>IIII<7FF83FF80FE00FC007C0070003C0020001E0040001F00C0000F0080000 +781000007C1000003C2000003E4000001E4000000F8000000F8000000780000003C0000007E000 +0005E0000009F0000018F8000010780000207C0000603C0000401E0000801F0001800F00010007 +80020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>II<7F +FFF87C00F87000F06001E04001E0C003C0C003C0800780800F80800F00001E00001E00003C0000 +3C0000780000F80000F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C +00183C0018780038F801F8FFFFF8161F7D9E1C>II<0804100820 +10201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>II<0C001E0033006180C0C080400A067A9E17>I<081020204040808080B8FCFC7C38060E7D +9F0D>96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E0038 +0E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<0E0000FE0000 +0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C0 +0F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E0 +0F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000 +F000F000F00070007000380138011C020E0C03F010147E9314>I<000380003F80000380000380 +00038000038000038000038000038000038000038000038003E380061B801C0780380380380380 +700380700380F00380F00380F00380F00380F00380F003807003807003803803803807801C0780 +0E1B8003E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F003 +80FFFF80F00000F00000F000007000007000003800801800800C010007060001F80011147F9314 +>I<007C00C6018F038F07060700070007000700070007000700FFF00700070007000700070007 +000700070007000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3 +300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E0002000 +002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000 +603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E +00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E +01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F +19>I<1C001E003E001E001C000000000000000000000000000E007E000E000E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F0 +01F000E0000000000000000000000000007007F000F00070007000700070007000700070007000 +700070007000700070007000700070007000700070007000706070F060F0C061803F000C28829E +0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 +0E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E00 +0E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E +000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 +0E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F0 +0E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00 +E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FF +E7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E +01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I< +01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F0 +7000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00 +E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01 +E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D +7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F0 +0380F003807003807803803803803807801C0B800E138003E38000038000038000038000038000 +0380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010 +C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D147E9312>I<0200 +02000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E +080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01 +C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030D +C001F1FC16147F9319>II< +FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E0 +80038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C00006018000040 +08001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800 +003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>II<3FFF380E200E201C40384078407000E001E001C00380078007 +010E011E011C0338027006700EFFFE10147F9314>III E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300dpi +TeXDict begin + +%%EndSetup +%%Page: 1 1 +1 0 bop 354 85 a Fx(Guy)15 b(L.)h(Steele)g(Jr.)207 141 y(Thinking)g(Mac)o +(hines)g(Corp)q(oration)368 198 y(245)f(First)g(Street)190 +254 y(Cam)o(bridge,)g(Massac)o(h)o(usetts)29 b(02142)300 311 +y(Phone:)20 b(\(617\))14 b(234-2860)318 367 y(F)-5 b(AX:)15 +b(\(617\))f(234-4444)288 424 y(E-mail:)20 b Fw(gls@think.com)581 +-26 y Fv(The)27 b(Ev)n(olution)i(of)f(Lisp)1238 85 y Fx(Ric)o(hard)17 +b(P)l(.)e(Gabriel)1318 141 y(Lucid,)i(Inc.)1253 198 y(707)d(Laurel)i(Street) +1125 254 y(Menlo)g(P)o(ark,)e(California)31 b(94025)1200 311 +y(Phone:)20 b(\(415\))14 b(329-8400)1218 367 y(F)-5 b(AX:)15 +b(\(415\))f(329-8480)1188 424 y(E-mail:)20 b Fw(rpg@lucid.com)875 +505 y Fu(Abstract)182 573 y Fx(Lisp)14 b(is)f(the)h(w)o(orld's)e(greatest)g +(programming)g(language|or)h(so)g(its)g(prop)q(onen)o(ts)g(think.)20 +b(The)114 629 y(structure)11 b(of)g(Lisp)h(mak)o(es)f(it)h(easy)f(to)g +(extend)h(the)f(language)h(or)e(ev)o(en)i(to)f(implemen)o(t)i(en)o(tirely)f +(new)114 686 y(dialects)17 b(without)g(starting)f(from)g(scratc)o(h.)24 +b(Ov)o(erall,)18 b(the)e(ev)o(olution)i(of)e(Lisp)i(has)e(b)q(een)i(guided) +114 742 y(more)13 b(b)o(y)h(institutional)h(riv)m(alry)l(,)g(one-upsmanship,) +h(and)e(the)g(glee)g(b)q(orn)h(of)e(tec)o(hnical)i(clev)o(erness)114 +798 y(that)k(is)i(c)o(haracteristic)g(of)f(the)g(\\hac)o(k)o(er)g(culture")h +(than)f(b)o(y)h(sob)q(er)f(assessmen)o(ts)g(of)g(tec)o(hnical)114 +855 y(requiremen)o(ts.)35 b(Nev)o(ertheless)20 b(this)h(pro)q(cess)f(has)g +(ev)o(en)o(tually)h(pro)q(duced)g(b)q(oth)f(an)g(industrial-)114 +911 y(strength)f(programming)g(language,)h(messy)g(but)f(p)q(o)o(w)o(erful,)i +(and)f(a)f(tec)o(hnically)i(pure)f(dialect,)114 968 y(small)c(but)f(p)q(o)o +(w)o(erful,)g(that)f(is)i(suitable)h(for)d(use)i(b)o(y)f +(programming-language)g(theoreticians.)182 1024 y(W)l(e)f(pic)o(k)g(up)g +(where)g(McCarth)o(y's)e(pap)q(er)j(in)f(the)g(\014rst)f(HOPL)i(conference)f +(left)g(o\013.)19 b(W)l(e)14 b(trace)114 1081 y(the)21 b(dev)o(elopmen)o(t)h +(c)o(hronologically)h(from)d(the)h(era)g(of)g(the)g(PDP-6,)h(through)f(the)g +(heyda)o(y)h(of)114 1137 y(In)o(terlisp)14 b(and)g(MacLisp,)g(past)f(the)g +(ascension)h(and)g(decline)i(of)c(sp)q(ecial)j(purp)q(ose)f(Lisp)h(mac)o +(hines,)114 1194 y(to)10 b(the)i(presen)o(t)f(era)h(of)f(standardization)h +(activities.)19 b(W)l(e)12 b(then)g(examine)g(the)g(tec)o(hnical)h(ev)o +(olution)114 1250 y(of)18 b(a)g(few)h(represen)o(tativ)o(e)g(language)g +(features,)g(including)i(b)q(oth)e(some)f(notable)i(successes)f(and)114 +1307 y(some)h(notable)g(failures,)j(that)c(illuminate)k(design)e(issues)h +(that)d(distinguish)k(Lisp)e(from)f(other)114 1363 y(programming)15 +b(languages.)24 b(W)l(e)16 b(also)h(discuss)g(the)f(use)h(of)f(Lisp)h(as)f(a) +g(lab)q(oratory)g(for)g(designing)114 1419 y(other)i(programming)g +(languages.)32 b(W)l(e)18 b(conclude)j(with)e(some)g(re\015ections)h(on)e +(the)h(forces)g(that)114 1476 y(ha)o(v)o(e)14 b(driv)o(en)i(the)g(ev)o +(olution)g(of)e(Lisp.)363 1556 y(1)30 b(In)o(tro)q(duction)901 +b(2)363 1610 y(2)30 b(Implemen)o(tation)16 b(Pro)s(jects)e(Chronology)413 +b(2)437 1665 y(2.1)30 b(F)l(rom)14 b(Lisp)j(1.5)d(to)g(PDP-6)h(Lisp:)21 +b(1960{1965)218 b(2)437 1720 y(2.2)30 b(MacLisp)871 b(3)437 +1775 y(2.3)30 b(In)o(terlisp)876 b(7)437 1830 y(2.4)30 b(The)15 +b(Early)g(1970's)677 b(10)437 1884 y(2.5)30 b(The)15 b(Demise)h(of)f(the)g +(PDP-10)476 b(11)437 1939 y(2.6)30 b(Lisp)16 b(Mac)o(hines)733 +b(12)437 1994 y(2.7)30 b(IBM)15 b(Lisps:)21 b(Lisp360)16 b(and)f(Lisp370)368 +b(16)437 2049 y(2.8)30 b(Sc)o(heme:)20 b(1975{1980)629 b(17)437 +2104 y(2.9)30 b(Prelude)16 b(to)f(Common)f(Lisp:)21 b(1980{1984)275 +b(20)437 2158 y(2.10)30 b(Early)15 b(Common)f(Lisp)593 b(20)437 +2213 y(2.11)30 b(Other)15 b(Lisp)h(Dialects:)21 b(1980{1984)364 +b(25)437 2268 y(2.12)30 b(Standards)15 b(Dev)o(elopmen)o(t:)20 +b(1984{1992)280 b(30)363 2323 y(3)30 b(Ev)o(olution)15 b(of)g(Some)g(Sp)q +(eci\014c)j(Language)d(F)l(eatures)207 b(36)437 2377 y(3.1)30 +b(The)15 b(T)l(reatmen)o(t)g(of)f(NIL)i(\(and)f(T\))398 b(37)437 +2432 y(3.2)30 b(Iteration)843 b(39)437 2487 y(3.3)30 b(Macros)872 +b(41)437 2542 y(3.4)30 b(Numerical)16 b(F)l(acilities)625 b(51)437 +2597 y(3.5)30 b(Some)15 b(Notable)g(F)l(ailures)571 b(53)363 +2651 y(4)30 b(Lisp)16 b(as)f(a)g(Language)g(Lab)q(oratory)504 +b(59)68 2748 y Ft(P)o(ermission)9 b(to)g(cop)o(y)f(without)h(fee)e(all)j(or)e +(part)h(of)f(this)h(material)g(is)g(gran)o(ted)f(pro)o(vided)h(that)f(the)g +(copies)g(are)h(not)f(made)f(or)h(distributed)h(for)f(direct)g(commercial)0 +2778 y(adv)n(an)o(tage,)j(the)e(A)o(CM)h(cop)o(yrigh)o(t)h(notice)f(and)g +(the)f(title)i(of)f(the)f(publication)j(and)e(its)g(date)g(app)q(ear,)f(and)h +(notice)g(is)h(giv)o(en)f(that)g(cop)o(ying)h(is)g(b)o(y)f(p)q(ermission)g +(of)g(the)0 2807 y(Asso)q(ciation)i(for)f(Computing)e(Mac)o(hinery)n(.)k(T)n +(o)d(cop)o(y)h(otherwise,)f(or)g(to)h(republish,)f(requires)h(a)f(fee)g +(and/or)g(sp)q(eci\014c)g(p)q(ermission.)68 2836 y(The)g(Second)g(A)o(CM)h +(SIGPLAN)h(History)g(of)e(Programming)h(Languages)f(Conference)f(\(HOPL-I)q +(I\),)i(April)h(1993,)g(Cam)o(bridge,)e(Massac)o(h)o(usetts,)h(USA.)g(A)o(CM) +0 2865 y(SIGPLAN)g(Notices)h(28,)e(3)h(\(Marc)o(h)f(1993\),)h(231{270.)664 +2864 y(c)656 2865 y Fs(\015)g Ft(1993)g(A)o(CM)g(0-89791-571-2/9)q(3/00)q +(04/02)q(31)i Fr(:)6 b(:)g(:)16 b Ft($1.50)363 2706 y Fx(5)30 +b(Wh)o(y)15 b(Lisp)h(is)g(Div)o(erse)725 b(67)p eop +%%Page: 2 2 +2 1 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(2)0 45 y Fp(1)69 b(In)n(tro)r(duction)0 147 y Fx(A)21 +b(great)e(deal)j(has)e(happ)q(ened)j(to)d(Lisp)i(o)o(v)o(er)d(the)i(last)g +(thirt)o(y)f(y)o(ears.)36 b(W)l(e)20 b(ha)o(v)o(e)h(found)g(it)g(imp)q +(ossible)i(to)0 203 y(treat)16 b(ev)o(erything)h(of)f(in)o(terest)h(coheren)o +(tly)h(in)f(a)g(single)h(linear)g(pass)e(through)h(the)g(sub)s(ject,)f(c)o +(hronologically)0 259 y(or)i(otherwise.)29 b(Pro)s(jects)18 +b(and)g(dialects)i(emerge,)e(split,)i(join,)f(and)g(die)g(in)h(complicated)f +(w)o(a)o(ys;)g(the)f(careers)0 316 y(of)d(individual)k(p)q(eople)f(are)d(w)o +(o)o(v)o(en)g(through)h(these)g(connections)h(in)f(w)o(a)o(ys)f(that)g(are)h +(sometimes)f(parallel)j(but)0 372 y(more)c(often)g(orthogonal.)19 +b(Ideas)c(leap)g(from)f(pro)s(ject)g(to)g(pro)s(ject,)f(from)h(p)q(erson)h +(to)f(p)q(erson.)20 b(W)l(e)15 b(ha)o(v)o(e)f(c)o(hosen)0 429 +y(to)g(presen)o(t)g(a)g(series)h(of)f(slices)i(through)e(the)h(sub)s(ject)f +(matter.)19 b(This)c(organization)f(inevitably)i(leads)f(to)f(some)0 +485 y(redundancy)i(in)g(the)g(presen)o(tation.)71 542 y(Moreo)o(v)o(er,)e(w)o +(e)h(ha)o(v)o(e)h(had)g(to)f(omit)h(a)f(great)g(deal)i(of)e(material)h(for)g +(lac)o(k)g(of)f(space.)22 b(The)16 b(c)o(hoice)h(of)f(topics)0 +598 y(presen)o(ted)i(here)h(necessarily)g(re\015ects)g(our)e(o)o(wn)h(exp)q +(eriences)i(and)e(biases.)29 b(W)l(e)18 b(ap)q(ologize)h(if)f(y)o(our)g(fa)o +(v)o(orite)0 655 y(corner)d(of)g(the)g(spra)o(wling)h(Lisp)g(comm)o(unit)o(y) +f(has)g(gone)g(unmen)o(tioned.)71 711 y(Section)i(2)f(discusses)i(the)f +(history)f(of)h(Lisp)g(in)h(terms)e(of)g(pro)s(jects)g(and)g(p)q(eople,)i +(from)e(where)h(McCarth)o(y)0 768 y(left)c(o\013)e([McCarth)o(y)l(,)g(1981])g +(up)i(through)e(the)i(e\013orts)e(to)g(pro)q(duce)j(o\016cial)f(standards)e +(for)h(Lisp)h(dialects)h(within)0 824 y(IEEE,)e(ANSI,)h(and)g(ISO.)g(Section) +g(3)f(examines)i(a)e(n)o(um)o(b)q(er)h(of)f(tec)o(hnical)i(themes)e(and)h +(traces)f(separately)g(their)0 880 y(c)o(hronological)h(ev)o(olution;)h(here) +e(the)h(emphasis)g(is)f(on)g(the)h(\015o)o(w)e(of)h(ideas)h(for)f(eac)o(h)g +(topic.)19 b(Section)13 b(4)f(traces)g(the)0 937 y(use)i(of)f(Lisp)i(as)f(a)f +(language)h(lab)q(oratory)f(and)h(implemen)o(tation)h(to)q(ol,)f(esp)q +(ecially)i(for)d(the)h(dev)o(elopmen)o(t)g(of)f(AI)0 993 y(languages;)h +(particular)h(atten)o(tion)f(is)g(paid)h(to)f(w)o(a)o(ys)f(in)i(whic)o(h)g +(feedbac)o(k)f(from)f(the)i(AI)f(languages)h(in\015uenced)0 +1050 y(the)f(dev)o(elopmen)o(t)h(of)f(Lisp)i(itself.)k(Section)15 +b(5)f(dra)o(ws)g(some)g(conclusions)i(ab)q(out)e(wh)o(y)g(Lisp)h(ev)o(olv)o +(ed)g(as)f(it)g(did.)0 1193 y Fp(2)69 b(Implemen)n(tati)o(on)21 +b(Pro)t(jects)h(Chronology)0 1295 y Fx(Early)12 b(though)o(ts)g(ab)q(out)g(a) +g(language)g(that)g(ev)o(en)o(tually)h(b)q(ecame)g(Lisp)g(started)f(in)h +(1956)e(when)h(John)h(McCarth)o(y)0 1351 y(attended)j(the)g(Dartmouth)f +(Summer)h(Researc)o(h)g(Pro)s(ject)f(on)g(Arti\014cial)j(In)o(telligence.)24 +b(Actual)17 b(implemen)o(ta-)0 1407 y(tion)11 b(b)q(egan)g(in)g(the)g(fall)g +(of)f(1958.)17 b(In)11 b(1978)f(McCarth)o(y)f(related)i(the)g(early)g +(history)f(of)g(the)h(language)g([McCarth)o(y)l(,)0 1464 y(1981],)g(taking)i +(it)g(appro)o(ximately)f(to)g(just)h(after)e(Lisp)j(1.5.)k(See)c(also)e +([McCarth)o(y)l(,)f(1980].)18 b(W)l(e)13 b(b)q(egin)h(our)e(story)0 +1520 y(where)j(McCarth)o(y)f(left)i(o\013.)0 1642 y Fo(2.1)56 +b(F)-5 b(rom)17 b(Lisp)i(1.5)f(to)g(PDP-6)h(Lisp:)24 b(1960{1965)0 +1728 y Fx(During)19 b(this)g(p)q(erio)q(d,)h(Lisp)g(spread)f(rapidly)g(to)f +(a)h(v)m(ariet)o(y)f(of)g(computers,)h(either)h(b)o(y)e(b)q(o)q(otstrapping)h +(from)0 1784 y(an)e(existing)i(Lisp)f(on)f(another)g(computer)h(or)e(b)o(y)i +(a)f(new)g(implemen)o(tation.)28 b(In)18 b(almost)f(all)h(cases,)f(the)h +(Lisp)0 1841 y(dialect)h(w)o(as)f(small)h(and)f(simple,)i(the)e(implemen)o +(tation)i(straigh)o(tforw)o(ard.)27 b(There)18 b(w)o(ere)g(v)o(ery)g(few)g(c) +o(hanges)0 1897 y(made)d(to)g(the)g(original)h(language.)71 +1954 y(In)22 b(the)h(early)f(1960's,)g(Timoth)o(y)g(P)l(.)g(Hart)f(and)h +(Thomas)g(G.)f(Ev)m(ans)h(implemen)o(ted)i(Lisp)g(1.5)d(on)h(the)0 +2010 y(Univ)m(ac)e(M)f(460,)g(a)g(military)h(v)o(ersion)f(of)g(the)g(Univ)m +(ac)h(490.)31 b(It)19 b(w)o(as)g(b)q(o)q(otstrapp)q(ed)g(from)f(Lisp)j(1.5)d +(on)h(the)0 2067 y(IBM)13 b(7090)f(using)h(a)f(cross-compiler)i(and)f(a)f +(small)i(amoun)o(t)e(of)g(mac)o(hine)h(language)g(co)q(de)h(for)e(the)h(lo)o +(w)o(est)f(lev)o(els)0 2123 y(of)j(the)g(Lisp)h(implemen)o(tation)h([Hart,)d +(1964].)71 2180 y(Rob)q(ert)g(Saunders)h(and)f(his)h(colleagues)h(at)d +(System)i(Dev)o(elopmen)o(t)f(Corp)q(oration)g(implemen)o(ted)i(Lisp)f(1.5)0 +2236 y(on)i(the)g(IBM-built)i(AN/FSQ-32/V)e(computer,)g(often)g(called)h +(simply)h(the)e(Q-32)g([Saunders,)g(1964b].)25 b(The)0 2292 +y(implemen)o(tation)12 b(w)o(as)e(b)q(o)q(otstrapp)q(ed)i(from)e(the)h(IBM)g +(7090)f(and)h(PDP-1)g(computers)g(at)f(Stanford)g(Univ)o(ersit)o(y)l(.)0 +2349 y(\(The)15 b(PDP-1)g(Lisp)h(at)f(Stanford)f(w)o(as)h(implemen)o(ted)i(b) +o(y)e(John)h(McCarth)o(y)e(and)h(Stev)o(e)g(Russell.\))71 2405 +y(In)i(1963,)e(L.)i(P)o(eter)f(Deutsc)o(h)h(\(at)f(that)g(time)h(a)f(high)i +(sc)o(ho)q(ol)f(studen)o(t\))f(implemen)o(ted)i(a)f(Lisp)h(similar)g(to)0 +2462 y(Lisp)d(1.5)f(on)g(the)g(PDP-1)g(at)g(Bolt)g(Beranek)h(and)f(Newman)h +(\(BBN\))f([Deutsc)o(h,)f(1964].)19 b(This)14 b(Lisp)i(w)o(as)d(called)0 +2518 y(Basic)j(PDP-1)e(Lisp.)71 2575 y(By)k(1964)f(a)h(v)o(ersion)g(of)g +(Lisp)h(1.5)e(w)o(as)h(running)h(in)g(the)f(Electrical)i(Engineering)f +(Departmen)o(t)f(at)f(MIT)0 2631 y(on)f(an)f(IBM)h(7094)e(computer,)i +(running)g(the)g(Compatible)g(Time)g(Sharing)h(System)e(\(CTSS\).)g(This)h +(Lisp)h(and)0 2688 y(Basic)i(PDP-1)e(Lisp)i(w)o(ere)f(the)g(main)g +(in\015uences)i(on)e(the)g(PDP-6)f(Lisp)i([PDP-6)e(Lisp,)j(1967])c(implemen)o +(ted)p eop +%%Page: 3 3 +3 2 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(3)0 45 y(b)o(y)16 b(DEC)f(and)i(some)e(mem)o(b)q(ers)h(of)g(MIT's)f +(T)l(ec)o(h)i(Mo)q(del)f(Railroad)h(Club)g(in)g(the)f(spring)h(of)e(1964.)21 +b(This)c(Lisp)0 102 y(w)o(as)c(the)h(\014rst)g(program)f(written)h(on)g(the)g +(PDP-6.)19 b(Also,)14 b(this)g(Lisp)i(w)o(as)d(the)h(ancestor)f(of)h +(MacLisp,)h(the)f(Lisp)0 158 y(written)h(to)g(run)g(under)h(the)f +(Incompatible)i(Timesharing)f(System)f(\(ITS\))g([Eastlak)o(e,)f(1968;)f +(Eastlak)o(e,)h(1972])0 214 y(at)h(MIT)g(on)g(the)g(PDP-6)g(and)g(later)g(on) +g(the)h(PDP-10.)71 271 y(A)o(t)j(BBN,)h(a)f(successor)h(to)f(Basic)h(PDP-1)g +(Lisp)h(w)o(as)d(implemen)o(ted)k(on)e(the)f(PDP-1)h(and)g(an)f(up)o(w)o +(ard-)0 327 y(compatible)g(v)o(ersion,)f(patterned)g(after)f(Lisp)i(1.5)e(on) +h(the)g(MIT)g(CTSS)g(system,)f(w)o(as)g(implemen)o(ted)j(on)e(the)0 +384 y(Scien)o(ti\014c)h(Data)d(Systems)h(940)f(\(SDS)h(940\))f(b)o(y)i +(Daniel)g(Bobro)o(w)e(and)i(D.)e(L.)h(Murph)o(y)l(.)26 b(A)17 +b(further)g(up)o(w)o(ard-)0 440 y(compatible)i(v)o(ersion)e(w)o(as)g(written) +h(for)e(the)i(PDP-10)f(b)o(y)g(Alice)i(Hartley)f(and)g(Murph)o(y)l(,)f(and)h +(this)g(Lisp)h(w)o(as)0 497 y(called)i(BBN)e(Lisp)h([T)l(eitelman,)h(1971].) +30 b(In)20 b(1973,)e(not)h(long)g(after)f(the)i(time)f(that)f(SDS)i(w)o(as)e +(acquired)i(b)o(y)0 553 y(Xero)o(x)c(and)h(renamed)g(Xero)o(x)f(Data)f +(Systems,)i(the)f(main)o(tenance)i(of)e(BBN)h(Lisp)h(w)o(as)d(shared)i(b)o(y) +g(BBN)g(and)0 610 y(Xero)o(x)g(P)o(alo)g(Alto)h(Researc)o(h)g(Cen)o(ter)f +(and)g(the)h(name)f(of)g(the)h(Lisp)g(w)o(as)f(c)o(hanged)h(to)f(In)o +(terlisp)i([T)l(eitelman,)0 666 y(1974].)71 723 y(The)14 b(PDP-6)f([DEC,)g +(1964])f(and)i(PDP-10)f([DEC,)g(1969])f(computers)i(w)o(ere,)g(b)o(y)g +(design,)h(esp)q(ecially)h(suited)0 779 y(for)h(Lisp,)i(with)f(36-bit)f(w)o +(ords)g(and)h(18-bit)f(addresses.)27 b(This)18 b(allo)o(w)o(ed)g(a)f +Fw(CONS)g Fx(cell|a)j(pair)d(of)h(p)q(oin)o(ters)f(or)0 835 +y(addresses|to)g(b)q(e)g(stored)f(e\016cien)o(tly)i(in)g(a)e(single)i(w)o +(ord.)24 b(There)16 b(w)o(ere)h(half-w)o(ord)f(instructions)i(that)e(made)0 +892 y(manipulating)22 b(the)f Fw(CAR)f Fx(and)h Fw(CDR)f Fx(of)g +Fw(CONS)g Fx(cells)j(v)o(ery)d(fast.)35 b(The)21 b(PDP-6)f(and)h(PDP-10)f +(also)g(had)h(fast,)0 948 y(p)q(o)o(w)o(erful)15 b(stac)o(k)g(instructions,)h +(whic)o(h)g(enabled)g(fast)f(function)h(calling)h(for)d(Lisp.)71 +1005 y(Almost)j(all)h(of)f(these)g(implemen)o(tations)i(had)e(a)g(small)h +(hand-co)q(ded)h(\(assem)o(bly\))e(core)g(and)g(a)g(compiler;)0 +1061 y(the)e(rest)g(of)g(the)g(Lisp)h(w)o(as)f(written)g(in)h(Lisp)g(and)g +(compiled.)71 1118 y(In)j(1965,)f(virtually)j(all)e(of)g(the)g(Lisps)h(in)g +(existence)g(w)o(ere)e(iden)o(tical)j(or)e(di\013ered)g(only)h(in)f(trivial)h +(w)o(a)o(ys.)0 1174 y(After)13 b(1965|or)g(more)g(precisely)l(,)i(after)e +(MacLisp)i(and)e(BBN)h(Lisp)h(div)o(erged)g(from)d(eac)o(h)i(other|there)g +(came)0 1231 y(a)h(plethora)g(of)g(Lisp)h(dialects.)71 1287 +y(During)i(this)h(p)q(erio)q(d)h(there)e(w)o(as)g(little)i(funding)g(for)d +(language)i(w)o(ork,)f(the)g(groups)g(w)o(ere)h(isolated)g(from)0 +1344 y(eac)o(h)c(other,)e(and)i(eac)o(h)g(group)f(w)o(as)g(directed)h +(primarily)h(to)o(w)o(ards)d(serving)i(the)g(needs)g(of)f(a)g(lo)q(cal)i +(user)f(group,)0 1400 y(whic)o(h)i(usually)g(consisted)g(of)e(only)h(a)g +(handful)h(of)e(researc)o(hers.)22 b(The)16 b(t)o(ypical)h(situation)f(is)h +(c)o(haracterized)f(b)o(y)0 1456 y(the)e(description)h(\\an)f(AI)g(lab)g +(with)h(a)e(Lisp)i(wizard)f(do)o(wn)g(the)g(hall".)20 b(During)14 +b(this)g(p)q(erio)q(d)i(there)e(w)o(as)f(a)g(go)q(o)q(d)0 1513 +y(deal)i(of)g(exp)q(erimen)o(tation)g(with)g(implemen)o(tation)h(strategies.) +j(There)c(w)o(as)f(little)i(though)o(t)e(of)g(consolidation,)0 +1569 y(partly)h(b)q(ecause)h(of)f(the)g(pioneering)i(feeling)g(that)d(eac)o +(h)i(lab)q(oratory)e(em)o(b)q(o)q(died.)71 1626 y(An)k(exception)i(to)e(all)h +(this)g(w)o(as)f(the)g(LISP)i(2)e(pro)s(ject)g([Abrahams,)g(1966],)g(a)g +(concerted)h(language)f(de-)0 1682 y(v)o(elopmen)o(t)i(e\013ort)f(that)g(w)o +(as)g(funded)i(b)o(y)f(ARP)l(A)h(and)f(represen)o(ted)g(a)g(radical)h +(departure)f(from)f(Lisp)i(1.5.)0 1739 y(There)c(app)q(ears)f(to)g(ha)o(v)o +(e)g(b)q(een)h(some)f(hop)q(e)h(that)f(this)h(design)g(w)o(ould)g(sup)q +(ersede)h(Lisp)f(1.5)f(and)g(bring)h(sym-)0 1795 y(b)q(olic)g(pro)q(cessing)g +(closer)f(to)f(ALGOL)i(60.)j(\(See)c(section)h(3.5)d(for)h(an)h(example)g(of) +g(Lisp)h(2)e(co)q(de.\))22 b(Lisp)16 b(2)g(w)o(as)0 1852 y(implemen)o(ted)i +(for)d(the)h(Q-32)g(computer)g(but)g(nev)o(er)g(ac)o(hiev)o(ed)h(wide)g +(acceptance.)22 b(Jean)17 b(Sammet)e(remark)o(ed)0 1908 y([Sammet,)f(1969,)g +(p.)h(596]:)182 1981 y Fn(:)8 b(:)g(:)d Fx(in)18 b(con)o(trast)e(to)h(most)f +(languages,)i(in)g(whic)o(h)g(the)f(language)g(is)h(\014rst)f(designed)i(and) +e(then)114 2038 y(implemen)o(ted)k Fn(:)8 b(:)g(:)d Fx(it)20 +b(w)o(as)f(facetiously)h(said)g(of)f(LISP)i(2)e(that)g(is)h(w)o(as)f(\\an)g +(implemen)o(tation)h(in)114 2094 y(searc)o(h)15 b(of)f(a)h(language".)71 +2167 y(The)f(\014rst)f(real)h(standard)f(Lisps)i(w)o(ere)f(MacLisp)g(and)g +(In)o(terlisp;)h(as)f(suc)o(h)g(they)g(deserv)o(e)g(some)f(atten)o(tion.)0 +2289 y Fo(2.2)56 b(MacLisp)0 2375 y Fx(MacLisp)13 b(w)o(as)e(the)h(primary)g +(Lisp)h(dialect)g(at)e(the)h(MIT)g(AI)h(Lab)f(from)f(the)h(late)g(1960's)f +(un)o(til)i(the)f(early)g(1980's.)0 2431 y(Other)i(imp)q(ortan)o(t)f(Lisp)h +(w)o(ork)f(at)g(the)g(Lab)h(during)h(this)e(p)q(erio)q(d)i(included)h +(Lisp-Mac)o(hine)g(Lisp)f(\(later)e(named)0 2488 y(Zetalisp\))i(and)g(Sc)o +(heme.)21 b(MacLisp)15 b(is)h(usually)g(iden)o(ti\014ed)h(with)e(the)g +(PDP-10)f(computer,)g(but)h(MacLisp)h(also)0 2544 y(ran)d(on)g(another)f(mac) +o(hine,)i(the)f(Honeyw)o(ell)h(6180,)e(under)i(the)f(Multics)h(op)q(erating)f +(system)g([Organic)o(k,)g(1972].)p eop +%%Page: 4 4 +4 3 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(4)0 45 y Fu(2.2.1)52 b(Early)18 b(MacLisp)0 131 y +Fx(The)11 b(distinguishing)i(feature)d(of)g(the)h(MacLisp/In)o(terlisp)i(era) +d(is)h(the)f(atten)o(tion)g(to)g(pro)q(duction)i(qualit)o(y)f(or)f(near)0 +187 y(pro)q(duction)i(qualit)o(y)g(implemen)o(tations.)20 b(This)12 +b(p)q(erio)q(d)h(sa)o(w)d(a)h(consolidation)i(of)d(implemen)o(tation)j(tec)o +(hniques,)0 244 y(with)j(great)e(atten)o(tion)h(to)f(detail.)71 +300 y(A)h(k)o(ey)h(di\013erence)h(b)q(et)o(w)o(een)f(MacLisp)h(and)f(In)o +(terlisp)h(w)o(as)e(the)h(approac)o(h)f(to)g(syn)o(tax.)21 +b(MacLisp)c(fa)o(v)o(ored)0 357 y(the)e(pure)h(list)g(st)o(yle,)f(using)h +Fw(EVAL)e Fx(as)h(the)h(top)e(lev)o(el.)22 b(In)o(terlisp,)16 +b(along)f(with)h(Lisp)g(1.5,)e(used)i Fw(EVALQUOTE)p Fx(.)71 +413 y(T)l(o)22 b(concatenate)h(the)g(lists)g Fw(\(BOAT)h(AIRPLANE)e +(SKATEBOARD\))g Fx(and)h Fw(\(CAR)g(TRUCK\))f Fx(in)i(MacLisp,)h(one)0 +470 y(w)o(ould)16 b(t)o(yp)q(e)f(this)g(expression)i(to)d Fw(EVAL)p +Fx(:)0 563 y Fw(\(APPEND)23 b(\(QUOTE)g(\(BOAT)g(AIRPLANE)g(SKATEBOARD\)\))f +(\(QUOTE)h(\(CAR)g(TRUCK\)\)\))0 657 y Fx(or,)14 b(using)i(the)g(syn)o +(tactic)f(abbreviation)h Fw(')p Fm(x)f Fx(for)f Fw(\(quote)23 +b Fm(x)p Fw(\))p Fx(,)0 751 y Fw(\(APPEND)g('\(BOAT)g(AIRPLANE)g +(SKATEBOARD\))f('\(CAR)h(TRUCK\)\))0 845 y Fx(The)15 b(result)h(w)o(ould)g +(of)e(course)i(b)q(e)g Fw(\(BOAT)23 b(AIRPLANE)g(SKATEBOARD)f(CAR)h(TRUCK\))p +Fx(.)71 901 y(In)15 b(Lisp)i(1.5,)d(one)h(w)o(ould)h(t)o(yp)q(e)f(an)g +(expression)h(\(actually)g(t)o(w)o(o)e(expressions\))h(lik)o(e)i(this)e(to)g +Fw(EVALQUOTE)p Fx(:)0 995 y Fw(APPEND\(\(BOAT)22 b(AIRPLANE)h(SKATEBOARD\))f +(\(CAR)i(TRUCK\)\))0 1089 y Fx(The)c(\014rst)g(expression)g(denotes)g(a)g +(function,)h(and)f(the)g(second)h(is)f(a)g(list)g(of)g(argumen)o(ts.)33 +b(The)20 b(\\quote")f(in)0 1145 y(the)i(name)g Fw(EVALQUOTE)f +Fx(signi\014es)i(the)f(\\implicit)j(quoting)d(of)f(the)h(argumen)o(ts")f(to)h +(the)g(function)g(applied.)0 1202 y(MacLisp)13 b(fork)o(ed)e(o\013)g(and)h +(used)h Fw(EVAL)e Fx(exclusiv)o(ely)j(as)e(a)f(top)h(lev)o(el)h(in)o +(terface:)19 b(BBN-Lisp)13 b(\(and)f(th)o(us)g(In)o(terlisp\))0 +1258 y(accommo)q(dated)g(b)q(oth;)h(if)f(the)g(\014rst)g(input)h(line)h(con)o +(tained)e(a)g(complete)h(form)e(and)h(at)g(least)g(one)g(c)o(haracter)g(of)f +(a)0 1315 y(second)i(form,)f(then)h(BBN-Lisp)i(\014nished)g(reading)e(the)g +(second)g(form)f(and)h(used)g(the)g Fw(EVALQUOTE)f Fx(in)o(terface)h(for)0 +1371 y(that)e(in)o(teraction;)j(otherwise)e(it)g(read)g(exactly)h(one)f(form) +f(and)h(used)h(the)f Fw(EVAL)g Fx(in)o(terface)g(for)g(that)f(in)o +(teraction.)71 1428 y(The)16 b(phrase)g(\\quoting)g(argumen)o(ts")f(actually) +i(is)g(misleading)h(and)e(imprecise.)25 b(It)16 b(refers)g(to)g(the)g +(actions)0 1484 y(of)f(a)g(h)o(yp)q(othetical)h(prepro)q(cessor)f(that)g +(transforms)f(the)h(input)h(from)e(a)h(form)g(lik)o(e)0 1578 +y Fw(APPEND\(\(BOAT)22 b(AIRPLANE)h(SKATEBOARD\))f(\(CAR)i(TRUCK\)\))0 +1672 y Fx(to)15 b(one)g(lik)o(e)0 1766 y Fw(\(APPEND)23 b(\(QUOTE)g(\(BOAT)g +(AIRPLANE)g(SKATEBOARD\)\))f(\(QUOTE)h(\(CAR)g(TRUCK\)\)\))0 +1859 y Fx(b)q(efore)d(ev)m(aluation)h(is)g(p)q(erformed.)34 +b(A)20 b(similar)i(confusion)e(carried)h(o)o(v)o(er)e(in)o(to)h(the)g +(description)i(of)d(the)h(so-)0 1916 y(called)f Fw(FEXPR)e +Fx(or)h(\\sp)q(ecial)h(form".)26 b(In)19 b(some)e(texts)g(on)h(Lisp)h(one)f +(will)h(\014nd)g(descriptions)g(of)e(sp)q(ecial)j(forms)0 1972 +y(that)14 b(sp)q(eak)h(of)f(a)g(sp)q(ecial)i(form)e(\\quoting)g(its)h +(argumen)o(ts")e(when)i(in)g(fact)f(a)g(sp)q(ecial)j(form)c(has)i(a)f(sp)q +(ecial)i(rule)0 2029 y(for)f(determining)h(its)g(meaning)f(and)h(that)e(rule) +i(in)o(v)o(olv)o(es)g(not)f(ev)m(aluating)h(some)f(forms)g([Pitman,)f(1980].) +71 2085 y(McCarth)o(y)d([McCarth)o(y)l(,)h(1981])f(noted)i(that)f(the)h +(original)h(Lisp)f(in)o(terpreter)g(w)o(as)f(regarded)h(as)f(a)h(univ)o +(ersal)0 2142 y(T)l(uring)i(mac)o(hine:)20 b(It)14 b(could)h(p)q(erform)f(an) +o(y)f(computation)h(giv)o(en)h(a)e(set)h(of)g(instructions)h(\(a)e +(function\))i(and)f(the)0 2198 y(initial)j(input)g(on)e(its)g(tap)q(e)g +(\(argumen)o(ts\).)k(Th)o(us)c(it)g(w)o(as)g(in)o(tended)h(that)0 +2292 y Fw(APPEND\(\(BOAT)22 b(AIRPLANE)h(SKATEBOARD\))f(\(CAR)i(TRUCK\)\))0 +2386 y Fx(b)q(e)16 b(regarded)f(not)g(as)g(a)f(syn)o(tactically)j(m)o(utated) +d(v)o(ersion)i(of)0 2480 y Fw(\(APPEND)23 b(\(QUOTE)g(\(BOAT)g(AIRPLANE)g +(SKATEBOARD\)\))f(\(QUOTE)h(\(CAR)g(TRUCK\)\)\))0 2573 y Fx(but)11 +b(as)g(a)f(function)i(and)f(\(separately\))g(a)g(literal)h(list)g(of)e +(argumen)o(ts.)18 b(In)12 b(hindsigh)o(t)g(w)o(e)f(see)g(that)f(the)h +Fw(EVALQUOTE)0 2630 y Fx(top)17 b(lev)o(el)i(migh)o(t)e(b)q(etter)g(ha)o(v)o +(e)g(b)q(een)h(called)h(the)f Fw(APPLY)e Fx(top)h(lev)o(el,)i(making)e(it)h +(pleasan)o(tly)g(symmetrical)g(to)0 2686 y(the)g Fw(EVAL)f +Fx(top)g(lev)o(el;)j(the)e(BBN-Lisp)h(do)q(cumen)o(tation)f(brough)o(t)f(out) +h(this)g(symmetry)f(explicitly)l(.)30 b(\(Indeed,)p eop +%%Page: 5 5 +5 4 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(5)0 45 y Fw(EVALQUOTE)17 b Fx(w)o(ould)i(ha)o(v)o(e)g(b)q(een)h +(iden)o(tical)g(to)e(the)h(function)g Fw(APPLY)f Fx(in)i(Lisp)g(1.5)d(if)j +(not)e(for)g(these)h(t)o(w)o(o)e(dif-)0 102 y(ferences:)29 +b(\(a\))19 b(in)i(Lisp)g(1.5,)e Fw(APPLY)g Fx(to)q(ok)g(a)g(third)i(argumen)o +(t,)e(an)h(en)o(vironmen)o(t)g(\(regarded)f(no)o(w)o(ada)o(ys)f(as)0 +158 y(something)h(of)f(a)g(mistak)o(e)g(that)g(resulted)h(in)h(dynamic)f +(binding)h(rather)e(than)h(the)f(lexical)i(scoping)g(needed)0 +214 y(for)14 b(a)h(faithful)g(re\015ection)h(of)e(the)h(lam)o(b)q(da)h +(calculus\);)g(and)f(\(b\))f(\\)p Fw(EVALQUOTE)f Fx(is)j(capable)f(of)g +(handling)h(sp)q(ecial)0 271 y(forms)i(as)f(a)h(sort)g(of)g(exception")h +([McCarth)o(y)l(,)e(1962].)28 b(No)o(w)o(ada)o(ys)17 b(suc)o(h)i(an)f +(exception)h(is)g(referred)g(to)e(as)h(a)0 327 y Fm(kluge)12 +b Fx([Ra)o(ymond,)f(1991].)18 b(\(Note,)11 b(ho)o(w)o(ev)o(er,)h(that)f +(MacLisp's)h Fw(APPLY)g Fx(function)g(supp)q(orted)h(this)f(same)g(kluge.\)) +71 384 y(MacLisp)i(in)o(tro)q(duced)g(the)g Fw(LEXPR)p Fx(,)e(whic)o(h)i(is)g +(a)f(t)o(yp)q(e)h(of)f(function)h(that)f(tak)o(es)f(an)o(y)h(n)o(um)o(b)q(er) +h(of)f(argumen)o(ts)0 440 y(and)22 b(puts)h(them)f(on)g(the)g(stac)o(k;)i +(the)f(single)g(parameter)e(of)h(the)g(function)h(is)g(b)q(ound)g(to)f(the)g +(n)o(um)o(b)q(er)g(of)0 497 y(argumen)o(ts)12 b(passed.)19 +b(The)13 b(form)f(of)h(the)f(lam)o(b)q(da-list)j(for)d(this)h(argumen)o(t|a)f +(sym)o(b)q(ol)h(and)g(not)f(a)h(list|signals)0 553 y(the)20 +b Fw(LEXPR)f Fx(case.)34 b(Here)20 b(is)h(an)f(example)g(of)g(ho)o(w)f(to)g +(de\014ne)j Fw(LIST)p Fx(,)c(a)i(function)h(of)e(a)h(v)m(ariable)h(n)o(um)o +(b)q(er)f(of)0 610 y(argumen)o(ts)14 b(that)h(returns)g(the)g(list)h(of)f +(those)g(argumen)o(ts:)0 703 y Fw(\(DEFUN)23 b(LIST)g(N)24 +760 y(\(DO)g(\(\(J)h(N)f(\(-)h(J)g(1\)\))143 816 y(\(ANSWER)f(\(\))h(\(CONS)f +(\(ARG)g(J\))h(ANSWER\)\)\))119 873 y(\(\(ZEROP)f(J\))h(ANSWER\)\)\))0 +967 y Fx(P)o(arameter)16 b Fw(N)h Fx(is)g(b)q(ound)h(to)f(the)g(n)o(um)o(b)q +(er)g(of)g(argumen)o(ts)f(passed.)26 b(The)17 b(expression)h +Fw(\(ARG)24 b(J\))17 b Fx(refers)f(to)h(the)0 1023 y(J)23 1005 +y Fl(th)80 1023 y Fx(argumen)o(t)d(passed.)71 1080 y(The)i(need)g(for)g(the)g +Fw(LEXPR)f Fx(\(and)g(its)h(compiled)i(coun)o(terpart,)d(the)h +Fw(LSUBR)p Fx(\))f(arose)g(from)g(a)g(desire)i(to)e(ha)o(v)o(e)0 +1136 y(v)m(ariable)g(arit)o(y)d(functions)i(suc)o(h)g(as)f +Fw(+)p Fx(.)19 b(Though)13 b(there)g(is)h(no)f(seman)o(tic)g(need)h(for)f(an) +g(n-ary)g Fw(+)p Fx(,)g(it)h(is)f(con)o(v)o(enien)o(t)0 1192 +y(for)f(programmers)f(to)h(b)q(e)h(able)g(to)f(write)h Fw(\(+)23 +b(A)h(B)g(C)g(D\))12 b Fx(rather)g(than)g(the)h(equiv)m(alen)o(t)h(but)f +(more)f(cum)o(b)q(ersome)0 1249 y Fw(\(+)24 b(A)f(\(+)h(B)g(\(+)f(C)h +(D\)\)\))p Fx(.)71 1305 y(The)14 b(simple)h(but)f(p)q(o)o(w)o(erful)g(macro)f +(facilit)o(y)i(on)f(whic)o(h)h Fw(DEFMACRO)e Fx(is)h(based)g(w)o(as)f(in)o +(tro)q(duced)i(in)g(MacLisp)0 1362 y(in)h(the)f(mid-1960's.)20 +b(See)15 b(section)h(3.3.)71 1418 y(Other)h(ma)s(jor)e(impro)o(v)o(emen)o(ts) +i(o)o(v)o(er)f(Lisp)i(1.5)e(w)o(ere)h(arra)o(ys;)f(the)h(mo)q(di\014cation)h +(of)e(simple)j(predicates|)0 1475 y(suc)o(h)i(as)g Fw(MEMBER)p +Fx(|to)e(b)q(e)j(functions)g(that)e(return)h(useful)h(v)m(alues;)i +Fw(PROG2)p Fx(;)f(and)e(the)g(in)o(tro)q(duction)g(of)g(the)0 +1531 y(function)16 b Fw(ERR)p Fx(,)e(whic)o(h)i(allo)o(w)o(ed)g(user)f(co)q +(de)h(to)f(signal)h(an)f(error.)71 1588 y(In)h(Lisp)h(1.5,)e(certain)i +(built-in)h(functions)f(migh)o(t)f(signal)h(errors,)e(when)i(giv)o(en)f +(incorrect)h(argumen)o(ts,)e(for)0 1644 y(example.)20 b(Signaling)c(an)d +(error)g(normally)h(resulted)h(in)f(program)e(termination)i(or)f(in)o(v)o(o)q +(cation)i(of)e(a)g(debugger.)0 1701 y(Lisp)i(1.5)d(also)i(had)g(the)f +(function)i Fw(ERRSET)p Fx(,)d(whic)o(h)i(w)o(as)f(useful)i(for)e(con)o +(trolled)h(execution)h(of)e(co)q(de)h(that)f Fm(might)0 1757 +y Fx(cause)i(an)h(error.)j(The)c(sp)q(ecial)i(form)0 1863 y +Fw(\(ERRSET)23 b Fm(form)p Fw(\))0 1970 y Fx(ev)m(aluates)18 +b Fm(form)f Fx(in)h(a)e(con)o(text)h(in)h(whic)o(h)f(errors)g(do)f(not)h +(terminate)g(the)g(program)f(or)g(en)o(ter)h(the)g(debugger.)0 +2026 y(If)g Fm(form)f Fx(do)q(es)h(not)f(cause)h(an)f(error,)f +Fw(ERRSET)h Fx(returns)g(a)g(singleton)i(list)f(of)f(the)g(v)m(alue.)25 +b(If)16 b(execution)i(of)d Fm(form)0 2082 y Fx(do)q(es)h(cause)f(an)g(error,) +f(the)i Fw(ERRSET)e Fx(form)g(quietly)j(returns)e Fw(NIL)p +Fx(.)71 2139 y(MacLisp)h(added)g(the)g(function)g Fw(ERR)p +Fx(,)f(whic)o(h)h(signals)g(an)g(error.)k(If)c Fw(ERR)f Fx(is)h(in)o(v)o(ok)o +(ed)g(within)g(the)g(dynamic)0 2195 y(con)o(text)e(of)h(an)f +Fw(ERRSET)g Fx(form,)g(then)h(the)g(argumen)o(t)f(to)g Fw(ERR)g +Fx(is)i(returned)f(as)f(the)h(v)m(alue)h(of)e(the)h Fw(ERRSET)f +Fx(form.)71 2252 y(Programmers)j(so)q(on)i(b)q(egan)g(to)f(use)h +Fw(ERRSET)f Fx(and)i Fw(ERR)e Fx(not)h(to)f(trap)g(and)h(signal)h(errors)e +(but)h(for)f(more)0 2308 y(general)e(con)o(trol)f(purp)q(oses)h(\(dynamic)g +(non-lo)q(cal)h(exits\).)k(Unfortunately)l(,)16 b(this)g(use)f(of)h +Fw(ERRSET)e Fx(also)i(quietly)0 2365 y(trapp)q(ed)j(unexp)q(ected)h(errors,)f +(making)g(programs)e(harder)i(to)f(debug.)30 b(A)19 b(new)g(pair)g(of)f +(primitiv)o(es,)j Fw(CATCH)0 2421 y Fx(and)15 b Fw(THROW)p +Fx(,)e(w)o(as)h(in)o(tro)q(duced)h(in)o(to)g(MacLisp)g([Lisp)g(Arc)o(hiv)o +(e,)g(Ma)o(y)e(3,)h(1972,)f(item)i(2])f(so)g(that)f Fw(ERRSET)h +Fx(could)0 2478 y(b)q(e)i(reserv)o(ed)f(for)g(its)g(in)o(tended)i(use)e(of)g +(error)f(trapping.)71 2534 y(The)j(lesson)h(of)f Fw(ERRSET)f +Fx(and)i Fw(CATCH)e Fx(is)i(imp)q(ortan)o(t.)25 b(The)18 b(designers)g(of)f +Fw(ERRSET)f Fx(and)i(later)f Fw(ERR)g Fx(had)g(in)0 2591 y(mind)e(a)f +(particular)i(situation)e(and)h(de\014ned)h(a)e(pair)h(of)f(primitiv)o(es)h +(to)f(address)h(that)e(situation.)20 b(But)15 b(b)q(ecause)0 +2647 y(these)22 b(facilities)j(pro)o(vided)e(a)f(com)o(bination)h(of)e +(useful)j(and)e(p)q(o)o(w)o(erful)h(capabilities)h(\(error)d(trapping)i(plus) +0 2703 y(dynamic)16 b(non-lo)q(cal)g(exits\),)f(programmers)f(b)q(egan)h(to)f +(use)i(these)f(facilities)i(in)f(unin)o(tended)h(w)o(a)o(ys.)h(Then)e(the)p +eop +%%Page: 6 6 +6 5 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(6)0 45 y(designers)16 b(had)g(to)e(go)h(bac)o(k)g(and)g(split)i +(the)e(desired)i(functionalit)o(y)f(in)o(to)f(pieces)i(with)f(alternativ)o(e) +f(in)o(terfaces.)0 102 y(This)j(pattern)g(of)f(careful)i(design,)g(unin)o +(tended)h(use,)e(and)g(later)g(redesign)h(is)g(common)e(in)i(the)f(ev)o +(olution)g(of)0 158 y(Lisp.)71 214 y(The)d(next)h(phase)f(of)g(MacLisp)h(dev) +o(elopmen)o(t)h(b)q(egan)e(when)h(the)g(dev)o(elop)q(ers)g(of)f(MacLisp)h +(started)f(to)g(see)0 271 y(a)h(large)h(and)g(in\015uen)o(tial)i(user)e +(group)f(emerge|Pro)s(ject)g(MA)o(C)g(and)h(the)g(Mathlab/Macsyma)f(group.)24 +b(The)0 327 y(emphasis)14 b(turned)g(to)f(satisfying)h(the)f(needs)h(of)f +(their)h(user)g(comm)o(unit)o(y)f(rather)g(than)g(doing)h(language)g(design)0 +384 y(and)h(implemen)o(tation)i(as)e(suc)o(h.)0 504 y Fu(2.2.2)52 +b(Later)18 b(MacLisp)0 590 y Fx(During)e(the)f(latter)g(part)g(of)g(its)h +(lifecycle,)h(MacLisp)f(adopted)g(language)f(features)h(from)e(other)h(Lisp)i +(dialects)0 646 y(and)e(from)g(other)g(languages,)g(and)g(some)g(no)o(v)o(el) +g(things)h(w)o(ere)f(in)o(v)o(en)o(ted.)71 703 y(The)e(most)f(signi\014can)o +(t)i(dev)o(elopmen)o(t)f(for)g(MacLisp)g(o)q(ccurred)h(in)g(the)f(early)g +(1970's)e(when)j(the)f(tec)o(hniques)0 759 y(in)20 b(the)g(protot)o(yp)q(e)e +(\\fast)g(arithmetic)i(compiler")h(LISCOM)f([Golden,)g(1970])e(w)o(ere)h +(incorp)q(orated)h(in)o(to)f(the)0 816 y(MacLisp)f(compiler)h(b)o(y)e(Jon)h +(L)g(White,)g(who)f(had)h(already)g(b)q(een)g(the)g(principal)i(MacLisp)e +(main)o(tainer)g(and)0 872 y(dev)o(elop)q(er)c(for)f(sev)o(eral)g(y)o(ears.) +19 b(\(John)13 b(Lyle)i(White)e(w)o(as)g(commonly)g(kno)o(wn)g(b)o(y)g(his)h +(login)h(name)e Fw(JONL)p Fx(,)f(whic)o(h)0 928 y(can)21 b(b)q(e)h +(pronounced)g(as)f(either)h(\\j\023)-23 b(onnell")22 b(\(to)e(rh)o(yme)h +(with)h(\\O'Donnell"\))f(or)g(\\john-ell")h(\(t)o(w)o(o)e(equally)0 +985 y(stressed)f(syllables\).)33 b(Because)20 b(of)f(this,)h(he)f(to)q(ok)g +(to)f(writing)i(his)g(name)f(as)g(\\Jon)g(L)g(White")h(rather)e(than)0 +1041 y(\\John)d(L.)h(White".\))71 1098 y(Steele,)24 b(who)d(at)g(age)g(17)g +(had)h(already)g(h)o(ung)g(out)f(around)g(MIT)h(for)f(sev)o(eral)h(y)o(ears)f +(and)g(had)h(imple-)0 1154 y(men)o(ted)e(a)g(Lisp)i(system)e(for)f(the)i(IBM) +f(1130,)g(w)o(as)g(hired)h(as)f(a)g(Lisp)i(hac)o(k)o(er)e(in)h(July)g(1972)e +(b)o(y)i(the)f(MIT)0 1211 y(Mathlab)c(group,)g(whic)o(h)h(w)o(as)f(headed)h +(b)o(y)f(Jo)q(el)i(Moses.)k(Steele)c(so)q(on)e(to)q(ok)f(resp)q(onsibili)q(t) +o(y)j(for)e(main)o(taining)0 1267 y(the)j(MacLisp)h(in)o(terpreter)f(and)g +(run)o(time)g(system,)h(allo)o(wing)f(Jon)h(L)f(to)f(concen)o(trate)h(almost) +f(full)j(time)e(on)0 1324 y(compiler)d(impro)o(v)o(emen)o(ts.)71 +1380 y(The)i(resulting)g(new)g(MacLisp)h(compiler,)g(NCOMPLR)f([Mo)q(on,)g +(1974;)e(Lisp)j(Arc)o(hiv)o(e;)f(Pitman,)g(1983],)0 1437 y(b)q(ecame)f(a)e +(standard)g(against)h(whic)o(h)h(all)f(other)g(Lisp)h(compilers)g(w)o(ere)e +(measured)h(in)h(terms)e(of)h(the)g(sp)q(eed)g(of)0 1493 y(running)k(co)q +(de.)33 b(Inspired)20 b(b)o(y)f(the)h(needs)g(of)e(the)i(MIT)f(Arti\014cial)h +(In)o(telligence)i(Lab)q(oratory)l(,)d(whose)g(needs)0 1549 +y(co)o(v)o(ered)f(the)g(n)o(umeric)h(computations)g(done)f(in)h(vision)g(and) +g(rob)q(otics,)g(sev)o(eral)f(new)g(w)o(a)o(ys)g(of)f(represen)o(ting)0 +1606 y(and)g(compiling)i(n)o(umeric)e(co)q(de)h(resulted)f(in)h(n)o(umeric)g +(p)q(erformance)f(of)f(compiled)j(MacLisp)e(on)g(a)f(near)h(par)0 +1662 y(with)f(F)o(OR)l(TRAN)g(compilers)g([F)l(ateman,)e(1973].)71 +1719 y(Bign)o(ums|arbitrary)j(precision)h(in)o(teger)f(arithmetic|w)o(ere)h +(added)g(circa)f(1971)f(to)g(meet)h(the)g(needs)g(of)0 1775 +y(Macsyma)g(users.)29 b(The)18 b(co)q(de)g(w)o(as)g(a)f(more)h(or)g(less)g +(faithful)h(transcription)g(of)e(the)h(algorithms)g(in)h([Kn)o(uth,)0 +1832 y(1969].)f(Later)12 b(Bill)j(Gosp)q(er)d(suggested)h(some)f(impro)o(v)o +(emen)o(ts,)g(notably)h(a)g(v)o(ersion)g(of)f Fw(GCD)g Fx(that)g(com)o(bined) +i(the)0 1888 y(go)q(o)q(d)g(features)g(of)g(the)g(binary)h(GCD)e(algorithm)h +(with)h(Lehmer's)f(metho)q(d)h(for)e(sp)q(eeding)j(up)f(in)o(teger)f(bign)o +(um)0 1945 y(division)j([Kn)o(uth,)e(1981,)f(ex.)h(4.5.2-34].)71 +2001 y(In)20 b(1973)g(and)g(1974,)g(Da)o(vid)g(Mo)q(on)g(led)h(an)g(e\013ort) +e(to)g(implemen)o(t)j(MacLisp)f(on)f(the)h(Honeyw)o(ell)g(6180)0 +2058 y(under)d(Multics.)26 b(As)17 b(a)f(part)h(of)f(this)h(pro)s(ject)g(he)g +(wrote)f(the)h(\014rst)g(truly)g(comprehensiv)o(e)h(reference)g(man)o(ual)0 +2114 y(for)d(Maclisp,)g(whic)o(h)h(b)q(ecame)g(familiarly)h(kno)o(wn)e(as)g +(\\the)g(Mo)q(on)o(ual")g([Mo)q(on,)f(1974].)71 2170 y(Ric)o(hard)19 +b(Green)o(blatt)f(started)g(the)g(MIT)h(Lisp)g(Mac)o(hine)g(pro)s(ject)f(in)h +(1974)f([Green)o(blatt,)g(1974];)g(Da)o(vid)0 2227 y(Mo)q(on,)c(Ric)o(hard)h +(Stallman,)f(and)h(man)o(y)e(other)h(MIT)g(AI)g(Lab)h(Lisp)g(hac)o(k)o(ers)f +(ev)o(en)o(tually)h(joined)g(this)f(pro)s(ject.)0 2283 y(As)i(this)h(pro)s +(ject)f(progressed,)g(language)h(features)f(w)o(ere)g(selectiv)o(ely)i +(retro\014tted)e(in)o(to)h(PDP-10)e(MacLisp)i(as)0 2340 y(the)e(t)o(w)o(o)f +(pro)s(jects)h(cross-fertilized.)71 2396 y(Complex)f(lam)o(b)q(da)h(lists)f +(partly)g(arose)g(b)o(y)g(in\015uence)i(from)d(Muddle)j(\(later)d(called)j +(MDL)e([Galley)l(,)g(1975]\),)0 2453 y(whic)o(h)19 b(w)o(as)e(a)h(language)g +(for)g(the)g(Dynamic)h(Mo)q(deling)g(Group)f(at)f(MIT.)h(It)g(ran)g(on)g(a)g +(PDP-10)f(lo)q(cated)i(in)0 2509 y(the)d(same)f(mac)o(hine)h(ro)q(om)f(as)g +(the)g(AI)h(and)g(Mathlab)f(mac)o(hines.)21 b(The)16 b(austere)f(syn)o(tax)g +(of)g(Lisp)h(1.5)f(w)o(as)f(not)0 2566 y(quite)k(p)q(o)o(w)o(erful)f(enough)h +(to)f(express)g(clearly)i(the)e(di\013eren)o(t)g(roles)h(of)f(argumen)o(ts)f +(to)h(a)g(function.)26 b(Complex)0 2622 y(lam)o(b)q(da-lists)18 +b(app)q(eared)e(as)g(a)g(solution)h(to)f(this)h(problem)g(and)f(b)q(ecame)h +(widely)h(accepted;)f(ev)o(en)o(tually)g(they)0 2679 y(terribly)f +(complicated)h(the)e(otherwise)g(elegan)o(t)h(Common)e(Lisp)i(Ob)s(ject)g +(System.)p eop +%%Page: 7 7 +7 6 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(7)71 45 y(MacLisp)12 b(in)o(tro)q(duced)h(the)f(notion)g(of)g +Fm(r)n(e)n(ad)h(tables)p Fx(.)18 b(A)12 b(read)g(table)g(pro)o(vides)g +(programmable)g(input)h(syn)o(tax)0 102 y(for)f(programs)f(and)i(data.)18 +b(When)13 b(a)f(c)o(haracter)g(is)h(input,)h(the)e(table)h(is)g(consulted)h +(to)e(determine)h(the)g(syn)o(tactic)0 158 y(c)o(haracteristics)k(of)f(the)h +(c)o(haracter)f(for)g(use)g(in)i(putting)f(together)f(tok)o(ens.)23 +b(F)l(or)16 b(example,)i(the)e(table)h(is)g(used)0 214 y(to)h(determine)h +(whic)o(h)h(c)o(haracters)d(denote)i(whitespace.)31 b(In)19 +b(addition,)h(functions)f(can)g(b)q(e)g(asso)q(ciated)g(with)0 +271 y(c)o(haracters,)14 b(so)h(that)f(a)h(function)h(is)g(in)o(v)o(ok)o(ed)f +(whenev)o(er)h(a)f(giv)o(en)g(c)o(haracter)g(is)h(read;)e(the)i(function)g +(can)f(read)0 327 y(further)j(input)h(b)q(efore)f(returning)h(a)f(v)m(alue)h +(to)e(b)q(e)i(incorp)q(orated)f(in)o(to)g(the)h(data)e(structure)h(b)q(eing)h +(read.)28 b(In)0 384 y(this)16 b(w)o(a)o(y)e(the)h(built-in)i(parser)e(can)g +(b)q(e)h(reprogrammed)e(b)o(y)h(the)h(user.)k(This)15 b(p)q(o)o(w)o(erful)h +(facilit)o(y)g(made)f(it)g(easy)0 440 y(to)g(exp)q(erimen)o(t)h(with)g +(alternativ)o(e)f(input)i(syn)o(taxes)e(for)f(Lisp,)j(ranging)e(from)g(suc)o +(h)g(simple)i(abbreviations)f(as)0 497 y Fw(')p Fm(x)g Fx(for)f +Fw(\(quote)23 b Fm(x)p Fw(\))16 b Fx(to)f(the)h(bac)o(kquote)g(facilit)o(y)h +(and)f(elab)q(orate)g(Algol-st)o(yle)h(parsers.)22 b(See)17 +b(section)f(3.5.1)f(for)0 553 y(further)g(discussion)i(of)e(some)g(of)f +(these)i(exp)q(erimen)o(ts.)71 610 y(MacLisp)k(adopted)g(only)h(a)f(small)g +(n)o(um)o(b)q(er)h(of)e(features)h(from)f(other)h(Lisp)h(dialects.)36 +b(In)20 b(1974,)g(ab)q(out)0 666 y(a)h(dozen)g(p)q(ersons)g(attended)g(a)g +(meeting)g(at)g(MIT)f(b)q(et)o(w)o(een)i(the)e(MacLisp)i(and)f(In)o(terlisp)i +(implemen)o(tors,)0 723 y(including)h(W)l(arren)d(T)l(eitelman,)j(Alice)g +(Hartley)l(,)f(Jon)e(L)h(White,)h(Je\013)f(Golden,)h(and)f(Steele.)40 +b(There)22 b(w)o(as)0 779 y(some)e(hop)q(e)g(of)g(\014nding)h(substan)o(tial) +g(common)f(ground,)h(but)f(the)g(meeting)g(actually)h(serv)o(ed)f(to)g +(illustrate)0 835 y(the)e(great)f(c)o(hasm)g(separating)h(the)g(t)o(w)o(o)f +(groups,)g(in)i(ev)o(erything)f(from)g(implemen)o(tation)h(details)g(to)e(o)o +(v)o(erall)0 892 y(design)22 b(philosoph)o(y)l(.)40 b(\(Muc)o(h)21 +b(of)f(the)i(un)o(willingness)i(of)d(eac)o(h)g(side)h(to)f(depart)g(from)f +(its)i(c)o(hosen)f(strategy)0 948 y(probably)d(stemmed)g(from)e(the)i +(already)g(sev)o(ere)f(resource)h(constrain)o(ts)f(on)g(the)h(PDP-10,)e(a)i +(one-megab)o(yte,)0 1005 y(one-MIPS)13 b(mac)o(hine.)20 b(With)13 +b(the)g(adv)o(en)o(t)f(of)g(the)h(MIT)g(Lisp)g(Mac)o(hines,)h(with)f(their)g +(greater)f(sp)q(eed)h(and)g Fm(much)0 1061 y Fx(greater)g(address)g(space,)h +(the)f(cro)o(wd)g(that)g(had)h(once)g(adv)o(o)q(cated)f(a)g(small,)h(p)q(o)o +(w)o(erful)g(execution)h(en)o(vironmen)o(t)0 1118 y(with)g(separate)f +(programming)g(to)q(ols)h(em)o(braced)g(the)g(strategy)e(of)h(writing)i +(programming)e(to)q(ols)g(in)i(Lisp)g(and)0 1174 y(turning)e(the)f(Lisp)h(en) +o(vironmen)o(t)f(in)o(to)g(a)g(complete)h(programming)e(en)o(vironmen)o(t.\)) +19 b(In)14 b(the)f(end)h(only)f(a)g(trivial)0 1231 y(exc)o(hange)j(of)g +(features)f(resulted)i(from)f(\\the)f(great)g(MacLisp/In)o(terlisp)j +(summit":)k(MacLisp)17 b(adopted)f(from)0 1287 y(In)o(terlisp)f(the)f(b)q +(eha)o(vior)g Fw(\(CAR)23 b(NIL\))14 b Fk(!)g Fw(NIL)f Fx(and)h +Fw(\(CDR)23 b(NIL\))13 b Fk(!)h Fw(NIL)p Fx(,)f(and)h(In)o(terlisp)h(adopted) +f(the)f(concept)0 1344 y(of)i(a)g(read)g(table.)71 1400 y(By)h(the)h +(mid-1970's)f(it)h(w)o(as)f(b)q(ecoming)i(increasingly)g(apparen)o(t)f(that)f +(the)h(address)f(space)h(limitation)h(of)0 1456 y(the)i(PDP-10|256K)f(36-bit) +g(w)o(ords,)h(or)f(ab)q(out)h(one)g(megab)o(yte|w)o(as)e(b)q(ecoming)j(a)e +(sev)o(ere)h(constrain)o(t)f(as)0 1513 y(the)f(size)g(of)g(Lisp)g(programs)f +(grew.)27 b(MacLisp)18 b(b)o(y)g(this)g(time)g(had)g(enjo)o(y)o(ed)f(nearly)i +(10)e(y)o(ears)g(of)g(strong)g(use)0 1569 y(and)c(acceptance)h(within)g(its)g +(somewhat)e(small)i(but)f(v)o(ery)g(in\015uen)o(tial)i(user)e(comm)o(unit)o +(y)l(.)20 b(Its)13 b(implemen)o(tation)0 1626 y(strategy)d(of)h(a)g(large)g +(assem)o(bly)h(language)f(core)h(pro)o(v)o(ed)f(to)f(b)q(e)i(to)q(o)f(m)o(uc) +o(h)g(to)g(sta)o(y)f(with)i(the)f(dialect)i(as)e(it)h(sto)q(o)q(d,)0 +1682 y(and)i(in)o(tellectual)i(pressures)d(from)g(other)g(dialects,)i(other)e +(languages,)g(and)h(the)g(language)f(design)i(aspirations)0 +1739 y(of)g(its)g(implemen)o(tors)h(resulted)g(in)g(new)g(directions)g(for)f +(Lisp.)71 1795 y(T)l(o)j(man)o(y)l(,)g(the)h(p)q(erio)q(d)h(of)e(stable)g +(MacLisp)i(use)e(w)o(as)g(a)g(golden)h(era)f(in)i(whic)o(h)f(all)g(w)o(as)f +(righ)o(t)g(with)h(the)0 1852 y(w)o(orld)e(of)g(Lisp.)28 b(\(This)18 +b(same)f(p)q(erio)q(d)i(is)f(also)f(regarded)h(to)q(da)o(y)e(b)o(y)i(man)o(y) +f(nostalgics)g(as)h(the)f(golden)h(era)f(of)0 1908 y(Arti\014cial)g(In)o +(telligence.\))23 b(By)15 b(1980)g(the)g(MacLisp)h(user)g(comm)o(unit)o(y)f +(w)o(as)g(on)g(the)h(decline|the)i(funding)f(for)0 1965 y(Macsyma)f(w)o(ould) +h(not)f(last)h(to)q(o)f(long.)25 b(V)l(arious)17 b(funding)h(crises)g(in)f +(AI)h(had)f(depleted)h(the)f(ranks)f(of)h(the)f(AI)0 2021 y(Lab)j(Lisp)h +(wizards,)g(and)f(the)g(core)g(group)f(of)h(wizards)g(from)f(MIT)h(and)g(MIT) +f(hangers-on)h(mo)o(v)o(ed)g(to)f(new)0 2077 y(institutions.)0 +2199 y Fo(2.3)56 b(In)n(terlisp)0 2285 y Fx(In)o(terlisp)16 +b(\(and)e(BBN-Lisp)h(b)q(efore)g(it\))f(in)o(tro)q(duced)h(man)o(y)f(radical) +h(ideas)g(in)o(to)f(Lisp)h(programming)f(st)o(yle)g(and)0 2341 +y(metho)q(dology)l(.)35 b(The)20 b(most)f(visible)k(of)c(these)h(ideas)h(are) +f(em)o(b)q(o)q(died)i(in)f(programming)e(to)q(ols,)i(suc)o(h)f(as)g(the)0 +2398 y(sp)q(elling)e(corrector,)c(the)h(\014le)h(pac)o(k)m(age,)f(D)o(WIM,)f +(CLISP)l(,)i(the)f(structure)g(editor,)g(and)g(MASTERSCOPE.)71 +2454 y(The)c(origin)g(of)g(these)g(ideas)h(can)f(b)q(e)h(found)f(in)h(W)l +(arren)e(T)l(eitelman's)i(PhD)f(dissertation)g(on)g(man-computer)0 +2511 y(sym)o(biosis)k([T)l(eitelman,)g(1966].)j(In)d(particular,)f(it)h(con)o +(tains)f(the)h(ro)q(ots)e(of)h(structure)g(editing)h(\(as)f(opp)q(osed)h(to)0 +2567 y(\\text")h(or)h(\\tap)q(e")f(editing)j([Rudlo)q(e,)f(1962]\),)d(breakp) +q(oin)o(ting,)k(advice,)f(and)f(CLISP)l(.)h(\(William)g(Henneman)0 +2624 y(in)23 b(1964)d(describ)q(ed)k(a)d(translator)g(for)g(the)h(A-language) +g([Henneman,)h(1964],)f(an)f(English-lik)o(e)k(or)c(Algol-)0 +2680 y(lik)o(e)c(surface)g(syn)o(tax)e(for)h(Lisp)i(\(see)e(section)h +(3.5.1\),)d(but)j(it)f(w)o(as)g(not)g(nearly)h(as)f(elab)q(orate)g(or)g(as)g +(\015exible)i(as)p eop +%%Page: 8 8 +8 7 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(8)0 45 y(CLISP)l(.)12 b(Henneman's)g(w)o(ork)e(do)q(es)i(not)e(app) +q(ear)i(to)f(ha)o(v)o(e)g(directly)h(in\015uenced)i(T)l(eitelman;)f(at)e +(least,)h(T)l(eitelman)0 102 y(do)q(es)k(not)f(cite)h(it,)f(though)g(he)h +(cites)g(other)f(pap)q(ers)h(in)g(the)f(same)g(collection)j(con)o(taining)e +(Henneman's)f(pap)q(er)0 158 y([Berk)o(eley)l(,)h(1964].\))71 +214 y(The)j(sp)q(elling)j(corrector)c(and)i(D)o(WIM)e(w)o(ere)h(designed)i +(to)e(comp)q(ensate)g(for)g(h)o(uman)g(foibles.)34 b(When)19 +b(a)0 271 y(sym)o(b)q(ol)e(had)g(no)g(v)m(alue)h(\(or)d(no)i(function)h +(de\014nition\),)g(the)f(In)o(terlisp)h(sp)q(elling)h(corrector)d([T)l +(eitelman,)h(1974])0 327 y(w)o(as)i(in)o(v)o(ok)o(ed,)h(b)q(ecause)g(the)g +(sym)o(b)q(ol)g(migh)o(t)f(ha)o(v)o(e)g(b)q(een)i(missp)q(elled.)35 +b(The)20 b(sp)q(elling)h(corrector)e(compared)0 384 y(a)h(p)q(ossibly)h +(missp)q(elled)i(sym)o(b)q(ol)e(with)f(a)g(list)h(of)f(kno)o(wn)g(w)o(ords.) +33 b(The)21 b(user)f(had)g(options)h(for)e(con)o(trolling)0 +440 y(the)d(b)q(eha)o(vior)h(of)f(the)g(system)g(with)h(resp)q(ect)f(to)g(sp) +q(elling)j(correction.)k(The)16 b(system)g(w)o(ould)h(do)f(one)g(of)g(three)0 +497 y(things:)j(\(a\))10 b(correct)i(automatically;)h(\(b\))e(pause)h(and)g +(ask)f(whether)h(a)g(prop)q(osed)g(correction)g(w)o(ere)f(acceptable;)0 +553 y(or)k(\(c\))f(simply)j(signal)f(an)f(error.)71 610 y(The)h(sp)q(elling)i +(corrector)d(w)o(as)g(under)i(the)f(general)g(con)o(trol)g(of)f(a)h(m)o(uc)o +(h)f(larger)h(program,)f(called)i(D)o(WIM,)0 666 y(for)j(\\Do)h(What)f(I)h +(Mean".)37 b(Whenev)o(er)22 b(an)f(error)f(of)g(an)o(y)h(sort)f(w)o(as)h +(detected)g(b)o(y)g(the)g(In)o(terlisp)i(system,)0 723 y(D)o(WIM)16 +b(w)o(as)h(in)o(v)o(ok)o(ed)g(to)f(determine)i(the)g(appropriate)f(action.)25 +b(D)o(WIM)17 b(w)o(as)f(able)i(to)e(correct)h(some)g(forms)0 +779 y(of)d(paren)o(thesis)i(errors,)d(whic)o(h,)j(along)f(with)g(the)g(missp) +q(elling)i(of)e(iden)o(ti\014ers,)h(comprised)f(the)g(most)f(common)0 +835 y(t)o(yp)q(ographical)i(errors)e(b)o(y)h(users.)71 892 +y(D)o(WIM)e(\014t)h(in)h(w)o(ell)g(with)f(the)h(w)o(ork)e(philosoph)o(y)i(of) +f(In)o(terlisp.)21 b(The)14 b(In)o(terlisp)i(mo)q(del)f(w)o(as)e(to)h(em)o +(ulate)g(an)0 948 y(in\014nite)f(login)f(session.)20 b(In)11 +b(In)o(terlisp,)j(the)d(programmer)f(w)o(ork)o(ed)h(with)g(source)h(co)q(de)g +(presen)o(ted)f(b)o(y)h(a)f Fm(structur)n(e)0 1005 y(e)n(ditor)p +Fx(,)17 b(whic)o(h)h(op)q(erated)g(on)f(source)g(co)q(de)g(in)h(the)g(form)e +(of)h(memory-residen)o(t)g(Lisp)h(data)f(structures.)25 b(An)o(y)0 +1061 y(c)o(hanges)11 b(to)g(the)g(co)q(de)h(w)o(ere)e(sa)o(v)o(ed)h(in)h(a)f +(\014le,)h(whic)o(h)g(serv)o(ed)g(as)e(a)h(p)q(ersisten)o(t)h(rep)q(ository)f +(for)f(the)i(programmer's)0 1118 y(co)q(de.)19 b(D)o(WIM's)10 +b(c)o(hanges)h(w)o(ere)g(sa)o(v)o(ed)g(also.)19 b(The)11 b(memory-residen)o +(t)h(structure)f(w)o(as)f(considered)j(the)e(primary)0 1174 +y(represen)o(tation)16 b(of)g(the)g(program;)f(the)h(\014le)h(w)o(as)e +(merely)i(a)e(stable)i(bac)o(kup)f(cop)o(y)l(.)23 b(\(The)16 +b(MacLisp)g(mo)q(del,)h(in)0 1231 y(con)o(trast,)d(w)o(as)h(for)h(the)g +(programmer)e(to)i(w)o(ork)e(with)j(ASCI)q(I)g(\014les)g(that)e(represen)o +(ted)h(the)g(program,)f(using)h(a)0 1287 y(c)o(haracter-orien)o(ted)e +(editor.)19 b(Here)14 b(the)g(\014le)g(w)o(as)f(considered)i(the)f(primary)f +(represen)o(tation)h(of)f(the)h(program.\))71 1344 y(CLISP)g(\(Con)o(v)o +(ersational)f(LISP\))i(w)o(as)e(a)g(mixed)i(Algol-lik)o(e)h(and)e +(English-lik)o(e)i(syn)o(tax)d(em)o(b)q(edded)j(within)0 1400 +y(normal)e(In)o(terlisp)i(syn)o(tax.)i(Here)d(is)f(a)g(v)m(alid)i +(de\014nition)f(of)f Fw(FACTORIAL)f Fx(written)h(in)h(In)o(terlisp)g(CLISP)g +(syn)o(tax:)0 1494 y Fw(DEFINEQ\(\(FACTORIAL)48 1550 y(\(LAMBDA)23 +b(\(N\))g(\(IF)h(N=0)f(THEN)g(1)h(ELSE)f(N*\(FACTORIAL)g(N-1\)\)\)\)\))0 +1644 y Fx(CLISP)d(also)g(dep)q(ended)i(on)d(the)h(generic)g(D)o(WIM)f(mec)o +(hanism.)34 b(Note)19 b(that)g(it)h(not)f(only)h(m)o(ust,)g(in)h(e\013ect,)0 +1701 y(rearrange)14 b(tok)o(ens)g(and)g(insert)h(paren)o(theses,)g(but)f +(also)h(m)o(ust)f(split)h(atoms)f(suc)o(h)g(as)g Fw(N=0)g Fx(and)h +Fw(N*)f Fx(in)o(to)h(sev)o(eral)0 1757 y(appropriate)g(tok)o(ens.)20 +b(Th)o(us)15 b(the)g(user)g(need)h(not)f(put)h(spaces)f(around)g(in\014x)h +(op)q(erators.)71 1813 y(CLISP)j(de\014ned)g(a)f(useful)h(set)f(of)g +(iteration)g(constructs.)29 b(Here)18 b(is)h(a)f(simple)i(program)d(to)g +(prin)o(t)i(all)g(the)0 1870 y(prime)d(n)o(um)o(b)q(ers)f Fn(p)g +Fx(in)h(the)g(range)f Fn(m)d Fk(\024)h Fn(p)g Fk(\024)g Fn(n)p +Fx(:)0 1964 y Fw(\(FOR)23 b(P)h(FROM)f(M)h(TO)g(N)f(DO)h(\(PRINT)f(P\))h +(WHILE)f(\(PRIMEP)g(P\)\))71 2058 y Fx(CLISP)l(,)17 b(D)o(WIM,)e(and)i(the)f +(sp)q(elling)j(corrector)d(could)h(w)o(ork)f(together)f(to)h(recognize)h(the) +g(follo)o(wing)g(as)f(a)0 2114 y(v)m(alid)h(de\014nition)g(of)e +Fw(FACTORIAL)f Fx([T)l(eitelman,)h(1973]:)0 2208 y Fw(DEFINEQ\(\(FACTORIAL)48 +2264 y(\(LAMBDA)23 b(\(N\))g(\(IFFN=0)g(THENN)g(1)h(ESLE)f +(N*8FACTTORIALNN-1\)\)\)\))0 2358 y Fx(In)o(terlisp)18 b(ev)o(en)o(tually)f +(\\corrects")e(this)i(mangled)f(de\014nition)i(in)o(to)f(the)f(v)m(alid)i +(form)d(sho)o(wn)h(previously)l(.)24 b(Note)0 2415 y(that)15 +b(shift-8)g(is)h(left)g(paren)o(thesis)g(on)f(the)h(Mo)q(del)g(33)f(telet)o +(yp)q(e,)g(whic)o(h)i(had)e(a)g(bit-paired)i(k)o(eyb)q(oard.)k(D)o(WIM)0 +2471 y(had)d(to)f(b)q(e)h(c)o(hanged)h(when)f(t)o(yp)q(ewriter-paired)h(k)o +(eyb)q(oards)e(\(on)h(whic)o(h)g(left)g(paren)o(thesis)h(w)o(as)e(shift-9,)h +(and)0 2527 y(shift-8)d(w)o(as)g(the)g(asterisk\))g(b)q(ecame)h(common.)71 +2584 y(MASTERSCOPE)23 b(w)o(as)e(a)i(facilit)o(y)g(for)f(\014nding)i(out)e +(information)h(ab)q(out)f(the)h(functions)g(in)h(a)e(large)0 +2640 y(system.)c(MASTERSCOPE)12 b(could)g(analyze)h(a)e(b)q(o)q(dy)h(of)f(co) +q(de,)h(build)h(up)f(a)f(data)g(base,)h(and)g(answ)o(er)e(questions)0 +2697 y(in)o(teractiv)o(ely)l(.)31 b(MASTERSCOPE)19 b(k)o(ept)g(trac)o(k)f(of) +g(suc)o(h)h(relationships)h(as)e(whic)o(h)i(functions)f(called)h(whic)o(h)p +eop +%%Page: 9 9 +9 8 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1190 b Fx(9)0 45 y(others)19 b(\(directly)i(or)e(indirectly\),)k(whic)o(h)d +(v)m(ariables)i(w)o(ere)d(b)q(ound)i(where,)g(whic)o(h)f(functions)h +(destructiv)o(ely)0 102 y(altered)e(certain)f(data)g(structures,)g(and)g(so)g +(on.)28 b(\(MacLisp)19 b(had)f(a)g(corresp)q(onding)h(utilit)o(y)g(called)h +(INDEX,)0 158 y(but)11 b(it)g(w)o(as)f(not)h(nearly)h(as)e(general)i(or)e +(\015exible,)j(and)f(it)f(ran)g(only)g(in)h(batc)o(h)f(mo)q(de,)g(pro)q +(ducing)i(a)d(\014le)i(con)o(taining)0 214 y(a)j(completely)h(cross-indexed)h +(rep)q(ort.\))71 271 y(In)o(terlisp)f(in)o(tro)q(duced)f(to)f(the)h(Lisp)h +(comm)o(unit)o(y)e(the)h(concept)g(of)f Fm(blo)n(ck)h(c)n(ompilation)p +Fx(,)f(in)i(whic)o(h)f(m)o(ultiple)0 327 y(functions)d(are)g(compiled)h(as)e +(a)g(single)i(blo)q(c)o(k;)g(this)f(resulted)h(in)f(faster)f(function)h +(calling)h(than)f(w)o(ould)g(otherwise)0 384 y(ha)o(v)o(e)j(b)q(een)h(p)q +(ossible)h(in)f(In)o(terlisp.)71 440 y(In)o(terlisp)j(ran)e(on)g(PDP-10's,)f +(V)l(axen)i(\(plural)h(of)e(V)-5 b(AX)17 b([Ra)o(ymond,)h(1991]\),)e(and)h(a) +g(v)m(ariet)o(y)h(of)f(sp)q(ecial-)0 497 y(purp)q(ose)23 b(Lisp)h(mac)o +(hines)f(dev)o(elop)q(ed)h(b)o(y)f(Xero)o(x)f(and)g(BBN.)h(The)g(most)f +(commonly)g(a)o(v)m(ailable)i(In)o(terlisp)0 553 y(mac)o(hines)19 +b(w)o(ere)f(the)g(Dolphin,)i(the)e(Dorado,)g(and)g(the)h(Dandelion)g +(\(collectiv)o(ely)h(kno)o(wn)e(as)g(D-mac)o(hines\).)0 610 +y(The)11 b(Dorado)e(w)o(as)h(the)h(fastest)e(of)h(the)h(three)f(and)h(the)g +(Dandelion)h(the)e(most)g(commonly)h(used.)19 b(It)10 b(is)h(in)o(teresting)0 +666 y(that)20 b(di\013eren)o(t)h(In)o(terlisp)h(implemen)o(tations)g(used)f +(di\013eren)o(t)g(tec)o(hniques)g(for)f(handling)j(sp)q(ecial)f(v)m +(ariables:)0 723 y(In)o(terlisp-10)c(\(for)e(the)h(PDP-10\))e(used)j(shallo)o +(w)f(binding,)h(while)h(In)o(terlisp-D)f(\(for)e(D-mac)o(hines\))h(used)g +(deep)0 779 y(binding.)27 b(These)17 b(t)o(w)o(o)f(implemen)o(tation)i(tec)o +(hniques)g(exhibit)h(di\013eren)o(t)e(p)q(erformance)g(pro\014les|a)h +(program)0 835 y(with)e(a)e(certain)i(run)g(time)f(under)h(one)f(regime)h +(could)g(tak)o(e)f(10)f(times)i(longer)f(under)h(the)f(other.)71 +892 y(This)f(situation)h(of)f(unexp)q(ected)h(p)q(erformance)g(is)f(prev)m +(alen)o(t)h(with)g(Lisp.)21 b(One)14 b(can)h(argue)f(that)f(program-)0 +948 y(mers)k(pro)q(duce)i(e\016cien)o(t)f(co)q(de)g(in)g(a)f(language)h(only) +g(when)g(they)f(understand)h(the)g(implemen)o(tation.)28 b(With)0 +1005 y(C,)15 b(the)h(implemen)o(tation)i(is)e(straigh)o(tforw)o(ard)e(b)q +(ecause)j(C)e(op)q(erations)h(are)g(in)h(close)f(corresp)q(ondence)i(to)d +(the)0 1061 y(mac)o(hine)i(op)q(erations)g(on)f(a)g(V)l(on)h(Neumann)f(arc)o +(hitecture)h(computer.)23 b(With)17 b(Lisp,)g(the)g(implemen)o(tation)g(is)0 +1118 y(not)g(straigh)o(tforw)o(ard,)f(but)h(dep)q(ends)i(on)f(a)f(complex)i +(set)e(of)g(implemen)o(tation)i(tec)o(hniques)g(and)e(c)o(hoices.)28 +b(A)0 1174 y(programmer)14 b(w)o(ould)j(need)f(to)f(b)q(e)h(familiar)h(with)f +(not)f(only)i(the)e(tec)o(hniques)i(selected)g(but)f(the)g(p)q(erformance)0 +1231 y(rami\014cations)f(of)g(using)h(those)f(tec)o(hniques.)21 +b(It)15 b(is)h(little)g(w)o(onder)f(that)f(go)q(o)q(d)h(Lisp)h(programmers)e +(are)h(harder)0 1287 y(to)g(\014nd)g(than)h(go)q(o)q(d)f(C)g(programmers.)71 +1344 y(Lik)o(e)j(MacLisp,)h(In)o(terlisp)g(extended)g(the)f(function)g +(calling)i(mec)o(hanisms)e(in)h(Lisp)g(1.5)d(with)i(resp)q(ect)h(to)0 +1400 y(ho)o(w)e(argumen)o(ts)f(can)i(b)q(e)g(passed)f(to)g(a)g(function.)27 +b(In)o(terlisp)19 b(function)f(de\014nitions)h(sp)q(eci\014ed)h(argumen)o(ts) +c(as)0 1456 y(the)f(cross)g(pro)q(duct)h(of)e(t)o(w)o(o)g(attributes:)20 +b Fw(LAMBDA)14 b Fx(v)o(ersus)h Fw(NLAMBDA)p Fx(,)f(and)h(spread)h(v)o(ersus) +f(nospread.)71 1513 y Fw(LAMBDA)i Fx(functions)i(ev)m(aluate)h(eac)o(h)e(of)g +(their)h(argumen)o(ts;)g Fw(NLAMBDA)e Fx(functions)i(ev)m(aluate)h(none)e(of) +g(their)0 1569 y(argumen)o(ts)e(\(that)g(is,)h(the)g(unev)m(aluated)h +(argumen)o(t)f Fm(subforms)f Fx(of)h(the)g(call)h(are)e(passed)h(as)g(the)g +(argumen)o(ts\).)0 1626 y(Spread)12 b(functions)g(require)g(a)e(\014xed)i(n)o +(um)o(b)q(er)g(of)f(argumen)o(ts;)g(nospread)g(functions)h(accept)g(a)e(v)m +(ariable)j(n)o(um)o(b)q(er.)0 1682 y(These)h(t)o(w)o(o)f(attributes)g(w)o +(ere)h(not)f(quite)i(orthogonal,)e(b)q(ecause)i(the)f(parameter)f(of)g(a)h +(nospread)g Fw(NLAMBDA)f Fx(w)o(as)0 1739 y(b)q(ound)18 b(to)e(a)g(list)h(of) +g(the)f(unev)m(aluated)j(argumen)o(t)d(forms,)f(whereas)i(the)g(parameter)f +(of)g(a)g(nospread)h Fw(LAMBDA)0 1795 y Fx(w)o(as)g(b)q(ound)i(to)e(the)h(n)o +(um)o(b)q(er)g(of)f(argumen)o(ts)g(passed)h(and)g(the)g Fw(ARG)g +Fx(function)g(w)o(as)f(used)i(to)e(retriev)o(e)h(actual)0 1852 +y(argumen)o(t)c(v)m(alues.)22 b(There)15 b(w)o(as)f(th)o(us)h(a)g(close)h +(corresp)q(ondence)h(b)q(et)o(w)o(een)e(the)g(mec)o(hanisms)h(of)f(In)o +(terlisp)i(and)0 1908 y(MacLisp:)300 2014 y(In)o(terlisp)p +300 2030 165 2 v 437 w(MacLisp)p 900 2030 169 2 v 300 2088 +a Fw(LAMBDA)38 b Fx(spread)289 b Fw(EXPR)300 2144 y(LAMBDA)38 +b Fx(nospread)241 b Fw(LEXPR)300 2201 y(NLAMBDA)14 b Fx(spread)289 +b(no)15 b(equiv)m(alen)o(t)300 2257 y Fw(NLAMBDA)f Fx(nospread)241 +b Fw(FEXPR)71 2363 y Fx(There)23 b(w)o(as)f(another)h(imp)q(ortan)o(t)f +(di\013erence)i(here)g(b)q(et)o(w)o(een)f(MacLisp)h(and)f(In)o(terlisp,)j(ho) +o(w)o(ev)o(er.)42 b(In)0 2420 y(MacLisp,)14 b(\\\014xed)g(n)o(um)o(b)q(er)g +(of)g(argumen)o(ts")e(had)i(a)g(quite)g(rigid)h(meaning;)f(a)g(function)g +(accepting)h(three)e(argu-)0 2476 y(men)o(ts)f(m)o(ust)f(b)q(e)i(called)g +(with)g(exactly)f(three)g(argumen)o(ts,)f(neither)i(more)f(nor)g(less.)19 +b(In)13 b(In)o(terlisp,)g(an)o(y)f(function)0 2533 y(could)k(legitimately)g +(b)q(e)f(called)h(with)f(an)o(y)f(n)o(um)o(b)q(er)h(of)f(argumen)o(ts;)f +(excess)i(argumen)o(t)f(forms)g(w)o(ere)g(ev)m(aluated)0 2589 +y(and)k(their)h(v)m(alues)g(discarded,)h(and)e(missing)h(argumen)o(t)e(v)m +(alues)j(w)o(ere)d(defaulted)j(to)d Fw(NIL)p Fx(.)g(This)i(w)o(as)e(one)h(of) +0 2646 y(the)f(principal)j(irreconcilable)g(di\013erences)e(separating)f(the) +h(t)o(w)o(o)e(sides)i(at)e(their)i(1974)e(summit.)26 b(Thereafter)0 +2702 y(MacLisp)17 b(partisans)f(derided)i(In)o(terlisp)f(as)f(undiscipli)q +(ned)j(and)e(error-prone,)f(while)h(In)o(terlisp)h(fans)e(though)o(t)p +eop +%%Page: 10 10 +10 9 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(10)0 45 y(MacLisp)19 b(a)o(wkw)o(ard)d(and)j(in\015exible,)i(for)c +(they)h(had)h(the)f(con)o(v)o(enience)h(of)f(optional)g(argumen)o(ts,)g(whic) +o(h)h(did)0 102 y(not)d(come)h(to)e(MacLisp)j(un)o(til)f Fw(&optional)f +Fx(and)g(other)g(complex)i(lam)o(b)q(da-list)g(syn)o(tax)d(w)o(as)h +(retro\014tted,)g(late)0 158 y(in)g(the)f(game,)g(from)f(Lisp-Mac)o(hine)j +(Lisp.)71 214 y(One)d(of)f(the)h(most)f(inno)o(v)m(ativ)o(e)i(of)e(the)h +(language)f(extensions)i(in)o(tro)q(duced)g(b)o(y)e(In)o(terlisp)i(w)o(as)e +(the)h Fm(sp)n(aghetti)0 271 y(stack)k Fx([Bobro)o(w,)g(1973].)28 +b(The)18 b(problem)h(of)f(reten)o(tion)h(\(b)o(y)f(closures\))g(of)g(the)h +(dynamic)g(function-de\014nition)0 327 y(en)o(vironmen)o(t)c(in)g(the)f +(presence)i(of)e(sp)q(ecial)i(v)m(ariables)f(w)o(as)f(nev)o(er)g(completely)i +(solv)o(ed)f(un)o(til)g(spaghetti)g(stac)o(ks)0 384 y(w)o(ere)g(in)o(v)o(en)o +(ted.)71 440 y(The)21 b(idea)i(b)q(ehind)g(spaghetti)f(stac)o(ks)e(is)i(to)f +(generalize)i(the)f(structure)f(of)g(stac)o(ks)g(to)f(b)q(e)j(more)e(lik)o(e) +h(a)0 497 y(tree,)c(with)g(v)m(arious)g(branc)o(hes)g(of)g(the)f(tree)h(sub)s +(ject)g(to)f(reten)o(tion)h(whenev)o(er)g(a)f(p)q(oin)o(ter)h(to)f(that)h +(branc)o(h)f(is)0 553 y(retained.)j(That)13 b(is,)h(parts)f(of)g(the)g(stac)o +(k)g(are)g(sub)s(ject)g(to)g(the)g(same)h(garbage)e(collection)j(p)q(olicies) +h(as)d(are)g(other)0 610 y(Lisp)i(ob)s(jects.)j(Unlik)o(e)d(closures,)f(the)g +(retained)g(en)o(vironmen)o(t)f(captures)h(b)q(oth)f(the)h(con)o(trol)f(en)o +(vironmen)o(t)h(and)0 666 y(the)h(binding)i(en)o(vironmen)o(t.)71 +723 y(One)c(of)f(the)h(minor,)g(but)g(in)o(teresting,)g(syn)o(tactic)g +(extensions)g(that)f(In)o(terlisp)j(made)d(w)o(as)g(the)h(in)o(tro)q(duction) +0 779 y(of)j(the)g(sup)q(erparen)o(thesis,)h(or)f(sup)q(erbrac)o(k)o(et.)23 +b(If)17 b(a)f(righ)o(t)g(square)g(brac)o(k)o(et)f Fw(])h Fx(is)h(encoun)o +(tered)g(during)g(a)f(read)0 835 y(op)q(eration,)j(it)g(balances)h(all)f +(outstanding)g(op)q(en)h(left)f(paren)o(theses,)g(or)f(bac)o(k)h(to)f(the)g +(last)h(outstanding)g(left)0 892 y(square)c(brac)o(k)o(et)g +Fw([)p Fx(.)k(Here)d(is)f(a)g(simple)i(example)f(of)f(this)g(syn)o(tax:)0 +986 y Fw(DEFINEQ\(\(FACTORIAL)48 1042 y(\(LAMBDA)23 b(\(N\))72 +1099 y(\(COND)g([\(ZEROP)g(N\))g(1])215 1155 y(\(T)g(\(TIMES)g(N)h +(\(FACTORIAL)f(\(SUB1)g(N])71 1249 y Fx(MacLisp)c(and)g(In)o(terlisp)i(came)d +(in)o(to)h(existence)h(ab)q(out)f(the)g(same)g(time)g(and)g(lasted)g(ab)q +(out)g(as)f(long)h(as)0 1305 y(eac)o(h)f(other.)26 b(They)17 +b(di\013ered)i(in)f(their)g(user)g(groups,)f(though)g(an)o(y)g(generic)i +(description)g(of)e(the)g(t)o(w)o(o)f(groups)0 1362 y(w)o(ould)h(not)g +(distinguish)i(them:)k(b)q(oth)17 b(groups)g(w)o(ere)f(researc)o(hers)h(at)f +(AI)i(labs)f(funded)h(primarily)g(b)o(y)f(ARP)l(A)0 1418 y(\(later)f(D)o(ARP) +l(A\))h(and)f(these)h(researc)o(hers)f(w)o(ere)g(educated)i(b)o(y)e(MIT,)g +(CMU,)g(and)h(Stanford.)23 b(The)17 b(principal)0 1475 y(implemen)o(tations)g +(ran)e(on)h(the)g(same)f(mac)o(hines;)h(one)g(had)g(cac)o(het)f(as)h(the)f +(Lisp)i(with)f(the)g(friendly)h(en)o(viron-)0 1531 y(men)o(t)f(while)i(the)e +(other)g(w)o(as)g(the)g(lean,)h(mean,)f(high-p)q(o)o(w)o(ered)i(Lisp.)24 +b(The)17 b(primary)f(di\013erences)h(came)g(from)0 1588 y(di\013eren)o(t)e +(philosophical)j(approac)o(hes)d(to)g(the)g(problem)h(of)f(programming.)k +(There)c(w)o(ere)g(also)g(di\013eren)o(t)h(pres-)0 1644 y(sures)f(from)f +(their)h(user)g(groups;)g(MacLisp)g(users,)g(particularly)h(the)f(Mathlab)g +(group,)f(w)o(ere)h(willing)i(to)d(use)h(a)0 1701 y(less)i(in)o(tegrated)f +(programming)g(en)o(vironmen)o(t)g(in)h(exc)o(hange)g(for)f(a)g(go)q(o)q(d)g +(optimizing)i(compiler)f(and)g(ha)o(ving)0 1757 y(a)d(large)g(fraction)g(of)g +(the)g(PDP-10)f(address)h(space)h(left)f(free)h(for)e(their)i(o)o(wn)e(use.) +20 b(In)o(terlisp)c(users)e(preferred)h(to)0 1813 y(concen)o(trate)g(on)g +(the)g(task)g(of)f(co)q(ding)j(b)o(y)e(using)h(a)f(full,)h(in)o(tegrated)f +(dev)o(elopmen)o(t)h(en)o(vironmen)o(t.)0 1935 y Fo(2.4)56 +b(The)18 b(Early)g(1970's)0 2021 y Fx(Though)12 b(MacLisp)g(and)g(In)o +(terlisp)i(dominated)e(the)g(1970's,)e(there)i(w)o(ere)g(sev)o(eral)g(other)f +(ma)s(jor)f(Lisp)j(dialects)g(in)0 2077 y(use)h(during)h(this)f(p)q(erio)q +(d.)21 b(Most)13 b(w)o(ere)g(more)h(similar)g(to)g(MacLisp)g(than)g(to)f(In)o +(terlisp.)21 b(The)14 b(t)o(w)o(o)e(most)h(widely)0 2134 y(used)h(dialects)h +(w)o(ere)f(Standard)f(Lisp)i([Marti,)e(1979])f(and)i(P)o(ortable)f(Standard)g +(Lisp)i([Utah,)e(1982].)18 b(Standard)0 2190 y(Lisp)h(w)o(as)e(de\014ned)i(b) +o(y)f(An)o(thon)o(y)g(Hearn)f(and)h(Martin)g(Griss,)g(along)g(with)g(their)g +(studen)o(ts)g(and)g(colleagues.)0 2247 y(The)h(motiv)m(ation)h(w)o(as)e(to)g +(de\014ne)i(a)f(subset)g(of)g(Lisp)h(1.5)e(and)h(other)g(Lisp)h(dialects)g +(that)f(could)h(serv)o(e)f(as)f(a)0 2303 y(medium)e(for)f(p)q(orting)g(Lisp)i +(programs,)c(most)i(particularly)h(the)f(sym)o(b)q(olic)i(algebra)e(system)g +(REDUCE.)71 2360 y(Later)f(Hearn)g(and)g(his)h(colleagues)g(disco)o(v)o(ered) +g(that)f(for)f(go)q(o)q(d)h(p)q(erformance)h(they)f(needed)h(more)f(con)o +(trol)0 2416 y(o)o(v)o(er)f(the)h(en)o(vironmen)o(t)g(and)h(the)f(compiler,)h +(so)e(P)o(ortable)h(Standard)g(Lisp)h(\(PSL\))f(w)o(as)f(b)q(orn.)20 +b(Standard)14 b(Lisp)0 2473 y(attempted)k(to)h(piggybac)o(k)g(on)g(existing)g +(Lisps,)i(while)f(PSL)g(w)o(as)e(a)g(complete,)i(new)g(Lisp)g(implemen)o +(tation)0 2529 y(with)d(a)f(retargetable)f(compiler)j([Griss,)e(1981],)e(an)j +(imp)q(ortan)o(t)e(pioneering)j(e\013ort)d(in)j(the)e(ev)o(olution)h(of)f +(Lisp)0 2586 y(compilation)h(tec)o(hnology)l(.)22 b(By)16 b(the)g(end)g(of)f +(the)h(1970's,)e(PSL)i(ran|and)g(ran)g(w)o(ell|on)h(more)e(than)h(a)f(dozen)0 +2642 y(di\013eren)o(t)g(t)o(yp)q(es)h(of)e(computers.)p eop +%%Page: 11 11 +11 10 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(11)71 45 y(PSL)17 b(w)o(as)e(implemen)o(ted)j(using)g(t)o(w)o(o)d +(tec)o(hniques.)25 b(First,)16 b(it)h(used)g(a)f(system)g(implemen)o(tation)i +(language)0 102 y(called)h(SYSLISP)l(,)g(whic)o(h)g(w)o(as)e(used)h(to)f(co)q +(de)i(op)q(erations)e(on)h(ra)o(w,)f(un)o(t)o(yp)q(ed)h(represen)o(tations.) +28 b(Second,)19 b(it)0 158 y(used)e(a)e(parameterized)i(set)f(of)f(assem)o +(bly-lev)o(el)j(translation)e(macros)f(called)j(c-macros.)k(The)16 +b(P)o(ortable)g(Lisp)0 214 y(Compiler)h(\(PLC\))f(compiled)h(Lisp)h(co)q(de)e +(in)o(to)g(an)g(abstract)f(assem)o(bly)i(language.)22 b(This)17 +b(language)f(w)o(as)g(then)0 271 y(con)o(v)o(erted)d(to)h(a)f(mac)o(hine-dep) +q(enden)o(t)j(LAP)e(\(Lisp)h(Assem)o(bly)f(Program\))e(format)h(b)o(y)g +(pattern-matc)o(hing)h(the)0 327 y(c-macro)20 b(descriptions)j(with)e(the)g +(abstract)e(instructions)j(in)f(con)o(text.)36 b(F)l(or)21 +b(example,)h(di\013eren)o(t)f(mac)o(hine)0 384 y(instructions)15 +b(migh)o(t)f(b)q(e)h(selected)g(dep)q(ending)h(on)e(the)g(sources)h(of)e(the) +h(op)q(erands)h(and)f(the)g(destination)h(of)f(the)0 440 y(result)i(of)e(the) +i(op)q(eration.)71 497 y(In)f(the)g(latter)f(half)h(of)f(the)h(1970's)e(and)i +(on)g(in)o(to)f(the)h(mid-1980's,)f(the)h(PSL)g(en)o(vironmen)o(t)g(w)o(as)f +(impro)o(v)o(ed)0 553 y(b)o(y)k(adapting)g(editors)g(and)g(other)g(to)q(ols.) +28 b(In)18 b(particular,)h(a)f(go)q(o)q(d)f(m)o(ultiwindo)o(w)i(Emacs-lik)o +(e)g(editor)f(called)0 610 y(Emo)q(de)h(w)o(as)e(dev)o(elop)q(ed)j(that)e +(allo)o(w)o(ed)g(fairly)h(in)o(telligen)o(t)i(editing)e(and)g(the)f(passing)h +(of)f(information)g(bac)o(k)0 666 y(and)13 b(forth)g(b)q(et)o(w)o(een)g(the)g +(Lisp)i(and)e(the)g(editor.)19 b(Later,)13 b(a)g(more)g(extensiv)o(e)h(v)o +(ersion)f(of)g(Emo)q(de)g(called)i(Nmo)q(de)0 723 y(w)o(as)c(dev)o(elop)q(ed) +j(b)o(y)e(Martin)g(Griss)g(and)g(his)h(colleagues)g(at)f(Hewlett-P)o(ac)o(k)m +(ard)g(in)h(P)o(alo)e(Alto,)i(California.)19 b(This)0 779 y(v)o(ersion)c(of)g +(PSL)h(and)f(Nmo)q(de)h(w)o(as)e(commercialized)k(b)o(y)d(Hewlett-P)o(ac)o(k) +m(ard)g(in)h(the)f(mid-1980's.)71 835 y(A)o(t)g(Stanford)g(in)h(the)g +(1960's,)e(an)h(early)h(v)o(ersion)g(of)f(MacLisp)h(w)o(as)f(adapted)h(for)f +(their)h(PDP-6;)f(this)h(Lisp)0 892 y(w)o(as)i(called)i(Lisp)f(1.6)f([Quam,)h +(1972].)28 b(The)19 b(early)f(adaptation)h(w)o(as)e(rewritten)i(b)o(y)f(John) +h(Allen)h(and)f(Lynn)0 948 y(Quam;)g(later)f(compiler)h(impro)o(v)o(emen)o +(ts)f(w)o(ere)g(made)g(b)o(y)g(Whit)g(Di\016e.)28 b(Lisp)20 +b(1.6)d(disapp)q(eared)i(during)g(the)0 1005 y(mid-1970's,)14 +b(one)h(of)g(the)h(last)f(remnan)o(ts)f(of)h(the)g(Lisp)i(1.5)d(era.)71 +1061 y(UCI)h(Lisp)h([Bobro)o(w,)e(1972])g(w)o(as)g(an)h(extended)h(v)o +(ersion)g(of)e(Lisp)j(1.6)d(in)i(whic)o(h)g(an)f(In)o(terlisp)h(st)o(yle)g +(editor)0 1118 y(and)g(other)f(programming)h(en)o(vironmen)o(t)g(impro)o(v)o +(emen)o(ts)f(w)o(ere)h(made.)21 b(UCI)16 b(Lisp)h(w)o(as)e(used)i(b)o(y)e +(some)h(folks)0 1174 y(at)f(Stanford)f(during)i(the)g(early)f(to)g +(mid-1970's,)f(as)h(w)o(ell)h(as)f(at)f(other)h(institutions.)71 +1231 y(In)g(1976)e(the)i(MIT)f(v)o(ersion)h(of)f(MacLisp)i(w)o(as)d(p)q +(orted)i(to)f(the)h(W)-5 b(AITS)15 b(op)q(erating)f(system)h(b)o(y)f(Gabriel) +i(at)0 1287 y(the)f(Stanford)g(AI)h(Lab)q(oratory)e(\(SAIL\),)h(whic)o(h)h(w) +o(as)f(directed)h(at)f(that)f(time)i(b)o(y)f(John)g(McCarth)o(y)l(.)0 +1409 y Fo(2.5)56 b(The)18 b(Demise)e(of)j(the)f(PDP-10)0 1495 +y Fx(By)c(the)g(middle)h(of)e(the)h(1970's)e(it)i(b)q(ecame)g(apparen)o(t)g +(that)f(the)g(18-bit)h(address)g(space)g(of)f(the)h(PDP-10)f(w)o(ould)0 +1551 y(not)j(pro)o(vide)h(enough)g(w)o(orking)f(space)h(for)f(AI)g(programs.) +23 b(The)17 b(PDP-10)e(line)j(of)e(computers)h(\(KL-10's)f(and)0 +1608 y(DEC-20's\))d(w)o(as)i(altered)g(to)f(p)q(ermit)i(an)f(extended)h +(addressing)g(sc)o(heme,)f(in)h(whic)o(h)g(m)o(ultiple)h(18-bit)e(address)0 +1664 y(spaces)g(could)i(b)q(e)e(addressed)h(b)o(y)f(indexing)i(relativ)o(e)f +(to)f(30-bit)g(base)g(registers.)71 1720 y(Ho)o(w)o(ev)o(er,)22 +b(this)h(addition)h(w)o(as)d(not)h(a)g(smo)q(oth)g(expansion)h(to)f(the)g +(arc)o(hitecture)h(as)f(far)f(as)h(the)h(Lisp)0 1777 y(implemen)o(tor)17 +b(w)o(as)e(concerned;)i(the)f(c)o(hange)g(from)g(t)o(w)o(o)e(p)q(oin)o(ters)j +(p)q(er)f(w)o(ord)g(to)f(only)h(one)h(p)q(oin)o(ter)f(p)q(er)h(w)o(ord)0 +1833 y(required)11 b(a)g(complete)g(redesign)g(of)f(nearly)h(all)g(in)o +(ternal)g(data)f(structures.)18 b(Only)12 b(t)o(w)o(o)d(Lisps)i(w)o(ere)f +(implemen)o(ted)0 1890 y(for)15 b(extended)h(addressing:)k(ELISP)c(\(b)o(y)f +(Charles)h(Hedric)o(k)g(at)e(Rutgers\))h(and)h(PSL.)71 1946 +y(One)d(resp)q(onse)h(to)e(the)i(address)f(space)g(problem)h(w)o(as)e(to)g +(construct)h(sp)q(ecial-purp)q(ose)j(Lisp)e(mac)o(hines)g(\(see)0 +2003 y(section)19 b(2.6\).)30 b(The)19 b(other)f(resp)q(onse)i(w)o(as)e(to)g +(use)h(commercial)g(computers)g(\()p Fm(sto)n(ck)g(har)n(dwar)n(e)p +Fx(\))g(with)g(larger)0 2059 y(address)c(spaces;)g(the)h(\014rst)e(of)h +(these)h(w)o(as)e(the)h(V)-5 b(AX)16 b([DEC,)d(1981].)71 2116 +y(V)l(axen)g(presen)o(ted)h(b)q(oth)f(opp)q(ortunities)h(and)g(problems)f +(for)g(Lisp)h(implemen)o(tors.)20 b(The)14 b(V)-5 b(AX)13 b(instruction)0 +2172 y(set)20 b(pro)o(vided)h(some)f(go)q(o)q(d)g(opp)q(ortunities)h(for)f +(implemen)o(ting)i(the)e(lo)o(w)g(lev)o(el)i(Lisp)f(primitiv)o(es)h +(e\016cien)o(tly)l(,)0 2229 y(though)15 b(it)h(required)h(clev)o(er|p)q +(erhaps)g(to)q(o)e(clev)o(er|design)j(of)d(the)h(data)f(structures.)20 +b(Ho)o(w)o(ev)o(er,)15 b(Lisp)h(func-)0 2285 y(tion)f(calls)h(could)g(not)e +(b)q(e)i(accurately)f(mo)q(deled)h(with)f(the)g(V)-5 b(AX)15 +b(function-call)i(instructions.)k(Moreo)o(v)o(er,)13 b(the)0 +2341 y(V)-5 b(AX,)15 b(despite)h(its)g(theoretically)g(large)f(address)h +(space,)f(w)o(as)f(apparen)o(tly)i(designed)g(for)f(use)g(b)o(y)g(man)o(y)g +(small)0 2398 y(programs,)20 b(not)f(sev)o(eral)h(large)g(ones.)34 +b(P)o(age)19 b(tables)i(o)q(ccupied)g(to)q(o)f(large)g(a)f(fraction)h(of)f +(memory;)j(paging)0 2454 y(o)o(v)o(erhead)15 b(for)f(large)h(Lisp)h(programs) +e(w)o(as)g(a)h(problem)h(nev)o(er)f(fully)h(solv)o(ed)f(on)g(the)h(V)-5 +b(AX.)14 b(Finally)l(,)j(there)e(w)o(as)0 2511 y(the)e(problem)h(of)f(prior)h +(in)o(v)o(estmen)o(t;)f(more)g(than)g(one)g(ma)s(jor)f(Lisp)i(implemen)o +(tation)h(at)e(the)g(time)h(had)f(a)g(large)0 2567 y(assem)o(bly-language)j +(base)f(that)g(w)o(as)f(di\016cult)j(to)d(p)q(ort.)71 2624 +y(The)i(primary)g(V)-5 b(AX)16 b(Lisp)h(dialects)h(dev)o(elop)q(ed)f(in)g +(the)f(late)h(1970's)d(w)o(ere)i(V)-5 b(AX)16 b(In)o(terlisp,)i(PSL)e(\(p)q +(orted)0 2680 y(to)f(the)g(V)-5 b(AX\),)15 b(F)l(ranz)g(Lisp,)h(and)f(NIL.)p +eop +%%Page: 12 12 +12 11 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(12)71 45 y(F)l(ranz)15 b(Lisp)i([F)l(o)q(deraro,)e(1982])f(w)o(as)h +(written)h(to)f(enable)i(researc)o(h)f(on)g(sym)o(b)q(olic)h(algebra)f(to)f +(con)o(tin)o(ue)i(at)0 102 y(the)c(Univ)o(ersit)o(y)h(of)f(California)h(at)e +(Berk)o(eley)l(,)i(under)g(the)f(sup)q(ervision)i(of)e(Ric)o(hard)h(J.)f(F)l +(ateman,)g(who)g(w)o(as)f(one)0 158 y(of)i(the)g(principal)j(implemen)o(tors) +d(of)g(Macsyma)f(at)h(MIT.)g(F)l(ateman)f(and)h(his)h(studen)o(ts)f(started)g +(with)g(a)g(PDP-)0 214 y(11)f(v)o(ersion)h(of)f(Lisp)i(written)e(at)g(Harv)m +(ard,)g(and)h(extended)h(it)f(in)o(to)f(a)g(MacLisp-lik)o(e)j(Lisp)f(that)e +(ev)o(en)o(tually)h(ran)0 271 y(on)f(virtually)i(all)f(Unix-based)h +(computers,)e(thanks)g(to)g(the)g(fact)g(that)f(F)l(ranz)h(Lisp)i(is)f +(written)f(almost)g(en)o(tirely)0 327 y(in)j(C.)71 384 y(NIL)k([Burk)o(e,)g +(1983],)e(in)o(tended)j(to)e(b)q(e)h(the)f(successor)h(to)f(MacLisp,)i(w)o +(as)d(designed)j(b)o(y)e(Jon)h(L)g(White,)0 440 y(Steele,)f(and)f(others)f +(at)g(MIT,)g(under)h(the)g(in\015uence)i(of)d(Lisp-Mac)o(hine)i(Lisp,)g(also) +f(dev)o(elop)q(ed)h(at)e(MIT.)g(Its)0 497 y(name)j(w)o(as)g(a)f(to)q(o-cute)h +(acron)o(ym)g(for)f(\\New)h(Implemen)o(tation)i(of)d(Lisp")i(and)g(caused)f +(a)g(certain)h(amoun)o(t)0 553 y(of)d(confusion)h(b)q(ecause)h(of)e(the)g +(cen)o(tral)h(role)f(already)h(pla)o(y)o(ed)g(in)g(the)g(Lisp)g(language)g(b) +o(y)f(the)h(atomic)f(sym-)0 610 y(b)q(ol)j(named)f Fw(NIL)p +Fx(.)f(NIL)i(w)o(as)e(a)h(large)g(Lisp,)i(and)e(e\016ciency)h(concerns)g(w)o +(ere)f(paramoun)o(t)f(in)h(the)h(minds)f(of)0 666 y(its)i(MacLisp-orien)o +(ted)g(implemen)o(tors;)j(so)q(on)c(its)h(implemen)o(tation)h(w)o(as)d(cen)o +(tered)i(around)f(a)g(large)h(V)-5 b(AX)0 723 y(assem)o(bly-language)16 +b(base.)71 779 y(In)g(1978,)f(Gabriel)i(and)g(Steele)g(set)f(out)g(to)f +(implemen)o(t)j(NIL)f([Bro)q(oks,)e(1982a])f(on)i(the)h(S-1)f(Mark)f(I)q(IA,) +i(a)0 835 y(sup)q(ercomputer)e(b)q(eing)h(designed)g(and)e(built)i(b)o(y)f +(the)f(La)o(wrence)h(Liv)o(ermore)g(National)g(Lab)q(oratory)e([Correll,)0 +892 y(1979;)i(Hailp)q(ern,)k(1979].)j(Close)17 b(co)q(op)q(eration)g(on)g +(this)g(pro)s(ject)e(w)o(as)h(aided)i(b)o(y)e(the)h(fact)f(that)g(Steele)i +(ren)o(ted)0 948 y(a)e(ro)q(om)f(in)h(Gabriel's)h(home.)22 +b(This)16 b(Lisp)h(w)o(as)e(nev)o(er)h(completely)h(functional,)g(but)f(serv) +o(ed)g(as)g(a)f(testb)q(ed)i(for)0 1005 y(adapting)12 b(adv)m(anced)i +(compiler)f(tec)o(hniques)h(to)d(Lisp)j(implemen)o(tation.)20 +b(In)13 b(particular,)g(the)f(w)o(ork)f(generalized)0 1061 +y(the)j(n)o(umerical)i(computation)e(tec)o(hniques)h(of)f(the)g(MacLisp)h +(compiler)g(and)g(uni\014ed)h(them)e(with)g(mainstream)0 1118 +y(register)h(allo)q(cation)h(strategies)f([Bro)q(oks,)f(1982b].)71 +1174 y(In)h(F)l(rance)f(in)i(the)e(mid-1970's,)g(P)o(atric)o(k)g(Greussa)o(y) +g(dev)o(elop)q(ed)i(an)e(in)o(terpreter-based)i(Lisp)f(called)h(Vlisp)0 +1231 y([Greussa)o(y)l(,)i(1977].)28 b(A)o(t)18 b(the)h(lev)o(el)g(of)f(the)h +(base)f(dialect)i(of)e(In)o(terlisp,)j(it)d(in)o(tro)q(duced)i(a)e(couple)i +(of)e(in)o(terest-)0 1287 y(ing)i(concepts,)h(suc)o(h)f(as)f(the)h +Fm(chr)n(onolo)n(gy)p Fx(,)g(whic)o(h)g(is)g(a)g(sort)e(of)i(dynamic)g(en)o +(vironmen)o(t)g(for)f(implemen)o(ting)0 1344 y(in)o(terrupts)e(and)f(en)o +(vironmen)o(tal)i(functions)f(lik)o(e)h Fw(trace)d Fx(and)i +Fw(step)p Fx(,)f(b)o(y)h(creating)f(di\013eren)o(t)h(incarnations)g(of)0 +1400 y(the)h(ev)m(aluator.)30 b(Vlisp's)19 b(emphasis)g(w)o(as)f(on)g(ha)o +(ving)g(a)g(fast)g(in)o(terpreter.)29 b(The)19 b(concept)f(w)o(as)g(to)f(pro) +o(vide)i(a)0 1456 y(virtual)f(mac)o(hine)h(that)e(w)o(as)g(used)h(to)g +(transp)q(ort)e(the)i(ev)m(aluator.)28 b(This)19 b(virtual)f(mac)o(hine)h(w)o +(as)e(at)g(the)h(lev)o(el)0 1513 y(of)g(assem)o(bly)g(language)g(and)h(w)o +(as)e(designed)j(for)d(easy)h(p)q(orting)g(and)h(e\016cien)o(t)g(execution.) +29 b(The)19 b(in)o(terpreter)0 1569 y(got)d(a)g(signi\014can)o(t)h(part)f(of) +h(its)f(sp)q(eed)i(from)e(t)o(w)o(o)f(things:)23 b(a)16 b(fast)g(function)i +(dispatc)o(h)f(using)g(a)f(function)i(t)o(yp)q(e)0 1626 y(space)c(that)f +(distinguished)k(a)c(n)o(um)o(b)q(er)i(of)e(functions)i(of)e(di\013eren)o(t)h +(arit)o(y)l(,)g(and)g(tail)h(recursion)f(remo)o(v)m(al.)20 +b(\(Vlisp)0 1682 y(w)o(as)e(probably)i(the)f(\014rst)f(pro)q(duction)i +(qualit)o(y)g(Lisp)g(to)e(supp)q(ort)i(general)f(tail)h(recursion)f(remo)o(v) +m(al.)32 b(Other)0 1739 y(dialects)18 b(of)e(the)h(time,)h(including)h +(MacLisp,)f(did)g(tail)f(recursion)h(remo)o(v)m(al)f(in)g(certain)h +(situations)f(only)l(,)h(in)f(a)0 1795 y(manner)c(not)g(guaran)o(teed)g +(predictable.\))20 b(Vlisp)15 b(w)o(as)d(the)h(precursor)g(to)g(Le)p +1322 1795 14 2 v 17 w(Lisp,)h(one)f(of)g(the)g(imp)q(ortan)o(t)g(Lisp)0 +1852 y(dialects)19 b(in)g(F)l(rance)f(and)g(Europ)q(e)h(during)g(the)f +(1980's;)f(though)h(the)g(dialects)h(w)o(ere)f(di\013eren)o(t,)h(they)f +(shared)0 1908 y(some)d(implemen)o(tation)h(tec)o(hniques.)71 +1965 y(A)o(t)e(the)g(end)h(of)f(the)h(1970's,)e(no)h(new)h(commercial)g(mac)o +(hines)g(suitable)h(for)e(Lisp)i(w)o(ere)e(on)g(the)h(horizon;)g(it)0 +2021 y(app)q(eared)h(that)f(the)g(V)-5 b(AX)16 b(w)o(as)e(all)j(there)e(w)o +(as.)20 b(Despite)c(y)o(ears)e(of)h(v)m(alian)o(t)h(supp)q(ort)g(b)o(y)f +(Glenn)i(Burk)o(e,)e(V)-5 b(AX)0 2077 y(NIL)17 b(nev)o(er)e(ac)o(hiev)o(ed)i +(widespread)f(acceptance.)22 b(In)o(terlisp/V)-5 b(AX)17 b(w)o(as)e(a)h(p)q +(erformance)f(disaster.)22 b(\\General-)0 2134 y(purp)q(ose")14 +b(w)o(orkstations)f(\(those)h(in)o(tended)h(or)f(designed)h(to)f(run)g +(languages)g(other)g(than)g(Lisp\))h(and)f(p)q(ersonal)0 2190 +y(computers)22 b(hadn't)h(quite)g(app)q(eared)g(y)o(et.)41 +b(T)l(o)22 b(most)g(Lisp)i(implemen)o(tors)f(and)g(users,)h(the)e(commercial) +0 2247 y(hardw)o(are)14 b(situation)i(lo)q(ok)o(ed)g(quite)g(bleak.)71 +2303 y(But)d(from)f(1974)f(on)o(w)o(ard)h(there)h(had)g(b)q(een)h(researc)o +(h)f(and)g(protot)o(yping)g(pro)s(jects)f(for)g(Lisp)i(mac)o(hines,)g(and)0 +2360 y(at)h(the)g(end)h(of)e(the)i(decade)g(it)f(app)q(eared)h(that)f(Lisp)h +(mac)o(hines)g(w)o(ere)f(the)g(w)o(a)o(v)o(e)f(of)h(the)g(future.)0 +2481 y Fo(2.6)56 b(Lisp)18 b(Mac)n(hines)0 2567 y Fx(Though)h(ideas)h(for)f +(a)f(Lisp)j(mac)o(hine)f(had)f(b)q(een)h(informally)h(discussed)f(b)q(efore,) +h(P)o(eter)d(Deutsc)o(h)h(seems)h(to)0 2624 y(ha)o(v)o(e)c(published)j(the)e +(\014rst)f(concrete)g(prop)q(osal)h([Deutsc)o(h,)f(1973].)22 +b(Deutsc)o(h)16 b(outlined)i(the)f(basic)g(vision)g(of)f(a)0 +2680 y(single-user)d(minicomputer-class)g(mac)o(hine)f(that)e(w)o(ould)i(b)q +(e)g(sp)q(ecially)i(micro)q(co)q(ded)e(to)f(run)g(Lisp)h(and)g(supp)q(ort)p +eop +%%Page: 13 13 +13 12 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(13)0 45 y(a)14 b(Lisp)i(dev)o(elopmen)o(t)g(en)o(vironmen)o(t.)k +(The)14 b(t)o(w)o(o)g(k)o(ey)g(ideas)i(from)e(Deutsc)o(h's)g(pap)q(er)h(that) +f(ha)o(v)o(e)g(had)h(a)f(lasting)0 102 y(impact)g(on)g(Lisp)h(are)f(\(1\))f +(the)h(dualit)o(y)h(of)e(load)i(and)f(store)f(access)h(based)g(on)g +(functions)h(and)f(\(2\))f(the)h(compact)0 158 y(represen)o(tation)h(of)g +(linear)h(lists)g(through)f(\\)p Fw(CDR)p Fx(-co)q(ding".)71 +214 y(All)h(Lisp)h(dialects)f(up)g(to)f(that)f(time)i(had)f(one)h(function)g +Fw(CAR)f Fx(to)f(read)i(the)f(\014rst)g(comp)q(onen)o(t)g(of)g(a)g(dotted)0 +271 y(pair)g(and)g(a)f(nominally)i(unrelated)g(function)f Fw(RPLACA)f +Fx(to)g(write)h(that)f(same)g(comp)q(onen)o(t.)20 b(Deutsc)o(h)15 +b(prop)q(osed)0 327 y(that)h(functions)h(lik)o(e)h Fw(CAR)e +Fx(should)i(ha)o(v)o(e)e(b)q(oth)h(a)f(\\load")g(mo)q(de)h(and)g(a)f +(\\store")g(mo)q(de.)24 b(If)17 b Fw(\()p Fm(f)23 b Fn(a)1703 +334 y Fj(1)1747 327 y Fn(:)8 b(:)g(:)30 b(a)1856 334 y Fi(n)1879 +327 y Fw(\))16 b Fx(is)0 384 y(called)j(in)f(load)g(mo)q(de,)f(it)h(should)g +(return)f(a)g(v)m(alue;)j(if)d(called)i(in)f(store)f(mo)q(de,)h(as)e(in)j +Fw(\()p Fm(f)k Fn(a)1612 391 y Fj(1)1656 384 y Fn(:)8 b(:)g(:)29 +b(a)1764 391 y Fi(n)1812 384 y Fm(v)p Fw(\))p Fx(,)17 b(the)0 +440 y(new)f(v)m(alue)h Fm(v)f Fx(should)g(b)q(e)h(stored)e(in)i(the)f(lo)q +(cation)g(that)f(w)o(ould)i(b)q(e)f(accessed)g(b)o(y)g(the)g(load)g(v)o +(ersion.)22 b(Deutsc)o(h)0 497 y(indicated)c(that)d(there)h(should)h(b)q(e)f +(t)o(w)o(o)f(in)o(ternal)h(functions)h(asso)q(ciated)f(with)g(ev)o(ery)g +(accessor)f(function,)i(one)0 553 y(for)i(loading)h(and)f(one)h(for)e +(storing,)i(and)f(that)g(the)g(store)g(function)h(should)g(b)q(e)g(called)h +(when)f(the)f(function)0 610 y(is)h(men)o(tioned)g(in)g(a)f(particular)h(set) +f(of)f(sp)q(ecial)j(forms.)32 b(Ho)o(w)o(ev)o(er,)18 b(his)i(syn)o(tax)f(is)h +(suggestiv)o(e;)g(here)g(is)g(the)0 666 y(prop)q(osed)c(de\014nition)h(of)d +Fw(RPLACA)p Fx(:)0 760 y Fw(\(LAMBDA)23 b(\(X)g(Y\))h(\(SETFQ)f(\(CAR)g(X\))h +(Y\)\))0 854 y Fx(Deutsc)o(h)13 b(commen)o(ted)g(that)g(the)g(sp)q(ecial)i +(form)d(used)i(here)g(is)f(called)i Fw(SETFQ)e Fx(b)q(ecause)h(\\it)f(quotes) +g(the)g(function)0 910 y(and)g(ev)m(aluates)h(ev)o(erything)g(else.")20 +b(This)14 b(name)f(w)o(as)f(abbreviated)i(to)f Fw(SETF)f Fx(in)i(Lisp-Mac)o +(hine)i(Lisp.)k(Deutsc)o(h)0 967 y(attributed)15 b(the)h(idea)g(of)e(dual)i +(functions)g(to)f(Alan)h(Ka)o(y)l(.)0 1087 y Fu(2.6.1)52 b(MIT)17 +b(Lisp)h(Mac)o(hines:)23 b(1974{1978)0 1173 y Fx(Ric)o(hard)15 +b(Green)o(blatt)g(started)e(the)i(MIT)f(Lisp)i(Mac)o(hine)f(pro)s(ject)e(in)j +(1974;)d(his)i(prop)q(osal)g([Green)o(blatt,)e(1974])0 1229 +y(cites)22 b(the)f(Deutsc)o(h)g(pap)q(er.)38 b(The)21 b(pro)s(ject)g(also)g +(included)j(Thomas)c(Knigh)o(t,)j(Jac)o(k)e(Hollo)o(w)o(a)o(y)l(,)h(and)f +(Pitts)0 1285 y(Jarvis.)i(The)16 b(mac)o(hine)h(they)g(designed)g(w)o(as)e +(called)j(CONS,)e(and)h(its)f(design)h(w)o(as)e(based)i(on)f(ideas)h(from)e +(the)0 1342 y(Xero)o(x)e(P)l(AR)o(C)g(Alto)g(micropro)q(cessor,)g(the)g(DEC)g +(PDP-11/40,)e(the)i(PDP-11/40)f(extensions)h(done)h(b)o(y)f(CMU,)0 +1398 y(and)i(some)g(ideas)h(on)f(instruction)h(mo)q(di\014cation)h(suggested) +e(b)o(y)g(Sam)g(F)l(uller)i(at)d(DEC.)71 1455 y(This)24 b(mac)o(hine)i(w)o +(as)d(designed)j(to)d(ha)o(v)o(e)h(go)q(o)q(d)g(p)q(erformance)h(while)h +(supp)q(orting)e(a)g(v)o(ersion)h(of)f(Lisp)0 1511 y(up)o(w)o +(ards-compatible)16 b(with)h(MacLisp)f(but)g(augmen)o(ted)f(with)h +(\\Muddle-Conniv)o(er")h(argumen)o(t)e(declaration)0 1568 y(syn)o(tax.)25 +b(Its)17 b(other)f(goals)h(included)i(non-prohibitiv)o(e)h(cost)c(\(less)h +(than)g($70,000)e(p)q(er)j(mac)o(hine\),)f(single-user)0 1624 +y(op)q(eration,)k(a)e(common)g(target)g(language)h(along)g(with)g +(standardization)g(of)f(pro)q(cedure)i(calls,)g(a)f(factor)e(of)0 +1681 y(three)d(b)q(etter)f(storage)f(e\016ciency)k(than)d(the)h(PDP-10)e(for) +h(compiled)i(programs,)d(hardw)o(are)h(supp)q(ort)h(for)f(t)o(yp)q(e)0 +1737 y(c)o(hec)o(king)20 b(and)g(garbage)e(collection,)k(a)d(largely)h +(Lisp-co)q(ded)h(implemen)o(tation)g(\(less)f(reliance)g(on)g(assem)o(bly)0 +1794 y(language)13 b(or)g(other)g(lo)o(w-lev)o(el)h(implemen)o(tation)h +(language\),)e(and)g(an)g(impro)o(v)o(ed)g(programming)g(en)o(vironmen)o(t)0 +1850 y(exploiting)k(large,)e(bit-mapp)q(ed)h(displa)o(ys.)71 +1906 y(The)g(CONS)i(mac)o(hine)f(w)o(as)f(built;)i(then)f(a)f(subsequen)o(t)i +(impro)o(v)o(ed)f(v)o(ersion)f(named)h(the)g(CADR)g(\(an)f(in-)0 +1963 y(jok)o(e|)p Fw(CADR)i Fx(means)h(\\the)f(second)h(one")g(in)g(Lisp\))h +(w)o(as)d(designed)j(and)f(some)g(dozens)g(of)f(them)h(w)o(ere)f(built.)0 +2019 y(These)e(b)q(ecame)g(the)g(computational)f(mainsta)o(y)g(within)i(the)f +(MIT)f(AI)h(Lab)g(and)g(it)f(seemed)i(sensible)g(to)e(spin)0 +2076 y(o\013)20 b(a)g(compan)o(y)g(to)g(commercialize)j(this)e(mac)o(hine.)37 +b(Because)21 b(of)f(disagreemen)o(ts)h(among)e(the)i(principals,)0 +2132 y(ho)o(w)o(ev)o(er,)d Fm(two)i Fx(companies)f(w)o(ere)g(formed:)27 +b(LISP)19 b(Mac)o(hine,)h(Inc.)32 b(\(LMI\))18 b(and)h(Sym)o(b)q(olics.)33 +b(Initially)21 b(eac)o(h)0 2189 y(man)o(ufactured)13 b(CADR)g(clones.)20 +b(So)q(on)13 b(thereafter)f(Sym)o(b)q(olics)i(in)o(tro)q(duced)g(its)f(3600)f +(line,)j(whic)o(h)e(b)q(ecame)h(the)0 2245 y(industry)i(leader)g(in)g(Lisp)g +(mac)o(hine)g(p)q(erformance)g(for)e(the)i(next)f(\014v)o(e)g(y)o(ears.)71 +2302 y(While)j(Green)o(blatt)e(had)h(paid)h(particular)f(care)g(to)f(pro)o +(viding)h(hardw)o(are)g(mec)o(hanisms)g(to)f(supp)q(ort)h(fast)0 +2358 y(garbage)d(collection,)j(the)f(early)f(MIT)g(Lisp)i(Mac)o(hines)f(in)g +(fact)e(did)j(not)e(implemen)o(t)h(a)f(garbage)g(collector)h(for)0 +2415 y(quite)i(some)e(y)o(ears;)h(or)g(rather,)f(ev)o(en)i(when)f(the)g +(garbage)f(collector)i(app)q(eared,)g(users)f(preferred)g(to)f(disable)0 +2471 y(it.)23 b(Most)15 b(of)h(the)h(programming)e(to)q(ols)h(\(notably)g +(the)h(compiler)g(and)g(program)e(text)g(editor\))i(w)o(ere)f(designed)0 +2527 y(to)i(a)o(v)o(oid)g(consing)h(\(heap)f(allo)q(cation\))h(and)f(to)g +(explicitly)j(reclaim)e(temp)q(orary)f(data)g(structures)g(whenev)o(er)0 +2584 y(p)q(ossible;)h(giv)o(en)e(this,)h(the)f(Lisp)h(Mac)o(hine)f(address)g +(spaces)g(w)o(ere)g(large)g(enough,)g(and)g(the)g(virtual)h(memory)0 +2640 y(system)11 b(go)q(o)q(d)g(enough,)i(that)d(a)i(user)f(could)i(run)e +(for)g(sev)o(eral)h(da)o(ys)f(or)g(ev)o(en)h(a)f(few)g(w)o(eeks)g(b)q(efore)h +(ha)o(ving)g(to)f(sa)o(v)o(e)0 2697 y(out)j(the)g(running)h(\\w)o(orld")e(to) +g(disk)i(and)f(restart)f(it.)20 b(Suc)o(h)14 b(cop)o(ying)h(bac)o(k)f(and)g +(forth)f(to)g(disk)i(w)o(as)e(equiv)m(alen)o(t)p eop +%%Page: 14 14 +14 13 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(14)0 45 y(to)11 b(a)h(slo)o(w,)g(man)o(ually)h(triggered)e(cop)o +(ying)i(garbage)e(collector.)19 b(\(While)13 b(there)f(w)o(as)f(a)h(great)f +(deal)i(of)e(theoretical)0 102 y(w)o(ork)i(on)i(in)o(terlea)o(v)o(ed)g(and)f +(concurren)o(t)h(garbage)e(collection)k(during)e(the)f(1970's)f([Steele,)i +(1975;)e(Gries,)h(1977;)0 158 y(Bak)o(er,)g(1978;)f(Cohen,)i(1981],)e(con)o +(tin)o(uous)i(garbage)f(collection)i(w)o(as)e(not)g(univ)o(ersally)j +(accepted)e(un)o(til)h(Da)o(vid)0 214 y(Mo)q(on's)c(in)o(v)o(en)o(tion)i(of)f +(ephemeral)h(garbage)f(collection)i(and)e(its)g(implemen)o(tation)i(on)e +(Lisp)h(Mac)o(hines)g([Mo)q(on,)0 271 y(1984].)k(Ephemeral)e(garbage)f +(collection)i(w)o(as)d(subsequen)o(tly)j(adapted)e(for)f(use)i(on)f(sto)q(c)o +(k)g(hardw)o(are.\))71 327 y(The)f(early)g(MIT)f(Lisp-Mac)o(hine)j(Lisp)f +(dialect)g([W)l(einreb,)f(1978])e(w)o(as)h(v)o(ery)h(similar)h(to)e(MacLisp.) +20 b(It)14 b(liv)o(ed)0 384 y(up)i(to)e(its)i(stated)e(goal)h(of)g(supp)q +(orting)h(MacLisp)g(programs)e(with)i(only)f(minimal)i(p)q(orting)f +(e\013ort.)i(The)e(most)0 440 y(imp)q(ortan)o(t)f(extensions)h(b)q(ey)o(ond)g +(MacLisp)g(included:)68 526 y Fk(\017)23 b Fx(An)16 b(impro)o(v)o(ed)g +(programming)g(en)o(vironmen)o(t,)g(consisting)h(primarily)g(of)f(a)f +(residen)o(t)i(compiler,)g(debug-)114 582 y(ging)d(facilities,)h(and)f(a)f +(text)h(editor.)19 b(While)c(this)f(brough)o(t)f(Lisp-Mac)o(hine)j(Lisp)f +(closer)f(to)f(the)g(In)o(terlisp)114 639 y(ideal)19 b(of)e(a)g(completely)j +(Lisp-based)f(programming)e(en)o(vironmen)o(t,)h(it)g(w)o(as)f(still)i +(\014rmly)g(\014le-orien)o(ted.)114 695 y(The)f(text)g(editor)h(w)o(as)f(an)h +(EMA)o(CS)f(clone,)i(\014rst)e(called)i(EINE)f(\(EINE)f(Is)h(Not)f(EMA)o +(CS\))g(and)h(then)114 752 y(ZWEI)d(\(ZWEI)f(W)l(as)h(EINE)h(Initially\),)h +(the)e(recursiv)o(e)h(acron)o(yms)f(of)f(course)i(b)q(eing)g(doubly)h +(delicious)114 808 y(as)c(v)o(ersion)i(n)o(um)o(b)q(ers)f(in)h(German.)68 +881 y Fk(\017)23 b Fx(Complex)15 b(lam)o(b)q(da)h(lists,)f(includin)q(g)i +Fw(&optional)p Fx(,)d Fw(&key)p Fx(,)g Fw(&rest)p Fx(,)g(and)i +Fw(&aux)68 954 y Fk(\017)23 b Fx(Lo)q(cativ)o(es,)15 b(whic)o(h)h(pro)o +(vided)g(a)f(C-lik)o(e)h(abilit)o(y)h(to)d(p)q(oin)o(t)i(in)o(to)f(the)g +(middle)i(of)e(a)g(structure)68 1027 y Fk(\017)23 b Fw(DEFMACRO)p +Fx(,)13 b(a)i(m)o(uc)o(h)g(more)g(con)o(v)o(enien)o(t)h(macro)e(de\014nition) +j(facilit)o(y)g(\(see)e(section)h(3.3\))68 1100 y Fk(\017)23 +b Fx(Bac)o(kquote,)14 b(a)h(syn)o(tax)f(for)h(constructing)h(data)e +(structures)h(b)o(y)g(\014lling)i(in)f(a)f(template)68 1173 +y Fk(\017)23 b Fx(Stac)o(k)14 b(groups,)h(whic)o(h)h(pro)o(vided)g(a)f +(coroutine)g(facilit)o(y)68 1246 y Fk(\017)23 b Fx(Multiple)f(v)m(alues,)h +(the)d(abilit)o(y)i(to)e(pass)g(more)h(than)f(one)h(v)m(alue)h(bac)o(k)e +(from)g(a)g(function)h(in)o(v)o(o)q(cation)114 1303 y(without)d(ha)o(ving)g +(to)g(construct)f(a)h(list.)30 b(Prior)18 b(to)f(this)i(v)m(arious)f(ad)g(ho) +q(c)h(tec)o(hniques)g(had)f(b)q(een)i(used;)114 1359 y(Lisp-Mac)o(hine)c +(Lisp)g(w)o(as)e(the)h(\014rst)g(dialect)h(of)e(Lisp)i(to)e(pro)o(vide)i +(primitiv)o(es)g(for)e(it.)20 b(\(Other)15 b(languages)114 +1416 y(suc)o(h)g(as)g(POP-2)g(ha)o(v)o(e)g(also)g(pro)o(vided)h(for)f(m)o +(ultiple)i(v)m(alues.\))68 1489 y Fk(\017)23 b Fw(DEFSTRUCT)p +Fx(,)13 b(a)i(record)g(structure)g(de\014nition)i(facilit)o(y)f(\(compare)f +(the)g(In)o(terlisp)i(record)e(pac)o(k)m(age\))68 1562 y Fk(\017)23 +b Fx(Closures)13 b(o)o(v)o(er)f(sp)q(ecial)j(v)m(ariables.)20 +b(These)14 b(closures)g(w)o(ere)e(not)h(lik)o(e)h(the)f(ones)h(in)f(Sc)o +(heme;)h(the)g(v)m(ariables)114 1618 y(captured)i(b)o(y)f(the)h(en)o +(vironmen)o(t)g(m)o(ust)f(b)q(e)i(explicitly)h(listed)f(b)o(y)f(the)g +(programmer)e(and)i(in)o(v)o(o)q(cation)g(of)114 1675 y(the)f(closure)h +(required)g(the)f(binding)j(of)c Fw(SPECIAL)g Fx(v)m(ariables)j(to)e(the)g +(sa)o(v)o(ed)g(v)m(alues.)68 1748 y Fk(\017)23 b Fx(Fla)o(v)o(ors,)13 +b(an)i(ob)s(ject-orien)o(ted,)f(non-hierarc)o(hical)j(programming)d(system)h +(with)g(m)o(ultiple)i(inheritance,)114 1804 y(w)o(as)f(designed)i(b)o(y)f(Ho) +o(w)o(ard)e(Cannon)i(and)g(Da)o(vid)g(A.)f(Mo)q(on)h(and)g(in)o(tegrated)g +(in)o(to)f(parts)g(of)h(the)g(Lisp)114 1861 y(Mac)o(hine)k(programming)g(en)o +(vironmen)o(t)g(\(the)g(windo)o(w)g(system,)h(in)g(particular,)h(w)o(as)d +(written)h(using)114 1917 y(Fla)o(v)o(ors)14 b([W)l(einreb,)h(1981]\).)68 +1990 y Fk(\017)23 b Fw(SETF)p Fx(,)14 b(a)h(facilit)o(y)h(for)f(generalized)i +(v)m(ariables)71 2076 y(The)e(use)g(of)g Fw(SETF)f Fx(throughout)g(Common)h +(Lisp|a)h(later)f(and)g(the)g(most)f(p)q(opular)i(dialect)h(of)d(Lisp|can)0 +2132 y(b)q(e)h(traced)f(through)f(Sym)o(b)q(olics)j(Zetalisp)f(and)f(MacLisp) +h(to)e(the)i(in\015uence)h(of)d(MIT)h(Lisp-Mac)o(hine)j(Lisp)e(and)0 +2189 y(then)h(bac)o(k)f(through)f(Green)o(blatt's)h(prop)q(osal)g(to)g(P)o +(eter)g(Deutsc)o(h)g(and)g(thence)h(to)f(Alan)h(Ka)o(y)l(.)71 +2245 y(The)e(uniform)h(treatmen)o(t)f(of)g(access|reading)i(and)f(writing)g +(of)f(state|has)g(made)h(Common)f(Lisp)h(more)0 2302 y(uniform)h(that)f(it)i +(migh)o(t)e(otherwise)h(b)q(e.)23 b(It)16 b(is)g(no)g(longer)g(necessary)g +(to)g(remem)o(b)q(er)g(b)q(oth)g(a)f(reader)h(function)0 2358 +y(\(suc)o(h)e(as)f Fw(CAR)p Fx(\))g(and)h(also)g(a)f(separate)g(writer)h(or)f +(up)q(date)i(function)f(\(suc)o(h)g(as)f Fw(RPLACA)p Fx(\),)f(nor)i(to)f +(remem)o(b)q(er)h(the)0 2415 y(order)i(of)g(argumen)o(ts)g(\(for)g +Fw(RPLACA)p Fx(,)f(whic)o(h)i(comes)g(\014rst,)f(the)h(dotted)f(pair)h(or)f +(the)g(new)h(v)m(alue)h(for)e(its)g(car?\).)0 2471 y(If)k(the)g(general)g +(form)f(of)g(a)h(read)f(op)q(eration)h(is)g Fw(\()p Fm(f)k +Fn(:)8 b(:)g(:)e Fw(\))p Fx(,)20 b(then)g(the)g(form)f(of)g(the)h(write)f(is) +i Fw(\(setf)i(\()p Fm(f)h Fn(:)8 b(:)g(:)d Fw(\))0 2527 y Fm(newvalue)p +Fw(\))p Fx(,)14 b(and)i(that)e(is)i(all)g(the)f(programmer)f(needs)i(to)f +(kno)o(w)g(ab)q(out)g(reading)g(and)h(writing)f(data.)71 2584 +y(Later,)i(in)h(the)f(Common)g(Lisp)h(Ob)s(ject)g(System)f(\(CLOS\),)g(this)h +(idea)g(w)o(as)e(extended)j(to)d(metho)q(ds.)27 b(If)17 b(a)0 +2640 y(metho)q(d)e Fm(M)g Fx(sp)q(eci\014ed)i(to)e(act)f(as)h(a)g(reader)g +(and)g(is)h(in)o(v)o(ok)o(ed)f(as)g Fw(\()p Fm(M)23 b(obje)n(ct)p +Fw(\))p Fx(,)14 b(then)i(it)f(is)h(p)q(ossible)h(to)d(de\014ne)i(a)0 +2697 y(writer)f(metho)q(d)g(that)g(is)h(in)o(v)o(ok)o(ed)f(as)g +Fw(\(setf)23 b(\()p Fm(M)h(obje)n(ct)p Fw(\))f Fm(newvalue)p +Fw(\))p Fx(.)p eop +%%Page: 15 15 +15 14 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(15)71 45 y(That)15 b(CLOS)i(\014ts)f(this)h(idiom)g(so)f(w)o(ell)h +(is)g(no)f(surprise.)24 b(If)16 b(Alan)h(Ka)o(y)f(w)o(as)f(the)i(inspiration) +g(for)f(the)g(idea)0 102 y(around)f(1973,)e(he)i(w)o(as)e(in)j(the)e(midst)h +(of)f(his)i(early)e(in)o(v)o(olv)o(emen)o(t)h(with)g(Smalltalk,)h(an)e(early) +h(ob)s(ject-orien)o(ted)0 158 y(language.)39 b(Reading)23 b(and)e(writing)h +(are)f(b)q(oth)h(metho)q(ds)g(that)e(an)i(ob)s(ject)f(can)g(supp)q(ort,)i +(and)f(the)f(CLOS)0 214 y(adaptation)h(of)g(the)g(Lisp)h(v)o(ersion)g(of)e +(Ka)o(y's)h(vision)h(w)o(as)e(a)h(simple)i(rein)o(v)o(en)o(tion)f(of)f(the)g +(ob)s(ject-orien)o(ted)0 271 y(genesis)16 b(of)f(the)g(idea.)0 +391 y Fu(2.6.2)52 b(Xero)o(x)15 b(Lisp)j(Mac)o(hines:)23 b(1973{1980)0 +477 y Fx(The)c(Alto)h(w)o(as)e(a)h(micro)q(co)q(dable)i(mac)o(hine)e(dev)o +(elop)q(ed)i(in)f(1973)e([Thac)o(k)o(er,)h(1982])f(and)h(used)h(for)e(p)q +(ersonal)0 533 y(computing)f(exp)q(erimen)o(tation)g(at)e(Xero)o(x,)h(using)h +(In)o(terlisp)h(and)e(other)g(languages)g(suc)o(h)g(as)g(Mesa)g([Gesc)o(hk)o +(e,)0 590 y(1977].)28 b(The)19 b(Alto)g(v)o(ersion)g(of)f(the)h(In)o(terlisp) +h(en)o(vironmen)o(t)e(\014rst)h(w)o(en)o(t)f(in)o(to)g(use)h(at)f(Xero)o(x)g +(P)l(AR)o(C)h(and)g(at)0 646 y(Stanford)c(Univ)o(ersit)o(y)h(around)f(1975.) +71 703 y(The)h(Alto)g(w)o(as)g(standardly)g(equipp)q(ed)j(with)d(64K)g +(16-bit)h(w)o(ords)e(of)h(memory)l(,)g(expandable)h(up)g(to)e(256K)0 +759 y(w)o(ords,)d(whic)o(h)h(w)o(as)f(quite)h(large)g(for)f(a)g(single-user)j +(computer)d(but)h(still)h(only)f(half)g(the)g(memory)f(of)g(a)g(PDP-10.)0 +816 y(The)h(mac)o(hine)h(pro)o(v)o(ed)f(to)g(b)q(e)h(underp)q(o)o(w)o(ered)g +(for)e(the)h(large)h(In)o(terlisp)g(en)o(vironmen)o(t,)g(ev)o(en)f(with)h +(all)g(the)f(co)q(de)0 872 y(densit)o(y)j(tric)o(ks)f(discussed)i(b)o(y)e +(Deutsc)o(h)g(in)h([Deutsc)o(h,)e(1973],)g(so)g(it)i(w)o(as)e(not)h(widely)i +(accepted)f(b)o(y)f(users.)71 928 y(The)d(Alto)f(w)o(as)g(also)h(used)g(to)f +(build)j(the)e(\014rst)f(Smalltalk)i(en)o(vironmen)o(t|the)f(\\in)o(terim)h +(Dynab)q(o)q(ok"|and)0 985 y(here)j(it)f(w)o(as)f(relativ)o(ely)j +(successful.)71 1041 y(In)g(1976,)g(Xero)o(x)g(P)l(AR)o(C)g(underto)q(ok)g +(the)h(design)g(of)f(a)g(mac)o(hine)h(called)h(the)e(Dorado)g(\(or)f(Xero)o +(x)h(1132\),)0 1098 y(whic)o(h)f(w)o(as)f(an)g(ECL)h(\(Emitter)f(Coupled)h +(Logic,)g(an)g(at-the-time)f(fast)g(digital)i(logic)f(implemen)o(tation)h +(tec)o(h-)0 1154 y(nology\))d(mac)o(hine)i(designed)g(to)d(replace)j(the)f +(Alto.)k(A)c(protot)o(yp)q(e)f(a)o(v)m(ailable)i(in)f(1978)f(ran)g(all)h +(Alto)g(soft)o(w)o(are.)0 1211 y(A)i(redesign)h(w)o(as)f(completed)h(in)g +(1979)e(and)h(a)g(n)o(um)o(b)q(er)h(of)e(them)i(w)o(ere)e(built)j(for)e(use)g +(within)i(Xero)o(x)d(and)i(at)0 1267 y(certain)h(exp)q(erimen)o(tal)i(sites)e +(suc)o(h)g(as)f(Stanford)h(Univ)o(ersit)o(y)l(.)32 b(The)19 +b(Dorado)f(w)o(as)g(sp)q(eci\014cally)j(designed)g(to)0 1324 +y(in)o(terpret)e(b)o(yte)f(co)q(des)i(pro)q(duced)g(b)o(y)e(compilers)i(and)f +(this)g(is)g(ho)o(w)f(the)h(Dorado)f(ran)g(Alto)h(soft)o(w)o(are.)29 +b(The)0 1380 y(Dorado)14 b(w)o(as)g(basically)j(an)e(em)o(ulation)h(mac)o +(hine.)71 1437 y(In)o(terlisp)i(w)o(as)e(p)q(orted)h(to)g(this)g(mac)o(hine)h +(using)g(the)f(In)o(terlisp)h(virtual)g(mac)o(hine)g(mo)q(del)g([Mo)q(ore,)e +(1976].)0 1493 y(The)h(Dorado)f(running)j(In)o(terlisp)f(w)o(as)f(faster)f +(than)h(a)g(KL-10)g(running)h(single-user)h(In)o(terlisp)g(and)e(it)h(w)o +(ould)0 1549 y(ha)o(v)o(e)d(pro)o(v)o(ed)g(a)g(v)o(ery)f(nice)j(Lisp)f(mac)o +(hine)g(if)g(it)f(had)h(b)q(een)g(made)f(widely)i(a)o(v)m(ailable)g +(commercially)l(.)71 1606 y(In)o(terlisp)12 b(w)o(as)d(similarly)k(p)q(orted) +d(to)g(a)g(smaller,)i(c)o(heap)q(er)f(mac)o(hine)h(called)g(the)e(Dolphin)i +(\(1100\),)d(whic)o(h)j(w)o(as)0 1662 y(made)i(commercially)h(a)o(v)m +(ailable)g(as)e(a)h(Lisp)h(mac)o(hine)f(in)h(the)e(late)h(1970's.)k(The)c(p)q +(erformance)g(of)f(the)h(Dolphin)0 1719 y(w)o(as)g(b)q(etter)g(than)h(that)f +(of)g(the)g(Alto,)h(but)f(bad)h(enough)g(that)f(the)h(mac)o(hine)g(w)o(as)f +(nev)o(er)g(truly)h(successful)h(as)e(a)0 1775 y(Lisp)i(engine.)71 +1832 y(In)h(the)f(early)h(1980's,)e(Xero)o(x)h(built)h(another)g(mac)o(hine)g +(called)h(the)e(Dandelion)i(\(1108\),)d(whic)o(h)i(w)o(as)f(con-)0 +1888 y(siderably)i(faster)d(than)h(the)g(Dolphin)i(but)f(still)g(not)f(as)g +(fast)f(as)h(the)h(Dorado.)k(Because)c(the)g(names)f(of)g(these)0 +1945 y(three)d(mac)o(hines)g(all)h(b)q(egan)f(with)g(the)g(letter)g(\\D",)e +(they)i(b)q(ecame)h(collectiv)o(ely)h(kno)o(wn)d(as)g(the)h(\\D-mac)o +(hines.")71 2001 y(All)j(the)f(Xero)o(x)g(Lisp)h(mac)o(hines)g(used)g(a)f +(reference-coun)o(t)h(garbage)e(collector)i([Deutsc)o(h,)f(1976])e(that)i(w)o +(as)0 2058 y(incremen)o(tal:)29 b(a)19 b(few)g(steps)h(of)f(the)g(garbage)f +(collection)j(pro)q(cess)f(w)o(ould)g(execute)g(eac)o(h)f(time)h(storage)e(w) +o(as)0 2114 y(allo)q(cated.)27 b(Therefore)17 b(there)h(w)o(as)e(a)h(short,)g +(b)q(ounded)i(amoun)o(t)d(of)h(w)o(ork)g(done)g(for)g(garbage)f(collection)j +(p)q(er)0 2170 y(unit)d(time.)71 2227 y(In)g(the)f(late)h(1970's)d(BBN)j +(also)g(built)g(a)f(mac)o(hine,)h(the)g(Jeric)o(ho,)g(that)e(w)o(as)h(used)h +(as)f(an)g(In)o(terlisp)i(engine.)0 2283 y(It)e(remained)h(in)o(ternal)g(to)f +(BBN.)0 2403 y Fu(2.6.3)52 b(Comm)n(en)n(ts)15 b(on)i(Early)h(Lisp)g(Mac)o +(hine)g(History)0 2489 y Fx(F)l(reed)c(from)g(the)g(address-space)g +(constrain)o(ts)g(of)f(previous)i(arc)o(hitectures,)f(all)h(the)f(Lisp)h(mac) +o(hine)g(companies)0 2546 y(pro)q(duced)22 b(greatly)e(expanded)h(Lisp)h +(implemen)o(tations,)g(adding)f(graphics,)h(windo)o(wing)f(capabilities,)j +(and)0 2602 y(mouse)16 b(in)o(teraction)h(capabilities)i(to)d(their)h +(programming)f(en)o(vironmen)o(ts.)24 b(The)16 b(Lisp)i(language)f(itself,)g +(par-)0 2659 y(ticularly)g(on)e(the)g(MIT)g(Lisp)h(Mac)o(hines,)g(also)f +(grew)g(in)h(the)f(n)o(um)o(b)q(er)g(and)h(complexit)o(y)g(of)e(features.)20 +b(Though)p eop +%%Page: 16 16 +16 15 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(16)0 45 y(some)12 b(of)g(these)h(ideas)g(originated)g(elsewhere,)g +(their)g(adoption)g(throughout)e(the)i(Lisp)g(comm)o(unit)o(y)g(w)o(as)e +(driv)o(en)0 102 y(as)k(m)o(uc)o(h)g(b)o(y)g(the)g(success)h(and)g(cac)o(het) +f(of)g(the)g(Lisp)h(mac)o(hines)g(as)f(b)o(y)g(the)g(qualit)o(y)h(of)f(the)g +(ideas)h(themselv)o(es.)71 158 y(Nev)o(ertheless,)k(for)f(most)f(users)h(the) +g(v)m(alue)i(la)o(y)e(ultimately)h(in)g(the)g(soft)o(w)o(are)d(and)i(not)g +(in)h(its)f(enabling)0 214 y(hardw)o(are)e(tec)o(hnology)l(.)26 +b(The)18 b(Lisp)g(mac)o(hine)g(companies)g(ran)g(in)o(to)f(di\016cult)o(y)h +(in)g(the)g(late)f(1980's,)f(p)q(erhaps)0 271 y(b)q(ecause)22 +b(they)g(didn't)g(fully)g(understand)g(the)g(consequences)g(of)f(this)h +(fact.)38 b(General-purp)q(ose)23 b(hardw)o(are)0 327 y(ev)o(en)o(tually)f(b) +q(ecame)f(go)q(o)q(d)g(enough)g(to)g(supp)q(ort)g(Lisp)h(once)f(again)g(and)g +(Lisp)h(implemen)o(tations)g(on)f(suc)o(h)0 384 y(mac)o(hines)16 +b(b)q(egan)g(to)e(comp)q(ete)i(e\013ectiv)o(ely)l(.)0 506 y +Fo(2.7)56 b(IBM)18 b(Lisps:)24 b(Lisp360)18 b(and)i(Lisp370)0 +591 y Fx(Although)h(the)f(\014rst)f(Lisps)i(w)o(ere)f(implemen)o(ted)i(on)e +(IBM)g(computers,)g(IBM)h(faded)f(from)f(the)h(Lisp)h(scene)0 +648 y(during)d(the)g(late)g(1960's,)e(for)g(t)o(w)o(o)h(reasons:)24 +b(b)q(etter)17 b(co)q(op)q(eration)h(b)q(et)o(w)o(een)g(MIT)f(and)h(DEC)f +(and)g(a)g(paten)o(t)0 704 y(dispute)f(b)q(et)o(w)o(een)g(MIT)f(and)g(IBM.)71 +761 y(In)f(the)g(early)h(1960's,)d(Digital)j(Equipmen)o(t)f(Corp)q(oration)g +(discussed)h(with)g(MIT)f(the)g(needs)g(MIT)g(had)h(for)0 817 +y(computers)d(and)h(features)f(w)o(ere)g(added)h(to)f(help)h(Lisp)h(implemen) +o(tations.)20 b(As)12 b(on)h(the)f(7094,)g(eac)o(h)g(36-bit)h(w)o(ord)0 +874 y(could)i(hold)g(t)o(w)o(o)e(addresses)i(to)f(form)f(a)h(dotted)g(pair,)h +(but)f(on)h(the)f(PDP-6)g(\(and)g(its)g(successor,)h(the)f(PDP-10\))0 +930 y(eac)o(h)g(address)g(w)o(as)g(18)f(bits)i(instead)g(of)f(15.)19 +b(The)14 b(PDP-10)f(halfw)o(ord)h(instructions)h(made)g Fw(CAR)p +Fx(,)e Fw(CDR)p Fx(,)g Fw(RPLACA)p Fx(,)0 987 y(and)18 b Fw(RPLACD)e +Fx(particularly)j(fast)d(and)i(easy)f(to)f(implemen)o(t.)28 +b(The)18 b(stac)o(k)e(instructions)i(and)g(the)f(stac)o(k-based)0 +1043 y(function)d(calling)h(instructions)f(impro)o(v)o(ed)f(the)g(sp)q(eed)h +(of)f(of)g(Lisp)h(function)g(calls.)20 b(\(The)13 b(MIT)g(AI)h(Lab)q(oratory) +0 1099 y(receiv)o(ed)h(the)g(\014rst|or)f(second|PDP-6,)g(and)g(it)h(w)o(as)e +(the)i(lab's)f(mainsta)o(y)g(computing)g(engine)i(un)o(til)f(it)g(w)o(as)0 +1156 y(replaced)h(b)o(y)g(a)e(PDP-10.\))71 1212 y(Moreo)o(v)o(er,)d(in)k(the) +e(early)h(1960's,)d(IBM)j(and)g(MIT)f(disputed)i(who)e(had)g(in)o(v)o(en)o +(ted)h(core)f(memory)g(and)h(IBM)0 1269 y(insisted)j(on)e(enforcing)h(its)g +(paten)o(ts)f(against)g(MIT.)g(MIT)g(resp)q(onded)h(b)o(y)g(declining)i(to)d +(use)g(IBM)h(equipmen)o(t)0 1325 y(as)e(extensiv)o(ely)h(as)f(it)g(had)g(in)h +(the)g(past.)k(This)14 b(pro)o(vided)h(further)f(imp)q(etus)h(to)f(use)g(DEC) +g(equipmen)o(t)h(instead,)0 1382 y(particularly)h(for)f(Lisp)h(and)g(AI.)71 +1438 y(Nev)o(ertheless,)j(Lisp)h(w)o(as)e(implemen)o(ted)i(at)e(IBM)g(for)g +(the)h(IBM)g(360)e(and)i(called)h(Lisp360.)30 b(When)19 b(the)0 +1495 y(IBM)c(370)g(came)g(out,)f(Lisp370)i(implemen)o(tation)g(b)q(egan.)21 +b(Lisp370)15 b(w)o(as)g(later)g(called)i(Lisp/VM.)71 1551 y(Lisp360)12 +b(w)o(as)f(basically)i(a)e(batc)o(h)h(Lisp,)h(and)f(it)g(w)o(as)f(used)h +(fairly)h(extensiv)o(ely)g(for)e(teac)o(hing)h(in)h(univ)o(ersities.)71 +1608 y(Lisp370)j(b)q(egan)g(with)h(the)f(de\014nition)i(of)d(a)h(core)g(Lisp) +h(based)g(on)f(a)f(formal)h(seman)o(tics)g(expressed)h(in)g(the)0 +1664 y(SECD)i(mo)q(del)h([Landin,)h(1964].)30 b(This)20 b(de\014nition)h +(\014t)e(on)h(one)f(or)g(t)o(w)o(o)f(pages.)31 b(The)20 b(Lisp370)f(pro)s +(ject)g(w)o(as)0 1720 y(under)i(the)f(direction)h(of)f(F)l(red)g(Blair)h +(\(who)f(dev)o(elop)q(ed)h(the)f(SECD)g(de\014nition\))i(at)d(the)h(IBM)h +(Thomas)e(J.)0 1777 y(W)l(atson)d(Researc)o(h)i(Cen)o(ter)f(in)h(Y)l(orkto)o +(wn)e(Heigh)o(ts,)h(New)g(Y)l(ork.)26 b(Other)17 b(mem)o(b)q(ers)h(of)e(the)h +(group)g(included)0 1833 y(Ric)o(hard)c(W.)f(Rynik)o(er)h(I)q(I,)g(Cyril)g +(Alb)q(erga,)g(Mark)e(W)l(egman,)h(and)h(Martin)f(Mik)o(elsons;)h(they)f +(serv)o(ed)h(primarily)0 1890 y(themselv)o(es)19 b(and)g(a)f(few)h(researc)o +(h)f(groups,)h(suc)o(h)g(as)f(the)h(SCRA)l(TCHP)l(AD)g(sym)o(b)q(olic)h +(computation)e(group)0 1946 y(and)d(some)g(AI)h(groups)f(at)f(Y)l(orkto)o +(wn.)71 2003 y(Lisp370)f(supp)q(orted)h(b)q(oth)f(sp)q(ecial)i(binding)f(and) +g(lexical)h(binding,)g(as)d(w)o(ell)i(as)f(closures)h(o)o(v)o(er)e(b)q(oth)h +(lexical)0 2059 y(and)18 b(sp)q(ecial)h(v)m(ariables,)h(using)e(a)g(tec)o +(hnique)h(similar)g(to)e(spaghetti)g(stac)o(ks.)27 b(Jon)18 +b(L)g(White)g(sp)q(en)o(t)g(calendar)0 2116 y(y)o(ear)f(1977)f(at)g(Y)l +(orkto)o(wn)h(Heigh)o(ts)g(w)o(orking)g(on)g(Lisp370)h(and)f(then)h(returned) +g(to)e(MIT;)h(his)h(exp)q(erience)i(at)0 2172 y(IBM)15 b(had)h(some)f +(in\015uence)i(on)e(subsequen)o(t)h(MacLisp)g(dev)o(elopmen)o(t)g(and)f(on)g +(the)h(NIL)g(dialect.)71 2229 y(Lisp370)h(had)h(an)f(In)o(terlisp-lik)o(e)k +(programming)c(en)o(vironmen)o(t)g(written)h(to)f(op)q(erate)g(on)g(b)q(oth)h +(hardcop)o(y)0 2285 y(terminals)i(and)g(the)f(ubiquitous)i(IBM)f(3270)e(c)o +(haracter-displa)o(y)i(terminal.)33 b(The)20 b(In)o(terlisp-10)g(mo)q(del)h +(w)o(as)0 2341 y(ideal)g(b)q(ecause)f(it)f(w)o(as)g(dev)o(elop)q(ed)i(with)e +(slo)o(w)g(terminals)h(in)g(mind)h(and)e(the)g(half-duplex)j(nature)d(of)g +(most)0 2398 y(IBM)14 b(mainframe)f(in)o(teractions)h(had)g(a)f(similar)i +(feel.)20 b(During)14 b(the)g(summer)f(of)g(1976,)g(Gabriel)h(wrote)f(the)g +(\014rst)0 2454 y(v)o(ersion)k(of)g(this)h(en)o(vironmen)o(t)f(as)g(a)g +(duplicate)i(of)d(the)h(en)o(vironmen)o(t)h(he)f(had)h(written)f(for)f +(MacLisp)i(at)f(the)0 2511 y(Stanford)c(AI)i(Lab.)20 b(Later,)13 +b(Mark)g(W)l(egman)h(and)g(his)g(colleagues)h(at)f(Y)l(orkto)o(wn)e(extended) +j(this)g(en)o(vironmen)o(t)0 2567 y(to)g(include)i(screen-based|rather)f +(than)f(line-based|i)q(n)o(teraction)j(and)d(editing.)71 2624 +y(Impro)o(v)o(emen)o(ts)j(w)o(ere)h(made)h(to)e(the)i(underlying)h(Lisp)g +(system,)e(suc)o(h)h(as)f(go)q(o)q(d)g(p)q(erformance)g(and)h(the)0 +2680 y(separation)14 b(of)g(the)g(compilation)h(and)g(run)o(time)f(en)o +(vironmen)o(ts)h(\(whic)o(h)f(w)o(as)g(accomplished)i(through)d(the)i(use)p +eop +%%Page: 17 17 +17 16 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(17)0 45 y(of)15 b(separate)f(Lisp)j(images\).)71 +102 y(Other)d(Lisps)h(later)f(app)q(eared)h(on)f(the)h(360/370)d(line)k(of)e +(computers,)f(includin)q(g)j(sev)o(eral)f(Common)e(Lisps.)0 +158 y(The)20 b(\014rst)f(Common)g(Lisp)h(to)f(app)q(ear)h(on)f(the)h(IBM)g +(370)e(w)o(as)h(written)g(b)o(y)h(In)o(termetrics,)g(featuring)g(go)q(o)q(d)0 +214 y(compilation)e(tec)o(hnology)l(.)27 b(Ho)o(w)o(ev)o(er,)16 +b(the)h(Lisp)i(w)o(as)d(not)h(w)o(ell-constructed)h(and)g(nev)o(er)f(made)g +(m)o(uc)o(h)g(of)g(an)0 271 y(impact)i(in)i(the)e(Lisp)h(w)o(orld.)32 +b(Sev)o(eral)20 b(y)o(ears)e(later,)i(Lucid)h(p)q(orted)e(its)g(Common)g +(Lisp)h(to)f(the)g(370)f(under)0 327 y(con)o(tract)13 b(to)g(IBM.)h(IBM)g +(withdrew)g(its)g(supp)q(ort)g(of)f(Lisp370)h(in)h(the)f(late)g(1980's)e(in)i +(fa)o(v)o(or)f(of)g(Common)g(Lisp.)0 449 y Fo(2.8)56 b(Sc)n(heme:)23 +b(1975{1980)0 535 y Fx(The)14 b(dialect)i(of)d(Lisp)j(kno)o(wn)d(as)h(Sc)o +(heme)h(w)o(as)e(originally)j(an)e(attempt)f(b)o(y)h(Gerald)g(Ja)o(y)g +(Sussman)h(and)f(Steele)0 591 y(during)20 b(Autumn)f(1975)f(to)h(explicate)i +(for)d(themselv)o(es)i(some)f(asp)q(ects)g(of)g(Carl)g(Hewitt's)f(theory)h +(of)g Fm(actors)0 648 y Fx(as)h(a)f(mo)q(del)i(of)f(computation.)34 +b(Hewitt's)20 b(mo)q(del)h(w)o(as)e(ob)s(ject-orien)o(ted)h(\(and)g +(in\015uenced)j(b)o(y)d(Smalltalk\);)0 704 y(ev)o(ery)f(ob)s(ject)g(w)o(as)f +(a)h(computationally)i(activ)o(e)e(en)o(tit)o(y)g(capable)h(of)f(receiving)i +(and)f(reacting)f(to)g(messages.)0 761 y(The)14 b(ob)s(jects)g(w)o(ere)f +(called)j(actors,)d(and)h(the)g(messages)g(themselv)o(es)h(w)o(ere)e(also)h +(actors.)19 b(An)14 b(actor)f(could)i(ha)o(v)o(e)0 817 y(arbitrarily)g(man)o +(y)g Fm(ac)n(quaintanc)n(es)p Fx(;)e(that)h(is,)h(it)g(could)g(\\kno)o(w)f +(ab)q(out")h(\(in)g(Hewitt's)f(language\))h(other)f(actors)0 +874 y(and)k(send)g(them)g(messages)f(or)g(send)h(acquain)o(tances)g(as)g +(\(parts)e(of)t(\))h(messages.)26 b(Message-passing)18 b(w)o(as)f(the)0 +930 y(only)j(means)g(of)g(in)o(teraction.)34 b(F)l(unctional)21 +b(in)o(teractions)f(w)o(ere)g(mo)q(deled)h(with)f(the)g(use)h(of)e(con)o(tin) +o(uations;)0 987 y(one)d(migh)o(t)f(send)h(the)g(actor)f(named)h +(\\factorial")f(the)g(n)o(um)o(b)q(er)h(5)g(and)f(another)h(actor)e(to)h +(whic)o(h)i(to)e(send)h(the)0 1043 y(ev)o(en)o(tually)g(computed)g(v)m(alue)g +(\(presumably)g(120\).)71 1099 y(Sussman)j(and)f(Steele)i(had)f(some)g +(trouble)g(understanding)h(some)f(of)f(the)h(consequences)h(of)e(the)h(mo)q +(del)0 1156 y(from)i(Hewitt's)g(pap)q(ers)h(and)f(language)h(design,)i(so)d +(they)g(decided)j(to)d(construct)g(a)g(to)o(y)g(implemen)o(tation)0 +1212 y(of)d(an)h(actor)f(language)h(in)h(order)f(to)f(exp)q(erimen)o(t)i +(with)f(it.)31 b(Using)20 b(MacLisp)f(as)g(a)f(w)o(orking)h(en)o(vironmen)o +(t,)0 1269 y(they)j(wrote)e(a)i(tin)o(y)g(Lisp)g(in)o(terpreter)g(and)g(then) +g(add)g(the)f(necessary)h(mec)o(hanisms)g(for)f(creating)h(actors)0 +1325 y(and)16 b(sending)h(messages.)22 b(The)17 b(to)o(y)e(Lisp)i(w)o(ould)f +(pro)o(vide)h(the)f(necessary)g(primitiv)o(es)i(for)d(implemen)o(ting)j(the)0 +1382 y(in)o(ternal)e(b)q(eha)o(vior)g(of)f(primitiv)o(e)h(actors.)71 +1438 y(Because)22 b(Sussman)h(had)f(just)g(b)q(een)h(studying)g(Algol)g +([Naur,)g(1963],)f(he)g(suggested)g(starting)g(with)g(a)0 1495 +y(lexically)e(scop)q(ed)e(dialect)g(of)f(Lisp.)27 b(\(Some)17 +b(of)f(the)i(issues)g(and)f(necessary)g(mec)o(hanisms)h(had)f(already)h(b)q +(een)0 1551 y(explored)12 b(b)o(y)g(Jo)q(el)g(Moses)f([Moses,)g(1970].\))17 +b(It)11 b(app)q(eared)h(that)f(suc)o(h)h(a)f(mec)o(hanism)h(w)o(ould)f(b)q(e) +i(needed)f(an)o(yw)o(a)o(y)0 1608 y(for)17 b(k)o(eeping)h(trac)o(k)f(of)g +(acquain)o(tances)h(for)e(actors.)26 b(Lexical)19 b(scoping)f(allo)o(w)o(ed)g +(actors)f(and)g(functions)h(to)f(b)q(e)0 1664 y(created)c(b)o(y)g(almost)g +(iden)o(tical)i(mec)o(hanisms.)20 b(Ev)m(aluating)14 b(a)f(form)g(b)q +(eginning)i(with)e(the)h(w)o(ord)e Fw(lambda)h Fx(w)o(ould)0 +1720 y(capture)h(the)g(curren)o(t)g(v)m(ariable-lo)q(okup)j(en)o(vironmen)o +(t)d(and)g(create)g(a)g(closure;)g(ev)m(aluating)i(a)e(form)f(b)q(eginning)0 +1777 y(with)19 b(the)g(w)o(ord)f Fw(alpha)g Fx(w)o(ould)h(also)g(capture)g +(the)g(curren)o(t)g(en)o(vironmen)o(t)g(but)g(create)f(an)h(actor.)30 +b(Message)0 1833 y(passing)19 b(could)g(b)q(e)g(expressed)h(syn)o(tactically) +f(in)g(the)g(same)f(w)o(a)o(y)f(as)i(function)g(in)o(v)o(o)q(cation.)30 +b(The)19 b(di\013erence)0 1890 y(b)q(et)o(w)o(een)i(an)g(actor)e(and)i(a)f +(function)i(w)o(ould)f(b)q(e)g(detected)h(in)f(the)g(part)f(of)g(the)h(in)o +(terpreter)g(traditionally)0 1946 y(kno)o(wn)d(as)g Fw(apply)p +Fx(.)29 b(A)19 b(function)g(w)o(ould)g(return)g(a)f(v)m(alue,)i(but)f(an)f +(actor)g(w)o(ould)h(nev)o(er)f(return;)i(instead,)g(it)0 2003 +y(w)o(ould)d(t)o(ypically)h(in)o(v)o(ok)o(e)e(a)h Fm(c)n(ontinuation)p +Fx(,)f(another)g(actor)g(that)f(it)i(kno)o(ws)f(ab)q(out.)24 +b(Th)o(us)17 b(one)f(migh)o(t)h(de\014ne)0 2059 y(the)e(function)0 +2153 y Fw(\(define)23 b(factorial)48 2209 y(\(lambda)g(\(n\))g(\(if)h(\(=)f +(n)h(0\))430 2266 y(1)430 2322 y(\(*)f(n)h(\(factorial)e(\(-)i(n)g +(1\)\)\)\)\)\))0 2416 y Fx(or)15 b(the)g(equiv)m(alen)o(t)i(actor)0 +2510 y Fw(\(define)23 b(actorial)48 2566 y(\(alpha)g(\(n)g(c\))h(\(if)f(\(=)h +(n)g(0\))453 2623 y(\(c)g(1\))453 2679 y(\(actorial)f(\(-)h(n)f(1\))h +(\(alpha)f(\(f\))g(\(c)h(\(*)g(f)f(n\)\)\)\)\)\)\))p eop +%%Page: 18 18 +18 17 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(18)0 45 y(Note)12 b(in)i(this)f(example)h(that)e(the)h(v)m(alues)h +(of)e Fw(c)g Fx(and)h Fw(n)p Fx(,)g(passed)g(in)h(the)e(message)h(that)f(in)o +(v)o(ok)o(es)g(the)h(outer)g Fw(alpha)0 102 y Fx(expression,)i(b)q(ecome)g +(acquain)o(tances)f(of)g(the)g(con)o(tin)o(uation)h(actor)e(created)h(b)o(y)h +(the)f(inner)h Fw(alpha)e Fx(expression.)0 158 y(This)19 b(con)o(tin)o +(uation)g(m)o(ust)f(b)q(e)h(passed)g(explicitly)i(b)q(ecause)e(the)g +(recursiv)o(e)g(in)o(v)o(o)q(cation)g(of)f Fw(actorial)f Fx(is)i(not)0 +214 y(exp)q(ected)d(to)f(return)g(a)g(v)m(alue.)71 271 y(Sussman)25 +b(and)h(Steele)g(w)o(ere)f(v)o(ery)g(pleased)i(with)e(this)h(to)o(y)f(actor)f +(implemen)o(tation)j(and)e(named)h(it)0 327 y(\\Sc)o(hemer")c(in)g(the)g(exp) +q(ectation)g(that)f(it)h(migh)o(t)f(dev)o(elop)i(in)o(to)e(another)h(AI)g +(language)f(in)i(the)f(tradition)0 384 y(of)16 b(Planner)h(and)f(Conniv)o +(er.)23 b(Ho)o(w)o(ev)o(er,)15 b(the)i(ITS)f(op)q(erating)h(system)f(had)g(a) +g(6-c)o(haracter)f(limitation)j(on)e(\014le)0 440 y(names)f(and)h(so)e(the)i +(name)f(w)o(as)f(truncated)h(to)g(simply)h(\\Sc)o(heme")g(and)f(that)g(name)g +(stuc)o(k.)71 497 y(Then)21 b(came)g(a)g(crucial)h(disco)o(v)o(ery|one)g +(that,)f(to)g(us,)h(illustrates)g(the)f(v)m(alue)h(of)f(exp)q(erimen)o +(tation)h(in)0 553 y(language)c(design.)28 b(On)18 b(insp)q(ecting)i(the)e +(co)q(de)g(for)f Fw(apply)p Fx(,)h(once)g(they)f(got)g(it)h(w)o(orking)f +(correctly)l(,)i(Sussman)0 610 y(and)g(Steele)i(w)o(ere)e(astonished)h(to)e +(disco)o(v)o(er)i(that)e(the)i(co)q(des)g(in)g Fw(apply)e Fx(for)h(function)h +(application)h(and)f(for)0 666 y(actor)d(in)o(v)o(o)q(cation)i(w)o(ere)f +(iden)o(tical!)31 b(F)l(urther)18 b(insp)q(ection)i(of)e(other)g(parts)f(of)h +(the)h(in)o(terpreter,)f(suc)o(h)h(as)f(the)0 723 y(co)q(de)13 +b(for)g(creating)g(functions)g(and)g(actors,)f(con\014rmed)h(this)h(insigh)o +(t:)19 b(the)13 b(fact)f(that)g(functions)i(w)o(ere)f(in)o(tended)0 +779 y(to)k(return)h(v)m(alues)g(and)g(actors)f(w)o(ere)g(not)h(made)f(no)h +(di\013erence)h(an)o(ywhere)e(in)i(their)f(implemen)o(tation.)29 +b(The)0 835 y(di\013erence)14 b(la)o(y)g(purely)g(in)g(the)f(primitiv)o(es)h +(used)g(to)f(co)q(de)g(their)h(b)q(o)q(dies.)21 b(If)13 b(the)g(underlying)j +(primitiv)o(es)e(return)0 892 y(v)m(alues,)i(then)g(the)g(user)f(can)h(write) +f(functions)h(that)f(return)g(v)m(alues;)i(if)f(all)g(primitiv)o(es)h(exp)q +(ect)f(con)o(tin)o(uations,)0 948 y(then)h(the)f(user)h(can)f(write)g +(actors.)23 b(But)16 b(the)h Fw(lambda)e Fx(and)i Fw(alpha)e +Fx(mec)o(hanisms)i(w)o(ere)f(themselv)o(es)h(iden)o(tical)0 +1005 y(and)22 b(from)f(this)i(Sussman)f(and)g(Steele)h(concluded)h(that)d +(actors)g(and)h(closures)h(w)o(ere)e(the)h(same)g(concept.)0 +1061 y(\(Hewitt)c(later)h(agreed)g(with)g(this)g(assessmen)o(t,)f(noting,)i +(ho)o(w)o(ev)o(er,)e(that)g(t)o(w)o(o)f(t)o(yp)q(es)i(of)f(primitiv)o(e)i +(actor)e(in)0 1118 y(his)g(theory)l(,)e(namely)i(cells)g(\(whic)o(h)f(ha)o(v) +o(e)g(mo)q(di\014able)h(state\))e(and)h(sync)o(hronizers)h(\(whic)o(h)f +(enforce)g(exclusiv)o(e)0 1174 y(access\),)e(cannot)h(b)q(e)g(expressed)h(as) +e(closures)h(in)h(a)e(lexically)j(scop)q(ed)f(pure)f(Lisp)h(without)f(adding) +g(equiv)m(alen)o(t)0 1231 y(primitiv)o(e)h(extensions.\))71 +1287 y(Sussman)g(and)h(Steele)h(did)f(not)f(think)i(an)o(y)e(less)h(of)f(the) +h(actors)e(mo)q(del|or)j(of)e(Lisp|for)h(ha)o(ving)g(made)0 +1344 y(this)h(disco)o(v)o(ery;)h(indeed,)g(it)f(seemed)g(to)f(them)g(that)g +(Sc)o(heme)h(still)h(migh)o(t)e(w)o(ell)h(b)q(e)g(the)g(next)f(AI)h +(language,)0 1400 y(capturing)d(man)o(y)f(of)g(the)h(ideas)g(then)g +(\015oating)g(around)f(ab)q(out)g(data)g(and)h(con)o(trol)f(structure)h(but)f +(in)i(a)e(m)o(uc)o(h)0 1456 y(simpler)f(framew)o(ork.)j(The)c(initial)h(rep)q +(ort)f(on)f(Sc)o(heme)h([Sussman,)f(1975b])g(describ)q(es)i(a)e(v)o(ery)g +(spare)g(language,)0 1513 y(with)h(a)f(minim)o(um)h(of)f(primitiv)o(e)h +(constructs,)g(one)f(p)q(er)h(concept.)19 b(\(Wh)o(y)12 b(tak)o(e)f(t)o(w)o +(o)g(when)i(one)f(will)i(do?\))20 b(There)0 1569 y(w)o(as)12 +b(a)h(function)h(constructor)e Fw(lambda)p Fx(,)g(a)h(\014xp)q(oin)o(t)h(op)q +(erator)e Fw(labels)p Fx(,)g(a)h(condition)h Fw(if)p Fx(,)f(a)g(side)h +(e\013ect)f Fw(aset)p Fx(,)f(a)0 1626 y(con)o(tin)o(uation)g(accessor)f +Fw(catch)p Fx(,)g(function)h(application,)h(v)m(ariable)g(references,)f(and)f +(not)g(to)q(o)g(m)o(uc)o(h)g(else.)20 b(There)0 1682 y(w)o(as)g(an)h +(assortmen)o(t)e(of)i(primitiv)o(e)h(data)f(structures)f(suc)o(h)i(as)e(sym)o +(b)q(ols,)i(lists,)h(and)e(n)o(um)o(b)q(ers,)i(but)e(these)0 +1739 y(and)g(their)g(asso)q(ciated)g(op)q(erations)g(w)o(ere)g(regarded)f(as) +h(practical)g(con)o(v)o(eniences)h(rather)f(than)f(theoretical)0 +1795 y(requiremen)o(ts.)71 1852 y(In)11 b(1976)f(Sussman)i(and)f(Steele)h +(wrote)e(t)o(w)o(o)g(more)h(pap)q(ers)g(that)g(explored)h(programming)f +(language)g(seman-)0 1908 y(tics)k(using)g(Sc)o(heme)g(as)f(a)g(framew)o +(ork.)k Fm(L)n(amb)n(da:)i(The)c(Ultimate)f(Imp)n(er)n(ative)f +Fx([Steele,)h(1976a])d(demonstrated)0 1965 y(ho)o(w)g(a)f(wide)i(v)m(ariet)o +(y)g(of)e(con)o(trol)h(structure)g(ideas)h(could)g(b)q(e)g(mo)q(deled)g(in)g +(Sc)o(heme.)20 b(Some)12 b(of)g(the)g(mo)q(dels)h(drew)0 2021 +y(on)i(earlier)h(w)o(ork)e(b)o(y)g(P)o(eter)h(Landin,)h(John)f(Reynolds,)h +(and)f(others)g([Landin,)g(1965;)f(Reynolds,)i(1972;)d(F)l(ried-)0 +2077 y(man,)18 b(1975].)25 b(The)18 b(pap)q(er)f(w)o(as)g(partly)h(tutorial)f +(in)i(in)o(ten)o(t)e(and)h(partly)f(a)h(consolidated)g(catalog)f(of)g(con)o +(trol)0 2134 y(structures.)i(\(This)14 b(pap)q(er)g(w)o(as)f(also)g(notable)h +(as)f(the)h(\014rst)f(in)h(a)f(long)h(series)g(of)g(\\Lam)o(b)q(da:)19 +b(The)13 b(Ultimate)h Fm(X)7 b Fx(")0 2190 y(pap)q(ers,)14 +b(a)g(running)g(gag)f(that)h(is)g(as)f(w)o(ell-kno)o(wn)i(in)g(the)e(Lisp)i +(comm)o(unit)o(y)f(as)g(the)f(\\)-8 b Fm(X)14 b Fx(Considered)h(Harmful")0 +2247 y(titles)i(are)g(in)h(the)e(broader)h(programming-languages)f(comm)o +(unit)o(y)l(.\))25 b Fm(L)n(amb)n(da:)e(The)18 b(Ultimate)f(De)n(clar)n +(ative)0 2303 y Fx([Steele,)22 b(1976b])c(concen)o(trated)i(on)g(the)g +(nature)g(of)g Fw(lambda)f Fx(as)g(a)h(renaming)g(construct;)i(it)e(also)g +(pro)o(vided)0 2360 y(a)f(more)g(extensiv)o(e)h(comparison)f(of)g(Sc)o(heme)h +(and)f(Hewitt's)g(PLASMA)g(\(see)h(section)f(4\),)h(relating)f(ob)s(ject-)0 +2416 y(orien)o(ted)g(programming)f(generally)h(and)g(actors)e(sp)q +(eci\014cally)k(to)d(closures.)30 b(This)19 b(in)h(turn)e(suggested)g(a)g +(set)0 2473 y(of)e(tec)o(hniques)i(for)d(constructing)i(a)f(practical)h +(compiler)h(for)d(Sc)o(heme,)i(whic)o(h)h(this)e(pap)q(er)h(outlined)h(in)f +(some)0 2529 y(detail.)30 b(This)19 b(pap)q(er)g(w)o(as)e(a)h(thesis)h(prop)q +(osal;)h(the)e(resulting)h(dissertation)g(discussed)h(a)e(Sc)o(heme)h +(compiler)0 2586 y(called)g(RABBIT)g([Steele,)g(1978a].)25 +b(Mitc)o(hell)19 b(W)l(and)f(and)g(Daniel)g(F)l(riedman)h(w)o(ere)e(doing)h +(similar)h(w)o(ork)e(at)0 2642 y(Indiana)g(Univ)o(ersit)o(y)f([W)l(and,)f +(1977])g(and)g(they)h(exc)o(hanged)g(pap)q(ers)g(with)g(Sussman)g(and)g +(Steele)h(during)g(this)0 2698 y(p)q(erio)q(d.)p eop +%%Page: 19 19 +19 18 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(19)71 45 y(Subsequen)o(tly)16 b(Steele)g(and)f(Sussman)g(wrote)f(a) +h(revised)g(rep)q(ort)g(on)g(Sc)o(heme)g([Steele,)h(1978c];)d(the)i(title)g +(of)0 102 y(the)h(rep)q(ort)g(w)o(as)f(in)o(tended)i(as)f(a)g(tribute)g(to)f +(Algol)i(but)f(in)h(turn)f(inspired)i(another)e(increasingly)i(silly)f +(series)0 158 y(of)h(titles)h([Clinger,)g(1985a;)d(Clinger,)k(1985b;)d(Rees,) +i(1986].)28 b(Shortly)18 b(thereafter)g(they)g(wrote)g(an)g(extended)0 +214 y(monograph,)k(whose)f(title)h(w)o(as)e(a)h(pla)o(y)h(on)f +Fm(The)g(A)o(rt)h(of)g(the)g(F)m(ugue)p Fx(,)g(illustrating)h(n)o(umerous)e +(small)h(Lisp)0 271 y(in)o(terpreters)c(with)g(v)m(ariations.)28 +b(The)18 b(monograph)f(w)o(as)f(nev)o(er)i(\014nished;)j(only)d(parts)f +(Zero,)g(One,)i(and)f(Tw)o(o)0 327 y(w)o(ere)i(published)j([Steele,)g +(1978b].)34 b(P)o(art)19 b(Zero)h(in)o(tro)q(duced)i(a)e(tin)o(y)h +(\014rst-order)f(dialect)i(of)e(Lisp)i(mo)q(deled)0 384 y(on)16 +b(recursion)h(equations.)24 b(P)o(art)15 b(One)i(discussed)h(pro)q(cedures)g +(as)e(data)f(and)i(explored)g(lexical)i(and)d(dynamic)0 440 +y(binding.)35 b(P)o(art)18 b(Tw)o(o)h(addressed)h(the)g(decomp)q(osition)h +(of)e(state)g(and)h(the)f(meaning)i(of)e(side)h(e\013ects.)33 +b(P)o(art)0 497 y(Three)11 b(w)o(as)g(to)f(ha)o(v)o(e)h(co)o(v)o(ered)g +(order)g(of)g(ev)m(aluation)h(\(call-b)o(y-v)m(alue)i(v)o(ersus)d(call-b)o +(y-name\))h(and)g(P)o(art)e(F)l(our)h(w)o(as)0 553 y(in)o(tended)17 +b(to)e(co)o(v)o(er)g(metalanguage,)g(macro)g(pro)q(cessors,)h(and)f +(compilers.)23 b(That)15 b(these)h(last)g(t)o(w)o(o)e(parts)h(w)o(ere)0 +610 y(nev)o(er)f(written)g(is)g(no)f(great)g(loss,)h(since)h(these)f(topics)g +(w)o(ere)f(so)q(on)h(treated)f(adequately)i(b)o(y)e(other)h(researc)o(hers.)0 +666 y(While)24 b Fm(The)e(A)o(rt)h(of)g(the)g(Interpr)n(eter)e +Fx(ac)o(hiev)o(ed)j(some)e(notoriet)o(y)f(in)i(the)g(Sc)o(heme)g +(underground,)h(it)f(w)o(as)0 723 y(rejected)16 b(b)o(y)f(an)g(A)o(CM)f +(journal.)71 779 y(A)k(great)f(deal)i(in)g(all)g(these)g(pap)q(ers)g(w)o(as)e +(not)h(new;)h(their)g(main)g(con)o(tribution)g(w)o(as)e(to)h(bridge)h(the)f +(gap)0 835 y(b)q(et)o(w)o(een)13 b(the)f(mo)q(dels)i(used)f(b)o(y)f +(theoreticians)h(\(studying)g(actors)e(and)i(the)f(lam)o(b)q(da)h(calculus)i +([Ch)o(urc)o(h,)d(1941]\))0 892 y(and)f(practicians)h(\(Lisp)g(implemen)o +(tors)f(and)h(users\).)18 b(Sc)o(heme)11 b(made)g(theoretical)h(con)o +(tributions)g(in)f(suc)o(h)h(areas)0 948 y(as)e(denotational)h(seman)o(tics)f +(m)o(uc)o(h)g(more)g(accessible)i(to)e(Lisp)h(hac)o(k)o(ers;)g(it)g(also)f +(pro)o(vided)h(a)f(usable)h(op)q(erational)0 1005 y(platform)i(for)f(exp)q +(erimen)o(tation)i(b)o(y)f(theoreticians.)20 b(There)13 b(w)o(as)f(no)h(need) +h(for)f(a)f(cen)o(tralized)j(implemen)o(tation)0 1061 y(group)d(to)g(supp)q +(ort)g(Sc)o(heme)h(at)f(a)g(large)h(n)o(um)o(b)q(er)f(of)g(sites)h(or)f(on)g +(a)g(wide)i(v)m(ariet)o(y)e(of)g(mac)o(hines.)20 b(Lik)o(e)13 +b(Standard)0 1118 y(Lisp)18 b(but)g(ev)o(en)f(smaller)h(and)f(simpler,)i(Sc)o +(heme)e(could)i(b)q(e)e(put)h(up)f(on)g(top)g(of)g(some)f(other)h(Lisp)h +(system)f(in)0 1174 y(a)h(v)o(ery)f(short)h(time.)28 b(Lo)q(cal)19 +b(implemen)o(tations)g(and)f(dialects)i(sprang)d(up)i(at)e(man)o(y)g(other)h +(sites)g(\(one)g(go)q(o)q(d)0 1231 y(example)c(is)h(Sc)o(heme)f(311)f(at)f +(Indiana)j(Univ)o(ersit)o(y)f([F)l(essenden,)h(1983;)d(Clinger,)i(1984]\);)e +(it)i(w)o(as)f(sev)o(eral)h(y)o(ears)0 1287 y(b)q(efore)h(an)o(y)o(one)g +(made)g(a)g(serious)h(attempt)e(to)h(pro)q(duce)h(a)f(p)q(ortable)g +(stand-alone)h(Sc)o(heme)g(system.)71 1344 y(Extensiv)o(e)11 +b(w)o(ork)e(on)i(Sc)o(heme)g(implemen)o(tations)h(w)o(as)d(carried)i(on)g(at) +f(Y)l(ale)h(and)g(later)f(at)g(MIT)h(b)o(y)f(Jonathan)0 1400 +y(Rees,)17 b(Norman)f(Adams,)g(and)h(others.)23 b(This)17 b(resulted)g(in)h +(the)e(dialect)i(of)e(Sc)o(heme)h(kno)o(wn)f(as)g(T;)g(this)h(name)0 +1456 y(w)o(as)h(a)h(go)q(o)q(d)g(jok)o(e)f(all)i(around,)f(since)h(T)f(w)o +(as)f(to)g(Sc)o(heme)i(appro)o(ximately)f(what)g(the)g(NIL)g(dialect)h(w)o +(as)f(to)0 1513 y(MacLisp.)29 b(The)19 b(goal)f(w)o(as)f(to)h(b)q(e)g(a)g +(simple)i(dialect)f(with)g(an)f(esp)q(ecially)j(e\016cien)o(t)e(implemen)o +(tation)g([Rees,)0 1569 y(1982]:)114 1642 y(T)j(cen)o(ters)g(around)h(a)f +(small)h(core)f(language,)i(free)e(of)g(complicated)i(features,)g(th)o(us)e +(easy)g(to)114 1699 y(learn)p Fn(:)8 b(:)g(:)g(:)16 b Fx([W)l(e])h(ha)o(v)o +(e)h(refrained)h(from)f(supp)q(orting)h(features)f(that)g(w)o(e)g(didn't)h +(feel)g(completely)114 1755 y(righ)o(t)d(ab)q(out.)24 b(T's)16 +b(omissions)h(are)f(imp)q(ortan)o(t:)22 b(w)o(e)17 b(ha)o(v)o(e)f(a)o(v)o +(oided)h(the)f(complicated)i(argumen)o(t)114 1812 y(list)i(syn)o(tax)f(of)h +(Common)f(Lisp,)i(k)o(eyw)o(ord)e(options,)i(and)f(m)o(ultiple)h +(functionalit)o(y)g(o)o(v)o(erloaded)114 1868 y(on)16 b(single)i(functions.) +25 b(It's)16 b(far)g(easier)h(to)f(generalize)j(on)d(something)h(later)g +(than)f(to)g(implemen)o(t)114 1925 y(something)f(no)o(w)f(that)g(one)g(migh)o +(t)h(later)g(regret.)k(All)d(features)e(ha)o(v)o(e)g(b)q(een)i(carefully)g +(considered)114 1981 y(for)e(st)o(ylistic)i(purit)o(y)g(and)f(generalit)o(y)l +(.)0 2054 y(The)g(design)g(of)g(T)f(therefore)h(represen)o(ted)g(a)f +(conscious)h(break)g(not)f(only)h(from)f(the)h(Lisp)h(tradition)f(but)g(from) +0 2111 y(earlier)i(v)o(ersions)e(of)g(Sc)o(heme)i(in)f(places)h(where)e +(Steele)i(and)f(Sussman)g(had)f(relied)j(on)d(tradition)h(rather)f(than)0 +2167 y(cleaning)20 b(things)g(up.)31 b(Names)19 b(of)f(built-in)j(functions)f +(w)o(ere)f(regularized.)32 b(T)19 b(replaced)h(the)f(traditional)g +Fw(-P)0 2224 y Fx(su\016x)e(with)h(univ)o(ersal)g(use)g(of)f(the)g(question)h +(mark;)g(th)o(us)f Fw(numberp)f Fx(b)q(ecame)i Fw(number?)26 +b Fx(and)18 b Fw(null)e Fx(b)q(ecame)0 2280 y Fw(null?)p Fx(.)21 +b(Similarly)l(,)d(ev)o(ery)d(destructiv)o(e)i(op)q(eration)f(had)g(a)f(name)h +(ending)h(with)f(an)g(exclamation)g(p)q(oin)o(t;)g(th)o(us)0 +2337 y Fw(nconc)p Fx(,)c(the)g(MacLisp)i(name)e(for)g(the)g(destructiv)o(e)h +(v)o(ersion)g(of)f Fw(append)p Fx(,)f(b)q(ecame)i Fw(append!)p +Fx(.)18 b(\(Muddle)c([Galley)l(,)0 2393 y(1975])h(had)i(in)o(tro)q(duced)h +(the)f(use)h(of)e(question)h(mark)g(to)f(indicate)i(predicates)g(and)f +(Sussman)g(had)g(used)h(this)0 2449 y(con)o(v)o(en)o(tion)h(o)o(v)o(er)e(the) +i(y)o(ears)f(in)h(some)f(of)g(his)i(writing.)30 b(In)o(terlisp)20 +b(had)f(had)f(a)h(more)f(consisten)o(t)g(system)g(of)0 2506 +y(lab)q(eling)f(destructiv)o(e)f(op)q(erations)f(than)h(MacLisp,)f(using)h +(the)f(letter)h Fw(d)f Fx(as)g(a)f(pre\014x.\))71 2562 y(T)h(w)o(as)g +(initially)k(targeted)c(to)g(the)h(V)-5 b(AX)16 b(\(under)g(b)q(oth)g(Unix)h +(and)f(VMS\))f(and)h(to)g(Ap)q(ollo)h(w)o(orkstations.)0 2619 +y(Most)d(of)g(the)h(system)f(w)o(as)g(written)h(in)h(T)f(and)g(b)q(o)q +(otstrapp)q(ed)g(b)o(y)f(the)h(T)g(compiler,)h(TC.)e(The)h(ev)m(aluator)g +(and)0 2675 y(garbage)j(collector,)h(in)g(particular,)h(w)o(ere)e(written)h +(in)g(T)f(and)h(not)f(in)h(mac)o(hine)g(language.)30 b(The)19 +b(T)f(pro)s(ject)p eop +%%Page: 20 20 +20 19 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(20)0 45 y(started)11 b(with)h(a)g(v)o(ersion)g(of)g(the)g(S-1)g +(Lisp)h(compiler)g([Bro)q(oks,)f(1982b])e(and)i(made)g(substan)o(tial)h +(impro)o(v)o(emen)o(ts;)0 102 y(in)g(the)g(course)f(of)g(their)h(w)o(ork)f +(they)g(iden)o(ti\014ed)j(sev)o(eral)e(bugs)f(in)h(the)g(S-1)g(compiler)g +(and)g(in)g(the)g(original)g(rep)q(ort)0 158 y(on)h(RABBIT)h([Steele,)f +(1978a].)k(Lik)o(e)d(the)f(S-1)f(Lisp)i(compiler,)g(it)g(relied)g(hea)o(vily) +g(on)f(optimization)g(strategies)0 214 y(from)e(the)i(mainstream)f(compiler)h +(literature,)g(most)e(notably)i(the)f(w)o(ork)g(b)o(y)g(W)l(ulf)h(and)f +(others)g(on)g(the)g(BLISS-)0 271 y(11)i(compiler)h([W)l(ulf,)f(1975].)71 +327 y(A)k(second)h(generation)f(of)g(T)g(compiler,)i(called)f(ORBIT)h +([Kranz,)f(1986],)e(in)o(tegrated)h(a)g(host)g(of)f(main-)0 +384 y(stream)h(and)i(Lisp-sp)q(eci\014c)i(optimization)f(strategies,)e +(resulting)i(in)f(a)f(truly)g(pro)q(duction-qualit)o(y)i(Sc)o(heme)0 +440 y(en)o(vironmen)o(t.)28 b(RABBIT)19 b(w)o(as)e(organized)h(around)g(a)g +(principle)i(of)e(translating)f(Lisp)i(co)q(de)g(b)o(y)f(p)q(erforming)0 +497 y(a)c(source-to-source)g(con)o(v)o(ersion)g(in)o(to)h(\\con)o(tin)o +(uation-passing)g(st)o(yle")f(\(CPS\);)f(ORBIT)i(generalized)h(and)f(ex-)0 +553 y(tended)d(this)g(strategy)e(to)h(handle)i(assignmen)o(ts)e(to)g(v)m +(ariables.)20 b(The)11 b(register)g(allo)q(cator)h(used)g(trace)f(sc)o +(heduling)0 610 y(to)k(optimize)j(register)e(usage)g(across)f(forks,)g +(joins,)i(and)f(pro)q(cedure)h(calls.)23 b(ORBIT)18 b(also)e(supp)q(orted)g +(calls)i(to)0 666 y(pro)q(cedures)d(written)f(in)h(languages)f(other)g(than)g +(Lisp.)20 b(\(This)15 b(w)o(as)e(con)o(temp)q(oraneous)h(with)g(e\013orts)f +(at)g(CMU)0 723 y(and)i(elsewhere)i(to)d(dev)o(elop)i(general)g(\\foreign)f +(function)h(call")g(mec)o(hanisms)g(for)f(Common)f(Lisp.\))0 +844 y Fo(2.9)56 b(Prelude)17 b(to)i(Common)e(Lisp:)24 b(1980{1984)0 +930 y Fx(In)e(the)f(Spring)h(of)e(1981,)h(the)g(situation)h(w)o(as)e(as)g +(follo)o(ws.)38 b(Tw)o(o)20 b(Lisp)i(mac)o(hine)g(companies)g(had)f(sprung)0 +987 y(up)h(from)f(the)h(MIT)g(Lisp)h(mac)o(hine)g(pro)s(ject:)33 +b(LISP)22 b(Mac)o(hine,)i(Inc.)f(\(LMI\))e(and)h(Sym)o(b)q(olics,)j(Inc.)41 +b(The)0 1043 y(former)16 b(w)o(as)g(founded)i(principally)i(b)o(y)c(Ric)o +(hard)i(Green)o(blatt)f(and)g(the)g(latter)g(b)o(y)f(a)h(larger)g(group)f +(including)0 1099 y(Da)o(vid)i(A.)f(Mo)q(on.)27 b(Both)18 b(initially)i(pro)q +(ductized)f(the)f(CADR,)g(the)f(second)i(MIT)e(Lisp)i(mac)o(hine,)g(and)f +(eac)o(h)0 1156 y(licensed)j(the)e(Lisp)h(mac)o(hine)f(soft)o(w)o(are)e(from) +h(MIT)h(under)g(an)g(arrangemen)o(t)f(that)g(included)j(passing)e(bac)o(k)0 +1212 y(an)o(y)e(impro)o(v)o(emen)o(ts)h(made)f(b)o(y)h(the)g(companies.)28 +b(Sym)o(b)q(olics)19 b(so)q(on)f(em)o(bark)o(ed)f(on)h(designing)h(and)f +(building)0 1269 y(a)h(follo)o(w-on)h(Lisp)g(mac)o(hine,)h(the)e(3600.)32 +b(The)19 b(language)h(Lisp-Mac)o(hine)h(Lisp)f(had)g(ev)o(olv)o(ed)g(greatly) +f(since)0 1325 y(the)d(\014rst)f(de\014nition)i(published)i(in)d(1978,)e +(acquiring)j(a)e(v)m(ariet)o(y)h(of)f(new)h(features,)f(most)g(notably)h(an)f +(ob)s(ject-)0 1382 y(orien)o(ted)h(extension)g(called)g(Fla)o(v)o(ors.)71 +1438 y(The)11 b(Xero)o(x)g(Lisp)i(mac)o(hines)f(Dolphin)g(and)g(Dorado)e(w)o +(ere)h(running)i(In)o(terlisp)g(and)e(w)o(ere)g(in)h(use)g(in)g(researc)o(h)0 +1495 y(lab)q(oratories)18 b(mostly)f(lo)q(cated)h(on)f(the)h(W)l(est)f +(Coast.)25 b(BBN)18 b(w)o(as)f(constructing)h(its)f(In)o(terlisp)i(mac)o +(hine,)g(the)0 1551 y(Jeric)o(ho,)d(and)f(a)g(p)q(ort)g(of)g(In)o(terlisp)h +(to)f(the)g(V)-5 b(AX)15 b(w)o(as)g(under)h(w)o(a)o(y)l(.)71 +1608 y(A)o(t)e(MIT)h(a)f(pro)s(ject)g(had)h(started)f(to)h(de\014ne)h(and)f +(implemen)o(t)h(a)e(descendan)o(t)i(of)e(MacLisp)i(called)g(NIL)g(on)0 +1664 y(the)f(V)-5 b(AX)16 b(and)f(S-1)g(computers.)71 1720 +y(A)o(t)k(CMU,)g(Scott)g(F)l(ahlman)h(and)g(his)g(colleagues)h(and)f(studen)o +(ts)f(w)o(ere)h(de\014ning)h(and)f(implemen)o(ting)h(a)0 1777 +y(MacLisp-lik)o(e)15 b(dialect)f(of)f(Lisp)h(called)g(Spice)h(Lisp,)f(whic)o +(h)g(w)o(as)e(to)g(b)q(e)h(implemen)o(ted)i(on)e(the)g(SPICE)g(mac)o(hine)0 +1833 y(\(Scien)o(ti\014c)k(P)o(ersonal)e(In)o(tegrated)g(Computing)g(En)o +(vironmen)o(t\).)0 1955 y Fo(2.10)56 b(Early)17 b(Common)g(Lisp)0 +2041 y Fx(If)j(there)h(had)f(b)q(een)h(no)g(consolidation)g(in)g(the)f(Lisp)i +(comm)o(unit)o(y)e(at)g(this)g(p)q(oin)o(t,)i(Lisp)f(migh)o(t)f(ha)o(v)o(e)g +(died.)0 2097 y(ARP)l(A)e(w)o(as)f(not)g(in)o(terested)i(in)f(funding)h(a)e +(v)m(ariet)o(y)h(of)f(needlessly)j(comp)q(eting)e(and)g(gratuitously)g +(di\013eren)o(t)0 2154 y(Lisp)e(pro)s(jects.)j(And)d(there)f(w)o(as)g(no)g +(commercial)h(arena|y)o(et.)0 2274 y Fu(2.10.1)52 b(Out)18 +b(of)f(the)h(Chaos)g(of)f(MacLisp)0 2360 y Fx(In)i(April)h(1981,)e(ARP)l(A)i +(called)g(a)e(\\Lisp)i(Comm)o(unit)o(y)e(Meeting",)h(in)h(whic)o(h)g(the)e +(implemen)o(tation)i(groups)0 2416 y(got)d(together)h(to)f(discuss)i(the)g +(future)f(of)f(Lisp.)30 b(ARP)l(A)19 b(sp)q(onsored)g(a)e(lot)i(of)e(AI)i +(researc)o(h,)f(and)h(their)f(goal)0 2473 y(w)o(as)c(to)g(see)h(what)f(could) +i(b)q(e)f(done)h(to)e(stem)g(the)h(tide)g(of)g(an)f(increasingly)j(div)o +(erse)e(set)g(of)f(Lisp)i(dialects)g(in)g(its)0 2529 y(researc)o(h)f(comm)o +(unit)o(y)l(.)71 2586 y(The)k(da)o(y)h(b)q(efore)f(the)h(ARP)l(A)g(meeting,)h +(part)e(of)g(the)h(In)o(terlisp)h(comm)o(unit)o(y)f(got)e(together)h(to)g +(discuss)0 2642 y(ho)o(w)c(to)g(presen)o(t)g(a)g(picture)i(of)e(a)g(health)o +(y)g(In)o(terlisp)i(comm)o(unit)o(y)f(on)f(a)g(v)m(ariet)o(y)h(of)f(mac)o +(hines.)21 b(The)16 b(idea)g(w)o(as)p eop +%%Page: 21 21 +21 20 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(21)0 45 y(to)19 b(push)h(the)f(view)h(of)f(a)g(standard)g(language) +g(\(In)o(terlisp\))h(and)g(a)f(standard)g(en)o(vironmen)o(t)g(existing)i(on)e +(an)0 102 y(ev)o(er-increasing)e(n)o(um)o(b)q(er)e(of)g(di\013eren)o(t)g(t)o +(yp)q(es)h(of)e(computers.)71 158 y(The)e(da)o(y)f(of)g(the)h(meeting,)g(the) +g(In)o(terlisp)h(comm)o(unit)o(y)f(successfully)i(presen)o(ted)e(themselv)o +(es)g(as)g(a)f(coheren)o(t)0 214 y(group)k(with)g(one)h(goal)f(and)g +(mission.)71 271 y(The)f(MacLisp-descended)i(groups)e(came)f(o\013)g(in)i(a)f +(w)o(a)o(y)e(that)i(can)g(b)q(e)g(b)q(est)g(demonstrated)g(with)g(an)f(anec-) +0 327 y(dote.)19 b(Eac)o(h)14 b(group)f(sto)q(o)q(d)h(up)g(and)g(presen)o +(ted)g(where)g(they)g(w)o(ere)f(heading)i(and)f(wh)o(y)l(.)20 +b(Some)13 b(questions)i(arose)0 384 y(ab)q(out)i(the)f(ill-de\014ne)q(d)k +(direction)e(of)e(the)h(MacLisp)g(comm)o(unit)o(y)g(in)h(con)o(trast)d(to)h +(the)h(In)o(terlisp)h(comm)o(unit)o(y)l(.)0 440 y(Scott)e(F)l(ahlman)h(said,) +g(\\The)g(MacLisp)g(comm)o(unit)o(y)f(is)h Fm(not)g Fx(in)g(a)g(state)e(of)h +(c)o(haos.)24 b(It)17 b(consists)f(of)h(four)f(w)o(ell-)0 497 +y(de\014ned)f(groups)f(going)f(in)i(four)e(w)o(ell-de\014ned)k(directions.")j +(There)14 b(w)o(as)f(a)g(momen)o(t's)g(pause)h(for)f(the)h(laugh)o(ter)0 +553 y(to)h(subside)h([Steele,)g(1982].)71 610 y(Gabriel)11 +b(attended)g(the)f(In)o(terlisp)i(p)q(o)o(w-w)o(o)o(w)e(the)g(da)o(y)h(b)q +(efore)f(the)h(ARP)l(A)g(meeting,)h(and)f(he)g(also)f(witnessed)0 +666 y(the)20 b(sp)q(ectacle)g(of)f(the)h(MacLisp)g(comm)o(unit)o(y)g(at)e +(the)i(meeting.)33 b(He)20 b(didn't)g(b)q(eliev)o(e)h(that)e(the)h +(di\013erences)0 723 y(b)q(et)o(w)o(een)15 b(the)g(MacLisp)h(groups)f(w)o +(ere)f(insurmoun)o(table,)i(so)f(he)g(b)q(egan)h(to)e(try)g(to)h(sell)h(the)f +(idea)h(of)e(some)h(sort)0 779 y(of)g(co)q(op)q(eration)g(among)g(the)g +(groups.)71 835 y(First)d(he)i(approac)o(hed)f(Jon)h(L)f(White.)20 +b(Second,)14 b(Gabriel)g(and)f(White)h(approac)o(hed)f(Steele,)h(then)g(at)e +(CMU)0 892 y(and)20 b(a\016liated)h(with)g(the)f(SPICE)h(Lisp)g(pro)s(ject.) +34 b(The)21 b(three)f(of)g(them)g(w)o(ere)g(all)h(asso)q(ciated)g(one)f(w)o +(a)o(y)f(or)0 948 y(another)d(with)g(the)h(S-1)f(NIL)h(pro)s(ject.)23 +b(A)16 b(few)g(mon)o(ths)g(later,)g(Gabriel,)h(Steele,)g(White,)g(F)l +(ahlman,)f(William)0 1005 y(Sc)o(herlis)g(\(a)d(colleague)j(of)e(Gabriel's)h +(then)f(at)g(CMU\),)f(and)h(Ro)q(dney)i(Bro)q(oks)e(\(part)f(of)h(the)g(S-1)h +(Lisp)g(pro)s(ject\))0 1061 y(met)i(at)g(CMU,)f(and)h(some)g(of)g(the)g(tec)o +(hnical)i(details)f(of)f(the)g(new)h(Lisp)g(w)o(ere)f(discussed.)28 +b(The)17 b(new)h(dialect)0 1118 y(w)o(as)c(to)h(ha)o(v)o(e)g(the)g(follo)o +(wing)h(basic)g(features:)68 1203 y Fk(\017)23 b Fx(Lexical)17 +b(scoping,)e(including)j(full)f(closures)68 1276 y Fk(\017)23 +b Fx(Multiple)e(v)m(alues,)g(lik)o(e)f(those)f(in)i(Lisp-Mac)o(hine)g(Lisp,)g +(but)f(p)q(erhaps)f(with)h(some)f(mo)q(di\014cations)i(for)114 +1333 y(single-v)m(alue-forcing)d(situations)68 1406 y Fk(\017)23 +b Fx(Separate)15 b(v)m(alue)h(and)f(function)h(cells)h(\(a)e(Lisp-2\))h +([Gabriel,)f(1988])f(\(see)h(section)h(2.12.4\))68 1479 y Fk(\017)23 +b Fw(DEFSTRUCT)68 1552 y Fk(\017)g Fw(SETF)68 1625 y Fk(\017)g +Fx(F)l(ancy)13 b(\015oating)g(p)q(oin)o(t)h(n)o(um)o(b)q(ers,)g(including)i +(complex)e(and)f(rational)h(n)o(um)o(b)q(ers)g(\(this)f(w)o(as)f(the)i +(primary)114 1681 y(in\015uence)j(of)e(S-1)g(Lisp\))68 1755 +y Fk(\017)23 b Fx(Complex)15 b(lam)o(b)q(da-list)i(declarations,)e(similar)i +(to)d(those)h(of)g(Lisp-Mac)o(hine)i(Lisp)68 1828 y Fk(\017)23 +b Fx(No)16 b(dynamic)i(closures)f(\(closures)g(o)o(v)o(er)f(\\sp)q(ecial")i +(v)m(ariables,)g(whio)q(c)o(h)g(are)e(dynamically)j(b)q(ound;)f(also)114 +1884 y(called)e(\\\015exures")g(in)g(NIL\))71 1970 y(After)j(a)g(da)o(y)g +(and)h(a)f(half)h(of)f(tec)o(hnical)j(discussion,)g(this)e(group)f(w)o(en)o +(t)g(o\013)g(to)g(the)g(Oakland)i(Original,)0 2026 y(a)e(greasy)g +(submarine-sandwic)o(h)j(place)e(not)g(far)f(from)f(CMU.)h(During)h(and)g +(after)f(lunc)o(h)i(the)f(topic)g(of)f(the)0 2082 y(name)g(for)f(the)h(Lisp)h +(came)f(up,)h(and)f(suc)o(h)h(ob)o(vious)f(names)g(as)f(NIL)i(and)f(Spice)i +(Lisp)f(w)o(ere)e(prop)q(osed)i(and)0 2139 y(rejected|as)15 +b(giving)f(to)q(o)g(m)o(uc)o(h)g(credit)h(to)e(one)h(group)g(and)g(not)g +(enough)g(to)g(others|and)g(suc)o(h)g(non-ob)o(vious)0 2195 +y(names)h(as)g(Y)l(u-Hsiang)h(Lisp)h(w)o(ere)d(also)i(prop)q(osed)f(and)h +(reluctan)o(tly)f(rejected.)71 2252 y(The)j(name)g(felt)g(to)g(b)q(e)g(b)q +(est)h(w)o(as)e(\\Standard)h(Lisp")h(but)f(another)f(dialect)j(w)o(as)d(kno)o +(wn)h(b)o(y)g(that)f(name)0 2308 y(already)l(.)30 b(In)18 b(the)h(searc)o(h)f +(for)f(similar)j(w)o(ords,)e(the)g(name)g(\\Common)f(Lisp")j(came)e(up.)29 +b(Gabriel)19 b(remark)o(ed)0 2365 y(that)12 b(this)i(w)o(asn't)d(a)i(go)q(o)q +(d)g(name)g(b)q(ecause)h(w)o(e)f(w)o(ere)f(trying)h(to)g(de\014ne)h(an)f +(Elitist)h(Lisp,)g(and)f(\\Common)f(Lisp")0 2421 y(sounded)19 +b(to)q(o)f(m)o(uc)o(h)g(lik)o(e)h(\\Common)e(Man)h(Lisp".)30 +b(\(Suc)o(h)19 b(names)f(as)g(\\V)l(ulgar)g(Lisp")h(w)o(ere)f(then)g(bandied) +0 2478 y(ab)q(out.\))71 2534 y(The)c(naming)h(discussion)g(resumed)g(at)f +(dinner)h(at)f(the)g(Pleasure)h(Bar,)e(an)h(Italian)h(restauran)o(t)e(in)i +(another)0 2591 y(Pittsburgh)g(district,)h(but)f(no)g(luc)o(k)h(w)o(as)f(had) +g(b)o(y)g(all.)71 2647 y(Later)e(in)h(E-mail,)g(Mo)q(on)f(referred)g(to)g +(\\whatev)o(er)f(w)o(e)h(call)i(this)e(common)g(Lisp")h(and)g(this)f(time,)h +(amongst)0 2703 y(great)g(sadness)i(and)f(consternation)g(that)g(a)g(b)q +(etter)g(name)g(could)h(not)f(b)q(e)h(had,)f(it)g(w)o(as)g(selected.)p +eop +%%Page: 22 22 +22 21 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(22)71 45 y(The)17 b(next)h(step)f(w)o(as)g(to)g(con)o(tact)g(more)g +(groups.)26 b(The)18 b(k)o(ey)f(w)o(as)g(the)h(Lisp)g(mac)o(hine)h +(companies,)f(whic)o(h)0 102 y(w)o(ould)12 b(b)q(e)f(approac)o(hed)h(last.)18 +b(In)12 b(addition,)h(Gabriel)f(v)o(olun)o(teered)g(to)e(visit)i(the)g(F)l +(ranz)f(Lisp)h(group)f(in)h(Berk)o(eley)0 158 y(and)j(the)h(PSL)f(group)g(in) +h(Salt)g(Lak)o(e)f(Cit)o(y)l(.)71 214 y(The)j(PSL)g(group)g(did)h(not)f +(fully)h(join)g(the)f(Common)f(Lisp)i(group)f(and)g(the)g(F)l(ranz)g(group)g +(did)h(not)f(join)0 271 y(at)f(all.)28 b(The)18 b(Lisp370)g(group)f(w)o(as,)g +(through)h(o)o(v)o(ersigh)o(t,)e(not)i(in)o(vited.)28 b(The)18 +b(In)o(terlisp)h(comm)o(unit)o(y)f(sen)o(t)f(an)0 327 y(observ)o(er.)i(ARP)l +(A)d(w)o(as)f(successfully)i(pulled)g(in)o(to)f(supp)q(orting)f(the)h +(e\013ort.)71 384 y(The)c(p)q(eople)h(and)f(groups)g(engaged)f(in)i(this)f +(grassro)q(ots)f(e\013ort)f(w)o(ere,)i(b)o(y)g(and)g(large,)g(on)g(the)g(ARP) +l(ANET|)0 440 y(b)q(ecause)17 b(they)f(w)o(ere)g(a\016liated)g(or)g(asso)q +(ciated)g(with)g(AI)h(labs|so)f(it)h(w)o(as)e(natural)h(to)f(decide)j(to)d +(do)h(most)f(of)0 497 y(the)g(w)o(ork)f(o)o(v)o(er)h(the)g(net)o(w)o(ork)f +(through)h(electronic)h(mail,)g(whic)o(h)g(w)o(as)e(automatically)i(arc)o +(hiv)o(ed.)k(In)c(fact)f(this)0 553 y(w)o(as)f(the)i(\014rst)e(ma)s(jor)g +(language)i(standardization)f(e\013ort)f(carried)i(out)f(nearly)h(en)o +(tirely)g(b)o(y)f(E-mail.)71 610 y(A)g(meeting)i(with)f(Sym)o(b)q(olics)h +(and)f(LMI)g(to)q(ok)f(place)i(at)e(Sym)o(b)q(olics)i(in)g(June)g(1981.)j +(Steele)d(and)f(Gabriel)0 666 y(dro)o(v)o(e)k(from)g(Pittsburgh)h(to)e(Cam)o +(bridge)i(for)f(the)h(meeting.)36 b(The)21 b(meeting)g(alternated)g(b)q(et)o +(w)o(een)g(a)f(deep)0 723 y(tec)o(hnical)d(discussion)g(of)d(what)h(should)h +(b)q(e)g(in)g(the)f(dialect)i(and)e(a)g(p)q(olitical)j(discussion)e(ab)q(out) +f(wh)o(y)g(the)h(new)0 779 y(dialect)i(w)o(as)e(a)h(go)q(o)q(d)f(thing.)25 +b(F)l(rom)16 b(the)h(p)q(oin)o(t)h(of)e(view)h(of)g(the)g(Lisp)h(mac)o(hine)f +(companies,)h(the)f(action)g(w)o(as)0 835 y(with)e(Lisp)h(mac)o(hines)f(and)g +(the)g(in)o(terest)f(in)i(the)e(same)h(dialect)h(running)f(more)g(places)g +(seemed)g(academic.)21 b(Of)0 892 y(course,)13 b(there)h(w)o(ere)f(business)i +(reasons)e(for)f(getting)i(the)f(same)g(dialect)i(running)f(in)h(man)o(y)e +(places,)h(but)f(p)q(eople)0 948 y(with)j(business)g(sense)g(did)g(not)f +(attend)g(the)g(meeting.)71 1005 y(A)o(t)k(the)g(end,)i(b)q(oth)f(Lisp)g(mac) +o(hine)h(companies)f(decided)h(to)e(join)h(the)g(e\013ort,)f(and)g(the)h +(Common)f(Lisp)0 1061 y(Group)c(w)o(as)f(formed:)299 1150 y(Alan)i(Ba)o(wden) +156 b(Ric)o(hard)16 b(P)l(.)f(Gabriel)215 b(William)17 b(L.)f(Sc)o(herlis)180 +1206 y(Ro)q(dney)g(A.)f(Bro)q(oks)250 b(Joseph)16 b(Ginder)214 +b(Ric)o(hard)16 b(M.)f(Stallman)181 1263 y(Ric)o(hard)i(L.)e(Bry)o(an)247 +b(Ric)o(hard)16 b(Green)o(blatt)137 b(Barbara)14 b(K.)i(Steele)222 +1319 y(Glenn)g(S.)f(Burk)o(e)212 b(Martin)15 b(L.)g(Griss)332 +b(Guy)15 b(L.)h(Steele)g(Jr.)197 1376 y(Ho)o(w)o(ard)e(I.)h(Cannon)164 +b(Charles)16 b(L.)f(Hedric)o(k)266 b(William)17 b(v)m(anMelle)203 +1432 y(George)e(J.)g(Carrette)210 b(Earl)15 b(A.)g(Killian)310 +b(W)l(alter)16 b(v)m(an)f(Roggen)276 1489 y(Da)o(vid)g(Dill)300 +b(John)16 b(L.)f(Kulp)311 b(Allan)16 b(C.)f(W)l(esc)o(hler)231 +1545 y(Scott)g(E.)g(F)l(ahlman)171 b(Larry)15 b(M.)g(Masin)o(ter)216 +b(Daniel)16 b(L.)g(W)l(einreb)187 1602 y(Ric)o(hard)g(J.)f(F)l(ateman)254 +b(John)16 b(McCarth)o(y)259 b(Jon)15 b(L)h(White)304 1658 y(Neal)g(F)l(ein)o +(b)q(erg)272 b(Don)15 b(Morrison)240 b(Ric)o(hard)17 b(Zipp)q(el)297 +1715 y(John)f(F)l(o)q(deraro)167 b(Da)o(vid)15 b(A.)g(Mo)q(on)299 +b(Leonard)16 b(Zubk)o(o\013)71 1803 y(As)e(a)h(compromise,)g(it)g(w)o(as)f +(agreed)h(that)f(it)h(w)o(as)f(w)o(orth)g(de\014ning)j(a)d(family)i(of)e +(languages)h(in)h(suc)o(h)f(a)g(w)o(a)o(y)0 1860 y(that)e(an)o(y)f(program)g +(written)i(in)g(the)f(language)h(de\014ned)g(w)o(ould)g(run)f(in)h(an)o(y)f +(language)h(in)g(the)f(family)l(.)20 b(Th)o(us,)13 b(a)0 1916 +y(sort)f(of)g(subset)g(w)o(as)g(to)g(b)q(e)h(de\014ned,)h(though)e(it)h(w)o +(asn't)e(clear)i(an)o(y)o(one)f(w)o(ould)h(implemen)o(t)h(the)e(subset)h +(directly)l(.)71 1973 y(Some)h(of)g(the)g(Lisp)h(mac)o(hine)h(features)d +(that)h(w)o(ere)g(dropp)q(ed)h(w)o(ere)f(Fla)o(v)o(ors,)f(windo)o(w)i +(systems,)e(m)o(ultipro-)0 2029 y(cessing)j(\(including)i(m)o(ultitasking\),) +d(graphics,)g(and)h(lo)q(cativ)o(es.)71 2086 y(During)c(Summer)h(1981,)e +(Steele)j(w)o(ork)o(ed)d(on)i(an)f(initial)j(Common)c(Lisp)j(man)o(ual)e +(based)h(on)f(the)h(Spice)h(Lisp)0 2142 y(man)o(ual.)24 b(His)17 +b(initial)i(w)o(ork)c(w)o(as)h(assisted)h(b)o(y)f(Bro)q(oks,)g(Sc)o(herlis,)i +(and)f(Gabriel.)25 b(Sc)o(herlis)18 b(pro)o(vided)f(sp)q(eci\014c)0 +2198 y(assistance)c(with)g(the)g(t)o(yp)q(e)f(system,)h(mostly)f(in)i(the)e +(form)g(of)h(informal)g(advice)g(to)f(Steele.)20 b(Gabriel)14 +b(and)f(Steele)0 2255 y(regularly)j(discussed)h(issues)f(b)q(ecause)g +(Gabriel)g(w)o(as)e(living)j(at)e(Steele's)h(home)f(during)h(that)e(summer.) +71 2311 y(The)19 b(draft,)g(called)h(the)g(Swiss)f(Cheese)h(Edition|b)q +(ecause)h(it)f(w)o(as)e(full)i(of)f(large)g(holes|w)o(as)g(partly)g(a)0 +2368 y(ballot)h(in)h(whic)o(h)f(v)m(arious)g(alternativ)o(es)g(and)g(y)o +(es/no)f(questions)i(w)o(ere)e(prop)q(osed.)34 b(Through)19 +b(a)g(pro)q(cess)h(of)0 2424 y(E-mail{based)h(discussion)g(and)f(v)o(oting,)h +(the)f(\014rst)f(k)o(ey)h(decisions)h(w)o(ere)f(made.)34 b(This)20 +b(w)o(as)f(follo)o(w)o(ed)h(b)o(y)g(a)0 2481 y(face-to-face)14 +b(meeting)i(in)f(No)o(v)o(em)o(b)q(er)g(of)f(1981,)f(where)i(the)g(\014nal)h +(decisions)g(on)f(the)g(more)f(di\016cult)i(questions)0 2537 +y(w)o(ere)f(settled.)71 2594 y(This)g(led)i(to)d(another)h(round)g(of)g +(re\014nemen)o(t)h(with)f(sev)o(eral)h(other)e(similar)j(drafts)d(and)i +(ballots.)71 2650 y(The)f(E-mail)i(discussions)g(w)o(ere)e(often)h(in)g(the)g +(form)f(of)g(prop)q(osals,)h(discussions,)g(and)g(coun)o(terprop)q(osals.)0 +2707 y(Co)q(de)h(examples)h(from)f(existing)h(soft)o(w)o(are)e(or)g(prop)q +(osed)i(new)g(syn)o(tax)e(w)o(ere)h(often)g(exc)o(hanged.)27 +b(All)18 b(E-mail)p eop +%%Page: 23 23 +23 22 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(23)0 45 y(w)o(as)14 b(arc)o(hiv)o(ed)g(on-line,)i(so)e(ev)o +(erything)h(w)o(as)e(a)o(v)m(ailable)j(for)e(quic)o(k)h(review)g(b)o(y)f(p)q +(eople)i(wishing)g(to)e(come)g(up)h(to)0 102 y(sp)q(eed)h(or)f(to)f(go)h(bac) +o(k)g(to)g(the)g(record.)71 158 y(This)21 b(st)o(yle)f(also)g(had)h(some)f +(dra)o(wbac)o(ks.)34 b(F)l(oremost)20 b(w)o(as)f(that)h(it)g(w)o(as)g(not)g +(p)q(ossible)i(to)e(observ)o(e)g(the)0 214 y(reactions)13 b(of)g(other)f(p)q +(eople,)j(for)d(example,)i(to)f(see)g(whether)g(some)g(p)q(oin)o(t)g(angered) +h(them,)f(whic)o(h)h(w)o(ould)f(mean)0 271 y(the)19 b(p)q(oin)o(t)f(w)o(as)g +(imp)q(ortan)o(t)g(to)g(them.)29 b(There)19 b(w)o(as)f(no)g(w)o(a)o(y)g(to)f +(see)i(that)f(an)g(argumen)o(t)g(had)g(gone)h(to)q(o)f(far)0 +327 y(or)f(had)i(little)g(supp)q(ort.)29 b(This)18 b(mean)o(t)g(that)f(some)h +(time)g(w)o(as)f(w)o(asted)g(and)i(that)e(carefully)i(crafted)f(written)0 +384 y(argumen)o(ts)c(w)o(ere)h(required)i(to)d(get)h(an)o(ything)g(done.)71 +440 y(Once)21 b(the)f(pro)q(cess)h(b)q(egan,)h(the)e(approac)o(h)g(to)g(the)g +(problem)h(c)o(hanged)g(from)f(just)g(a)g(consolidation)h(of)0 +497 y(existing)f(dialects,)i(whic)o(h)e(w)o(as)f(the)g(ob)o(vious)h +(direction)g(to)f(tak)o(e,)g(to)g(trying)h(to)e(design)j(The)e(Righ)o(t)h +(Thing)0 553 y([Ra)o(ymond,)f(1991].)29 b(Some)19 b(p)q(eople)h(to)q(ok)f +(the)g(view)g(that)f(this)h(w)o(as)f(a)h(go)q(o)q(d)g(time)g(to)f(rethink)i +(some)e(issues)0 610 y(and)c(to)e(abandon)i(the)g(goal)f(of)g(strict)g +(MacLisp)h(compatibilit)o(y)l(,)i(whic)o(h)e(w)o(as)e(so)i(imp)q(ortan)o(t)f +(to)f(the)i(early)g(Lisp-)0 666 y(Mac)o(hine)k(Lisp)h(designs.)28 +b(Some)18 b(issues,)g(suc)o(h)g(as)g(whether)f Fw(NIL)g Fx(is)i(b)q(oth)e(a)h +(sym)o(b)q(ol)g(and)f(a)h Fw(CONS)f Fx(cell,)i(w)o(ere)0 723 +y(not)c(rethough)o(t,)f(though)h(it)g(w)o(as)g(generally)h(agreed)f(that)g +(they)g(should)h(b)q(e.)71 779 y(One)h(issue)h(that)e(came)h(up)g(early)g(on) +g(is)g(w)o(orth)f(men)o(tioning,)i(b)q(ecause)g(it)f(is)g(at)g(the)g(heart)f +(of)g(one)h(of)g(the)0 835 y(ma)s(jor)10 b(attac)o(ks)g(on)i(Common)f(Lisp,)i +(whic)o(h)f(w)o(as)f(moun)o(ted)h(during)g(the)g(ISO)g(w)o(ork)f(on)g(Lisp)i +(\(see)f(section)g(2.12\).)0 892 y(This)17 b(is)g(the)g(issue)g(of)f(mo)q +(dularization,)i(whic)o(h)f(had)g(t)o(w)o(o)e(asp)q(ects:)23 +b(\(1\))16 b(whether)g(Common)g(Lisp)i(should)f(b)q(e)0 948 +y(divided)22 b(in)o(to)f(a)e(core)h(language)h(plus)g(mo)q(dules)g(and)g +(\(2\))e(whether)h(there)h(should)g(b)q(e)g(a)f(division)i(in)o(to)e(the)0 +1005 y(so-called)15 b(white,)f(y)o(ello)o(w,)g(and)g(red)g(pages.)19 +b(These)14 b(topics)g(app)q(ear)g(to)f(ha)o(v)o(e)g(b)q(een)i(blended)g(in)g +(the)f(discussion.)71 1061 y(\\White)j(pages")g(refers)g(to)g(the)h(man)o +(ual)f(prop)q(er,)h(and)g(an)o(ything)g(that)e(is)i(in)h(the)e(white)h(pages) +f(m)o(ust)g(b)q(e)0 1118 y(implemen)o(ted)k(someho)o(w)e(b)o(y)h(a)f(Lisp)i +(whose)e(dev)o(elop)q(ers)i(claim)g(it)f(is)g(a)f(Common)g(Lisp.)34 +b(\\Y)l(ello)o(w)20 b(pages")0 1174 y(refers)15 b(to)g(implemen)o +(tation-indep)q(end)q(en)o(t)j(pac)o(k)m(ages)d(that)f(can)i(b)q(e)f(loaded)h +(in,)g(for)f(example,)g Fw(TRACE)g Fx(and)g(sci-)0 1231 y(en)o(ti\014c)g +(subroutine)h(pac)o(k)m(ages.)j(The)c(\\red)f(pages")g(w)o(ere)g(in)o(tended) +i(to)e(describ)q(e)i(implemen)o(tation-dep)q(endent)0 1287 +y(routines,)f(suc)o(h)h(as)f(device)h(driv)o(ers.)71 1344 y(Common)d(Lisp)i +(w)o(as)f(not)f(brok)o(en)h(in)o(to)h(a)e(core)h(language)h(plus)g(la)o(y)o +(ers,)f(and)g(the)g(white/y)o(ello)o(w/red)h(pages)0 1400 y(division)i(nev)o +(er)f(materialized.)71 1456 y(F)l(our)d(more)g(drafts)f(w)o(ere)h(made|the)h +(Colander)g(Edition)g(\(July)h(29,)e(1982\),)e(the)j(Laser)f(Edition)i(\(No)o +(v)o(em-)0 1513 y(b)q(er)g(16,)e(1982\),)f(the)i(Excelsior)h(Edition)h +(\(July)e(15,)g(1983\),)e(and)i(the)h(Mary)e(P)o(oppins)i(Edition)g(\(No)o(v) +o(em)o(b)q(er)e(29,)0 1569 y(1983\).)18 b(Three)e(of)f(the)g(cute)g(names)h +(are)e(explained)k(b)o(y)d(their)h(subtitles:)335 1663 y(Colander:)k(Ev)o(en) +15 b(More)g(Holes)h(Than)f(Before|But)g(They're)h(Smaller!)453 +1720 y(Laser)f(Edition:)21 b(Supp)q(osed)16 b(to)f(b)q(e)h(Completely)g +(Coheren)o(t)409 1776 y(Mary)f(P)o(oppins)g(Edition:)21 b(Practically)c(P)o +(erfect)d(in)j(Ev)o(ery)d(W)l(a)o(y)0 1870 y(As)k(for)g(the)g(Excelsior)h +(Edition,)h(recall)f(that)f(\\excelsior")g(is)h(not)f(only)h(a)f(term)f(of)h +(exhortation)g(but)g(also)g(a)0 1926 y(name)d(for)g(shredded)h(w)o(o)q(o)q(d) +f(or)g(pap)q(er)g(suitable)i(for)d(use)i(as)f(pac)o(king)g(material.)71 +1983 y(Virtually)h(all)h(tec)o(hnical)g(decisions)g(w)o(ere)e(completed)i(b)o +(y)e(early)h(1983,)e(but)h(it)h(w)o(as)f(almost)g(a)g(y)o(ear)g(b)q(efore)0 +2039 y(the)20 b(b)q(o)q(ok)h Fm(Common)g(Lisp:)29 b(The)21 +b(L)n(anguage)e Fx(w)o(ould)i(b)q(e)g(a)o(v)m(ailable,)h(ev)o(en)f(with)g(a)f +(fast)f(publishing)k(job)d(b)o(y)0 2096 y(Digital)c(Press.)71 +2152 y(The)f(declared)h(goals)f(of)g(the)g(Common)g(Lisp)h(Group,)f +(paraphrased)g(from)f([CL)l(TL1,)h(1984]:)68 2238 y Fk(\017)23 +b Fx(Commonalit)o(y:)j(Common)18 b(Lisp)i(originated)g(in)f(an)g(attempt)f +(to)g(fo)q(cus)h(the)g(w)o(ork)f(of)g(sev)o(eral)h(imple-)114 +2294 y(men)o(tation)c(groups,)f(eac)o(h)i(of)e(whic)o(h)j(w)o(as)d +(constructing)i(successor)f(implemen)o(tations)i(of)e(MacLisp)h(for)114 +2351 y(di\013eren)o(t)h(computers.)24 b(While)18 b(the)f(di\013erences)g +(among)f(the)h(sev)o(eral)g(implemen)o(tations)h(will)g(con)o(tin)o(ue)114 +2407 y(to)g(force)i(some)f(incompatibilities,)k(Common)c(Lisp)i(should)f +(serv)o(e)f(as)g(a)g(common)g(dialect)i(for)e(these)114 2464 +y(implemen)o(tations.)68 2537 y Fk(\017)k Fx(P)o(ortabilit)o(y:)31 +b(Common)20 b(Lisp)h(should)h(exclude)h(features)d(that)g(cannot)g(b)q(e)i +(easily)g(implemen)o(ted)g(on)114 2593 y(a)d(broad)h(class)g(of)g(computers.) +34 b(This)20 b(should)h(serv)o(e)f(to)f(exclude)j(features)d(requiring)i +(micro)q(co)q(de)g(or)114 2650 y(hardw)o(are)14 b(on)h(one)h(hand)f(as)g(w)o +(ell)i(as)d(features)h(generally)i(required)f(for)f(sto)q(c)o(k)f(hardw)o +(are,)g(for)h(example)114 2706 y(declarations.)p eop +%%Page: 24 24 +24 23 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(24)68 45 y Fk(\017)23 b Fx(Consistency:)d(The)c(in)o(terpreter)f +(and)g(compiler)i(should)f(exhibit)h(the)e(same)g(seman)o(tics.)68 +118 y Fk(\017)23 b Fx(Expressiv)o(eness:)33 b(Common)21 b(Lisp)h(should)h +(cull)g(the)e(b)q(est)h(exp)q(erience)i(from)c(a)h(v)m(ariet)o(y)h(of)f +(dialects,)114 175 y(including)d(not)c(only)i(MacLisp)g(but)f(In)o(terlisp.) +68 248 y Fk(\017)23 b Fx(Compatibilit)o(y:)30 b(Common)19 b(Lisp)i(should)g +(striv)o(e)f(to)f(b)q(e)i(compatible)g(with)f(Zetalisp,)h(MacLisp,)h(and)114 +304 y(In)o(terlisp,)16 b(in)g(that)e(order.)68 377 y Fk(\017)23 +b Fx(E\016ciency:)e(It)15 b(should)h(b)q(e)g(p)q(ossible)h(to)e(write)g(an)g +(optimizing)i(compiler)f(for)f(Common)f(Lisp.)68 450 y Fk(\017)23 +b Fx(P)o(o)o(w)o(er:)38 b(Common)25 b(Lisp)h(should)h(b)q(e)f(a)f(go)q(o)q(d) +g(system-building)j(language,)f(suitable)g(for)d(writing)114 +507 y(In)o(terlisp-lik)o(e)18 b(user-lev)o(el)f(pac)o(k)m(ages,)d(but)i(it)f +(will)i(not)e(pro)o(vide)g(those)g(pac)o(k)m(ages.)68 580 y +Fk(\017)23 b Fx(Stabilit)o(y:)e(Common)14 b(Lisp)i(should)h(ev)o(olv)o(e)e +(slo)o(wly)h(and)f(with)h(delib)q(eration.)0 700 y Fu(2.10.2)52 +b(Early)18 b(Rum)o(blings)0 786 y Fx(The)c(Common)f(Lisp)i(de\014nition)g +(pro)q(cess)f(w)o(as)f(not)g(all)h(rosy)l(.)19 b(Throughout)13 +b(there)h(w)o(as)f(a)g(feeling)i(among)e(some)0 842 y(that)i(they)g(w)o(ere)g +(b)q(eing)i(railroaded)f(or)f(that)f(things)i(w)o(ere)f(not)g(going)h(w)o +(ell.)21 b(The)15 b(In)o(terlisp)i(group)e(had)h(input)0 899 +y(in)g(the)f(balloting)i(pro)q(cess,)e(but)g(at)g(one)g(p)q(oin)o(t)h(they)f +(wrote:)114 984 y(The)g(In)o(terlisp)i(comm)o(unit)o(y)e(is)h(in)g(a)f(bit)h +(of)f(a)g(quandary)g(ab)q(out)g(what)g(our)g(con)o(tribution)h(to)f(this)114 +1041 y(endea)o(v)o(or)k(should)i(b)q(e.)34 b(It)20 b(is)h(clear)f(that)f +(Common)g(Lisp)i(is)g(not)e(going)h(to)f(settle)h(v)o(ery)g(man)o(y)114 +1097 y(languages)15 b(features)g(in)h(In)o(terlisp's)g(fa)o(v)o(or.)i(What)d +(should)h(w)o(e)f(do?)71 1182 y(P)o(art)k(of)i(the)g(problem)g(w)o(as)f(the)h +(strength)g(of)f(the)h(Lisp)h(mac)o(hine)g(companies)g(and)f(the)g(need)h +(for)e(the)0 1239 y(Common)15 b(Lisp)h(Group)f(to)g(k)o(eep)h(them)f(within)i +(the)e(fold,)h(whic)o(h)g(b)q(esto)o(w)o(ed)f(on)h(them)f(a)g(particularly)i +(strong)0 1295 y(brand)e(of)g(p)q(o)o(w)o(er.)20 b(On)15 b(this)h(p)q(oin)o +(t,)f(one)h(of)e(the)i(p)q(eople)g(in)g(the)g(early)f(Common)g(Lisp)h(Group)f +(put)g(it:)114 1381 y(Sorry)l(,)j(but)g(the)g(curren)o(t)f(v)o(ersion)h +([draft])f(really)i(giv)o(es)f(a)f(feeling)j(of)d(`w)o(ell,)i(what's)e(the)h +(largest)114 1437 y(subset)i(of)h(Lisp-Mac)o(hine)h(Lisp)g(w)o(e)e(can)h(try) +f(to)g(force)g(do)o(wn)h(ev)o(ery)o(one's)f(throat,)g(and)h(call)h(a)114 +1494 y(standard?')71 1579 y(The)16 b(Lisp)i(mac)o(hine)f(folks)g(had)f(a)g +(\015a)o(v)o(or)g(of)g(argumen)o(t)g(that)f(w)o(as)h(hard)g(to)g(con)o(tend)h +(with,)g(namely)g(that)0 1636 y(they)h(had)h(exp)q(erience)h(with)f(large)f +(soft)o(w)o(are)f(systems)h(and)g(in)h(that)f(realm)g(the)h(particular)g +(solutions)g(they)0 1692 y(had)f(come)f(up)h(with)g(w)o(ere,)f(according)h +(to)f(them,)h(The)f(Righ)o(t)h(Thing.)28 b(The)17 b(net)h(e\013ect)f(w)o(as)g +(that)g(Common)0 1749 y(Lisp)f(grew)f(and)g(grew.)71 1805 y(One)j(w)o(ould)g +(think)g(that)f(the)h(v)o(oices)g(of)f(the)g(sto)q(c)o(k)g(mac)o(hine)i(cro)o +(wd,)e(who)g(had)h(to)f(write)h(compilers)h(for)0 1862 y(Common)11 +b(Lisp,)i(w)o(ould)g(ha)o(v)o(e)e(ob)s(jected,)h(but)g(the)g(t)o(w)o(o)f +(strongest)g(v)o(oices|Steele)i(and)g(Gabriel|w)o(ere)f(feeling)0 +1918 y(their)k(oats)f(o)o(v)o(er)f(their)i(abilit)o(y)h(to)e(write)h(a)f(p)q +(o)o(w)o(erful)h(compiler)h(to)e(foil)h(the)g(complexities)h(of)e(Common)g +(Lisp.)0 1975 y(One)i(often)f(heard)g(them,)g(and)g(later)g(Mo)q(on,)g +(remark)f(that)h(a)g(\\su\016cien)o(tly)h(smart)e(compiler")i(could)g(solv)o +(e)f(a)0 2031 y(particular)d(problem.)19 b(Prett)o(y)11 b(so)q(on)h(the)h +(core)f(group)g(w)o(as)f(quoting)h(this)h(\\SSC")f(argumen)o(t)f(regularly)l +(.)20 b(\(Later,)0 2087 y(in)c(the)f(mouths)g(of)g(the)g(lo)o(y)o(al)h(opp)q +(osition,)f(it)h(b)q(ecame)g(a)f(term)f(of)h(mild)i(derision.\))71 +2144 y(The)h(core)h(group)f(ev)o(en)o(tually)h(b)q(ecame)g(the)g(\\authors")e +(of)h(CL)l(TL1:)27 b(Steele,)20 b(Scott)e(F)l(ahlman,)h(Gabriel,)0 +2200 y(Da)o(vid)i(Mo)q(on,)h(and)f(Daniel)h(W)l(einreb.)38 +b(This)22 b(group)e(shouldered)j(the)e(resp)q(onsibilit)o(y)i(for)e(pro)q +(ducing)h(the)0 2257 y(language)17 b(sp)q(eci\014cation)h(do)q(cumen)o(t)f +(and)f(conducting)i(its)e(review.)25 b(The)16 b(self-adopted)i(name)e(for)g +(the)g(group)0 2313 y(w)o(as)e(the)i(\\Quinquevirate")g(or,)f(more)f +(informally)l(,)i(the)g(\\Gang)e(of)h(Fiv)o(e".)0 2433 y Fu(2.10.3)52 +b(The)18 b(Critique)f(of)h(Comm)n(on)c(Lisp)0 2519 y Fx(A)o(t)d(the)g(1984)f +(A)o(CM)h(Symp)q(osium)h(on)g(Lisp)g(and)f(F)l(unctional)i(Programming,)e(Ro) +q(d)h(Bro)q(oks)f(and)g(Gabriel)h(brok)o(e)0 2576 y(rank)g(and)h(deliv)o +(ered)h(the)f(stunning)h(op)q(ening)f(pap)q(er,)h(\\A)e(Critique)i(of)e +(Common)f(Lisp")j([Bro)q(oks,)e(1984].)17 b(This)0 2632 y(w)o(as)c(all)i(the) +f(more)g(stunning)h(b)q(ecause)f(Gabriel)h(and)f(Bro)q(oks)g(w)o(ere)g +(founders)g(of)f(a)h(compan)o(y)g(whose)g(business)p eop +%%Page: 25 25 +25 24 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(25)0 45 y(plan)14 b(w)o(as)e(to)h(b)q(ecome)h(the)f(premier)h +(Common)f(Lisp)h(compan)o(y)l(.)19 b(F)l(ahlman,)14 b(on)f(hearing)h(the)f +(sp)q(eec)o(h)h(deliv)o(ered)0 102 y(b)o(y)h(Gabriel,)h(called)h(it)e +(traitorous.)71 158 y(This)h(pap)q(er)g(w)o(as)g(only)g(the)g(\014rst)g(in)g +(a)g(string)g(of)f(critiques)i(of)f(Common)f(Lisp;)i(man)o(y)f(of)f(those)h +(critiques)0 214 y(quoted)d(this)g(\014rst)g(one.)19 b(The)13 +b(high)h(p)q(oin)o(ts)f(of)f(the)h(pap)q(er)g(rev)o(eal)h(a)e(series)i(of)e +(problems)h(that)g(pro)o(v)o(ed)f(to)g(plague)0 271 y(Common)i(Lisp)j +(throughout)d(the)i(decade.)71 327 y(This)g(theme)h(reapp)q(eared)f(in)h(the) +f(history)g(of)g(Common)g(Lisp)h(through)f(the)g(emergence)g(of)g(a)g(n)o(um) +o(b)q(er)g(of)0 384 y(\\unCommon")g(Lisps,)h(straining,)g(p)q(erhaps,)g(the)g +(tolerance)g(of)f(ev)o(en)g(the)h(most)f(t)o(wisted)g(lo)o(v)o(ers)g(of)g(o)o +(v)o(erused)0 440 y(puns.)38 b(Eac)o(h)21 b(unCommon)g(Lisp)h(pro)q(claimed)h +(its)e(b)q(etter)g(approac)o(hes)g(to)f(some)h(of)f(the)i(shortcomings)e(of)0 +497 y(Common)e(Lisp.)33 b(Examples)19 b(of)g(Lisp)h(dialects)g(that)f(ha)o(v) +o(e)f(o\016cially)j(or)d(uno\016cially)j(declared)f(themselv)o(es)0 +553 y(\\unCommon)d(Lisps")h(at)e(one)i(time)f(or)g(another)g(are)g(Lisp370,)h +(Sc)o(heme,)g(EuLisp,)g(and)g(m)o(uLisp.)27 b(This)18 b(w)o(as)0 +610 y(clearly)f(an)e(attempt)g(to)g(distance)h(themselv)o(es)h(from)d(the)i +(p)q(erceiv)o(ed)h(shortcomings)f(of)f(Common)g(Lisp,)h(but,)0 +666 y(less)f(clearly)l(,)g(their)g(use)g(of)e(this)i(term)f(attests)f(to)g +(the)i(apparen)o(t)f(and)g(real)h(strength)e(of)h(Common)g(Lisp)h(as)f(the)0 +723 y(primary)k(Lisp)g(dialect.)28 b(T)l(o)18 b(de\014ne)g(a)f(Lisp)i(as)e +(standing)h(in)g(con)o(trast)f(to)f(another)i(dialect)g(is)g(to)f(admit)h +(the)0 779 y(supremacy)d(of)g(that)g(other)f(dialect.)22 b(\(Imagine)15 +b(F)l(ord)g(adv)o(ertising)h(the)f(Mustang)f(as)h(\\the)g(unCorv)o(ette".\)) +71 835 y(More)e(than)g(an)o(y)h(other)f(single)i(phenomenon,)g(this)f(b)q +(eha)o(vior)h(demonstrates)e(one)h(of)f(the)h(k)o(ey)g(ingredien)o(ts)0 +892 y(of)h(Lisp)h(div)o(ersi\014cation:)22 b(extreme|almost)15 +b(juv)o(enile|riv)m(alry)j(b)q(et)o(w)o(een)e(dialect)g(groups.)71 +948 y(W)l(e)e(ha)o(v)o(e)f(already)i(seen)f(Lisp370)g(and)h(Sc)o(heme.)20 +b(EuLisp)15 b(is)g(the)f(Europ)q(ean)g(resp)q(onse)h(to)e(Common)g(Lisp,)0 +1005 y(dev)o(elop)q(ed)i(as)e(the)g(lingua)i(franca)e(for)f(Lisp)j(in)f +(Europ)q(e.)20 b(Its)13 b(primary)g(c)o(haracteristics)h(are)f(that)f(it)i +(is)g(a)f(Lisp-1)0 1061 y(\(no)18 b(separate)g(function)i(and)e(v)m(ariable)i +(namespaces\),)f(has)g(a)f(CLOS-st)o(yle)i(generic-function{t)o(yp)q(e)g(ob)s +(ject-)0 1118 y(orien)o(ted)f(system)g(in)o(tegrated)f(from)g(the)h(ground)g +(up,)h(has)f(a)f(built-in)k(mo)q(dule)e(system,)f(and)g(is)g(de\014ned)h(in)0 +1174 y(la)o(y)o(ers)g(to)f(promote)g(the)h(use)h(of)e(the)i(Lisp)g(on)f +(small,)h(em)o(b)q(edded)h(hardw)o(are)d(and)h(educational)i(mac)o(hines.)0 +1231 y(Otherwise,)f(EuLisp)g(is)f(Common-Lisp{lik)o(e.)34 b(The)20 +b(de\014nition)h(of)e(EuLisp)i(to)q(ok)e(a)g(long)h(time;)h(started)e(in)0 +1287 y(1986,)13 b(it)i(w)o(asn't)e(un)o(til)i(1990)e(that)h(the)g(\014rst)g +(implemen)o(tation)i(w)o(as)e(a)o(v)m(ailable)i(\(in)o(terpreter-only\))e +(along)h(with)0 1344 y(a)g(nearly)i(complete)f(language)g(sp)q +(eci\014cation.)23 b(Nev)o(ertheless,)16 b(the)g(la)o(y)o(ered)g +(de\014nition,)h(the)f(mo)q(dule)h(system,)0 1400 y(and)d(the)f(ob)s +(ject-orien)o(tedness)h(from)e(the)i(start)e(demonstrate)g(that)h(new)h +(lessons)f(can)h(b)q(e)g(learned)g(in)g(the)g(Lisp)0 1456 y(w)o(orld.)0 +1578 y Fo(2.11)56 b(Other)18 b(Lisp)g(Dialects:)23 b(1980{1984)0 +1664 y Fx(The)14 b(rest)g(of)g(the)g(w)o(orld)h(did)g(not)f(stand)g(still)h +(while)h(Common)e(Lisp)h(w)o(as)e(dev)o(elop)q(ed,)j(though)e(Common)g(Lisp)0 +1720 y(w)o(as)g(the)i(fo)q(cus)f(of)g(a)g(lot)g(of)g(atten)o(tion.)0 +1841 y Fu(2.11.1)52 b(Lisp)18 b(Dialects)h(on)f(Sto)q(c)o(k)f(Hardw)o(are)0 +1926 y Fx(P)o(ortable)f(Standard)h(Lisp)h(spread)e(to)g(the)h(V)-5 +b(AX,)16 b(DECsystem-20,)g(a)g(v)m(ariet)o(y)h(of)f(MC68000)e(mac)o(hines,)k +(and)0 1983 y(the)h(Cra)o(y-1.)28 b(Its)19 b(Emo)q(de)f(en)o(vironmen)o(t)h +(\(later)f(Nmo)q(de\))h(pro)o(v)o(ed)f(app)q(ealing)i(to)e(Hewlett-P)o(ac)o +(k)m(ard,)h(whic)o(h)0 2039 y(\\pro)q(ductized")d(it)g(in)g(the)f(face)g(of)g +(a)g(gro)o(wing)f(Common)h(Lisp)h(presence.)71 2096 y(F)l(ranz)f(Lisp)j(w)o +(as)d(p)q(orted)h(to)f(man)o(y)h(systems)f(and)i(it)f(b)q(ecame)h(the)f(w)o +(orkhorse)f(sto)q(c)o(k)g(hardw)o(are)g(Lisp)j(for)0 2152 y(the)d(y)o(ears)g +(leading)h(up)g(to)f(the)g(general)h(a)o(v)m(ailabilit)o(y)h(of)e(Common)f +(Lisp)i(in)h(1985{1986.)71 2209 y(In)j(the)g(mark)o(et,)f(the)h(Dolphin)h(w)o +(as)e(taking)g(a)h(b)q(eating)g(in)g(the)g(p)q(erformance)g(sw)o(eepstak)o +(es,)g(primarily)0 2265 y(b)q(ecause)f(it)f(w)o(as)f(a)g(slo)o(w)h(mac)o +(hine)g(that)f(ran)h(the)g(In)o(terlisp)h(virtual)g(mac)o(hine.)28 +b(The)18 b(e\013orts)f(of)g(Xero)o(x)g(w)o(ere)0 2322 y(aimed)12 +b(at)e(p)q(orting)h(and)h(p)q(erformance,)f(with)h(little)g(atten)o(tion)f +(to)f(impro)o(ving)i(the)f(dialect)h(or)f(the)g(en)o(vironmen)o(t,)0 +2378 y(though)k(w)o(ork)f(con)o(tin)o(ued)i(in)g(this)g(area.)j(The)d(main)f +(In)o(terlisp)i(dev)o(elop)q(ers)f(w)o(ere)f(busy)h(tuning.)71 +2434 y(In)o(terlisp/V)-5 b(AX)15 b(made)e(an)h(app)q(earance,)g(but)f(has)h +(to)f(b)q(e)h(regarded)g(as)f(a)g(failure)i(with)f(three)f(con)o(tributing)0 +2491 y(causes:)23 b(\(1\))16 b(it)g(pro)o(vided)i(compatibilit)o(y)g(with)f +(In)o(terlisp-10,)h(the)f(branc)o(h)f(of)h(the)f(In)o(terlisp)i(family)g(do)q +(omed)0 2547 y(b)o(y)f(the)h(ev)o(en)o(tual)f(demise)h(of)f(the)h(PDP-10,)e +(rather)h(than)g(with)g(In)o(terlisp-D;)i(\(2\))d(it)h(pro)o(vided)i(only)e +(a)g(stop-)0 2604 y(and-cop)o(y)e(garbage)e(collector,)i(whic)o(h)h(has)e +(particularly)i(bad)f(p)q(erformance)f(on)h(a)f(V)-5 b(AX;)14 +b(and)h(\(3\))f(as)g(the)g(rest)p eop +%%Page: 26 26 +26 25 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(26)0 45 y(of)17 b(the)g(Lisp)h(w)o(orld,)g(including)i(the)d(In)o +(terlisp)i(w)o(orld,)e(\015o)q(c)o(k)o(ed)g(to)g(p)q(ersonal)h(Lisp)g(mac)o +(hines,)g(the)f(V)-5 b(AX)18 b(w)o(as)0 102 y(nev)o(er)d(tak)o(en)g +(seriously)h(for)f(Lisp)h(purp)q(oses)g(except)g(b)o(y)f(a)g(small)h(n)o(um)o +(b)q(er)f(of)g(businesses.)71 158 y(In)g(F)l(rance,)g(J)o(\023)-21 +b(er^)e(ome)14 b(Chailloux)j(and)e(his)h(colleagues)g(dev)o(elop)q(ed)h(a)d +(new)i(dialect)g(of)e(Lisp)j(called)f(Le)p 1839 158 14 2 v +17 w(Lisp.)0 214 y(The)k(dialect)g(w)o(as)f(reminiscen)o(t)i(of)d(MacLisp)j +(and)e(fo)q(cused)h(on)g(p)q(ortabilit)o(y)g(and)f(e\016ciency)l(.)34 +b(It)20 b(needed)h(to)0 271 y(b)q(e)f(p)q(ortable)g(b)q(ecause)g(the)g +(computer)f(situation)h(in)g(Europ)q(e)g(w)o(as)f(not)g(as)g(clear)h(as)f(it) +h(w)o(as)e(in)i(the)g(US)g(for)0 327 y(Lisp.)i(Lisp)17 b(mac)o(hines)g(w)o +(ere)e(dominan)o(t)h(for)f(Lisp)h(in)h(the)f(US,)f(but)h(in)g(Europ)q(e)g +(these)g(mac)o(hines)h(w)o(ere)e(not)g(as)0 384 y(a)o(v)m(ailable)k(and)f +(often)f(w)o(ere)g(prohibitiv)o(ely)i(exp)q(ensiv)o(e.)28 b(Researc)o(h)18 +b(labs)g(in)g(Europ)q(e)g(frequen)o(tly)g(acquired)g(or)0 440 +y(w)o(ere)f(giv)o(en)h(a)f(range)h(of)f(p)q(eculiar)i(mac)o(hines)g(\(from)d +(the)i(US)f(p)q(ersp)q(ectiv)o(e\).)28 b(Therefore,)18 b(p)q(ortabilit)o(y)h +(w)o(as)d(a)0 497 y(m)o(ust.)71 553 y(The)f(exp)q(erience)i(with)e(Vlisp)i +(taugh)o(t)d(Chailloux)i(that)e(p)q(erformance)i(and)f(p)q(ortabilit)o(y)h +(can)f(go)f(together,)0 610 y(and,)k(extending)h(some)e(of)g(the)h(Vlisp)h +(tec)o(hniques,)g(his)g(group)e(w)o(as)g(able)h(to)f(ac)o(hiev)o(e)h(their)g +(goals.)27 b(By)18 b(1984)0 666 y(their)d(dialect)h(ran)e(on)h(ab)q(out)f +(ten)h(di\013eren)o(t)f(mac)o(hines)i(and)e(demonstrated)g(p)q(erformance)h +(v)o(ery)f(m)o(uc)o(h)h(b)q(etter)0 723 y(than)h(that)g(of)g(F)l(ranz)h +(Lisp,)g(the)g(most)f(comparable)h(alternativ)o(e.)24 b(On)17 +b(a)f(V)-5 b(AX-11/780,)15 b(Le)p 1633 723 V 17 w(Lisp)j(p)q(erformed)0 +779 y(ab)q(out)d(as)g(w)o(ell)h(as)f(Zetalisp)h(on)f(a)g(Sym)o(b)q(olics)h +(3600.)71 835 y(In)g(addition,)i(Le)p 373 835 V 17 w(Lisp)f(pro)o(vided)g(a)f +(full-\015edged)j(programming)c(en)o(vironmen)o(t)i(called)h(Ceyx.)23 +b(Ceyx)16 b(had)0 892 y(a)e(full)h(set)f(of)g(debugging)h(aids,)f(a)g +(full-screen,)i(m)o(ulti-windo)o(w)f(structure)f(editor)g(and)g(prett)o(y)g +(prin)o(ter,)g(and)g(an)0 948 y(ob)s(ject-orien)o(ted)h(programming)g +(extension,)g(also)h(called)g(Ceyx.)71 1005 y(The)g(Sc)o(heme)g(comm)o(unit)o +(y)g(grew)f(from)g(a)h(few)f(a\014cionados)h(to)g(a)f(m)o(uc)o(h)h(larger)f +(group,)h(c)o(haracterized)g(b)o(y)0 1061 y(an)h(in)o(terest)g(in)h(the)f +(mathematical)g(asp)q(ects)g(of)g(programming)f(languages.)25 +b(Sc)o(heme's)17 b(small)h(size,)g(ro)q(ots)e(in)0 1118 y(lam)o(b)q(da)k +(calculus,)i(and)e(generally)g(compact)f(seman)o(tic)h(underpinnings)i(b)q +(egan)e(to)f(mak)o(e)g(it)h(p)q(opular)g(as)f(a)0 1174 y(v)o(ehicle)j(for)d +(researc)o(h)h(and)g(teac)o(hing.)35 b(In)21 b(particular,)g(strong)e(groups) +h(of)g(Sc)o(heme)g(supp)q(orters)g(dev)o(elop)q(ed)0 1231 y(at)e(MIT,)g +(Indiana)i(Univ)o(ersit)o(y)l(,)g(and)f(Rice)h(Univ)o(ersit)o(y)l(.)32 +b(Most)17 b(of)i(these)f(groups)h(w)o(ere)f(started)g(b)o(y)h(MIT)f(or)0 +1287 y(Indiana)e(graduates)f(who)g(joined)h(the)f(facult)o(y)g(at)g(these)g +(sc)o(ho)q(ols.)71 1344 y(A)o(t)21 b(MIT,)g(under)h(the)f(guidance)i(of)e +(Gerry)g(Sussman)h(and)f(Hal)h(Ab)q(elson,)i(Sc)o(heme)e(w)o(as)f(adopted)h +(for)0 1400 y(teac)o(hing)14 b(undergraduate)g(computing.)20 +b(The)14 b(b)q(o)q(ok)h Fm(Structur)n(e)g(and)g(Interpr)n(etation)g(of)g +(Computer)h(Pr)n(o)n(gr)n(ams)0 1456 y Fx([Ab)q(elson,)g(1985])d(b)q(ecame)j +(a)f(classic)i(and)e(v)m(aulted)h(Sc)o(heme)g(to)f(notoriet)o(y)f(in)i(a)f +(larger)g(comm)o(unit)o(y)l(.)71 1513 y(Sev)o(eral)23 b(companies)g(sprang)f +(up)h(that)f(made)h(commercial)g(implemen)o(tations)h(of)e(Sc)o(heme.)43 +b(Cadence)0 1569 y(Researc)o(h)18 b(Systems)f(w)o(as)f(started)h(b)o(y)g(R.)h +(Ken)o(t)f(Dyb)o(vig;)h(its)g(Chez)g(Sc)o(heme)g(ran)f(on)g(v)m(arious)h(w)o +(orkstations.)0 1626 y(A)o(t)13 b(Seman)o(tic)g(Microsystems,)g(Will)i +(Clinger,)f(Anne)g(Hartheimer,)g(and)f(John)h(Ulric)o(h)g(pro)q(duced)h +(MacSc)o(heme)0 1682 y(for)j(the)h(Apple)h(Macin)o(tosh.)30 +b(PC)18 b(Sc)o(heme,)i(from)e(T)l(exas)h(Instrumen)o(ts,)g(ran)f(on)h(the)g +(IBM)g(PC)f(and)h(clones)0 1739 y(suc)o(h)d(as)e(the)i(one)f(TI)g(built)i +(and)e(sold.)71 1795 y(The)g(original)i Fm(R)n(evise)n(d)f(R)n(ep)n(ort)h(on) +f(Scheme)f Fx(w)o(as)g(tak)o(en)g(as)h(a)f(mo)q(del)h(for)f(future)h +(de\014nitions)h(of)f(Sc)o(heme,)0 1852 y(and)g(a)g(self-selected)i(group)e +(of)f(so-called)j(\\Sc)o(heme)e(authors")f(to)q(ok)h(on)g(the)g(role)g(of)g +(ev)o(olving)h(Sc)o(heme.)23 b(The)0 1908 y(rule)13 b(they)g(adopted)f(w)o +(as)g(that)g(features)g(could)h(b)q(e)h(added)f(only)g(b)o(y)f(unanimous)h +(consen)o(t.)19 b(After)12 b(a)h(fairly)g(short)0 1965 y(p)q(erio)q(d)k(in)g +(whic)o(h)f(certain)g(features)g(suc)o(h)g(as)f Fw(call-with-current-continu) +o(ation)d Fx(w)o(ere)k(added,)g(the)g(rate)0 2021 y(of)g(c)o(hange)g(of)f(Sc) +o(heme)i(slo)o(w)o(ed)f(do)o(wn)g(b)q(ecause)h(of)e(this)i(rule.)23 +b(Only)17 b(p)q(eer)g(pressure)g(in)f(a)g(highly)i(in)o(tellectual)0 +2077 y(group)d(could)h(con)o(vince)g(an)o(y)e(recalcitran)o(t)i(author)e(to)g +(c)o(hange)h(his)h(blac)o(kball.)21 b(As)15 b(a)g(result)g(there)g(is)h(a)e +(widely)0 2134 y(held)g(b)q(elief)i(that)c(whenev)o(er)i(a)e(feature)h(is)h +(added)g(to)e(Sc)o(heme,)i(it)f(is)h(clearly)g(The)g(Righ)o(t)f(Thing.)20 +b(F)l(or)12 b(example,)0 2190 y(only)17 b(in)g(late)f(1991)f(w)o(ere)h +(macros)f(added)i(to)e(the)h(language)g(in)h(an)f(app)q(endix|as)i(a)e +(partially)h(standardized)0 2247 y(facilit)o(y)l(.)71 2303 +y(There)c(emerged)h(a)f(series)h(of)g(Revised)h(Rep)q(orts,)e(called)j +Fm(The)e(R)n(evise)n(d,)g Fn(:)8 b(:)g(:)e Fm(,)15 b(R)n(evise)n(d)e(R)n(ep)n +(ort)i(on)g(Scheme)p Fx(.)0 2360 y(In)g(late)g(1991,)f Fm(The)h(R)n(evise)n +(d,)g(R)n(evise)n(d,)g(R)n(evise)n(d,)g(R)n(evise)n(d)g(R)n(ep)n(ort)h(on)g +(Scheme)e Fx(w)o(as)g(written)h(and)g(appro)o(v)o(ed;)0 2416 +y(it)g(is)h(a\013ectionately)f(called)i(\\R)556 2398 y Fj(4)576 +2416 y Fx(RS".)71 2473 y(Man)o(y)11 b(of)h(those)f(who)h(later)g(b)q(ecame)h +(mem)o(b)q(ers)f(of)g(the)g(Common)g(Lisp)h(Group)f(pro)q(claimed)h(a)f +(deep-seated)0 2529 y(lo)o(v)o(e)k(of)g(Sc)o(heme)h(and)f(a)g(not-so-secret)g +(desire)h(to)f(see)g(something)h(lik)o(e)g(it)g(b)q(ecome)g(the)f(next)g +(Lisp)i(standard.)0 2586 y(Ho)o(w)o(ev)o(er,)f(parts)g(of)g(the)g(Sc)o(heme)h +(and)g(Common)f(Lisp)i(comm)o(unities)f(b)q(ecame)g(sometimes)g(bitter)f(riv) +m(als)i(in)0 2642 y(the)c(latter)g(part)g(of)g(the)g(decade.)p +eop +%%Page: 27 27 +27 26 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(27)0 45 y Fu(2.11.2)52 b(Zetalisp)0 131 y Fx(Zetalisp)22 +b(w)o(as)f(the)g(name)g(of)g(the)g(Sym)o(b)q(olics)i(v)o(ersion)f(of)f +(Lisp-Mac)o(hine)i(Lisp.)39 b(Because)22 b(the)g(3600|the)0 +187 y(Sym)o(b)q(olics)h(second-generation)f(Lisp)h(mac)o(hine,)g(whic)o(h)f +(is)g(describ)q(ed)h(b)q(elo)o(w|w)o(as)f(programmed)e(almost)0 +244 y(en)o(tirely)15 b(in)g(Lisp,)g(Zetalisp)g(came)f(to)f(require)i(a)f +(signi\014can)o(t)h(set)f(of)f(capabilities)k(not)c(seen)i(in)g(an)o(y)e +(single)j(Lisp)0 300 y(b)q(efore)e(this)g(p)q(oin)o(t.)19 b(Not)13 +b(only)h(w)o(as)f(Zetalisp)h(used)g(for)f(ordinary)g(programming,)g(but)h +(the)f(op)q(erating)h(system,)0 357 y(the)k(editor,)h(the)f(compiler,)h(the)f +(net)o(w)o(ork)f(serv)o(er,)h(the)g(garbage)f(collector,)i(and)f(the)h(windo) +o(w)f(system)f(w)o(ere)0 413 y(all)h(programmed)e(in)h(Zetalisp,)h(and)f(b)q +(ecause)g(the)g(earlier)h(Lisp-Mac)o(hine)h(Lisp)f(w)o(as)e(not)g(quite)h(up) +h(to)e(these)0 470 y(tasks,)e(Zetalisp)i(w)o(as)e(expanded)j(to)d(handle)j +(them.)71 526 y(The)i(primary)g(addition)h(to)f(Lisp-Mac)o(hine)i(Lisp)g(w)o +(as)d(Fla)o(v)o(ors,)h(a)f(so-called)j(non-hierarc)o(hical)g(ob)s(ject-)0 +583 y(orien)o(ted)e(language,)h(a)e(m)o(ultiple)j(inheritance,)g +(message-passing)e(system)f(dev)o(elop)q(ed)i(from)e(some)h(ideas)g(of)0 +639 y(Ho)o(w)o(ard)d(Cannon.)26 b(The)18 b(dev)o(elopmen)o(t)g(of)e(the)i +(ideas)g(in)o(to)f(a)g(coheren)o(t)g(system)g(w)o(as)f(largely)i(due)g(to)f +(Da)o(vid)0 695 y(A.)e(Mo)q(on,)f(though)h(Cannon)h(con)o(tin)o(ued)g(to)e +(pla)o(y)i(a)f(k)o(ey)g(role.)71 752 y(The)e(features)h(of)f(Fla)o(v)o(ors)f +(w)o(as)h(driv)o(en)h(b)o(y)g(the)f(needs)i(of)e(the)g(Lisp)i(Mac)o(hine)f +(windo)o(w)g(system,)f(whic)o(h,)i(for)0 808 y(a)h(long)g(time,)h(w)o(as)e +(regarded)h(as)g(the)g(only)h(example)g(of)f(a)g(system)f(whose)h +(programming)g(required)h(m)o(ultiple)0 865 y(inheritance.)71 +921 y(Other)22 b(notew)o(orth)o(y)f(additions)j(w)o(ere)e Fw(FORMAT)g +Fx(and)g Fw(SETF)p Fx(,)g(complex)h(arra)o(ys,)f(and)h(complex)g(lam)o(b)q +(da-)0 978 y(lists)e(for)e(optional)h(and)g(k)o(eyw)o(ord-named)g(argumen)o +(ts.)33 b(\()p Fw(FORMAT)19 b Fx(is)h(a)g(mec)o(hanism)g(for)g(pro)q(ducing)h +(string)0 1034 y(output)11 b(con)o(v)o(enien)o(tly)i(b)o(y)l(,)f(basically)l +(,)i(taking)e(a)f(pre-determined)i(string)f(with)g(placeholders)h(and)f +(substituting)0 1091 y(computed)h(v)m(alues)h(or)f(strings)g(for)f(those)h +(placeholders|though)i(it)e(b)q(ecame)h(m)o(uc)o(h)e(more)h(complex)h(than)f +(this)0 1147 y(b)q(ecause)20 b(the)f(placeholders)h(included)i(iteration)d +(primitiv)o(es)h(for)e(pro)q(ducing)i(lists)g(of)e(results,)i(plurals,)h(and) +0 1204 y(other)12 b(suc)o(h)i(exotica.)19 b(It)13 b(ma)o(y)f(b)q(e)h(lo)q +(osely)h(c)o(haracterized)g(as)e(F)o(OR)l(TRAN)i Fw(FORMAT)e +Fx(statemen)o(ts)f(gone)i(b)q(erserk.)0 1260 y Fw(SETF)i Fx(is)g(discussed)i +(in)f(section)g(2.6.\))71 1316 y(One)f(of)e(the)i(factors)e(in)i(the)f +(acceptance)h(and)f(imp)q(ortance)h(of)e(Zetalisp)i(w)o(as)f(the)g +(acceptance)h(of)f(the)g(Lisp)0 1373 y(mac)o(hines,)k(whic)o(h)f(is)g +(discussed)i(in)e(the)g(next)g(section.)25 b(Because)17 b(Lisp)h(mac)o +(hines|particularly)i(Sym)o(b)q(olics)0 1429 y(Lisp)f(mac)o(hines|w)o(ere)f +(the)g(most)e(p)q(opular)j(v)o(ehicles)g(for)e(real)g(Lisp)i(w)o(ork)d(in)j +(a)e(commercial)h(setting,)g(there)0 1486 y(w)o(ould)d(gro)o(w)e(to)h(b)q(e)h +(an)g(explicit)i(b)q(elief,)f(fostered)e(b)o(y)h(Sym)o(b)q(olics)h(itself,)f +(that)f(Lisp-Mac)o(hine)i(Lisp)g(\(Zetalisp\))0 1542 y(w)o(as)i(the)i +(primary)f(dialect)h(for)f(Lisp.)32 b(Therefore,)20 b(the)f(Sym)o(b)q(olics)i +(folks)e(w)o(ere)g(tak)o(en)g(v)o(ery)f(seriously)j(as)d(a)0 +1599 y(strong)c(p)q(olitical)k(force)d(and)g(a)g(required)h(p)q(olitical)i +(ally)e(for)e(the)i(success)g(of)e(a)h(wider)h(Lisp)g(standard.)0 +1719 y Fu(2.11.3)52 b(Early)18 b(Lisp)g(Mac)o(hine)g(Companies)0 +1805 y Fx(There)g(w)o(ere)g(\014v)o(e)g(primary)g(Lisp)h(mac)o(hine)g +(companies:)27 b(Sym)o(b)q(olics;)20 b(LISP)f(Mac)o(hine,)g(Inc.)29 +b(\(LMI\);)18 b(Three)0 1861 y(Riv)o(ers)e(Computer,)f(later)g(renamed)h(PER) +o(Q)g(after)e(its)i(principal)i(pro)q(duct;)d(Xero)o(x;)g(and)h(T)l(exas)f +(Instrumen)o(ts)0 1918 y(\(TI\).)71 1974 y(Of)e(these,)g(Sym)o(b)q(olics,)i +(LMI,)e(and)g(TI)h(all)g(used)f(basically)i(the)e(same)g(soft)o(w)o(are)e +(licensed)16 b(from)c(MIT)h(as)g(the)0 2030 y(basis)j(of)f(their)h +(o\013erings.)k(The)15 b(soft)o(w)o(are)f(included)k(the)d(Lisp)i(implemen)o +(tation,)f(the)g(op)q(erating)f(system,)g(the)0 2087 y(editor,)h(the)g(windo) +o(w)g(system,)g(the)g(net)o(w)o(ork)f(soft)o(w)o(are,)f(and)i(all)h(the)f +(utilities.)25 b(There)16 b(w)o(as)f(an)h(arrangemen)o(t)0 +2143 y(wherein)i(the)g(soft)o(w)o(are)d(w)o(ould)j(b)q(e)g(c)o(heaply)g(\(or) +e(freely\))i(a)o(v)m(ailable)h(as)e(long)g(as)g(impro)o(v)o(emen)o(ts)g(w)o +(ere)g(passed)0 2200 y(bac)o(k)e(to)g(MIT.)f(Therefore,)h(the)g(companies)h +(comp)q(eted)g(primarily)h(on)e(the)g(basis)h(of)e(hardw)o(are)h(p)q +(erformance)0 2256 y(but)i(secondarily)h(on)f(the)g(a)o(v)m(ailabilit)o(y)i +(of)d(adv)m(ances)i(in)f(the)g(common)g(soft)o(w)o(are)e(base)i(b)q(efore)g +(that)f(soft)o(w)o(are)0 2313 y(passed)g(bac)o(k)g(to)f(the)h(common)g +(source.)22 b(Some)16 b(of)f(the)h(companies)h(also)f(pro)q(duced)h +(proprietary)f(extensions,)0 2369 y(suc)o(h)g(as)e(C)h(and)h(F)o(OR)l(TRAN)g +(implemen)o(tations)g(from)f(Sym)o(b)q(olics.)71 2426 y(Xero)o(x)f(pro)q +(duced)j(the)e(D-mac)o(hines,)g(whic)o(h)h(ran)f(In)o(terlisp-D.)71 +2482 y(Three)h(Riv)o(ers)g(sold)h(a)e(mac)o(hine,)i(the)e(PER)o(Q,)h(that)f +(ran)h(either)h(a)e(P)o(ascal-based)h(op)q(erating)g(system)g(and)0 +2539 y(language)f(or)g(Spice)i(Lisp)f(\(and)f(later)g(a)g(Common)g(Lisp)h +(based)g(on)f(Spice)h(Lisp\).)71 2595 y(Th)o(us,)g(all)h(the)f(Lisp-mac)o +(hine)j(companies)e(started)e(out)h(with)g(existing)i(soft)o(w)o(are)c(and)j +(all)g(the)f(MacLisp-)0 2651 y(deriv)o(ed)g(Lisp-mac)o(hine)i(companies)e +(licensed)h(their)f(soft)o(w)o(are)d(from)i(a)f(univ)o(ersit)o(y)l(.)p +eop +%%Page: 28 28 +28 27 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(28)71 45 y(Of)15 b(these)g(companies,)g(Sym)o(b)q(olics)h(w)o(as)e +(most)g(successful)i(\(as)e(measured)h(b)o(y)g(n)o(um)o(b)q(er)g(of)f +(installations)j(at)0 102 y(the)h(end)g(of)f(the)h(pre-Common-Lisp)g(era\),)g +(follo)o(w)o(ed)g(b)o(y)f(Xero)o(x)g(and)h(TI,)f(though)h(TI)g(p)q(ossibly)h +(could)f(ha)o(v)o(e)0 158 y(claimed)f(the)e(most)f(installed)j(mac)o(hines)f +(on)f(the)h(basis)f(of)g(one)g(or)g(t)o(w)o(o)f(large)h(compan)o(y)g(purc)o +(hases.)71 214 y(Sym)o(b)q(olics)h(is)g(the)g(most)f(in)o(teresting)h(of)f +(these)g(companies)i(b)q(ecause)f(of)f(the)h(extreme)f(in\015uence)j(of)d +(Sym-)0 271 y(b)q(olics)f(on)d(the)i(direction)g(of)e(Common)h(Lisp;)h(ho)o +(w)o(ev)o(er,)f(w)o(e)g(do)f(not)h(w)o(an)o(t)f(to)g(claim)i(that)f(the)g +(other)f(companies)0 327 y(did)17 b(not)f(ha)o(v)o(e)f(strong)g +(signi\014cance.)24 b(The)16 b(p)q(opularit)o(y)h(of)e(Zetalisp|or)i(at)e +(least)h(its)g(apparen)o(t)g(in\015uence)i(on)0 384 y(the)d(other)g(p)q +(eople)i(in)f(the)f(Common)g(Lisp)h(group|stemmed)f(largely)h(from)f(the)g(p) +q(opularit)o(y)h(of)f(the)g(3600.)71 440 y(The)h(3600)f(w)o(as)g(a)h +(second-generation)h(Lisp)h(mac)o(hine,)e(the)h(\014rst)e(b)q(eing)j(a)e(v)o +(ersion)g(of)g(the)g(CADR)g(called)0 497 y(the)g(LM-2.)23 b(Both)16 +b(Sym)o(b)q(olics)i(and)e(LMI)h(started)e(their)i(businesses)h(b)o(y)e(pro)q +(ducing)h(essen)o(tially)h(the)e(CADR.)0 553 y(Ho)o(w)o(ev)o(er,)g(Sym)o(b)q +(olics's)j(business)f(plan)g(w)o(as)f(to)f(pro)q(duce)j(a)d(m)o(uc)o(h)i +(faster)e(Lisp)j(mac)o(hine)f(and)f(to)g(en)o(ter)g(the)0 610 +y(w)o(orkstation)d(sw)o(eepstak)o(es.)71 666 y(Sometimes)j(it)h(is)f(easy)g +(to)g(forget)f(that,)h(in)h(the)f(early)h(1980's,)d(w)o(orkstations)h(w)o +(ere)h(an)g(o)q(ddit)o(y)l(,)h(and)g(the)0 723 y(w)o(orkstations)10 +b(w)o(ere)i(generally)g(so)f(computationally)i(underp)q(o)o(w)o(ered)f(that)f +(man)o(y)g(p)q(ersons)h(did)h(not)e(tak)o(e)g(them)0 779 y(seriously)l(.)22 +b(The)16 b(PDP-10)f(still)i(o\013ered)e(v)m(astly)h(b)q(etter)g(p)q +(erformance)g(than)f(the)h(w)o(orkstations)e(and)i(it)g(simply)0 +835 y(w)o(as)f(not)g(ob)o(vious)h(that)f(engineers)h(w)o(ould)g(ev)o(er)g(w)o +(arm)e(up)i(to)f(them)h(or)f(that)f(they)i(w)o(ould)g(form)f(a)g(large)h(new) +0 892 y(mark)o(et.)j(F)l(urthermore,)14 b(it)h(w)o(as)g(not)f(clear)i(that)e +(a)h(Unix-based/C-based)h(w)o(orkstation)e(w)o(as)g(necessarily)j(the)0 +948 y(winner)h(either,)h(since)f(it)g(w)o(as)e(though)o(t)h(that)g +(applications)i(w)o(ould)f(driv)o(e)g(the)f(mark)o(et)f(more)h(than)h(soft)o +(w)o(are)0 1005 y(dev)o(elopmen)o(t.)j(Therefore,)14 b(it)i(w)o(as)e(not)h +(fo)q(olish)h(for)f(Sym)o(b)q(olics)h(to)f(ha)o(v)o(e)g(the)g(business)h +(plan)g(it)g(did.)71 1061 y(Sym)o(b)q(olics)11 b(and)g(LMI)g(w)o(ere)f +(founded)h(b)o(y)f(riv)m(als)i(at)d(the)i(MIT)f(AI)h(Lab,)g(with)g(Ric)o +(hard)g(Green)o(blatt)f(founding)0 1118 y(LMI)20 b(and)f(almost)g(ev)o(ery)o +(one)g(else)h(founding)g(Sym)o(b)q(olics,)h(notably)f(hac)o(k)o(ers)f(Da)o +(vid)g(Mo)q(on,)g(Dan)g(W)l(einreb,)0 1174 y(Ho)o(w)o(ard)14 +b(Cannon,)h(and)g(T)l(om)g(Knigh)o(t.)71 1231 y(One)i(of)f(the)h(factors)f +(in)h(the)g(adoption)g(of)g(Sym)o(b)q(olics)h(Lisp)g(mac)o(hines)f(and)g +(Zetalisp)h(w)o(as)e(the)g(fact)h(that)0 1287 y(the)j(\014rst)f(3600's)g(did) +i(not)e(ha)o(v)o(e)h(a)f(garbage)g(collector,)j(whic)o(h)e(mean)o(t)g(that)f +(the)h(p)q(erformance)g(p)q(enalt)o(y)g(of)0 1344 y(garbage)g(collecting)k(a) +d(large)g(address)g(space)h(w)o(as)f(not)f(observ)o(ed.)39 +b(Originally)23 b(the)f(3600)e(w)o(as)h(to)f(ha)o(v)o(e)h(a)0 +1400 y(Bak)o(er-st)o(yle)c(incremen)o(tal)h(stop-and-cop)o(y)e(collector)i +([Bak)o(er,)e(1978],)f(but)i(b)q(ecause)h(the)f(address)g(space)g(w)o(as)0 +1456 y(so)j(large,)i(ordinary)f(programs)e(did)j(not)e(exhaust)h(memory)f +(for)g(sev)o(eral)g(da)o(ys)h(and)f(in)o(tensiv)o(e)i(ones)f(could)0 +1513 y(run)e(for)f(ab)q(out)g(8)g(hours.)30 b(There)18 b(w)o(as)g(a)g +(facilit)o(y)i(for)e(sa)o(ving)g(the)h(running)g(image,)g(whic)o(h)h +(basically)g(did)f(a)0 1569 y(stop-and-cop)o(y)e(garbage)e(collection)k(to)d +(disk,)h(and)g(this)g(image)f(could)i(b)q(e)f(resumed.)25 b(Therefore,)16 +b(instead)h(of)0 1626 y(garbage)12 b(collecting)j(on-the-\015y)l(,)f(a)f +(programmer)f(w)o(ould)h(run)h(un)o(til)g(memory)f(w)o(as)f(exhausted,)i +(then)f(he)h(w)o(ould)0 1682 y(start)f(up)h(the)g(length)o(y)h(\(up)f(to)g +(sev)o(eral)g(hours\))f(pro)q(cess)i(of)e(disk-sa)o(ving,)i(and)g(he)f(w)o +(ould)g(restart)f(his)i(program)0 1739 y(after)f(dinner)j(or)e(the)g(next)g +(da)o(y)l(.)71 1795 y(The)j(incremen)o(tal)i(garbage)d(collector)i(w)o(as)f +(released)h(sev)o(eral)f(y)o(ears)g(after)g(the)g(\014rst)g(3600's.)28 +b(It)18 b(pro)o(v)o(ed)0 1852 y(to)c(ha)o(v)o(e)g(relativ)o(ely)i(bad)f(p)q +(erformance,)g(p)q(ossibly)h(due)f(to)f(paging)h(problems.)21 +b(Instead,)14 b(Mo)q(on)h(dev)o(elop)q(ed)h(an)0 1908 y(ephemeral)h(garbage)f +(collector)h(that)e(is)i(similar)g(to)f(the)g(Ungar)g(generation)h(sca)o(v)o +(enger)e(collector)i(dev)o(elop)q(ed)0 1965 y(for)11 b(Smalltalk)i([Ungar,)f +(1984].)17 b(With)12 b(generation)h(sca)o(v)o(enging,)f(ob)s(jects)f(are)h +(promoted)f(from)h(one)g(generation)0 2021 y(to)j(the)i(next)f(b)o(y)g(a)g +(stop-and-cop)o(y)g(pro)q(cess.)22 b(After)16 b(sev)o(eral)g(generations)h +(ob)s(jects)e(are)h(promoted)f(\(ten)o(ured\))0 2077 y(to)g(long-term)h +(storage.)21 b(The)16 b(idea)h(is)g(that)e(an)h(ob)s(ject)f(will)j(b)q(ecome) +f(garbage)e(so)q(on)h(after)f(its)h(creation,)g(so)f(if)0 2134 +y(y)o(ou)e(can)h(lo)q(ok)g(at)f(the)h(ages)f(of)g(ob)s(jects)g(and)h(concen)o +(trate)g(on)f(only)i(y)o(oung)e(ob)s(jects,)g(y)o(ou)g(will)j(get)d(most)g +(of)g(the)0 2190 y(garbage)h(and)i(b)q(ecause)g(a)f(small)h(w)o(orking)f(set) +g(is)g(main)o(tained)h(paging)g(p)q(erformance)f(is)h(go)q(o)q(d.)71 +2247 y(Ephemeral)j(garbage)e(collection)k([Mo)q(on,)d(1984])f(is)i(similar)h +(but)e(main)o(tains)h(a)f(few)h(consing)g(areas)f(rep-)0 2303 +y(resen)o(ting)j(generations)g(and)g(a)g(list)g(of)g(regions)g(of)f(memory)h +(where)g(p)q(oin)o(ters)g(to)f(ob)s(jects)h(in)g(the)g(consing)0 +2360 y(areas)15 b(w)o(ere)h(created,)g(and)g(those)g(regions)g(are)g(scanned) +h(in)g(a)e(stop-and-cop)o(y)h(op)q(eration,)h(mo)o(ving)f(from)f(one)0 +2416 y(generation)h(to)e(the)i(other.)k(Because)c(ob)s(jects)f(in)h +(Smalltalk)h(are)e(created)g(less)h(frequen)o(tly)g(than)f(in)i(Lisp,)f(the)0 +2473 y(tradeo\013s)e(are)h(a)g(little)h(di\013eren)o(t)g(and)f(the)g(data)g +(structures)g(are)g(di\013eren)o(t.)71 2529 y(The)20 b(ephemeral)i(garbage)d +(collector)i(pro)o(v)o(ed)g(e\013ectiv)o(e,)g(and)g(sev)o(eral)f(y)o(ears)g +(after)g(the)g(\014rst)g(3600)g(w)o(as)0 2586 y(sold,)f(an)g(e\013ectiv)o(e)g +(garbage)e(collector)i(w)o(as)f(op)q(erational.)30 b(It)19 +b(to)q(ok)f(a)g(while)i(for)e(users)g(to)g(get)g(used)h(to)f(the)0 +2642 y(p)q(erformance)c(di\013erences,)h(but)f(b)o(y)g(then)g(the)g(3600)e(w) +o(as)h(already)i(established)g(and)f(the)g(p)q(osition)h(of)e(the)h(3600)0 +2698 y(w)o(as)g(\014rmly)i(implan)o(ted.)p eop +%%Page: 29 29 +29 28 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(29)71 45 y(PER)o(Q)17 b(en)o(tered)g(the)g(mark)o(et)f(with)h(a)g +(p)q(o)q(orly)g(p)q(erforming)g(micro)q(co)q(ded)h(mac)o(hine)g(that)e(had)h +(b)q(een)h(used)0 102 y(as)g(a)g(do)q(cumen)o(t)g(preparation)g(computer.)29 +b(Scott)18 b(F)l(ahlman)g(w)o(as)f(in)o(v)o(olv)o(ed)i(with)g(the)f(compan)o +(y)g(and)g(when)0 158 y(Common)10 b(Lisp)i(made)f(its)g(debut,)h(the)f(Spice) +i(Lisp)f(co)q(de)f(w)o(as)f(a)h(nearly)g(complian)o(t)h(Common)e(Lisp,)j(so)d +(PER)o(Q's)0 214 y(w)o(as)k(the)i(\014rst)e(Common)h(Lisp)h(a)o(v)m(ailable)h +(on)e(a)g(Lisp)i(mac)o(hine.)71 271 y(The)d(original)h(PER)o(Q)f(and)g(its)h +(later)f(v)o(ersions)g(nev)o(er)g(made)g(m)o(uc)o(h)g(of)f(a)h(commercial)h +(impact)f(outside)h(the)0 327 y(Pittsburgh)g(area,)g(probably)g(b)q(ecause)h +(its)g(p)q(erformance)f(and)h(price-p)q(erformance)g(w)o(ere)f(relativ)o(ely) +h(p)q(o)q(or.)71 384 y(The)h(early)h(history)f(of)g(the)g(Xero)o(x)g(D-mac)o +(hines)h(is)g(discussed)h(ab)q(o)o(v)o(e.)26 b(Before)17 b(the)h(Common)e +(Lisp)j(era,)0 440 y(their)d(use)f(b)q(ecame)h(widespread)g(in)g(former)f(In) +o(terLisp-10)h(circles.)71 497 y(T)l(exas)e(Instrumen)o(ts)g(b)q(egan)h(to)e +(en)o(ter)h(the)h(Lisp)g(mac)o(hine)g(business)h(just)e(b)q(efore)h(CL)l(TL1) +f(w)o(as)g(published,)0 553 y(in)19 b(early)f(1984.)28 b(They)19 +b(b)q(egan)f(with)h(the)f(Viking)h(pro)s(ject)f(\(no)g(relation)g(to)g(their) +h(curren)o(t)f(implemen)o(tation)0 610 y(of)c(the)h(SP)l(AR)o(C)g(micropro)q +(cessor)g(arc)o(hitecture!\),)f(whic)o(h)h(ran)g(Spice)h(Lisp)g(on)e(a)h +(Motorola)e(MC68020)g(micro-)0 666 y(pro)q(cessor.)23 b(Later,)17 +b(they)f(decided)j(to)c(go)h(the)h(pure)g(Lisp)g(mac)o(hine)h(route)e(and)g +(in)o(tro)q(duced)i(the)f(Explorer,)f(a)0 723 y(micro)q(co)q(ded)d(mac)o +(hine)g(that)f(also)g(ran)g(the)g(MIT)g(soft)o(w)o(are.)17 +b(Later,)12 b(TI)h(joined)g(with)f(LMI)h(to)e(trade)h(some)g(tec)o(h-)0 +779 y(nology)l(,)h(whic)o(h)g(seemed)g(to)e(ha)o(v)o(e)h(little)i(or)e(no)g +(e\013ect)g(on)g(the)g(business)i(fortunes)e(of)g(either)h(compan)o(y)f +(except)h(to)0 835 y(inject)k(some)g(capital)g(in)o(to)g(LMI,)g(prolonging)g +(its)g(existence.)25 b(The)17 b(Explorer)g(had)g(go)q(o)q(d)g(price-p)q +(erformance)0 892 y(and)k(decen)o(t)h(absolute)g(p)q(erformance.)38 +b(the)22 b(high)g(fa)o(v)o(or)e(in)i(whic)o(h)g(TI)f(w)o(as)g(held)h(b)o(y)g +(the)f(Departmen)o(t)f(of)0 948 y(Defense)c(resulted)g(in)g(go)q(o)q(d)f +(sales)g(for)g(TI)g(during)h(the)g(early)f(Common)g(Lisp)h(era.)0 +1068 y Fu(2.11.4)52 b(MacLisp)18 b(on)g(the)g(Decline)0 1154 +y Fx(Though)e(macLisp)h(w)o(as)e(still)i(in)g(widespread)g(use)g(and)f +(spreading)g(a)g(bit,)g(dev)o(elopmen)o(t)h(halted)g(in)g(the)f(early)0 +1211 y(1980's.)k(A)o(t)c(this)g(p)q(oin)o(t,)g(MacLisp)h(ran)f(on)g(ITS,)g +(Multics,)g(T)l(enex,)h(TOPS-10,)e(TOPS-20,)h(and)g(W)-5 b(AITS)16 +b(\(all)0 1267 y(but)f(Multics)h(w)o(ere)f(v)m(arious)h(op)q(erating)f +(systems)g(for)g(the)g(PDP-10\).)71 1324 y(F)l(unding)22 b(for)e(MacLisp)i +(dev)o(elopmen)o(t)g(had)f(b)q(een)i(pro)o(vided)e(b)o(y)h(the)f(Macsyma)f +(Group,)i(b)q(ecause)g(the)0 1380 y(primary)16 b(clien)o(t)i(for)d(MacLisp,)i +(from)e(the)i(p)q(oin)o(t)f(of)g(view)h(of)f(MIT,)f(w)o(as)h(the)g(p)q(eople) +i(who)e(used)g(Macsyma|)0 1437 y(the)c(Macsyma)f(Consortium.)19 +b(F)l(rom)11 b(the)h(p)q(oin)o(t)g(of)g(view)g(of)g(the)g(rest)f(of)h(the)g +(w)o(orld,)g(ho)o(w)o(ev)o(er,)f(while)j(Macsyma)0 1493 y(w)o(as)h(an)h(in)o +(teresting)g(application)i(of)d(Lisp,)i(MacLisp)g(itself)f(w)o(as)f(of)h(m)o +(uc)o(h)g(wider)g(app)q(eal)h(as)f(a)f(researc)o(h)h(and)0 +1549 y(dev)o(elopmen)o(t)j(to)q(ol)g(for)f(AI,)g(particularly)i(vision)g(and) +f(rob)q(otics.)30 b(Ho)o(w)o(ev)o(er,)18 b(these)h(groups)f(w)o(ere)g(not)g +(\015ush)0 1606 y(with)h(funding)h(and,)g(in)g(an)o(y)e(ev)o(en)o(t,)i(none)f +(found)g(an)o(y)g(reason)f(to)h(do)g(other)f(than)h(to)f(accept)h(the)g(use)h +(of)e(a)0 1662 y(freely)e(a)o(v)m(ailable)h(MacLisp)f(as)f(MIT)g(sa)o(w)f +(\014t)h(to)g(pro)o(vide.)71 1719 y(The)i(funding)g(for)g(MacLisp)g(w)o(as)f +(supplan)o(ted)i(b)o(y)e(funding)i(for)e(NIL)i(on)f(the)g(V)-5 +b(AX)16 b(b)o(y)h(the)g(Departmen)o(t)0 1775 y(of)d(Energy)l(.)19 +b(The)c(Departmen)o(t)e(of)h(Energy)g(o)o(v)o(ersa)o(w)e(suc)o(h)j(things)f +(as)g(researc)o(h)g(and)h(dev)o(elopmen)o(t)f(of)g(n)o(uclear)0 +1832 y(w)o(eap)q(ons)i(in)i(addition)f(to)f(its)g(more)g(b)q(enign)i(pro)s +(jects)e(suc)o(h)h(as)f(civilian)j(energy)l(.)24 b(Therefore,)16 +b(the)g(DOE)h(w)o(as)0 1888 y(an)e(alternativ)o(e)h(source)f(of)g(defense)h +(funding)g(and)f(it)h(funded)g(suc)o(h)g(pro)s(jects)e(as)h(S-1)g(Lisp.)71 +1945 y(In)g(general,)g(eac)o(h)g(site)g(that)f(used)i(MacLisp)f(had)g(a)g(lo) +q(cal)h(wizard)f(who)g(w)o(as)f(able)h(to)f(handle)i(most)e(of)h(the)0 +2001 y(problems)f(encoun)o(tered,)h(p)q(ossibly)g(b)o(y)e(consulting)i(Jon)f +(L)g(White.)20 b(In)14 b(at)f(least)h(one)g(case,)f(funding)i(w)o(as)e(made)0 +2058 y(a)o(v)m(ailable)j(to)e(MIT)h(to)f(do)h(some)f(custom)h(w)o(ork.)j(F)l +(or)c(instance,)i(the)e(single-segmen)o(t)i(v)o(ersion)f(of)g(MacLisp)g(on)0 +2114 y(W)-5 b(AITS)15 b(w)o(as)g(paid)h(for)e(b)o(y)h(the)h(Stanford)f(AI)g +(Lab)h(and)f(the)g(w)o(ork)g(w)o(as)f(done)i(on)f(site)g(b)o(y)g(Ho)o(w)o +(ard)f(Cannon.)71 2170 y(MacLisp)19 b(w)o(as)f(the)g(host)g(for)g(a)h(v)m +(ariet)o(y)f(of)g(language)h(dev)o(elopmen)o(t)g(and)g(features)f(o)o(v)o(er) +g(the)h(y)o(ears,)f(in-)0 2227 y(cluding)23 b(MicroPlanner,)h(Conniv)o(er,)f +(Sc)o(heme,)g(Fla)o(v)o(ors,)e(F)l(rames,)h(Extends,)h(Qlisp,)h(and)e(v)m +(arious)g(vision-)0 2283 y(pro)q(cessing)h(features.)40 b(The)22 +b(last)g(ma)s(jor)f(piece)i(of)f(researc)o(h)g(in)h(MacLisp)g(w)o(as)e(the)h +(m)o(ulti-program)g(pro-)0 2340 y(gramming)c(en)o(vironmen)o(t)g(done)h(b)o +(y)f(Martin)g(E.)g(F)l(rost)f(and)i(Gabriel)g(at)e(Stanford)h([Gabriel,)h +(1984a].)27 b(This)0 2396 y(en)o(vironmen)o(t)20 b(de\014ned)h(a)f(proto)q +(col)g(that)f(allo)o(w)o(ed)h(MacLisp)h(and)f(E,)f(the)h(Stanford)f(displa)o +(y)i(editor)f(whic)o(h)0 2453 y(had)15 b(op)q(erating-system)f(supp)q(ort,)h +(to)f(comm)o(unicate)h(o)o(v)o(er)f(a)g(mailb)q(o)o(x-st)o(yle)i(op)q +(erating)e(system)h(mec)o(hanism.)0 2509 y(With)g(this)h(mec)o(hanism,)f(the) +h(co)q(de)f(dev)o(oted)g(to)g(editing)h(w)o(as)f(shared)g(b)o(y)g(an)o(y)g +(users)g(using)h(E)f(\(ev)o(en)g(for)g(non-)0 2566 y(Lisp)j(tasks\))d(b)o(y)i +(using)g(the)g(timesharing)g(mec)o(hanism)g(of)f(the)h(underlying)h(host)e +(computer,)h(and)f(frequen)o(tly)0 2622 y(co)q(de)i(executed)g(for)f(the)h +(purp)q(ose)g(of)f(editing)h(w)o(as)f(executed)h(within)h(the)f(op)q(erating) +f(system,)g(requiring)i(no)0 2679 y(co)q(de)c(to)g(b)q(e)g(sw)o(app)q(ed)g +(in)h(or)e(paged)h(in.)21 b(It)15 b(w)o(as)f(also)h(p)q(ossible)h(for)e(Lisp) +i(programs)e(to)g(con)o(trol)h(the)g(editor,)f(so)p eop +%%Page: 30 30 +30 29 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(30)0 45 y(that)17 b(v)o(ery)g(p)q(o)o(w)o(erful)h(\\editor)g +(macros")e(written)i(in)g(Lisp)h(could)g(b)q(e)f(used)g(instead)h(of)e(the)h +(arcane)f(E)h(macro)0 102 y(language.)i(This)c(en)o(vironmen)o(t)f(predated)h +(similar)g(Lisp/Emacs)g(en)o(vironmen)o(ts)f(b)o(y)h(a)e(few)i(y)o(ears.)71 +158 y(Ho)o(w)o(ev)o(er,)10 b(in)i(the)f(early)h(da)o(ys)f(of)f(the)i(Common)e +(Lisp)i(group,)g(funding)g(for)e(NIL)i(for)f(the)g(V)-5 b(AX)12 +b(b)o(y)f(DOE)g(and)0 214 y(the)17 b(Macsyma)f(Consortium)g(w)o(as)g(halted,) +h(p)q(erhaps)h(fueled)g(b)o(y)f(the)f(b)q(elief)j(that)d(Lisp)i(mac)o(hines)g +(w)o(ould)f(run)0 271 y(Macsyma)e(w)o(ell,)i(p)q(erhaps)g(fueled)g(b)o(y)f +(the)g(b)q(elief)i(that)d(the)h(dev)o(elopmen)o(t)h(of)f(Common)f(Lisp)i(w)o +(ould)f(pro)o(vide)0 327 y(the)f(common)g(base)g(for)g(Macsyma.)71 +384 y(Around)20 b(the)g(same)g(time)g(that)g(DOE)g(funding)h(stopp)q(ed,)g +(Sym)o(b)q(olics)h(started)d(a)h(Macsyma)f(Group)h(to)0 440 +y(sell)d(Lisp-mac)o(hine-based)i(Macsyma.)i(This)c(group)e(remained)i +(pro\014table)f(un)o(til)h(its)g(dissolution)g(in)g(the)f(late)0 +497 y(1980's)e(or)g(early)i(1990's.)71 553 y(With)11 b(NIL)g(funding)h +(stoppage,)f(Jon)g(L)g(White)g(joined)g(Xero)o(x)g(to)f(w)o(ork)f(on)i(In)o +(terlisp.)20 b(A)11 b(stranger)f(situation)0 610 y(is)17 b(di\016cult)h(to)e +(imagine.)26 b(First,)16 b(White)h(w)o(as)f(apparen)o(tly)h(so)f(clearly)i(a) +f(Easterner)f(in)h(p)q(ersonalit)o(y)h(that)e(the)0 666 y(whole)c(aura)g(of)f +(the)h(California)h(lifest)o(yle)g(seems)f(to)q(o)f(foreign)h(for)g(him)g(to) +f(accept.)19 b(Second,)13 b(the)f(in)o(tense)h(riv)m(alry)0 +723 y(b)q(et)o(w)o(een)18 b(MacLisp)h(and)f(In)o(terLisp)i(o)o(v)o(er)d(the)h +(y)o(ears)g(w)o(ould)g(seem)g(to)g(ha)o(v)o(e)f(prev)o(en)o(ted)i(their)f(ev) +o(er)g(w)o(orking)0 779 y(together.)0 901 y Fo(2.12)56 b(Standards)19 +b(Dev)n(elopmen)n(t:)j(1984{1992)0 987 y Fx(The)h(p)q(erio)q(d)g(just)g +(after)e(the)i(release)g(of)f Fm(Common)h(Lisp:)33 b(The)22 +b(L)n(anguage)g Fx([CL)l(TL1,)i(1984])d(mark)o(ed)h(the)0 1043 +y(b)q(eginning)e(of)e(an)g(era)g(of)g(unpreceden)o(ted)i(Lisp)f(p)q(opularit) +o(y)l(.)30 b(In)19 b(large)f(part)f(this)i(p)q(opularit)o(y)g(w)o(as)e +(coupled)0 1099 y(with)f(the)f(p)q(opularit)o(y)h(of)f(AI,)g(but)g(not)g(en)o +(tirely)l(.)21 b(Let's)15 b(lo)q(ok)h(at)e(the)i(ingredien)o(ts:)68 +1173 y Fk(\017)23 b Fx(F)l(or)14 b(the)h(\014rst)g(time)h(there)f(w)o(as)f(a) +h(commonly)h(agreed)f(standard)g(for)f(Lisp,)i(alb)q(eit)h(a)e(\015a)o(w)o +(ed)g(one.)68 1246 y Fk(\017)23 b Fx(AI)15 b(w)o(as)g(on)g(the)g(rise,)g(and) +h(Lisp)g(w)o(as)f(the)g(language)g(of)g(AI.)68 1319 y Fk(\017)23 +b Fx(There)13 b(app)q(eared)h(to)f(b)q(e)h(a)f(burgeoning)i(w)o(orkstation)d +(mark)o(et,)g(and)i(the)f(p)q(erformance)h(of)f(the)g(w)o(orksta-)114 +1375 y(tions)i(on)g(Lisp)i(w)o(as)d(not)h(far)f(o\013)h(that)f(of)h(the)g +(Lisp)i(mac)o(hines.)68 1448 y Fk(\017)23 b Fx(The)15 b(v)o(en)o(ture)g +(capital)h(comm)o(unit)o(y)f(w)o(as)f(lo)q(oking)i(at)e(the)h(success)h(of)e +(companies)i(lik)o(e)g(Sun,)g(w)o(ere)f(a)o(w)o(ed)114 1505 +y(b)o(y)i(the)h(prosp)q(ects)f(of)g(AI,)h(and)g(had)f(a)g(lot)h(of)f(money)g +(as)h(a)f(result)h(of)f(the)g(b)q(o)q(oming)h(econom)o(y)g(in)g(the)114 +1561 y(\014rst)c(half)i(of)f(the)g(Reagan)g(presidency)l(.)68 +1634 y Fk(\017)23 b Fx(Computer)17 b(scien)o(tists)i(w)o(ere)f(turning)h(in)o +(to)f(en)o(trepreneurs)g(in)h(dro)o(v)o(es,)f(spurred)h(b)o(y)f(the)g +(near-instan)o(t)114 1691 y(success)d(of)g(their)h(colleagues)g(suc)o(h)g +(companies)g(as)f(Sun)g(and)h(V)l(alid.)0 1764 y(Articles)21 +b(ab)q(out)g(Lisp)g(w)o(ere)f(b)q(eing)i(written)e(for)g(p)q(opular)h +(magazines,)h(requests)e(for)g(Common)g(Lisp)h(w)o(ere)0 1820 +y(streaming)c(in)o(to)h(places)h(lik)o(e)f(CMU)f(\(F)l(ahlman\))h(and)g +(Stanford)f(\(Gabriel\),)h(and)g(otherwise)f(academic-only)0 +1877 y(p)q(eople)j(w)o(ere)e(ask)o(ed)g(to)f(sp)q(eak)i(at)f(industry)h +(conferences)g(and)f(w)o(orkshops)g(on)g(the)g(topics)h(of)f(AI)g(and)h(Lisp) +0 1933 y(and)c(w)o(ere)g(regarded)g(as)g(sages)g(of)g(future)g(trends.)71 +1989 y(The)21 b(k)o(ey)g(imp)q(etus)h(b)q(ehind)h(the)e(in)o(terest)g(b)o(y)g +(industry)h(in)f(Lisp)i(and)e(AI)g(w)o(as)f(that)h(the)g(problems)g(of)0 +2046 y(hardw)o(are)f(seemed)h(under)g(con)o(trol)f(and)h(the)g(raging)f(b)q +(east)h(of)f(soft)o(w)o(are)f(w)o(as)g(next)i(to)f(b)q(e)h(tamed.)36 +b(More)0 2102 y(traditional)18 b(metho)q(ds)g(seemed)g(inadequate)g(and)f +(there)h(w)o(as)e(alw)o(a)o(ys)h(the)g(feeling)i(that)e(the)g(new)h(thing,)g +(the)0 2159 y(radical)e(thing)f(w)o(ould)g(ha)o(v)o(e)f(a)g(more)g(thorough)g +(e\013ect)g(than)h(the)g(old,)f(conserv)m(ativ)o(e)i(thing.)k(The)15 +b(allure)g(of)f(AI)0 2215 y(and)h(Lisp)i(attracted)d(b)q(oth)h(businessmen)i +(and)e(v)o(en)o(ture)g(capitalists.)71 2272 y(As)e(early)g(as)g(1984|the)g(y) +o(ear)g(CL)l(TL1)g(w)o(as)g(published|sev)o(eral)j(companies)e(w)o(ere)f +(founded)i(to)d(commer-)0 2328 y(cialize)i(Common)d(Lisp.)20 +b(These)13 b(included)h(F)l(ranz)e(Inc.;)h(Gold)f(Hill)i(Computers,)e(Inc.;,) +g(and)g(Lucid,)i(Inc.)20 b(Other)0 2385 y(companies)c(on)f(the)h(fringe)f(of) +g(Lisp)i(joined)f(the)f(Lisp)i(bandw)o(agon)d(with)i(Common)e(Lisp)j(or)e +(with)g(Lisps)i(that)0 2441 y(w)o(ere)11 b(on)h(the)g(road)f(to)g(Common)g +(Lisp.)20 b(These)12 b(included)i(Three)e(Riv)o(ers)g(\(PER)o(Q\))f(and)h +(TI.)g(Some)f(mainstream)0 2498 y(computer)h(man)o(ufacturers)g(joined)h(in)g +(the)f(Lisp)i(business.)20 b(These)13 b(included)i(DEC,)c(HP)l(,)h(Sun,)h(Ap) +q(ollo,)h(Prime,)0 2554 y(and)h(IBM.)f(Some)h(Europ)q(ean)g(companies)g +(joined)h(the)e(Common)g(Lisp)i(bandw)o(agon,)e(including)j(Siemens)f(and)0 +2610 y(Honeyw)o(ell)i(Bull.)25 b(And)17 b(the)g(old)g(pla)o(y)o(ers)f(b)q +(egan)h(w)o(ork)e(on)i(Common)e(Lisp.)25 b(These)17 b(included)i(the)e(Lisp)g +(ma-)0 2667 y(c)o(hine)j(companies)f(and)g(Xero)o(x.)30 b(A)19 +b(new)g(pla)o(y)o(er)g(from)f(Japan|Ky)o(oto)g(Common)g(Lisp)i(\(K)o +(CL\)|pro)o(vided)p eop +%%Page: 31 31 +31 30 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(31)0 45 y(a)17 b(bit)g(of)g(a)g(sp)q(oiler:)24 b(K)o(CL)18 +b(has)f(a)f(compiler)j(that)d(compiles)i(to)f(C,)f(whic)o(h)i(is)f(compiled)i +(b)o(y)e(the)g(C)g(compiler.)0 102 y(This)d(Lisp)h(w)o(as)e(licensed)j(essen) +o(tially)f(free,)f(and)g(the)g(Common)f(Lisp)i(companies)f(suddenly)h(had)f +(a)g(surprising)0 158 y(comp)q(etitor.)29 b(\(Surprising,)19 +b(b)q(ecause)h(it)e(app)q(eared)h(just)f(as)f(CL)l(TL1)i(came)f(out|the)g +(implemen)o(tation)i(w)o(as)0 214 y(based)14 b(on)g(the)g(Mary)g(P)o(oppins)g +(draft.)19 b(K)o(CL)14 b(w)o(as)f(also)h(notable)h(b)q(ecause)g(it)f(w)o(as)f +(implemen)o(ted)j(b)o(y)e(outsiders,)0 271 y(T)l(aiic)o(hi)g(Y)l(uasa)f(and)f +(Masami)g(Hagiy)o(a,)h(solely)g(on)g(the)f(basis)h(of)f(the)h(sp)q +(eci\014cation.)21 b(This)13 b(e\013ort)e(exp)q(osed)i(quite)0 +327 y(a)h(n)o(um)o(b)q(er)h(of)f(holes)i(and)e(mistak)o(es)h(in)g(the)g(sp)q +(eci\014cation)h(that)e(had)h(gone)f(unnotiv)o(ed)i(b)o(y)e(those)h(who,)f +(ha)o(ving)0 384 y(participated)h(in)f(the)g(historical)g(dev)o(elopmen)o(t)h +(of)e(Common)g(Lisp,)h(consciously)h(or)e(unconsciously)j(corrected)0 +440 y(for)f(suc)o(h)g(mistak)o(es)g(as)g(they)g(w)o(en)o(t)g(along)g(on)g +(the)g(basis)h(of)f(additional)h(shared)g(kno)o(wledge.\))71 +497 y(Though)i(one)g(migh)o(t)h(think)g(a)f(free,)g(go)q(o)q(d-qualit)o(y)h +(pro)q(duct)g(w)o(ould)g(easily)g(b)q(eat)g(an)f(exp)q(ensiv)o(e)i(b)q +(etter-)0 553 y(qualit)o(y)e(pro)q(duct,)h(this)f(pro)o(v)o(ed)f(false)h(and) +g(the)g(Common)f(Lisp)i(companies)f(thriv)o(ed)g(despite)h(their)f(no-cost)0 +610 y(comp)q(etitor.)27 b(It)17 b(turned)h(out)f(that)g(b)q(etter)g(p)q +(erformance,)h(b)q(etter)f(qualit)o(y)l(,)i(commitmen)o(t)e(b)o(y)g(dev)o +(elop)q(ers)i(to)0 666 y(mo)o(ving)c(ahead)g(with)h(the)f(standard,)g(and)g +(b)q(etter)g(service)h(w)o(ere)f(more)g(imp)q(ortan)o(t)g(than)g(no)g(price)h +(tag.)0 786 y Fu(2.12.1)52 b(Comm)n(on)14 b(Lisp)19 b(Companies)0 +872 y Fx(F)l(ranz,)14 b(Inc.,)g(w)o(as)f(already)i(in)g(business)g(selling)h +(F)l(ranz)e(Lisp,)h(the)f(MacLisp-lik)o(e)j(Lisp)e(dialect)g(used)g(to)e +(trans-)0 928 y(p)q(ort)i(a)f(v)o(ersion)i(of)e(Macsyma)g(called)j(V)l +(axima.)j(F)l(ranz)15 b(Lisp)h(w)o(as)e(the)h(most)f(p)q(opular)i(dialect)g +(of)f(Lisp)h(on)f(the)0 985 y(V)-5 b(AX)15 b(un)o(til)h(plausible)h(Common)c +(Lisps)j(app)q(eared.)k(F)l(ranz)15 b(decided)h(to)e(go)g(in)o(to)h(the)g +(Common)f(Lisp)h(mark)o(et,)0 1041 y(funding)h(the)f(e\013ort)e(with)i(the)g +(pro)q(ceeds)g(from)f(its)h(F)l(ranz)f(Lisp)i(sales.)k(The)15 +b(principal)i(founders)e(of)f(F)l(ranz)g(are)0 1098 y(F)l(ritz)19 +b(Kunze,)i(John)e(F)l(o)q(deraro,)g(and)g(Ric)o(hard)g(F)l(ateman.)31 +b(Kunze)20 b(w)o(as)e(a)g(PhD)h(studen)o(t)g(of)f(F)l(ateman's)g(at)0 +1154 y(the)d(Univ)o(ersit)o(y)h(of)e(California)i(at)e(Berk)o(eley)i(in)g +(the)f(mathematics)g(departmen)o(t;)f(F)l(o)q(deraro,)g(ha)o(ving)i(already)0 +1211 y(obtained)i(his)h(PhD)e(under)h(F)l(ateman,)f(b)q(ecame)i(the)e +(primary)h(arc)o(hitect)g(and)f(implemen)o(tor)i(of)e(the)g(v)m(arious)0 +1267 y(Lisps)d(o\013ered)e(b)o(y)g(F)l(ranz,)h(Inc.)20 b(F)l(ateman,)12 +b(one)g(of)g(the)h(original)h(implemen)o(tors)f(of)f(Macsyma)f(at)h(MIT,)g +(carried)0 1324 y(the)17 b(MacLisp/Lisp)h(torc)o(h)e(to)g(Berk)o(eley;)i(he)f +(w)o(as)f(resp)q(onsible)i(for)e(the)h(p)q(orting)g(of)f(Macsyma)g(to)f(the)i +(V)-5 b(AX.)0 1380 y(F)l(ranz)16 b(adopted)g(a)g(direct-sales)h(strategy)l(,) +e(in)i(whic)o(h)g(the)g(compan)o(y)f(targeted)f(customers)h(and)g(sold)h +(directly)0 1437 y(to)e(them.)71 1493 y(Gold)h(Hill)j(w)o(as)d(a)g(division)j +(of)d(a)g(paren)o(t)g(compan)o(y)h(named)g(Apiary)g(Inc.,)g(whic)o(h)g(w)o +(as)f(founded)h(b)o(y)g(Carl)0 1549 y(Hewitt)d(and)g(his)h(studen)o(t)e +(Jerry)h(Barb)q(er.)20 b(Barb)q(er)14 b(had)g(sp)q(en)o(t)g(the)g(y)o(ear)g +(b)q(efore)g(founding)h(Apiary/Gold)f(Hill)0 1606 y(at)g(INRIA)j(in)f(F)l +(rance,)e(where)i(he)f(wrote)f(a)h(MacLisp/Zetalisp-lik)o(e)j(Lisp)e(for)e +(the)h(IBM)h(PC.)e(This)i(w)o(ork)e(w)o(as)0 1662 y(partly)g(funded)h(b)o(y)f +(INRIA.)h(When)f(he)g(returned,)g(it)g(w)o(as)f(close)i(enough)f(to)f(Common) +h(Lisp)h(that)e(Hewitt)h(and)0 1719 y(Barb)q(er)e(though)o(t)g(they)g(could)h +(capitalize)h(on)e(the)g(w)o(a)o(v)o(e)f(of)h(Common)f(in)o(terest)i(b)o(y)f +(selling)i(the)e(existing)h(Lisp)g(as)0 1775 y(a)i(Lisp)h(ab)q(out)f(to)g(b)q +(ecome)h(Common)e(Lisp.)22 b(Because)15 b(the)h(PC)f(w)o(as)f(b)q(eliev)o(ed) +k(to)c(b)q(e)i(an)f(imp)q(ortan)o(t)g(mac)o(hine)0 1832 y(for)c(AI,)h(it)g +(seemed)h(to)e(b)q(e)i(an)f(ironclad)h(business)g(plan,)g(in)g(whic)o(h)f(a)g +(v)m(ariet)o(y)g(of)f(glamorous)h(East-coast)e(v)o(en)o(ture)0 +1888 y(capitalists)17 b(in)o(v)o(ested.)22 b(Gold)16 b(Hill's)h(Lisp)g(w)o +(as)e(not)g(a)g(Common)g(Lisp)i(and)f(in)h(the)e(early)h(y)o(ears)f(the)h +(compan)o(y)0 1945 y(endured)e(some)e(criticism)i(for)e(false)h(adv)o +(ertising;)g(w)o(orse)f(y)o(et,)g(as)g(the)h(Lisp)h(w)o(as)d(transformed)h +(in)o(to)g(a)h(Common)0 2001 y(Lisp,)i(its)f(qualit)o(y)h(apparen)o(tly)f +(dropp)q(ed.)20 b(A)o(t)13 b(the)h(same)g(time)g(the)g(so-called)i(\\AI)e +(win)o(ter")f(hit)i(and)f(Gold)g(Hill)0 2058 y(w)o(as)i(not)g(able)h(to)f +(surviv)o(e)h(at)e(the)i(lev)o(el)h(it)e(once)h(had.)24 b(It)17 +b(w)o(as)e(abandoned)i(b)o(y)g(its)f(v)o(en)o(ture)g(capitalists,)i(laid)0 +2114 y(o\013)c(just)g(ab)q(out)g(all)i(its)e(emplo)o(y)o(ees,)h(and)g(con)o +(tin)o(ues)g(to)q(da)o(y)f(as)g(a)g(t)o(w)o(o-man)f(op)q(eration.)20 +b(Gold)15 b(Hill)h(sold)f(direct)0 2170 y(as)g(w)o(ell.)71 +2227 y(\\AI)i(win)o(ter")g(is)h(the)g(term)f(\014rst)g(used)h(in)g(1988)e(to) +h(describ)q(e)i(the)f(unfortunate)f(commercial)h(fate)f(of)g(AI.)0 +2283 y(F)l(rom)f(the)g(late)h(1970's)e(and)h(un)o(til)i(the)e(mid-1980's,)g +(arti\014cial)i(in)o(telligence)h(w)o(as)d(an)g(imp)q(ortan)o(t)g(part)g(of)g +(the)0 2340 y(computer)c(business|man)o(y)h(companies)f(w)o(ere)f(started)g +(with)h(the)g(then-abundan)o(t)g(v)o(en)o(ture)g(capital)g(a)o(v)m(ailable)0 +2396 y(for)h(high-tec)o(h)j(start-ups.)i(By)d(1988)e(it)h(b)q(ecame)h(clear)f +(to)g(business)h(analysts)f(that)f(AI)i(w)o(ould)f(not)g(exp)q(erience)0 +2453 y(meteoric)i(gro)o(wth)f(and)i(there)f(w)o(as)f(a)h(bac)o(klash)h +(against)e(AI)i(and,)f(with)h(it,)f(Lisp)h(as)f(a)g(commercial)h(concern.)0 +2509 y(AI)f(companies)g(started)e(to)h(ha)o(v)o(e)f(substan)o(tial)i +(\014nancial)h(di\016culties)g(and)f(so)e(did)j(the)e(Lisp)h(companies.)71 +2566 y(Lucid,)g(Inc.,)g(w)o(as)e(founded)i(b)o(y)g(Gabriel)g(\(Stanford\),)e +(Ro)q(d)i(Bro)q(oks)f(\(MIT\),)f(Eric)i(Benson)g(\(Utah/PSL\),)0 +2622 y(Scott)i(F)l(ahlman)i(\(CMU\),)d(and)i(a)g(few)g(others.)31 +b(Bac)o(k)o(ed)18 b(b)o(y)h(v)o(en)o(ture)g(capital,)h(Lucid)h(adopted)e(a)g +(di\013eren)o(t)0 2679 y(strategy)c(from)h(that)g(of)g(the)g(other)g(Common)g +(Lisp)h(companies.)25 b(Instead)17 b(of)f(starting)g(with)g(the)h(Spice)h +(Lisp)p eop +%%Page: 32 32 +32 31 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(32)0 45 y(source)17 b(co)q(de,)g(Lucid)h(wrote)d(an)i(implemen)o +(tation)h(of)e(Common)f(Lisp)j(from)e(scratc)o(h;)g(moreo)o(v)o(er,)f(it)i +(adopted)0 102 y(an)d(OEM)g(strategy)l(.)19 b(\(The)14 b(OEM)g(idea)h(is)g +(to)f(mak)o(e)f(arrangemen)o(ts)h(with)g(a)g(computer)g(\(hardw)o(are\))f +(compan)o(y)0 158 y(to)h(mark)o(et)f(and)i(sell)g(Lisp)h(under)f(its)g(o)o +(wn)e(name.)20 b(Ho)o(w)o(ev)o(er,)13 b(the)i(Lisp)g(is)g(implemen)o(ted)h +(and)f(main)o(tained)g(b)o(y)0 214 y(an)f(outside)i(compan)o(y)l(,)e(in)h +(this)g(case,)f(Lucid,)i(whic)o(h)g(collects)g(ro)o(y)o(alties.\))j(Lucid)d +(quic)o(kly)g(struc)o(k)e(OEM)g(deals)0 271 y(with)f(Sun,)h(Ap)q(ollo,)g(and) +g(Prime.)19 b(This)14 b(w)o(as)e(p)q(ossible)j(b)q(ecause)e(Lucid)i(traded)e +(on)g(the)g(strength)f(of)h(the)g(names)0 327 y(of)h(its)h(founders)g(and)g +(the)f(fact)g(that)g(it)h(w)o(as)f(writing)h(a)f(Common)g(Lisp)i(from)e +(scratc)o(h)g(and)h(w)o(ould,)g(therefore,)0 384 y(b)q(e)h(the)f(\014rst)g +(true)g(Common)f(Lisp.)71 440 y(Ev)o(en)o(tually)21 b(Lucid)i(p)q(orted)e +(its)g(Lisp)h(and)f(established)i(OEM)e(arrangemen)o(ts)f(with)h(IBM,)g(DEC,) +f(and)0 497 y(HP)l(.)c(Though)g(the)h(ro)o(y)o(alties)f(w)o(ere)g(relativ)o +(ely)h(small)g(p)q(er)g(cop)o(y)l(,)f(the)h(OEM)f(route)g(established)i +(Lucid)g(as)e(the)0 553 y(primary)h(sto)q(c)o(k-hardw)o(are)e(Lisp)j(compan)o +(y)l(.)24 b(Because)17 b(the)g(hardw)o(are)f(companies)h(w)o(ere)g(en)o(th)o +(usiastic)g(ab)q(out)0 610 y(the)f(business)i(opp)q(ortunities)g(for)d(AI)i +(and)g(Lisp,)g(they)g(in)o(v)o(ested)g(a)f(lot)g(in)h(the)g(business.)24 +b(Often)17 b(they)g(w)o(ould)0 666 y(pa)o(y)12 b(a)f(large)i(p)q(orting)f +(fee,)g(a)g(\014xed-price)i(licensing)h(fee,)d(and)g(main)o(tenance)h(fees)f +(as)g(w)o(ell)h(as)f(ro)o(y)o(alties.)18 b(Getting)0 723 y(Sun)f(as)f(an)h +(OEM)f(w)o(as)g(the)h(k)o(ey)f(for)g(Lucid's)i(surviv)m(al,)g(b)q(ecause)g +(Sun)f(w)o(orkstations)e(dev)o(elop)q(ed)j(the)f(cac)o(het)0 +779 y(that)h(w)o(as)g(needed)i(to)e(attract)f(customers)i(to)f(the)h(Lisp.)32 +b(Sun)19 b(w)o(as)f(alw)o(a)o(ys)g(regarded)h(as)f(leading-edge,)j(so)0 +835 y(p)q(eople)c(in)o(terested)g(in)f(leading-edge)i(AI)e(tec)o(hnology)g +(headed)h(\014rst)e(to)g(Sun.)23 b(Sun)16 b(also)g(emplo)o(y)o(ed)g(a)g(n)o +(um)o(b)q(er)0 892 y(of)c(engineers)h(who)f(did)i(their)f(o)o(wn)e(Lisp)j +(dev)o(elopmen)o(t,)f(mostly)f(in)h(the)g(area)f(of)f(programming)h(en)o +(vironmen)o(ts.)71 948 y(Before)k(the)g(AI)g(win)o(ter)g(hit,)h(Lucid)g(b)q +(egan)g(div)o(ersifying)g(in)o(to)f(other)g(languages)g(\(C)f(and)i(C)p +Fw(++)p Fx(\))e(and)h(pro-)0 1005 y(gramming)f(en)o(vironmen)o(ts.)0 +1125 y Fu(2.12.2)52 b(Big)18 b(Companies)e(With)i(Their)g(Own)f(Lisps)0 +1211 y Fx(DEC)f(and)h(HP)g(implemen)o(ted)i(their)e(o)o(wn)g(Lisps.)26 +b(DEC)16 b(started)g(with)i(the)f(Spice)h(Lisp)g(co)q(de)g(and)f(HP)g(with)0 +1267 y(PSL.)22 b(Eac)o(h)g(compan)o(y)g(b)q(eliev)o(ed)i(that)e(AI)g(w)o +(ould)h(tak)o(e)e(o\013)h(and)g(that)f(ha)o(ving)i(a)e(Lisp)j(w)o(as)d(an)h +(essen)o(tial)0 1324 y(ingredien)o(t)16 b(for)e(success)h(in)g(the)g(AI)g +(business.)21 b(Both)14 b(DEC)g(and)h(HP)f(made)h(arrangemen)o(ts)e(with)i +(the)g(original)0 1380 y(implemen)o(tors)j(of)e(those)g(Lisps,)i(b)q(oth)f(b) +o(y)g(hiring)h(studen)o(ts)f(who)f(had)h(w)o(ork)o(ed)f(on)h(them)g(and)g(b)o +(y)f(arranging)0 1437 y(for)g(on-going)g(consulting.)25 b(Both)16 +b(DEC)f(and)i(HP)f(grew)g(fairly)h(large)f(businesses)i(out)e(of)g(these)g +(Lisp)i(groups,)0 1493 y(large)i(b)o(y)f(the)g(standards)g(of)g(other)h(Lisp) +g(companies.)34 b(A)o(t)19 b(the)g(p)q(eak)h(of)f(Lisp)i(in)f(the)g(last)f +(quarter)g(of)g(the)0 1549 y(1980's,)c(the)h(main)h(pla)o(y)o(ers)f(in)h(the) +g(Lisp)g(business)h(b)o(y)e(rev)o(en)o(ue)h(w)o(ere)f(Sym)o(b)q(olics,)h(TI,) +f(DEC,)g(HP)l(,)g(Sun,)h(and)0 1606 y(Lucid.)71 1662 y(DEC)d(and)h(HP)g(put)h +(a)e(lot)h(of)g(e\013ort)f(in)o(to)h(their)h(Lisp)g(o\013erings,)e(primarily) +j(in)e(the)h(area)e(of)h(en)o(vironmen)o(ts)0 1719 y(but)g(also)g(in)i(the)e +(p)q(erformance)g(of)g(the)g(Lisp)i(system)d(itself.)71 1775 +y(In)h(the)g(last)g(quarter)f(of)h(the)g(1980's,)e(HP)i(realized)h(that)e +(PSL)i(w)o(as)e(not)g(the)h(winner)h(and)f(they)g(needed)i(to)0 +1832 y(pro)o(vide)g(a)e(Common)g(Lisp.)24 b(They)16 b(c)o(hose)g(Lucid)i(to)d +(pro)o(vide)h(it)h(and)f(reduced)h(their)f(o)o(wn)g(engineering)i(sta\013,)0 +1888 y(c)o(ho)q(osing)g(to)e(fo)q(cus)i(more)f(on)g(mark)o(eting.)25 +b(Since)19 b(the)e(AI)h(win)o(ter)f(w)o(as)g(just)g(ab)q(out)g(up)q(on)h +(them)f(when)h(they)0 1945 y(made)c(the)f(decision,)i(it)f(is)g(not)g(clear)g +(whether)f(their)h(p)q(erception)h(of)e(this)h(situation)g(forced)g(them)g +(to)e(cut)i(bac)o(k)0 2001 y(on)h(their)h(Lisp)g(in)o(v)o(estmen)o(t.)71 +2058 y(In)e(the)g(early)g(1990's,)e(in)j(the)f(midst)g(of)f(AI)i(win)o(ter,)f +(DEC)f(also)h(decided)i(to)d(abandon)h(its)g(o)o(wn)f(e\013orts)g(and)0 +2114 y(also)i(c)o(hose)g(Lucid.)71 2170 y(IBM)k(had)h(a)g(n)o(um)o(b)q(er)g +(of)f(platforms)g(suitable)i(for)e(Lisp:)30 b(the)20 b(PC,)f(the)h +(mainframe,)g(and)g(the)g(R)l(T.)g(Of)0 2227 y(these,)c(IBM)g(initially)j +(decided)f(to)e(put)g(a)g(Common)f(Lisp)i(only)g(on)f(the)g(R)l(T.)g(IBM)g +(funded)h(a)f(pilot)h(program)0 2283 y(to)j(put)i(Spice)g(Lisp)g(\(Common)e +(Lisp\))i(on)f(the)g(R)l(T,)g(whic)o(h)h(w)o(as)e(to)h(b)q(e)g(IBM's)g +(\014rst)g(real)g(en)o(try)g(in)o(to)g(the)0 2340 y(w)o(orkstation)e(mark)o +(et.)33 b(Because)21 b(of)e(F)l(ahlman's)h(relationship)i(with)e(Lucid)i(\(a) +d(founder\),)i(a)f(con)o(tract)f(w)o(as)0 2396 y(ev)o(en)o(tually)d(written)f +(for)g(Lucid)i(to)d(p)q(ort)h(its)h(Lisp)g(to)f(the)g(R)l(T)h(for)e(IBM.)71 +2453 y(Later,)k(IBM)g(reen)o(tered)h(the)f(w)o(orkstation)e(mark)o(et)i(with) +g(its)g(RS6000,)g(whic)o(h)h(has)f(go)q(o)q(d)g(p)q(erformance,)0 +2509 y(and)c(Lucid)i(did)f(the)f(Common)f(Lisp)i(for)e(it.)20 +b(IBM)14 b(ev)o(en)o(tually)h(con)o(tracted)f(with)g(Lucid)h(to)f(pro)o(vide) +g(the)g(same)0 2566 y(Lisp)i(on)g(the)f(370)f(and)i(PS-2)f(running)h(AIX,)f +(a)g(v)o(ersion)h(of)e(Unix.)71 2622 y(Xero)o(x)i(pro)q(duced)j(a)e(Common)f +(Lisp)j(compatibilit)o(y)g(pac)o(k)m(age)e(on)g(top)g(of)g(In)o(terlisp.)28 +b(This)17 b(pac)o(k)m(age)h(w)o(as)0 2679 y(nev)o(er)k(really)g(a)f(strong)f +(success)i(for)f(Xero)o(x,)h(whic)o(h)g(in)h(the)e(late)h(1980's)e(got)g(out) +h(of)g(the)g(Lisp)i(business,)p eop +%%Page: 33 33 +33 32 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(33)0 45 y(licensing)18 b(its)d(Lisp)h(soft)o(w)o(are)e(to)g(a)h +(spino\013)h(started)e(b)o(y)h(Xero)o(x)g(called)i(En)o(v)o(os)d(in)i(1989.) +71 102 y(En)o(v)o(os)c(put)i(out)f(a)g(real)g(Common)g(Lisp)h(implemen)o +(tation)h(and)f(sold)f(the)h(In)o(terLisp-D)g(en)o(vironmen)o(t.)20 +b(But)0 158 y(En)o(v)o(os)c(w)o(en)o(t)g(out)g(of)h(business)h(three)e(y)o +(ears)g(after)g(it)h(w)o(as)f(founded.)25 b(What)16 b(w)o(as)g(left)h(of)g +(En)o(v)o(os)e(b)q(ecame)j(the)0 214 y(compan)o(y)d(V)l(en)o(ue,)g(whic)o(h)h +(essen)o(tially)g(w)o(as)e(gran)o(ted)g(the)h(righ)o(ts)g(to)f(con)o(tin)o +(ue)i(mark)o(eting)e(the)h(same)g(soft)o(w)o(are)0 271 y(En)o(v)o(os)g(had)h +(b)q(een,)h(but)f(without)g(direct)h(funding.)23 b(The)16 b(funding)h(w)o(as) +e(pro)o(vided)i(b)o(y)f(servicing)h(Xero)o(x's)e(Lisp)0 327 +y(customer)g(base)g(\(main)o(tenance\).)0 447 y Fu(2.12.3)52 +b(D)o(ARP)l(A)16 b(and)h(the)h(SAIL)f(Mailing)j(Lists)0 533 +y Fx(Righ)o(t)11 b(after)f(CL)l(TL1)g(w)o(as)g(published)j(in)e(1984,)f(ARP)l +(A)h(\(renamed)g(D)o(ARP)l(A\))f(to)q(ok)g(a)g(real)h(in)o(terest)f(in)i +(Common)0 590 y(Lisp.)41 b(They)21 b(sp)q(onsored)h(a)g(comm)o(unit)o(y)f +(meeting)i(and)f(encouraged)g(further)f(dev)o(elopmen)o(t)h(of)g(Common)0 +646 y(Lisp)16 b(in)o(to)g(a)f(full)h(dev)o(elopmen)o(t)g(system,)f(including) +j(an)d(ob)s(ject-orien)o(ted)g(extension,)h(m)o(ultitasking,)g(windo)o(w)0 +703 y(systems,)g(graphics,)h(foreign)f(function)h(in)o(terfaces,)g(and)g +(iteration.)23 b(It)17 b(seemed)g(that)e(D)o(ARP)l(A)i(wished)g(for)f(a)0 +759 y(resurgence)g(of)e(Lisp)j(and)e(w)o(as)g(willing)i(to)e(pro)o(vide)g +(some)g(funds)h(to)f(help)h(this)g(purp)q(ose.)71 816 y(After)i(the)i +(meeting,)g(new)f(mailing)i(lists)f(w)o(ere)f(set)g(up)g(at)g(SAIL)h(for)f +(discussion)h(of)f(these)h(topics)f(and,)0 872 y(though)c(most)f(of)h(the)g +(lists)h(w)o(ere)f(quiet,)h(some)f(witnessed)h(in)o(teresting)g(discussions.) +0 992 y Fu(2.12.4)52 b(The)18 b(Start)g(of)f(ANSI)g(T)l(ec)o(hnical)i(Comm)n +(ittee)c(X3J13)0 1078 y Fx(In)j(a)g(follo)o(w-up)g(meeting)g(one)g(y)o(ear)f +(later|Decem)o(b)q(er)i(1985)d(in)j(Boston,)e(Massac)o(h)o(usetts|an)g +(apparen)o(tly)0 1134 y(b)q(enign)k(tec)o(hnical)g(meeting)f(w)o(as)e(in)o +(terrupted)i(b)o(y)f(a)h(sho)q(c)o(king)g(announcemen)o(t:)28 +b(Common)19 b(Lisp)h(m)o(ust)f(b)q(e)0 1191 y(standardized,)d(D)o(ARP)l(A)g +(announced,)g(and)g(Rob)q(ert)g(Mathis,)f(the)g(con)o(v)o(enor)g(of)h(the)f +(ISO)i(w)o(orking)e(group)g(on)0 1247 y(the)g(Ada)h(programming)e(language,)h +(w)o(as)f(to)h(head)h(up)f(this)h(e\013ort.)71 1304 y(The)c(reason)g(for)g +(this)h(sudden)h(need)f(w)o(as)f(that)g(the)g(Europ)q(ean)h(Lisp)h(comm)o +(unit)o(y)e(w)o(as)g(planning)i(to)e(launc)o(h)0 1360 y(their)j(o)o(wn)f +(Lisp)h(standardization)g(e\013ort)e(at)h(ISO)h(to)f(head)h(o\013)e(the)i +(spread)f(of)g(Common)g(Lisp.)21 b(Mathis,)14 b(with)0 1417 +y(his)19 b(storehouse)f(of)g(in)o(ternational)h(exp)q(erience,)i(seemed)e(to) +f(D)o(ARP)l(A)g(the)h(natural)f(c)o(hoice)i(to)d(head)i(up)g(the)0 +1473 y(resp)q(onse,)13 b(and)f(the)h(stunned,)g(confused,)g(and)f(so)q +(on-to-b)q(e-previously-pastoral)i(Common)e(Lisp)h(group)f(could)0 +1529 y(think)k(of)f(little)h(else)g(to)f(do)g(but)g(go)g(along.)71 +1586 y(The)j(p)q(erio)q(d)h(from)e(Spring)h(1986)f(un)o(til)h(Spring)h(1992)e +(w)o(as)g(a)g(com)o(bination)h(of)g(p)q(olitical)i(wrangling)e(and)0 +1642 y(in)o(teresting)e(Lisp)h(dev)o(elopmen)o(t.)k(As)15 b(usual,)h(the)g +(imp)q(etus)g(b)q(ehind)i(the)d(Lisp)i(dev)o(elopmen)o(t)f(w)o(as)e(to)h +(increase)0 1699 y(the)20 b(expressiv)o(e)h(p)q(o)o(w)o(er)f(of)f(Lisp.)36 +b(The)21 b(p)q(olitical)h(wrangling)f(cen)o(tered)f(around)g(t)o(w)o(o)f +(di\013eren)o(t)h(ob)s(jectiv)o(es:)0 1755 y(within)i(Common)e(Lisp,)k(eac)o +(h)d(individual)j(striv)o(ed)d(to)f(put)h(his)h(or)e(her)h(mark)g(on)g(the)g +(language;)i(outside)0 1812 y(Common)18 b(Lisp,)i(v)m(arious)f(groups)f +(tried)h(to)f(minimize)j(the)d(size)i(of)e(Lisp)i(to)d(guaran)o(tee)h(its)h +(surviv)m(al|b)q(oth)0 1868 y(academic)d(and)f(commercial.)71 +1925 y(A)j(few)h(mon)o(ths)f(after)g(the)h(Decem)o(b)q(er)g(1985)e(meeting)i +(there)g(w)o(as)f(a)g(meeting)i(at)e(CBEMA)g(\(the)g(Com-)0 +1981 y(puter)d(and)h(Business)g(Equipmen)o(t)g(Man)o(ufacturers)e(Asso)q +(ciation\))i(in)g(W)l(ashington,)f(D.)f(C.)h(\(CBEMA)f(serv)o(es)0 +2038 y(as)i(the)g(secretariat)f(for)h(X3,)f(an)h(Accredited)i(Standard)e +(Committee)f(for)h(Information)g(Pro)q(cessing)g(Systems)0 +2094 y(op)q(erating)g(under)h(the)f(pro)q(cedures)h(of)f(ANSI,)g(the)g +(American)h(National)f(Standards)g(Institute.)23 b(Among)16 +b(the)0 2150 y(b)q(etter-kno)o(wn)k(tec)o(hnical)i(committees)e(under)h(X3)g +(are)f(X3H3)g(\(computer)f(graphics,)j(including)h(PHIGS\),)0 +2207 y(X3J3)d(\(programming)f(language)h(F)o(OR)l(TRAN\),)g(X3J4)f +(\(programming)g(language)h(COBOL\),)g(and)g(X3J11)0 2263 y(\(programming)f +(language)h(C\).\))f(The)h(goals)f(of)h(standardization)g(w)o(ere)g +(discussed,)i(and)e(the)g(most)f(imp)q(or-)0 2320 y(tan)o(t)d(topic,)g(whic)o +(h)i(w)o(as)e(pushed)h(b)o(y)g(D)o(ARP)l(A,)f(w)o(as)g(whether)g(to)g(merge)g +(with)h(the)g(Sc)o(heme)g(activities|the)0 2376 y(tec)o(hnical)c(issues)f +(surrounded)f(the)h(treatmen)o(t)e(of)g(macros)h(and)g(whether)g(or)g(not)g +(there)g(w)o(as)f(a)h(separate)g(names-)0 2433 y(pace)17 b(for)f(functions)h +(separate)f(from)g(ordinary)h(v)m(ariables.)25 b(The)17 b(goals)f(of)g(the)h +(new)g(group,)f(so)q(on)g(to)g(b)q(ecome)0 2489 y(T)l(ec)o(hnical)h +(Committee)e(X3J13)g(for)f(Programming)g(Language)i(Common)e(Lisp,)i(w)o(ere) +f(also)g(discussed.)71 2546 y(The)k(p)q(oin)o(t)g(ab)q(out)g(namespaces)h(is) +f(imp)q(ortan)o(t)g(to)f(understanding)j(the)e(debate)g(b)q(et)o(w)o(een)g +(Lisp)i(dialect)0 2602 y(prop)q(onen)o(ts.)e(A)12 b(namespace)g(is)h(a)e +(mapping)i(b)q(et)o(w)o(een)f(an)g(iden)o(ti\014er)h(\(string)f(of)g(c)o +(haracters\))e(and)j(its)f(meaning.)0 2659 y(In)k(Common)e(Lisp)j(there)e +(are)g(a)g(n)o(um)o(b)q(er)h(of)f(namespaces|v)m(ariables,)i(functions,)e(t)o +(yp)q(es,)g(tags,)f(blo)q(c)o(ks,)i(and)p eop +%%Page: 34 34 +34 33 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(34)0 45 y(catc)o(h)15 b(tags,)f(among)h(others.)k(If)d(a)f(Lisp)h +(has)f(separate)g(namespaces)h(for)e(v)m(ariables)j(and)e(functions,)h(users) +f(are)0 102 y(allo)o(w)o(ed)j(to)f(use)i(v)m(ariable)g(names)f(that)f(also)h +(name)f(functions,)i(b)q(ecause)g(the)f(ev)m(aluation)h(rules)g(sp)q(ecify)g +(the)0 158 y(namespace)d(in)g(whic)o(h)g(to)f(lo)q(ok)g(for)g(the)g(meaning.) +21 b(In)16 b(a)f(Lisp)h(with)g(a)f(single)h(namespace,)g(the)f(user)h(m)o +(ust)e(b)q(e)0 214 y(careful)h(when)g(creating)g(v)m(ariable)g(names)g(to)f +(a)o(v)o(oid)g(shado)o(wing)g(a)g(function)h(name.)20 b(This)15 +b(issue)g(is)g(imp)q(ortan)o(t)0 271 y(for)h(macros,)f(whic)o(h)j(in)f +(e\013ect)f(m)o(ust)g(carefully)h(decide)i(what)c(a)h(free)h(v)m(ariable)h +(is)f(in)o(tended)g(to)f(mean.)24 b(While)0 327 y(there)17 +b(are)g(man)o(y)f(namespaces)h(in)h(Lisp,)g(b)q(ecause)g(the)f(v)m(ariable)h +(and)f(function)h(namespaces)f(are)g(where)g(the)0 384 y(problems)12 +b(lie)h(in)f(practice,)g(so)f(this)h(issue)h(reduces)f(to)e(the)i(question)g +(of)f(whether)g(v)m(ariable)i(names)f(and)f(function)0 440 +y(names)i(b)q(elong)i(to)d(one)i(namespace)f(or)g(t)o(w)o(o)f(separate)h +(namespaces.)20 b(It)13 b(is)h(therefore)f(often)g(referred)g(to)g(as)g(the)0 +497 y(\\Lisp-1)19 b(v)o(ersus)e(Lisp-2)i(debate".)29 b(A)17 +b(Lisp-1)i(is)g(a)f(Lisp)h(where)f(functions)g(and)h(v)m(ariables)g(are)e(in) +i(the)f(same)0 553 y(namespace,)d(and)h(a)e(Lisp-2)j(is)e(a)g(Lisp)i(where)e +(they)g(are)g(in)h(separate)f(namespaces.)71 610 y(The)j(e\013ort)e(to)h +(merge)h(the)f(Sc)o(heme)i(and)f(Common)f(Lisp)i(comm)o(unities)f(w)o(as)f +(launc)o(hed)i(on)f(t)o(w)o(o)e(fron)o(ts.)0 666 y(One)d(w)o(as)e(to)g(try)h +(to)f(come)h(up)h(with)f(a)g(solution)h(to)e(the)h(macro)g(problem)g(that)g +(a)f(Lisp-1)j(causes.)19 b(This)12 b(problem)0 723 y(is)h(that)e(with)h(only) +h(one)f(namespace)h(it)f(is)h(relativ)o(ely)g(easier)f(to)g(stum)o(ble)h +(across)e(an)h(unin)o(tended)i(name)e(con\015ict)0 779 y(leading)18 +b(to)e(incorrect)h(co)q(de.)25 b(The)16 b(k)o(ey)h(Common)f(Lisp)i(leaders)f +(felt)g(that)f(if)h(the)f(macro)g(problem)i(could)f(b)q(e)0 +835 y(solv)o(ed,)e(Common)g(Lisp)i(could)f(surviv)o(e)g(a)f(transition)h +(from)e(Lisp-2)j(to)e(Lisp-1.)21 b(The)16 b(other)f(fron)o(t)f(w)o(as)h(to)g +(try)0 892 y(to)g(con)o(vince)h(the)f(Sc)o(heme)h(comm)o(unit)o(y)f(that)g +(this)g(w)o(as)g(a)g(go)q(o)q(d)g(idea.)71 948 y(On)j(the)g(\014rst)g(fron)o +(t,)f(Gabriel)i(and)g(Ken)o(t)f(Pitman)g(pro)q(duced)h(a)f(rep)q(ort)g +(detailing)h(the)g(tec)o(hnical)g(issues)0 1005 y(in)o(v)o(olv)o(ed)c(in)f +(macros)f([Gabriel,)h(1988].)k(Sev)o(eral)c(tec)o(hnical)h(solutions)g(app)q +(eared)f(around)g(the)g(same)f(time,)h(the)0 1061 y(most)g(promising)i(b)q +(eing)h(describ)q(ed)g(in)f(Kohlb)q(ec)o(k)o(er's)g(dissertation)g([Kohlb)q +(ec)o(k)o(er,)f(1986b].)71 1118 y(On)24 b(the)f(second)h(fron)o(t,)g(Gabriel) +h(and)e(Will)i(Clinger)g(approac)o(hed)e(the)h(Sc)o(heme)g(comm)o(unit)o(y)l +(,)h(whic)o(h)0 1174 y(soundly)20 b(rejected)g(an)o(y)f(asso)q(ciation)g +(with)h(the)f(Common)f(Lisp)j(comm)o(unit)o(y)l(.)31 b(\(Sadly)l(,)21 +b(though)e(there)g(w)o(ere)0 1231 y(sev)o(eral)g(other)f(attempts)g(to)g +(bring)h(the)f(t)o(w)o(o)g(comm)o(unities)h(together,)g(there)f(has)h(nev)o +(er)g(b)q(een)g(an)o(y)g(serious)0 1287 y(dialog)d(b)q(et)o(w)o(een)f(the)h +(t)o(w)o(o)d(groups.\))71 1344 y(By)g(the)g(end)h(of)f(1986,)f(it)h(w)o(as)f +(clear)i(that)e(the)i(Europ)q(ean)f(Lisp)i(comm)o(unit)o(y)e(w)o(ould)g(ev)o +(en)o(tually)h(pro)q(duce)g(a)0 1400 y(new)g(Lisp)g(dialect,)g(whic)o(h)h(w)o +(ould)e(b)q(e)h(informally)h(called)f(EuLisp,)h(and)f(that)e(the)h(same)g +(comm)o(unit)o(y)h(in)o(tended)0 1456 y(to)h(start)f(an)h(ISO)h(e\013ort)e +(to)g(standardize)i(this)g(dialect.)71 1513 y(EuLisp)f(is)g(a)f(dialect)i(of) +e(Lisp)h(de\014ned)h(in)f(la)o(y)o(ers,)f(with)h(a)f(v)o(ery)g(small)h(k)o +(ernel)g(language)f(and)h(increasingly)0 1569 y(larger)20 b(ones,)i(the)f +(goal)f(b)q(eing)i(to)e(ha)o(v)o(e)g(a)g(Common-Lisp-sized)i(la)o(y)o(er.)36 +b(EuLisp)22 b(has)e(an)h(ob)s(ject-orien)o(ted)0 1626 y(facilit)o(y)l(,)f(mo) +q(dules,)g(m)o(ultitasking,)f(and)g(a)f(condition)h(system.)29 +b(It)18 b(is)h(a)f(Lisp-1.)30 b(\(A)18 b Fm(c)n(ondition)h(system)e +Fx(is)i(a)0 1682 y(facilit)o(y)d(for)e(de\014ning)i(and)f(handling)i(user)e +(exceptions)h(and)f(for)f(handling)i(system)f(exceptions.)20 +b(In)c(Common)0 1739 y(Lisp,)g(this)g(facilit)o(y)h(pro)o(vides)f(a)f(mec)o +(hanism)h(for)f(executing)i(user-de\014ned)g(co)q(de)f(in)g(the)g(dynamic)g +(con)o(text)f(of)0 1795 y(the)g(error.\))71 1852 y(The)j(most)f(imp)q(ortan)o +(t)h(tec)o(hnical)i(dev)o(elopmen)o(t)f(during)g(this)g(p)q(erio)q(d)g(w)o +(as)f(the)g(Common)f(Lisp)j(Ob)s(ject)0 1908 y(System)11 b(\(CLOS\).)g(In)h +(1986)e(four)h(groups)g(b)q(egan)h(to)f(vie)h(for)e(de\014ning)j(the)f(ob)s +(ject-orien)o(ted)f(programming)g(part)0 1965 y(of)19 b(Common)f(Lisp:)30 +b(New)19 b(Fla)o(v)o(ors)f(\(Sym)o(b)q(olics\))i([Sym)o(b)q(olics,)h(1985],)e +(CommonLo)q(ops)f(\(Xero)o(x\))g([Bobro)o(w,)0 2021 y(1986],)12 +b(Ob)s(ject)i(Lisp)i(\(LMI\))d([Dresc)o(her,)h(1987],)e(and)i(Common)g(Ob)s +(jects)g(\(HP\))f([Kempf,)h(1987].)k(After)c(a)f(six-)0 2077 +y(mon)o(th)d(battle,)i(a)e(group)h(w)o(as)f(formed)h(to)f(write)h(the)g +(standard)f(for)h(CLOS)g(based)h(on)e(CommonLo)q(ops)h(and)g(New)0 +2134 y(Fla)o(v)o(ors.)19 b(This)c(group)g(w)o(as)f(Da)o(vid)h(A.)g(Mo)q(on)g +(\(Sym)o(b)q(olics\),)g(Daniel)h(G.)e(Bobro)o(w)h(\(Xero)o(x\),)e(Gregor)h +(Kiczales)0 2190 y(\(Xero)o(x\),)g(Son)o(y)o(a)h(Keene)i(\(Sym)o(b)q(olics,)f +(a)f(writer\),)g(Linda)i(DeMic)o(hiel)g(\(Lucid\),)g(and)f(Gabriel)g +(\(Lucid\).)22 b(Also,)0 2247 y(certain)d(others)f(con)o(tiobuted)h +(informally)g(to)f(the)g(group:)26 b(P)o(atric)o(k)18 b(Dussud)h(\(TI\),)e +(Jim)j(Kempf)e(\(HP\),)g(and)0 2303 y(Jon)f(L)g(White)g(\(Lucid\).)25 +b(The)17 b(CLOS)g(sp)q(eci\014cation)h(to)q(ok)e(t)o(w)o(o)f(y)o(ears,)h(and) +h(the)g(sp)q(eci\014cation)h(w)o(as)e(adopted)0 2360 y(in)g(June)g(of)f(1988) +f(with)i(no)f(c)o(hanges.)71 2416 y(CLOS)h(has)f(the)g(follo)o(wing)h +(features:)68 2502 y Fk(\017)23 b Fx(Multiple)14 b(inheritance)g(using)g(a)e +(linearization)j(algorithm)d(to)g(resolv)o(e)h(con\015icts)g(and)g(to)f +(order)g(metho)q(ds.)114 2558 y(Multiple)17 b(inheritance)g(pro)o(vides)f(a)f +(mec)o(hanism)h(to)f(build)i(new)f(classes)g(b)o(y)f(com)o(bining)i +Fm(mixins)p Fx(,)d(whic)o(h)114 2615 y(are)d(classes)i(that)e(pro)o(vide)i +(some)f(structure)f(and)i(b)q(eha)o(vior.)19 b(Programming)11 +b(with)h(m)o(ultiple)i(inheritance)114 2671 y(enables)j(the)g(designer)g(to)f +(com)o(bine)h(desired)h(b)q(eha)o(vior)f(without)f(ha)o(ving)h(either)g(to)f +(select)h(the)g(closest)p eop +%%Page: 35 35 +35 34 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(35)114 45 y(existing)16 b(class)f(and)h(mo)q(dify)g(it)f(or)g(to)f +(start)g(a)h(fresh)g(single)i(inheritance)g(c)o(hain.)68 118 +y Fk(\017)23 b Fx(Generic)15 b(functions)g(whose)f(metho)q(ds)g(are)g +(selected)h(based)f(on)g(the)h(classes)f(of)g(all)h(required)g(argumen)o(ts.) +114 175 y(This)f(is)g(in)h(con)o(trast)d(to)i(the)f(message-passing)h(mo)q +(del)h(in)g(whic)o(h)f(a)g(message)f(is)h(sen)o(t)g(to)f(a)g(single)j(ob)s +(ject)114 231 y(whose)f(class)g(selects)h(the)f(metho)q(d)h(to)e(in)o(v)o(ok) +o(e.)68 304 y Fk(\017)23 b Fx(Metho)q(d)13 b(com)o(bination,)g(whic)o(h)h +(pro)o(vides)f(the)g(mec)o(hanism)h(to)e(tak)o(e)g(b)q(eha)o(viors)h(from)g +(comp)q(onen)o(t)g(parts)114 361 y(and)e(blend)i(them)e(together.)18 +b(Metho)q(d)12 b(com)o(bination)g(is)g(an)f(imp)q(ortan)o(t)g(asp)q(ect)g(of) +g(m)o(ultiple)j(inheritance,)114 417 y(b)q(ecause)k(eac)o(h)f(com)o(bined)h +(class)f(can)g(pro)o(vide)g(part)g(of)f(the)h(b)q(eha)o(vior)h(needed,)g(and) +f(the)g(programmer)114 473 y(need)f(not)f(co)q(de)g(up)h(a)f(com)o(bining)h +(metho)q(d)g(to)e(use)i(existing)g(metho)q(ds.)68 547 y Fk(\017)23 +b Fx(Metaclasses,)15 b(whose)h(instances)g(are)g(classes)g(and)g(whic)o(h)h +(are)e(used)i(to)e(con)o(trol)h(the)g(represen)o(tation)f(of)114 +603 y(instances)h(of)e(classes.)68 676 y Fk(\017)23 b Fx(Meta-ob)s(jects,)13 +b(whic)o(h)j(con)o(trol)e(the)h(b)q(eha)o(vior)h(of)e(CLOS)i(itself.)k(CLOS)c +(can)f(b)q(e)g(view)o(ed)h(as)f(a)f(program)114 733 y(written)h(in)h(CLOS.)g +(Since)g(an)o(y)f(CLOS)h(program)e(can)h(b)q(e)h(customized,)g(so)f(can)g +(CLOS)h(itself.)68 806 y Fk(\017)23 b Fx(An)e(elab)q(orate)g(ob)s(ject)f +(creation)h(and)g(initialization)j(proto)q(col)d(that)f(can)h(b)q(e)h(used)f +(to)f(pro)o(vide)i(user)114 862 y(customization)e(of)f(the)g(instance)i +(creation,)f(c)o(hange)g(class,)g(reinitialization,)k(and)19 +b(class)h(rede\014nition)114 918 y(pro)q(cesses.)71 1004 y(During)12 +b(the)h(delib)q(erations)h(of)e(X3J13,)h(a)f(n)o(um)o(b)q(er)h(of)f(other)g +(additions)h(w)o(ere)f(made)h(to)f(Common)f(Lisp:)20 b(an)0 +1060 y(iteration)12 b(facilit)o(y)l(,)i(a)e(condition)h(system,)f(a)g(b)q +(etter)g(sp)q(eci\014cation)i(of)d(compilation)j(and)e(ev)m(aluation)h(seman) +o(tics,)0 1117 y(and)i(sev)o(eral)h(h)o(undreds)g(of)f(small)h(clean)o(ups.) +71 1173 y(The)f(X3J13)g(pro)q(cess)g(w)o(as)g(unlik)o(e)h(the)g(Sc)o(heme)g +(pro)q(cess.)k(The)15 b(Sc)o(heme)h(pro)q(cess)g(allo)o(w)o(ed)f(an)o(y)g(p)q +(erson)h(to)0 1230 y(v)o(eto)c(an)g(addition.)20 b(The)13 b(X3J13)e(pro)q +(cess)i(w)o(en)o(t)f(b)o(y)g(ma)s(jorit)o(y)f(v)o(ote.)18 b(This)13 +b(allo)o(w)o(ed)g(a)f(great)f(deal)i(of)f(log-rolling)0 1286 +y(and)j(some)g(committee)g(mem)o(b)q(ers)h(w)o(ere)f(eager)g(to)f(put)h +(their)h(mark)f(on)g(Common)f(Lisp.)71 1343 y(The)j(iteration)h(facilit)o(y)l +(,)g(called)h Fw(LOOP)p Fx(,)e(it)g(consists)h(of)f(a)g(single)h(macro)f +(that)f(has)i(an)f(elab)q(orate)g(pseudo-)0 1399 y(English)h(or)e(COBOL-lik)o +(e)k(syn)o(tax.)j(The)17 b(debate)h(on)e(this)h(facilit)o(y)h(w)o(as)e(at)g +(times)h(in)o(tense,)h(esp)q(ecially)h(when)0 1456 y(Scott)h(F)l(ahlman)h(w)o +(as)e(still)j(activ)o(e)f(in)g(Common)f(Lisp.)37 b(Because)21 +b(of)f(its)g(non-Lisp)o(y)i(syn)o(tax,)f(it)f(w)o(as)g(\(and)0 +1512 y(remains\))15 b(easy)g(to)g(ridicule.)22 b(\(See)16 b(sections)f(3.2)g +(and)g(3.5.1.\))71 1569 y(The)j(condition)i(system)e(further)g(dev)o(elop)q +(ed)i(the)f(exception)g(handling)h(capabilities)h(of)d(Common)g(Lisp)0 +1625 y(b)o(y)d(in)o(tro)q(ducing)i(\014rst-class)e(conditions)h(and)g(mec)o +(hanisms)g(for)e(de\014ning)j(ho)o(w)e(conditions)h(of)f(certain)g(classes)0 +1681 y(are)g(to)f(b)q(e)h(handled|either)j(automatically)d(or)f(with)i(h)o +(uman)f(in)o(terv)o(en)o(tion.)20 b(Adoption)15 b(of)g(this)g(facilit)o(y)h +(w)o(as)0 1738 y(made)f(easier)h(b)o(y)g(the)f(adoption)h(of)f(CLOS,)h(whic)o +(h)g(pa)o(v)o(ed)f(the)h(w)o(a)o(y)e(for)h(a)g(cleaner)h(form)o(ulation)g(of) +f(the)g(basic)0 1794 y(mec)o(hanisms.)k(Nev)o(ertheless,)13 +b(the)e(condition)i(system)e(w)o(as)g(not)g(completely)h(CLOSi\014ed)i(and)e +(cleaned)h(up.)19 b(F)l(or)0 1851 y(example,)e(clauses)g(that)f(app)q(ear)h +(syn)o(tactically)g(to)f(b)q(e)h(metho)q(d)g(de\014nitions)h(and)f(hence)g +(should)h(b)q(e)f(selected)0 1907 y(based)f(on)f(class)g(sp)q(eci\014cit)o(y) +i(are)e(actually)h(treated)f(lik)o(e)h Fw(COND)f Fx(clauses.)71 +1964 y(In)i(1987)e(ISO)j(created)f(a)f(w)o(orking)g(group)h(called)h(W)o(G16) +d(to)h(b)q(egin)i(the)f(pro)q(cess)g(of)f(standardizing)i(Lisp)0 +2020 y(at)d(the)g(in)o(ternational)h(lev)o(el.)21 b(The)16 +b(t)o(w)o(o)d(primary)j(con)o(tenders)f(w)o(ere)g(EuLisp)i(and)e(Common)f +(Lisp.)71 2077 y(The)f(p)q(olitical)j(goal)d(of)f(EuLisp)j(w)o(as)d(to)h +(displace)i(Common)e(Lisp)h(from)e(Europ)q(e.)20 b(Because)14 +b(US)f(standards)0 2133 y(had)i(suc)o(h)f(a)g(strong)g(in\015uence)i(in)g +(Europ)q(e)e(and)h(b)q(ecause)g(the)g(only)g(standards)f(organization)g(with) +h(real)g(clout)0 2190 y(in)h(Europ)q(e)g(w)o(as)e(ISO,)i(this)f(route)g(w)o +(as)g(dictated.)71 2246 y(The)d(in)o(tellectual)i(goal)d(w)o(as)g(a)g(clean,) +i(commercial-qualit)o(y)l(,)h(la)o(y)o(ered)e(Lisp)h(dialect)g(for)e(the)h +(future.)19 b(EuLisp)0 2302 y(app)q(ears)d(to)f(ha)o(v)o(e)g(met)g(its)h +(goals)f(and)h(man)o(y)f(consider)i(it)e(one)h(of)f(the)h(nicer)h(Lisp)f +(de\014nitions,)h(though)f(there)0 2359 y(are)f(still)i(no)e(commercial)h +(implemen)o(tations)g(of)f(it.)71 2415 y(F)l(or)h(\014v)o(e)i(y)o(ears,)f +(the)g(US)h(managed)f(to)g(k)o(eep)h(an)o(y)f(progress)g(from)g(b)q(eing)h +(made)g(in)g(the)g(ISO)g(committee)0 2472 y(un)o(til,)f(in)g(1992,)e(a)h +(compromise)g(w)o(as)f(w)o(ork)o(ed)h(out)f(in)i(whic)o(h,)g(essen)o(tially)l +(,)h(a)d(near)h(subset)h(of)e(Common)h(Lisp)0 2528 y(and)f(of)g(CLOS)h(w)o +(ould)g(form)e(the)h(basis)h(of)f(a)g(k)o(ernel)h(Lisp)g(dialect.)71 +2585 y(In)k(1988,)g(D)o(ARP)l(A)g(called)i(another)d(Lisp)j(meeting)e(to)f +(discuss)i(bringing)h(the)e(Sc)o(heme)h(and)f(Common)0 2641 +y(Lisp)d(comm)o(unities)f(together)f(but,)g(as)g(with)h(earlier)h(attempts,)d +(this)i(failed)g(primarily)h(b)q(ecause)g(the)e(Sc)o(heme)p +eop +%%Page: 36 36 +36 35 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(36)0 45 y(comm)o(unit)o(y)15 b(did)h(not)e(w)o(an)o(t)g(to)g(ha)o +(v)o(e)h(an)o(ything)g(to)f(do)h(with)g(Common)f(Lisp.)21 b(A)o(ttending)16 +b(this)f(meeting)g(w)o(ere)0 102 y(Bill)i(Sc)o(herlis,)g(Stev)o(e)e(Squires,) +h(Gabriel,)f(Daniel)i(G.)d(Bobro)o(w,)g(Gerry)h(Sussman,)g(and)g(Scott)g(F)l +(ahlman.)71 158 y(In)h(1989,)e(Sc)o(heme)j(b)q(egan)f(an)f(IEEE)h +(standardization)g(pro)q(cess,)g(whic)o(h)g(culminated)i(in)e(1991)f(with)h +(b)q(oth)0 214 y(an)f(IEEE)h(and)g(ANSI)g(standard)f([IEEE,)g(1991],)f(the)i +(latter)f(after)g(a)g(virtually)i(unannounced)g(public)g(review)0 +271 y(p)q(erio)q(d.)28 b(The)18 b(structure)f(of)g(the)h(Sc)o(heme)g +(standards)f(is)h(that)e(the)i(o\016cial)g(standard)f(lags)h(the)f(informal)h +(R)1926 254 y Fi(n)0 327 y Fx(Rep)q(ort,)d(so)g(that)f(the)i(standard)f +(corresp)q(onds)g(to)g(the)g(R)1005 311 y Fi(n)p Fh(\000)p +Fj(1)1089 327 y Fx(Rep)q(ort)h(when)f(the)h(R)1473 311 y Fi(n)1512 +327 y Fx(Rep)q(ort)f(is)h(curren)o(t.)71 384 y(Also)e(in)h(1989,)e(the)h +(\014rst)g(non-in)o(trusiv)o(e)i(garbage)d(collectors)i(app)q(eared)g(from)e +(the)i(companies)g(Lucid)h(and)0 440 y(F)l(ranz.)j(The)14 b(Lucid)i +(collector)f(is)f(an)g(ephemeral)h(garbage)e(collector)i(based)f(on)g(a)f +(com)o(bination)i(of)e(ideas)i(from)0 497 y(Smalltalk)g(generation)f(sca)o(v) +o(engers)f(and)h(the)g(Sym)o(b)q(olics)h(ephemeral)g(garbage)e(collector)h +([Sobalv)m(arro,)g(1988].)71 553 y(The)20 b(app)q(earance)g(of)g(these)g +(collectors)g(seemed)h(to)e(ha)o(v)o(e)h(the)g(e\013ect)f(of)h(increasing)h +(the)f(legitimacy)h(of)0 610 y(sto)q(c)o(k-hardw)o(are)g(Lisp)i(companies)g +(to)f(the)g(same)f(or)h(higher)h(lev)o(el)g(than)f(the)g(Lisp)i(mac)o(hine)f +(companies.)0 666 y(This)e(w)o(as)e(b)q(ecause)j(the)e(Lisp)i(mac)o(hine)f +(companies)g(encouraged)f(the)h(b)q(elief)h(that)e(sto)q(c)o(k-hardw)o(are)f +(Lisps)0 723 y(could)f(nev)o(er)g(ha)o(v)o(e)f(the)h(p)q +(erformance|particularly)h(for)e(garbage)g(collection|that)i(the)e(sp)q +(ecial-purp)q(ose-)0 779 y(computer)e(Lisps)h(could)h(ha)o(v)o(e.)i(When)d +(this)f(w)o(as)g(pro)o(v)o(en)g(wrong,)f(the)h(Lisp)h(mac)o(hine)g(companies) +g(su\013ered.)71 835 y(In)e(1991,)f(the)h(R)354 819 y Fj(4)388 +835 y Fx(Rep)q(ort)h(included)h(a)e(sp)q(eci\014cation)i(of)e(h)o(ygienic)h +(macros,)e(the)i(\014rst)e(partially)i(standard-)0 892 y(ized)h(macro)f +(facilit)o(y)h(in)g(Sc)o(heme.)71 948 y(As)f(X3J13)g(progressed)g(and)h(the)f +(p)q(o)o(w)o(er)g(of)g(general)h(purp)q(ose)g(w)o(orkstations)e +(increased|largely)k(due)e(to)0 1005 y(dev)o(elopmen)o(t)g(of)g(fast)e(RISC)j +(pro)q(cessors|sto)q(c)o(k)e(hardw)o(are)g(Lisp)i(companies)g(dominated,)f +(forcing)g(most)e(of)0 1061 y(the)k(Lisp)i(mac)o(hine)f(companies)g(either)g +(out)f(of)g(business)i(or)e(out)g(of)f(their)i(leadership)h(p)q(osition.)31 +b(Also,)19 b(the)0 1118 y(deterioration)g(of)f(the)h(Lisp)h(mark)o(et)d(and)i +(the)g(general)g(decline)i(of)d(the)h(econom)o(y)f(in)h(the)g(US)g(com)o +(bined)h(to)0 1174 y(enable)f(the)f(smaller)h(soft)o(w)o(are-based)d(Lisp)k +(companies)e(to)f(surviv)o(e|customers)i(w)o(ere)f(not)f(willing)j(to)e(buy)0 +1231 y(exp)q(ensiv)o(e)f(\\dedicated")f(computers)f(and)g(then)h(sp)q(end)g +(money)f(main)o(taining)i(them.)71 1287 y(In)c(April)g(of)f(1992)g(X3J13)g +(deliv)o(ered)i(to)e(X3)g(SP)l(AR)o(C)h(\(the)f(authorizing)h(b)q(o)q(dy)g +(for)f(X3J13|no)h(relation)g(to)0 1344 y(the)j(micropro)q(cessor)g(arc)o +(hitecture)g(of)f(the)h(same)g(name\))g(its)g(draft)f(for)g(Common)g(Lisp.)23 +b(A)o(t)15 b(the)h(same)g(time,)0 1400 y(ISO)g(W)o(G16)e(pro)q(duced)i(the)g +(\014rst)e(draft)h(of)g(its)g(k)o(ernel)h(Lisp.)71 1456 y(The)f(ANSI)i(draft) +e(for)f(Common)h(Lisp)i(is)f(immensely)h(large|w)o(ell)g(o)o(v)o(er)e(1000)f +(pages.)21 b(W)l(e)16 b(are)f(told)h(that)0 1513 y(one)f(o\016cial)h(at)f(X3) +g(SP)l(AR)o(C,)g(on)g(\014rst)g(seeing)h(it,)f(gasp)q(ed:)20 +b(\\It's)15 b(bigger)g(than)g(COBOL!)h Fm(Much)g Fx(bigger!")71 +1569 y(Though)g(this)h(migh)o(t)g(seem)g(funn)o(y)l(,)g(it)g(sho)o(ws)f(ho)o +(w)g(a)g(pro)q(cess)h(of)g(increasing)h(desire)f(for)f(expressiv)o(eness,)0 +1626 y(in)o(tensi\014ed)21 b(atten)o(tion)d(to)g(getting)h(the)g(details)h +(righ)o(t)e(\(ev)o(en)h(for)g(details)g(that)g(almost)f(nev)o(er)h(matter\),) +f(the)0 1682 y(need)e(for)e(individuals)k(to)c(mak)o(e)g(their)i(mark,)e(and) +h(a)f(seemingly)j(delib)q(erate)f(blind)h(ey)o(e)e(to)o(w)o(ards)e +(commercial)0 1739 y(realities)22 b(can)e(lead)i(to)d(an)i(unin)o(tended)h +(result|a)f(large,)g(un)o(wieldy)h(language)f(that)f(few)g(can)h(completely)0 +1795 y(understand.)0 1938 y Fp(3)69 b(Ev)n(olution)23 b(of)g(Some)f(Sp)r +(eci\014c)f(Language)k(F)-6 b(eatures)0 2040 y Fx(In)15 b(this)g(section)g(w) +o(e)f(discuss)h(the)g(ev)o(olution)g(of)f(some)g(language)g(features)g(that)g +(are)g(either)h(unique)h(to)e(Lisp)h(or)0 2096 y(uniquely)i(handled)g(b)o(y)e +(Lisp.)71 2153 y(But)g(for)g(the)g(constrain)o(ts)g(of)g(space,)g(w)o(e)g(w)o +(ould)h(ha)o(v)o(e)e(addressed)i(as)f(w)o(ell)h(man)o(y)f(other)g(topics)h +(that)e(ha)o(v)o(e)0 2209 y(\014gured)j(prominen)o(tly)g(in)g(the)f(tec)o +(hnical)i(dev)o(elopmen)o(t)f(of)f(Lisp)h(or)f(ha)o(v)o(e)g(b)q(een)h +(addressed)g(in)g(un)o(usual)g(w)o(a)o(ys)0 2266 y(in)f(the)f(con)o(text)g +(of)g(the)g(Lisp)h(language:)207 2335 y(con)o(tin)o(uations)501 +b(structure)15 b(editors)207 2391 y(rei\014cation)h(and)f(re\015ection)285 +b(prett)o(y-prin)o(ting)207 2448 y(garbage)14 b(collection)412 +b(program)14 b(tracing)h(and)h(debugging)207 2504 y(stac)o(k)e(managemen)o(t) +398 b(closures)16 b(\(lexical)h(and)e(dynamic\))207 2561 y(record)g +(structures)429 b(nonlo)q(cal)16 b(exits)g(and)f Fw(UNWIND-PROTECT)207 +2617 y Fx(oblist,)g(obarra)o(y)l(,)f(pac)o(k)m(ages,)h(mo)q(dules)92 +b(parallel)17 b(pro)q(cessing)207 2674 y(hash)e(tables)h(vs.)e(prop)q(ert)o +(y)h(lists)195 b(ob)s(ject-orien)o(ted)15 b(programming)p eop +%%Page: 37 37 +37 36 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(37)0 45 y(Eac)o(h)13 b(of)g(these)g(topics)h(has)f(a)f(story)h +(that)f(spans)h(decades)h(and)g(in)o(teracts)e(with)i(the)f(dev)o(elopmen)o +(t)h(of)f(language)0 102 y(theory)j(and)g(other)g(programming)f(languages.)23 +b(Here)16 b(w)o(e)g(m)o(ust)g(con)o(ten)o(t)f(ourselv)o(es)i(with)f(a)g(few)g +(topics)h(that)0 158 y(are)e(represen)o(tativ)o(e)g(of)g(the)g(concerns)h(of) +f(the)g(Lisp)h(comm)o(unit)o(y)l(.)0 278 y Fo(3.1)56 b(The)18 +b(T)-5 b(reatmen)n(t)17 b(of)i(NIL)f(\(and)h(T\))0 363 y Fx(Almost)f(since)h +(the)f(b)q(eginning,)i(Lisp)f(has)e(used)i(the)f(sym)o(b)q(ol)g +Fw(nil)f Fx(as)h(the)f(distinguished)k(ob)s(ject)c(that)g(indi-)0 +420 y(cates)e(the)g(end)g(of)g(a)g(list)g(\(and)g(whic)o(h)h(is)g(therefore)e +(itself)i(the)f(empt)o(y)g(list\);)g(this)h(same)e(ob)s(ject)h(also)g(serv)o +(es)f(as)0 476 y(the)i Fm(false)g Fx(v)m(alue)h(returned)g(b)o(y)f +(predicates.)24 b(McCarth)o(y)15 b(has)i(commen)o(ted)f(that)f(these)i +(decisions)h(w)o(ere)e(made)0 533 y(\\rather)c(ligh)o(theartedly")j(and)e +(\\later)g(pro)o(v)o(ed)g(unfortunate.")19 b(F)l(urthermore,)12 +b(the)i(earliest)g(implemen)o(tations)0 589 y(established)j(a)d(tradition)i +(of)e(using)i(the)f(zero)g(address)g(as)f(the)i(represen)o(tation)f(of)f +Fw(NIL)p Fx(;)g(McCarth)o(y)g(also)h(com-)0 646 y(men)o(ted)k(that)g(\\b)q +(esides)h(encouraging)f(p)q(ornographic)h(programming,)f(giving)h(a)f(sp)q +(ecial)h(in)o(terpretation)g(to)0 702 y(the)15 b(address)h(0)e(has)h(caused)h +(di\016culties)i(in)e(all)g(subsequen)o(t)g(implemen)o(tations")g([McCarth)o +(y)l(,)d(1978].)71 759 y(The)18 b(adv)m(an)o(tage)g(of)g(using)h(address)g(0) +f(as)g(the)g(represen)o(tation)h(of)f Fw(NIL)g Fx(is)h(that)e(most)h(mac)o +(hines)h(ha)o(v)o(e)f(a)0 815 y(\\jump)13 b(if)h(zero")f(instruction)h(or)f +(the)g(equiv)m(alen)o(t,)i(allo)o(wing)f(a)f(quic)o(k)h(and)f(compact)g(test) +g(for)g(the)g(end)h(of)f(a)g(list.)0 871 y(As)f(an)g(example)h(of)e(the)h +(implemen)o(tation)i(di\016culties,)g(ho)o(w)o(ev)o(er,)d(consider)i(the)f +(PDP-10)g(arc)o(hitecture,)g(whic)o(h)0 928 y(had)18 b(16)g(registers,)h(or)e +(\\accum)o(ulators",)h(whic)o(h)h(w)o(ere)f(also)g(addressable)h(as)f(memory) +g(lo)q(cations.)30 b(Memory)0 984 y(lo)q(cation)20 b(0)f(w)o(as)f(therefore)h +(register)g(0.)31 b(Because)20 b(address)f(0)g(w)o(as)f Fw(NIL)p +Fx(,)h(the)g(standard)f(represen)o(tation)i(for)0 1041 y(sym)o(b)q(ols)15 +b(dictated)g(that)f(the)h(righ)o(t)f(half)h(of)f(register)h(0)f(con)o(tain)h +(the)g(prop)q(ert)o(y)f(list)h(for)f(the)h(sym)o(b)q(ol)g Fw(NIL)f +Fx(\(and)0 1097 y(the)i(left)g(half)g(con)o(tained)g(the)g(address)g(of)f +(other)h(information,)f(suc)o(h)h(as)g(the)f(c)o(haracter)g(string)h(for)f +(the)h(name)0 1154 y(\\)p Fw(NIL)p Fx("\).)d(The)h(implemen)o(tation)i +(tradition)f(th)o(us)f(resulted)h(in)h(t)o(ying)e(up)h(a)f(register)g(in)i +(an)e(arc)o(hitecture)h(where)0 1210 y(registers)g(w)o(ere)g(a)g(scarce)g +(resource.)71 1267 y(Later,)i(when)i(MacLisp)f(adopted)g(from)f(In)o(terlisp) +i(the)f(con)o(v)o(en)o(tion)g(that)f Fw(\(CAR)23 b(NIL\))17 +b Fx(=)h Fw(\(CDR)24 b(NIL\))17 b Fx(=)0 1323 y Fw(NIL)p Fx(,)i(register)g(0) +g(w)o(as)g(still)i(reserv)o(ed;)g(its)f(t)o(w)o(o)e(halv)o(es)i(con)o(tained) +g(the)g(v)m(alue)h(0)e(so)g(that)g(the)h Fw(car)f Fx(and)g +Fw(cdr)0 1380 y Fx(op)q(erations)c(need)h(not)f(sp)q(ecial-case)i +Fw(NIL)p Fx(.)e(But)g(all)h(op)q(erations)f(on)g(sym)o(b)q(ols)h(had)f(to)g +(sp)q(ecial-case)i Fw(NIL)p Fx(,)d(for)h(it)0 1436 y(no)j(longer)g(had)g(the) +g(same)f(represen)o(tation)h(as)g(other)f(sym)o(b)q(ols.)28 +b(This)18 b(led)h(to)e(some)h(di\016culties)i(for)d(Steele,)0 +1492 y(who)e(had)g(to)g(\014nd)h(ev)o(ery)f(place)h(in)g(the)f(assem)o +(bly-language)h(k)o(ernel)g(of)f(MacLisp)h(where)f(this)h(mattered.)71 +1549 y(No)o(w)o(ada)o(ys)11 b(some)i(Common)g(Lisp)h(implemen)o(tations)g +(use)g(a)f(complex)h(system)f(of)f(o\013set)h(data)f(represen)o(ta-)0 +1605 y(tions)j(to)f(a)o(v)o(oid)g(sp)q(ecial)i(cases)f(for)f(either)h(conses) +g(or)f(sym)o(b)q(ols;)g Fm(every)h Fx(sym)o(b)q(ol)g(is)g(represen)o(ted)g +(in)g(suc)o(h)g(a)f(w)o(a)o(y)0 1662 y(that)i(the)g(data)g(for)g(the)g(sym)o +(b)q(ol)h(do)q(es)g(not)e(b)q(egin)j(at)e(the)g(memory)g(w)o(ord)g(addressed) +h(b)o(y)f(a)g(sym)o(b)q(ol)h(p)q(oin)o(ter,)0 1718 y(but)f(t)o(w)o(o)f(w)o +(ords)g(after)g(the)h(w)o(ord)f(addressed.)22 b(A)16 b(cons)g(cell)h +(consists)g(of)e(the)h(addressed)g(w)o(ord)f(\(the)h(cdr\))g(and)0 +1775 y(the)f(w)o(ord)f(after)g(that)g(\(the)h(car\).)k(In)d(this)f(w)o(a)o(y) +f(the)h(same)f(p)q(oin)o(ter)i(serv)o(es)e(for)h(b)q(oth)g +Fw(NIL)f Fx(the)h(sym)o(b)q(ol)g(and)g Fw(\(\))0 1831 y Fx(the)g(empt)o(y)g +(list)h(pseudo-cons)g(whose)f(car)g(and)h(cdr)f(are)g(b)q(oth)g +Fw(NIL)p Fx(.)71 1888 y(There)e(is)g(a)f(danger)h(in)h(using)f(a)g(quic)o(k)g +(test)g(for)f(the)h(end)g(of)f(a)h(list;)h(a)f(list)g(migh)o(t)g(turn)g(out)f +(to)g(b)q(e)i(improp)q(er,)0 1944 y(that)c(is,)i(ending)g(in)g(an)f(ob)s +(ject)f(that)h(is)g(neither)h(the)f(empt)o(y)g(list)g(nor)g(a)g(cons)g(cell.) +20 b(In)o(terlisp)12 b(split)g(the)f(di\013erence,)0 2001 y(giving)16 +b(the)f(programmer)f(a)h(c)o(hoice)h(of)f(sp)q(eed)h(or)f(safet)o(y)f([T)l +(eitelman,)i(1978,)e(p.)h(2.2]:)182 2071 y(Although)g(most)f(lists)h +(terminate)f(in)i Fw(NIL)p Fx(,)d(the)i(o)q(ccasional)g(list)h(that)d(ends)j +(in)f(an)f(atom,)g(e.g.,)114 2128 y Fw(\(A)23 b(B)h(.)g(C\))p +Fx(,)16 b(or)g(w)o(orse,)g(a)g(n)o(um)o(b)q(er)h(or)f(string,)h(could)h +(cause)f(bizarre)g(e\013ects.)24 b(Accordingly)l(,)19 b(w)o(e)114 +2184 y(ha)o(v)o(e)14 b(made)i(the)f(follo)o(wing)h(implemen)o(tation)g +(decision:)182 2241 y Fm(A)o(l)r(l)e(functions)h(that)h(iter)n(ate)g(thr)n +(ough)g(a)g(list,)e(e.g.,)i Fw(member)p Fm(,)e Fw(length)p +Fm(,)h Fw(mapc)p Fm(,)g(etc.,)g(terminate)114 2297 y(by)21 +b(an)h Fw(nlistp)f Fm(che)n(ck,)i(r)n(ather)f(than)g(the)g(c)n(onventional)f +(nul)r(l-che)n(ck,)h(as)g(a)g(safety)g(pr)n(e)n(c)n(aution)114 +2354 y(against)15 b(enc)n(ountering)h(data)h(typ)n(es)e(which)i(might)g(c)n +(ause)f(in\014nite)f Fw(cdr)g Fm(lo)n(ops)h Fn(:)8 b(:)g(:)21 +b Fx([their)15 b(italics])182 2410 y(F)l(or)i(users)h(with)g(an)g +(application)i(requiring)f(extreme)f(e\016ciency)l(,)i([fo)q(otnote:)k(A)18 +b Fw(NIL)f Fx(c)o(hec)o(k)114 2466 y(can)i(b)q(e)g(executed)h(in)g(only)f +(one)g(instruction;)i(an)e Fw(nlistp)f Fx(on)h(In)o(terlisp-10)h(requires)f +(ab)q(out)g(8,)114 2523 y(although)14 b(b)q(oth)h(generate)f(only)h(one)f(w)o +(ord)g(of)g(co)q(de.])g(w)o(e)g(ha)o(v)o(e)g(pro)o(vided)h(fast)f(v)o +(ersions)g(of)g Fw(memb)p Fx(,)114 2579 y Fw(last)p Fx(,)g +Fw(nth)p Fx(,)g Fw(assoc)p Fx(,)g(and)i Fw(length)p Fx(,)e(whic)o(h)i +(compile)g(op)q(en)g(and)g(terminate)f(on)g Fw(NIL)g Fx(c)o(hec)o(ks)g +Fn(:)8 b(:)g(:)71 2650 y Fx(Fisc)o(her)14 b(Blac)o(k)h(commen)o(ted)g(as)f +(early)g(as)h(1964)e(on)h(the)h(di\013erence)g(b)q(et)o(w)o(een)g +Fw(NIL)f Fx(and)h Fw(\(\))f Fx(as)g(a)g(matter)f(of)0 2707 +y(programming)f(st)o(yle)h([Blac)o(k,)g(1964].)18 b(There)13 +b(has)g(b)q(een)h(quite)f(a)g(bit)g(of)g(discussion)h(o)o(v)o(er)e(the)h(y)o +(ears)f(of)h(whether)p eop +%%Page: 38 38 +38 37 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(38)0 45 y(to)18 b(tease)h(apart)f(the)h(three)g(roles)g(of)g(the)g +(empt)o(y)f(list,)j(the)e(false)g(v)m(alue,)i(and)e(the)g(otherwise)g(unin)o +(teresting)0 102 y(sym)o(b)q(ol)e(whose)g(name)g(is)g(\\)p +Fw(NIL)p Fx(";)f(suc)o(h)h(discussion)i(w)o(as)d(particularly)i(in)o(tense)g +(in)g(the)f(Sc)o(heme)g(comm)o(unit)o(y)l(,)0 158 y(man)o(y)e(of)g(whose)g +(constituen)o(ts)g(are)g(in)o(terested)g(in)i(elegance)f(and)f(clarit)o(y)l +(.)21 b(They)15 b(regard)g(the)g(construction)0 232 y Fw(\(if)23 +b(\(car)h(x\))f(\(+)h(\(car)f(x\))h(1\)\))0 306 y Fx(as)15 +b(a)g(bad)g(pun,)h(preferring)f(the)h(more)e(explicit)0 380 +y Fw(\(if)23 b(\(not)h(\(null)f(\(car)g(x\)\)\))h(\(+)f(\(car)g(x\))h(1\)\)) +71 454 y Fm(The)18 b(R)n(evise)n(d)h(R)n(evise)n(d)f(R)n(ep)n(ort)h(on)g +(Scheme)f Fx([Clinger,)i(1985b])d(de\014ned)i(three)g(distinct)g(quan)o +(tities)g Fw(nil)0 511 y Fx(\(just)12 b(another)g(sym)o(b)q(ol\);)g +Fw(\(\))p Fx(,)h(the)f(empt)o(y)g(list;)i(and)e Fw(#!false)p +Fx(,)g(the)g(b)q(o)q(olean)h(false)g(v)m(alue)h(\(along)e(with)g +Fw(#!true)p Fx(,)0 567 y(the)19 b(b)q(o)q(olean)g(true)f(v)m(alue\).)31 +b(Ho)o(w)o(ev)o(er,)18 b(in)h(an)f(in)o(teresting)h(compromise,)h(all)f +(places)g(in)h(the)e(language)h(that)0 624 y(tested)f(for)f(true/false)h(v)m +(alues)h(regarded)f(b)q(oth)g Fw(\(\))f Fx(and)i Fw(#!false)d +Fx(as)i(false)g(and)g(all)h(other)f(ob)s(jects)f(as)g(true.)0 +680 y(The)e(rep)q(ort)g(commen)o(ts:)182 749 y(The)h(empt)o(y)g(list)h(coun)o +(ts)f(as)f(false)i(for)e(historical)i(reasons)f(only)l(,)h(and)f(programs)f +(should)i(not)114 806 y(rely)12 b(on)h(this)f(b)q(ecause)h(future)g(v)o +(ersions)f(of)g(Sc)o(heme)g(will)i(probably)f(do)f(a)o(w)o(a)o(y)f(with)h +(this)h(nonsense.)182 862 y(Programmers)h(accustomed)j(to)e(other)h(dialects) +i(of)e(Lisp)h(should)h(b)q(ew)o(are)e(that)f(Sc)o(heme)i(has)114 +919 y(already)c(done)g(a)o(w)o(a)o(y)e(with)i(the)f(nonsense)i(that)e(iden)o +(ti\014es)i(the)f(empt)o(y)f(list)h(with)g(the)g(sym)o(b)q(ol)g +Fw(nil)p Fx(.)71 988 y(The)h Fm(R)n(evise)n(d)316 971 y Fj(3)349 +988 y Fm(R)n(ep)n(ort)h(on)g(the)g(A)o(lgorithmic)g(L)n(anguage)f(Scheme)g +Fx([Rees,)g(1986])e(shortened)i Fw(#!false)f Fx(and)0 1044 +y Fw(#!true)h Fx(to)h Fw(#f)g Fx(and)g Fw(#t)p Fx(,)g(and)g(made)g(a)g +(remark)g(that)f(is)i(similar)g(but)g(more)e(re\014ned)i(\(in)g(b)q(oth)f +(senses\):)182 1113 y(The)h(empt)o(y)g(list)i(coun)o(ts)e(as)g(false)g(for)g +(compatibilit)o(y)i(with)f(existing)g(programs)e(and)i(imple-)114 +1170 y(men)o(tations)d(that)h(assume)g(this)h(to)e(b)q(e)i(the)f(case.)182 +1226 y(Programmers)f(accustomed)i(to)f(other)h(dialects)h(of)e(Lisp)i(should) +g(b)q(ew)o(are)f(that)f(Sc)o(heme)h(dis-)114 1283 y(tinguishes)g(false)g(and) +f(the)g(empt)o(y)g(list)h(from)f(the)g(sym)o(b)q(ol)h Fw(nil)p +Fx(.)71 1352 y(The)j(recen)o(tly)h(appro)o(v)o(ed)e(IEEE)i(standard)e(for)h +(Sc)o(heme)g(sp)q(eci\014es)i(that)e Fw(#f)f Fx(and)i Fw(#t)e +Fx(are)h(the)g(standard)0 1408 y(false)f(and)g(true)g(v)m(alues,)i(and)e +(that)f(all)i(v)m(alues)g(except)f Fw(#f)g Fx(coun)o(t)g(as)f(true,)h +(\\including)j Fw(#t)p Fx(,)d(the)g(empt)o(y)g(list,)0 1465 +y(sym)o(b)q(ols,)d(n)o(um)o(b)q(ers,)g(strings,)f(v)o(ectors,)g(and)h(pro)q +(cedures")g([IEEE,)f(1991].)19 b(So)14 b(the)h(Sc)o(heme)h(comm)o(unit)o(y)e +(has,)0 1521 y(indeed,)j(o)o(v)o(ercome)e(long)h(tradition)g(and)f +(completely)i(separated)f(the)f(three)h(notions)g(of)f(the)g(false)h(v)m +(alue,)h(the)0 1577 y(empt)o(y)e(list,)h(and)f(the)g(sym)o(b)q(ol)h +Fw(NIL)p Fx(.)e(Nev)o(ertheless)i(the)f(question)h(con)o(tin)o(ues)g(to)f(b)q +(e)g(debated.)71 1634 y(The)i(question)h(of)f Fw(NIL)g Fx(w)o(as)f(also)i +(debated)g(in)g(the)f(design)i(of)d(Common)h(Lisp,)i(and)e(at)g(least)g(one)h +(of)f(the)0 1690 y(directly)g(con)o(tributing)f(implemen)o(tations,)h(NIL,)f +(had)f(already)h(made)g(the)f(decision)i(that)e(the)h(empt)o(y)f(list)h +Fw(\(\))0 1747 y Fx(w)o(ould)f(not)g(b)q(e)h(the)f(same)g(as)f(the)i(sym)o(b) +q(ol)f Fw(NIL)p Fx(.)f(\(A)h(running)h(jok)o(e)f(w)o(as)f(that)g(NIL)i(\(New) +f(Implemen)o(tation)h(of)0 1803 y(Lisp\))j(un)o(burdened)g +Fw(NIL)f Fx(of)f(its)h(role)g(as)g(the)g(empt)o(y)f(list)i(so)f(that)f(it)h +(w)o(ould)g(b)q(e)h(free)f(to)f(serv)o(e)g(as)h(the)g(name)0 +1860 y(of)c(the)h(language!\))20 b(Ev)o(en)o(tually)15 b(the)g(desire)h(to)e +(b)q(e)i(compatible)f(with)h(the)e(past,)g(ho)o(w)o(ev)o(er)g(cruft)o(y)h +([Ra)o(ymond,)0 1916 y(1991],)e(carried)j(the)f(da)o(y)l(.)71 +1973 y(It)21 b(is)g(w)o(orth)f(noting)h(that)f(Lisp)j(implemen)o(tors)e(ha)o +(v)o(e)g(not)f(b)q(een)j(tempted)e(to)f(iden)o(tify)i Fw(NIL)f +Fx(with)g(the)0 2029 y Fm(numb)n(er)e Fx(0)g(\(as)f(opp)q(osed)i(to)e(the)i +(in)o(ternal)g Fm(addr)n(ess)e Fx(0\),)h(with)h(one)f(notable)h(exception,)h +(a)e(Lisp)h(system)f(for)0 2086 y(the)c(PDP-11)f(written)h(in)g(the)g(1970's) +e(b)o(y)i(Ric)o(hard)h(M.)e(Stallman,)h(in)h(whic)o(h)f(the)g(n)o(um)o(b)q +(er)h(0)e(rather)g(than)h(the)0 2142 y(sym)o(b)q(ol)j Fw(NIL)f +Fx(w)o(as)f(used)i(as)f(the)g(empt)o(y)g(list)h(and)g(as)f(false.)26 +b(Compare)17 b(this)h(to)e(the)i(use)f(of)g(0)g(and)h(1)f(as)g(false)0 +2198 y(and)g(true)f(in)h(APL)g([Iv)o(erson,)f(1962],)f(or)h(the)h(use)g(of)f +(0)g(as)g(false)h(and)f(as)g(the)h(n)o(ull)h(p)q(oin)o(ter)f(in)g(C)g +([Kernighan,)0 2255 y(1978].)27 b(Both)18 b(of)f(these)i(languages)f(ha)o(v)o +(e)g(pro)o(v)o(ok)o(ed)f(the)h(same)g(kinds)h(of)e(commen)o(ts)h(ab)q(out)g +(puns)h(and)f(bad)0 2311 y(programming)d(practice)g(that)g(McCarth)o(y)f +(made)h(ab)q(out)g(Lisp.)71 2368 y(This)g(ma)o(y)f(seem)h(to)f(the)h(reader)f +(to)h(b)q(e)g(a)f(great)g(deal)i(of)e(discussion)i(to)e(exp)q(end)j(in)e +(this)g(pap)q(er)h(on)e(suc)o(h)h(a)0 2424 y(small)g(p)q(oin)o(t)f(of)f +(language)h(design.)21 b(Ho)o(w)o(ev)o(er,)13 b(the)g(space)i(tak)o(en)e +(here)h(re\015ects)g(accurately)h(the)e(prop)q(ortion)h(of)0 +2481 y(time)i(and)f(energy)g(in)i(debate)e(actually)h(exp)q(ended)h(on)f +(this)f(p)q(oin)o(t)h(b)o(y)f(the)h(Lisp)g(comm)o(unit)o(y)f(o)o(v)o(er)g +(the)g(y)o(ears.)0 2537 y(It)f(is)g(a)g(debate)g(ab)q(out)g(expressiv)o +(eness)g(v)o(ersus)g(cleanliness)i(and)e(ab)q(out)g(di\013eren)o(t)g(notions) +g(of)g(clarit)o(y)l(.)20 b(Ev)o(en)13 b(if)0 2594 y(Lisp)h(do)q(es)f(not)g +(enforce)g(strong)f(t)o(yping,)h(some)g(programmers)e(prefer)i(to)f(main)o +(tain)i(a)e(t)o(yp)q(e)h(disciplin)q(e)j(in)d(their)0 2650 +y(co)q(de,)24 b(writing)e Fw(\(if)i(\(not)f(\(null)g(\(car)h(x\)\)\))f +Fn(:)8 b(:)g(:)e Fw(\))21 b Fx(instead)i(of)f Fw(\(if)h(\(car)g(x\))h +Fn(:)8 b(:)g(:)d Fw(\))p Fx(.)41 b(Others)22 b(con)o(tend)0 +2707 y(that)14 b(suc)o(h)i(excess)g(clutter)f(detracts)g(from)f(clarit)o(y)i +(rather)e(than)h(impro)o(ving)h(it.)p eop +%%Page: 39 39 +39 38 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(39)0 45 y Fo(3.2)56 b(Iteration)0 131 y Fx(While)16 +b(Lisp,)g(according)g(to)e(its)h(P)l(.R.,)g(has)g(traditionally)h(used)g +(conditionals)g(and)g(recursiv)o(ely)g(de\014ned)g(func-)0 +187 y(tions)g(as)g(the)g(principal)j(means)d(of)g(expressing)h(con)o(trol)e +(structure,)h(there)g(ha)o(v)o(e)g(in)h(fact)f(b)q(een)h(rep)q(eated)g(and)0 +244 y(con)o(tin)o(uing)h(attempts)d(to)h(in)o(tro)q(duce)h(v)m(arious)g(syn)o +(tactic)g(devices)g(to)f(mak)o(e)g(iteration)h(more)f(con)o(v)o(enien)o(t.)24 +b(In)0 300 y(some)17 b(cases)g(this)g(w)o(as)f(driv)o(en)i(b)o(y)f(the)h +(desire)g(to)e(em)o(ulate)h(st)o(yles)g(of)g(programming)f(found)i(in)g +(ALGOL-lik)o(e)0 357 y(languages)d([Abrahams,)f(1966])g(and)h(b)o(y)g(the)g +(fact)f(that,)g(although)h(some)g(compilers)h(w)o(ould)g(sometimes)f(opti-)0 +413 y(mize)i(tail-recursiv)o(e)h(calls,)f(the)g(programmer)e(could)i(not)f +(rely)h(on)g(this)f(un)o(til)i(the)e(era)g(of)g(go)q(o)q(d)h(Sc)o(heme)g(and) +0 470 y(Common)d(Lisp)j(compilers)f(in)g(the)g(1980's,)d(so)i(p)q(erformance) +g(w)o(as)f(an)h(issue.)71 526 y(P)o(erhaps)h(the)h(simplest)h(sp)q(ecial)h +(iteration)e(construct)g(is)h(exempli\014ed)h(b)o(y)e(the)g(\014rst)g +Fw(do)f Fx(lo)q(op)i(in)o(tro)q(duced)0 583 y(in)o(to)d(MacLisp)h(\(in)g +(Marc)o(h,)e(1969\):)0 675 y Fw(\(do)23 b Fm(var)i(init)e(step)h(test)f +Fw(.)h Fm(b)n(o)n(dy)p Fw(\))0 767 y Fx(means)15 b(the)g(same)g(as)0 +860 y Fw(\(let)23 b(\(\()p Fm(var)h(init)p Fw(\)\))48 916 y(\(block)f(\(when) +g Fm(test)h Fw(\(return\)\))215 972 y(\(progn)f(.)h Fm(b)n(o)n(dy)p +Fw(\))215 1029 y(\(setq)f Fm(var)h(step)p Fw(\)\)\))0 1121 +y Fx(Th)o(us)15 b(the)g(F)l(ortran)f(DO)i(lo)q(op)143 1214 +y Fw(DO)24 b(10)f(J=1,100)143 1270 y(IF)h(\(A\(J\))f(.GT.)g(0\))h(SUM)f(=)h +(SUM)f(+)h(A\(J\))24 1326 y(10)71 b(CONTINUE)0 1419 y Fx(could)16 +b(b)q(e)g(expressed)g(as)0 1511 y Fw(\(DO)23 b(J)h(1)g(\(+)f(J)h(1\))g(\(>)f +(J)h(100\))48 1568 y(\(WHEN)f(\(PLUSP)g(\(A)h(J\)\))95 1624 +y(\(SETQ)g(TOTAL)f(\(+)g(TOTAL)h(\(AREF)f(A)g(J\)\)\)\)\))0 +1716 y Fx(\(except,)15 b(of)g(course,)g(that)f(Lisp)i(arra)o(ys)e(are)h +(usually)i(0-origin)f(instead)f(of)g(1-origin,)h(so)0 1809 +y Fw(\(DO)23 b(J)h(0)g(\(+)f(J)h(1\))g(\(=)f(J)h(100\))48 1865 +y(\(WHEN)f(\(PLUSP)g(\(A)h(J\)\))95 1922 y(\(SETQ)g(TOTAL)f(\(+)g(TOTAL)h +(\(AREF)f(A)g(J\)\)\)\)\))0 2014 y Fx(is)16 b(actually)g(a)f(more)f +(idiomatic)j(rendering\).)71 2070 y(This)f(\\old-st)o(yle")h(MacLisp)g +Fw(do)f Fx(lo)q(op)h(w)o(as)f(b)o(y)g(no)g(means)g(the)h(earliest)g +(iteration)f(syn)o(tax)g(in)o(tro)q(duced)i(to)0 2127 y(Lisp;)f(w)o(e)e(men)o +(tion)h(it)g(\014rst)f(only)i(b)q(ecause)f(it)g(is)g(the)g(simplest.)23 +b(The)16 b(In)o(terlisp)h(CLISP)f(iterativ)o(e)g(statemen)o(ts)0 +2183 y(w)o(ere)f(the)g(earliest)h(examples)g(of)f(the)g(more)g(t)o(ypical)h +(st)o(yle)f(that)g(has)g(b)q(een)h(rein)o(v)o(en)o(ted)g(ev)o(er)f(since:)0 +2276 y Fw(\(FOR)23 b(J)p Fk( )p Fw(0)h(TO)g(99)g(SUM)f(\(A)h(J\))f(WHEN)g +(\(PLUSP)h(\(A)f(J\)\)\))0 2368 y Fx(This)14 b(returns)f(the)g(sum)g(as)f +(its)i(v)m(alue)g(rather)e(than)h(accum)o(ulating)h(it)g(in)o(to)f(the)g(v)m +(ariable)h Fw(TOTAL)f Fx(b)o(y)g(side)h(e\013ect.)0 2424 y(\(See)h(section)h +(3.5.1)e(for)g(further)h(discussion)i(of)e(Algol-st)o(yle)h(syn)o(tax.\))71 +2481 y(Macros)e(or)h(other)g(co)q(de-transformation)g(facilities)i(suc)o(h)f +(as)f(CLISP)h(mak)o(e)f(this)h(kind)h(of)e(extension)h(par-)0 +2537 y(ticularly)k(easy)l(.)31 b(While)21 b(the)e(e\013ort)e(in)j(In)o +(terlisp)h(w)o(as)d(cen)o(tralized,)j(in)e(other)g(Lisp)h(dialects)g +(\(MacLisp)f(not)0 2594 y(excepted\))i(there)g(ha)o(v)o(e)f(b)q(een)i(rep)q +(eated)g(instances)f(of)f(one)h(lo)q(cal)h(wizard)f(or)f(another)h(cobbling)h +(up)f(some)0 2650 y(fancy)f(syn)o(tax)g(for)g(iterativ)o(e)g(pro)q(cesses)h +(in)g(Lisp.)37 b(Usually)22 b(it)e(is)h(c)o(haracterized)g(b)o(y)f(the)h +(kind)g(of)f(pseudo-)0 2707 y(English)e(k)o(eyw)o(ords)d(found)i(in)h(the)e +(Algol-lik)o(e)j(languages,)d(although)h(one)g(v)o(ersion)f(at)g(Stanford)g +(relied)i(more)p eop +%%Page: 40 40 +40 39 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(40)0 45 y(on)13 b(the)g(extended-ASCI)q(I)j(c)o(haracter)d(set)g(a) +o(v)m(ailable)h(on)g(its)f(home-gro)o(wn)f(k)o(eyb)q(oards.)19 +b(This)14 b(led)g(to)f(a)g(prolifer-)0 102 y(ation)i(of)f(closely)i(related)f +(syn)o(taxes,)f(t)o(ypically)j(led)e(o\013)f(b)o(y)h(the)g(k)o(eyw)o(ord)f +Fw(FOR)g Fx(or)h Fw(LOOP)p Fx(,)f(that)g(ha)o(v)o(e)g(attracted)0 +158 y(man)o(y)h(programmers)f(but)h(turned)h(the)f(stomac)o(hes)f(of)h +(others)g(as)g(features)f(accreted.)71 214 y(Because)20 b(of)f(these)g +(strong)g(and)g(di\013ering)i(aesthetic)f(reactions)f(to)g(iteration)h(syn)o +(tax,)f(the)g(question)h(of)0 271 y(whether)d(to)f(include)j(a)d +Fw(loop)h Fx(macro)f(b)q(ecame)h(a)f(ma)s(jor)g(p)q(olitical)j(battle)d(in)i +(the)f(early)g(design)g(of)g(Common)0 327 y(Lisp,)e(with)e(the)h(Lisp)g(Mac)o +(hine)g(cro)o(wd)f(generally)i(in)f(fa)o(v)o(or)e(of)h(its)h(adoption)f(and)h +(Scott)f(F)l(ahlman)g(adaman)o(tly)0 384 y(opp)q(osing)20 b(it,)g(seconded)h +(p)q(erhaps)f(more)f(w)o(eakly)g(b)o(y)g(Steele.)34 b(The)20 +b(result)f(w)o(as)g(a)g(compromise.)33 b(The)19 b(\014rst)0 +440 y(de\014nition)h(of)e(Common)f(Lisp)i([CL)l(TL1,)g(1984])d(included)21 +b(a)d Fw(loop)g Fx(macro)f(with)h(absolutely)i(minimal)f(func-)0 +497 y(tionalit)o(y:)h(it)13 b(p)q(ermitted)h(no)g(sp)q(ecial)h(k)o(eyw)o +(ords)d(and)i(w)o(as)e(go)q(o)q(d)h(only)h(for)f(expressing)h(endless)h(rep)q +(etition)f(of)f(a)0 553 y(sequence)i(of)f(subforms.)19 b(It)c(w)o(as)e +(understo)q(o)q(d)i(to)f(b)q(e)h(a)f(placeholder,)h(reserving)g(the)g(name)f +Fw(loop)g Fx(for)f(p)q(ossible)0 610 y(extension)k(to)f(some)g(full-blo)o(wn) +j(iteration)d(syn)o(tax.)23 b(ANSI)18 b(committee)e(X3J13)g(did)i(ev)o(en)o +(tually)f(agree)f(up)q(on)0 666 y(and)f(adopt)g(a)g(sligh)o(tly)i(cleaned-up) +g(v)o(ersion)e(of)g Fw(loop)g Fx([CL)l(TL2,)g(1990])f(based)h(on)g(the)h(one) +f(used)h(at)f(MIT)g(and)0 723 y(on)g(Lisp)i(Mac)o(hines)e(\(whic)o(h)h(w)o +(as)e(not)h(v)o(ery)g(m)o(uc)o(h)g(di\013eren)o(t)h(from)e(the)h(one)h(in)g +(In)o(terlisp\).)71 779 y(In)i(the)h(pro)q(cess)f(X3J13)g(also)g(considered)i +(t)o(w)o(o)d(other)g(approac)o(hes)h(to)g(iteration)g(that)g(had)g(cropp)q +(ed)h(up)0 835 y(in)e(the)f(mean)o(time:)22 b(series)17 b(\(put)f(forw)o(ard) +f(b)o(y)h(Ric)o(hard)h(W)l(aters\))e(and)i(generators)e(and)h(gatherers)g +(\(b)o(y)f(P)o(a)o(v)o(el)0 892 y(Curtis)21 b(and)h(Crispin)g(P)o(erdue\))f +([CL)l(TL2,)i(1990;)c(W)l(aters,)j(1984;)e(W)l(aters,)h(1989a;)f(W)l(aters,)h +(1989b].)37 b(The)0 948 y(example)16 b(F)l(ortran)e Fw(DO)24 +b(loop)14 b Fx(sho)o(wn)h(ab)q(o)o(v)o(e)g(w)o(ould)g(b)q(e)h(rendered)g +(using)g(series)g(as)0 1034 y Fw(\(collect-sum)22 b(\(choose-if)h(#'plusp)573 +1091 y(\(#M\(lambda)f(\(j\))i(\(a)f(j\)\))597 1147 y(\(scan-range)f(:start)h +(0)h(:below)f(100\)\)\))0 1233 y Fx(The)c(call)h(to)e Fw(scan-range)f +Fx(generates)h(a)g(series)i(of)e(in)o(tegers)g(from)g(0)h(\(inclusiv)o(e\))h +(to)e(100)g(\(exclusiv)o(e\).)31 b(The)0 1289 y(notation)13 +b Fw(#M)f Fx(means)h(\\map"|the)g(follo)o(wing)h(function)g(is)f(applied)i +(to)e(ev)o(ery)g(elemen)o(t)h(of)e(a)h(series,)h(pro)q(ducing)0 +1346 y(a)20 b(new)h(series.)37 b(The)21 b(function)g Fw(choose-if)e +Fx(is)i(a)g Fm(\014lter)p Fx(,)g(and)f Fw(collect-sum)f Fx(returns)i(the)g +(sum)f(of)g(all)i(the)0 1402 y(elemen)o(ts)16 b(in)g(a)f(series.)20 +b(Th)o(us)15 b(series)h(are)f(used)h(in)g(a)f(functional)h(st)o(yle,)f +(reminiscen)o(t)i(of)d(APL:)0 1488 y Fw(+/\(T>0\)/T)p Fk( )p +Fw(A[)p Fn(\023)p Fw(100])0 1573 y Fx(The)j(de\014nition)h(of)e(the)g(series) +h(primitiv)o(es)h(and)f(their)f(p)q(ermitted)i(comp)q(ositions)f(is)g(clev)o +(erly)g(constrained)g(so)0 1630 y(that)10 b(they)h(can)f(alw)o(a)o(ys)g(b)q +(e)i(compiled)g(in)o(to)f(e\016cien)o(t)g(iterativ)o(e)g(co)q(de)g(without)g +(the)f(need)i(for)e(un)o(b)q(oundedly)j(large)0 1686 y(in)o(termediate)i +(data)f(structures)g(at)f(run)i(time.)20 b(Generators)13 b(and)i(gatherers)e +(are)h(a)g(metho)q(d)h(of)f(encapsulating)0 1743 y(series)k(\(at)e(the)h +(cost)f(of)h(run-time)h(state\))e(so)g(that)g(they)i(lo)q(ok)f(lik)o(e)h +(input)g(or)e(output)h(streams,)f(resp)q(ectiv)o(ely)l(,)0 +1799 y(that)e(serv)o(e)i(as)e(sources)i(or)e(sinks)i(of)f(successiv)o(e)h(v)m +(alues)h(b)o(y)e(side)h(e\013ect.)j(Th)o(us)0 1885 y Fw(\(generator)j +(\(scan-range)h(:start)g(0)h(:below)f(100\)\))0 1971 y Fx(pro)q(duces)e(an)e +(ob)s(ject)h(that)f(deliv)o(ers)i(successiv)o(e)g(in)o(tegers)f +Fw(0)f Fx(through)h Fw(99)f Fx(when)h(rep)q(eatedly)h(giv)o(en)g(to)e(the)0 +2027 y(extraction)c(function)h Fw(next-in)p Fx(.)j(The)c(complete)h(example)g +(migh)o(t)f(b)q(e)h(rendered)g(as)0 2113 y Fw(\(let)23 b(\(\(num)g +(\(generator)g(\(scan-range)f(:start)h(0)h(:below)f(100\)\)\)\))48 +2169 y(\(gathering)f(\(\(result)h(collect-sum\)\))95 2226 y(\(loop)h(\(let)f +(\(\(j)g(\(next-in)g(num)h(\(return)f(result\)\)\)\))286 2282 +y(\(if)h(\(plusp)f(j\))g(\(next-out)g(result)g(j\)\)\)\)\)\))0 +2368 y Fx(This)c(reminds)g(one)f(of)f(the)i(p)q(ossibilities)i(lists)e(of)e +(Conniv)o(er)i([McDermott,)d(1974])h(or)h(of)f(the)h(generators)f(of)0 +2424 y(Alphard)12 b([Sha)o(w,)e(1981],)g(though)g(w)o(e)h(kno)o(w)f(of)g(no)h +(direct)g(connection.)19 b(Generators)10 b(and)h(gatherers)f(emphasize)0 +2481 y(use)16 b(of)e(con)o(trol)h(structure)g(rather)g(than)g(functional)h +(relationships.)71 2537 y(After)j(m)o(uc)o(h)h(debate,)h(X3J13)e(applauded)i +(the)f(dev)o(elopmen)o(t)h(of)e(series)i(and)f(generators)f(but)h(rejected)0 +2594 y(them)15 b(for)g(standardization)g(purp)q(oses,)h(preferring)f(to)g +(sub)s(ject)g(them)g(\014rst)g(to)g(the)g(test)g(of)f(time.)71 +2650 y(One)22 b(other)f(iteration)h(construct)g(that)f(deserv)o(es)h +(discussion)h(is)f(the)g(MacLisp)h(\\new-st)o(yle")e Fw(do)h +Fx(lo)q(op,)0 2707 y(in)o(tro)q(duced)16 b(in)g(Marc)o(h,)f(1972:)p +eop +%%Page: 41 41 +41 40 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(41)0 45 y Fw(\(do)23 b(\(\()p Fm(var1)i(init1)e(step1)p +Fw(\))119 102 y(\()p Fm(var2)i(init2)e(step2)p Fw(\))119 158 +y(...)119 214 y(\()p Fm(varn)h(initn)f(stepn)p Fw(\)\))95 271 +y(\()p Fm(test)h Fw(.)g Fm(r)n(esult)p Fw(\))48 327 y(.)f Fm(b)n(o)n(dy)p +Fw(\))0 412 y Fx(This)16 b(ev)m(aluates)g(all)g(the)f Fm(init)f +Fx(forms)h(and)g(binds)h(the)g(corresp)q(onding)g(v)m(ariables)g +Fm(var)f Fx(to)g(the)g(resulting)h(v)m(alues.)0 468 y(It)g(then)g(iterates)g +(the)g(follo)o(wing)g(sequence:)22 b(if)17 b(ev)m(aluating)g(the)f +Fm(test)f Fx(form)g(pro)q(duces)i(a)f(true)f(v)m(alue,)i(ev)m(aluate)0 +525 y(the)e Fm(r)n(esult)f Fx(forms)g(and)h(return)g(the)g(v)m(alue)h(of)e +(the)h(last)g(one;)f(otherwise)h(execute)h(the)f Fm(b)n(o)n(dy)f +Fx(forms)g(in)i(sequence)0 581 y(and)f(rep)q(eat.)71 638 y(The)d(b)q(eaut)o +(y)g(of)g(this)g(construct)g(is)h(that)e(it)h(allo)o(ws)h(the)f +(initialization)j(and)d(stepping)h(of)f(m)o(ultiple)i(v)m(ariables)0 +694 y(without)d(use)h(of)e(pseudo-English)j(k)o(eyw)o(ords.)18 +b(The)11 b(a)o(wful)h(part)e(is)i(that)e(it)h(uses)h(m)o(ultiple)h(lev)o(els) +f(of)f(paren)o(theses)0 751 y(as)18 b(delimiters)j(and)e(y)o(ou)g(ha)o(v)o(e) +f(to)g(get)g(them)h(righ)o(t)g(or)f(endure)i(strange)e(b)q(eha)o(vior;)j +(only)e(a)g(diehard)h(Lisp)q(er)0 807 y(could)c(lo)o(v)o(e)f(suc)o(h)h(a)f +(syn)o(tax.)71 864 y(Argumen)o(ts)j(o)o(v)o(er)h(syn)o(tax)f(aside,)i(there)g +(is)f(something)h(to)e(b)q(e)i(said)g(for)e(recognizing)j(that)d(a)h(lo)q(op) +h(that)0 920 y(steps)f(only)g(one)g(v)m(ariable)h(is)g(prett)o(y)e(useless,)i +(in)g Fm(any)f Fx(programming)f(language.)31 b(It)19 b(is)g(almost)g(alw)o(a) +o(ys)f(the)0 977 y(case)e(that)g(one)g(v)m(ariable)i(is)f(used)f(to)g +(generate)g(successiv)o(e)h(v)m(alues)h(while)g(another)d(is)i(used)g(to)f +(accum)o(ulate)g(a)0 1033 y(result.)22 b(If)16 b(the)g(lo)q(op)h(syn)o(tax)e +(steps)g(only)i(the)f(generating)g(v)m(ariable,)h(then)f(the)g(accum)o +(ulating)g(v)m(ariable)i(m)o(ust)0 1089 y(b)q(e)d(stepp)q(ed)h(\\man)o +(ually")f(b)o(y)g(using)g(assignmen)o(t)g(statemen)o(ts)e(\(as)h(in)i(the)f +(F)l(ortran)e(example\))j(or)e(some)g(other)0 1146 y(side)19 +b(e\013ect.)27 b(The)17 b(m)o(ultiple-v)m(ariabl)q(e)k Fw(do)c +Fx(lo)q(op)h(re\015ects)g(an)g(essen)o(tial)g(symmetry)f(b)q(et)o(w)o(een)h +(generation)g(and)0 1202 y(accum)o(ulation,)e(allo)o(wing)g(iteration)f(to)g +(b)q(e)h(expressed)g(without)f(explicit)i(side)f(e\013ects:)0 +1287 y Fw(\(define)23 b(\(factorial)f(n\))48 1344 y(\(do)h(\(\(j)h(n)f(\(-)h +(j)g(1\)\))167 1400 y(\(f)g(1)f(\(*)h(j)g(f\)\)\))143 1456 +y(\(\(=)g(j)f(0\))h(f\)\)\))0 1541 y Fx(It)17 b(is)g(indeed)h(not)e(un)o +(usual)i(for)d(a)i Fm(do)g Fx(lo)q(op)g(of)f(this)h(form)e(to)h(ha)o(v)o(e)g +(an)h(empt)o(y)f(b)q(o)q(dy)l(,)i(p)q(erforming)e(all)i(its)f(real)0 +1598 y(w)o(ork)d(in)i(the)g Fm(step)f Fx(forms.)71 1654 y(While)f(there)e(is) +i(a)e(prett)o(y)g(ob)o(vious)h(translation)g(of)f(this)h Fw(do)f +Fx(construct)h(in)g(terms)f(of)h Fw(prog)f Fx(and)h Fw(setq)p +Fx(,)f(there)0 1710 y(is)k(also)f(a)g(p)q(erspicuous)i(mo)q(del)f(free)f(of)g +(side)h(e\013ects:)0 1795 y Fw(\(labels)23 b(\(\(the-loop)262 +1852 y(\(lambda)g(\()p Fm(var1)i(var2)f Fw(...)g Fm(varn)p +Fw(\))310 1908 y(\(cond)f(\()p Fm(test)h Fw(.)g Fm(r)n(esult)p +Fw(\))453 1964 y(\(t)g(\(progn)f(.)h Fm(b)n(o)n(dy)p Fw(\))525 +2021 y(\(the-loop)f Fm(step1)h(step2)f Fw(...)h Fm(stepn)p +Fw(\)\)\)\)\)\))48 2077 y(\(the-loop)e Fm(init1)i(init2)g Fw(...)f +Fm(initn)p Fw(\)\))0 2162 y Fx(Indeed,)c(this)e(is)g(equiv)m(alen)o(t)i(to)d +(the)h(de\014nition)i(of)d Fm(do)i Fx(adopted)f(b)o(y)g(Sc)o(heme)g([IEEE,)g +(1991],)e(whic)o(h)j(resolv)o(es)0 2219 y(an)g(outstanding)h(am)o(biguit)o(y) +f(b)o(y)g(requiring)i(that)d(the)i(v)m(ariables)h(b)q(e)e(up)q(dated)i(b)o(y) +e(binding)i(rather)e(than)g(b)o(y)0 2275 y(side)c(e\013ect.)19 +b(Th)o(us)14 b(the)f(en)o(tire)h(iteration)g(pro)q(cess)f(is)h(free)g(of)f +(side)h(e\013ects.)19 b(With)14 b(the)f(adv)o(en)o(t)g(of)g(go)q(o)q(d)g(Sc)o +(heme)0 2331 y(compilers)19 b(suc)o(h)g(as)e(ORBIT)i([Kranz,)g(1986])d(and)i +(go)q(o)q(d)g(Common)g(Lisp)h(compilers,)g(compiling)h(the)f(result)0 +2388 y(of)f(this)g(side-e\013ect-free)i(translation)e(pro)q(duces)h(exactly)g +(the)f(same)g(e\016cien)o(t)h(mac)o(hine-language)g(co)q(de)g(one)0 +2444 y(w)o(ould)d(exp)q(ect)g(from)e(the)h Fw(PROG)p Fx(-and-)p +Fw(SETQ)g Fx(mo)q(del.)0 2564 y Fo(3.3)56 b(Macros)0 2650 y +Fx(Macros)15 b(app)q(ear)i(to)e(ha)o(v)o(e)h(b)q(een)i(in)o(tro)q(duced)f(in) +o(to)f(Lisp)i(b)o(y)e(Timoth)o(y)g(P)l(.)g(Hart)f(in)j(1963)d(in)i(a)f(short) +f(MIT)h(AI)0 2707 y(Memo)f([Hart,)e(1963],)h(whic)o(h)i(w)o(e)f(quote)g(here) +g(in)h(its)g(en)o(tiret)o(y)f(\(with)g(p)q(ermission\):)p eop +%%Page: 42 42 +42 41 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(42)182 45 y(In)15 b(LISP)g(1.5)f(sp)q(ecial)i(forms)d(are)i(used)f +(for)g(three)h(logically)h(separate)e(purp)q(oses:)20 b(a\))14 +b(to)f(reac)o(h)114 102 y(the)18 b(alist,)i(b\))e(to)g(allo)o(w)g(functions)h +(to)f(ha)o(v)o(e)g(an)h(inde\014nite)h(n)o(um)o(b)q(er)f(of)f(argumen)o(ts,)g +(and)h(c\))f(to)114 158 y(k)o(eep)d(argumen)o(ts)g(from)f(b)q(eing)i(ev)m +(aluated.)182 214 y(New)i(LISP)i(in)o(terpreters)e(can)h(easily)g(satisfy)f +(need)h(\(a\))f(b)o(y)g(making)h(the)f(alist)h(a)f Fw(SPECIAL)p +Fx(-)114 271 y(t)o(yp)q(e)e(or)g Fw(APVAL)p Fx(-t)o(yp)q(e)g(en)o(tit)o(y)l +(.)23 b(Uses)16 b(\(b\))g(and)g(\(c\))g(can)h(b)q(e)g(replaced)g(b)o(y)f +(incorp)q(orating)h(a)f Fw(MACRO)114 327 y Fx(instruction)g(expander)g(in)g +Fw(define)p Fx(.)j(I)c(am)g(prop)q(osing)h(suc)o(h)f(an)g(expander.)156 +403 y(1.)22 b(The)17 b(prop)q(ert)o(y)f(list)i(of)e(a)g(macro)g(de\014nition) +j(will)f(ha)o(v)o(e)f(the)g(indicator)g Fw(MACRO)f Fx(follo)o(w)o(ed)h(b)o(y) +214 459 y(a)e(function)i(of)f(one)g(argumen)o(t,)f(a)h(form)f(b)q(eginning)k +(with)d(the)g(macro's)f(name,)h(and)g(whose)214 515 y(v)m(alue)g(will)h +(replace)f(the)f(original)i(form)d(in)i(all)g(function)g(de\014nitions.)156 +588 y(2.)22 b(The)15 b(function)h Fw(macro[l])e Fx(will)j(de\014ne)f(macros)f +(just)g(as)f Fw(define[l])g Fx(de\014nes)j(functions.)156 662 +y(3.)22 b Fw(define)14 b Fx(will)j(b)q(e)f(mo)q(di\014ed)g(to)f(mak)o(e)g +(macro)f(expansions.)114 737 y(Examples:)156 812 y(1.)22 b(The)15 +b(existing)h Fw(FEXPR)f(csetq)f Fx(ma)o(y)h(b)q(e)h(replaced)g(b)o(y)f(the)g +(macro)g(de\014nition:)214 895 y Fw(MACRO)23 b(\(\()214 952 +y(\(CSETQ)g(\(LAMBDA)g(\(FORM\))g(\(LIST)g(\(QUOTE)g(CSET\))g(\(LIST)g +(\(QUOTE)g(QUOTE\))214 1008 y(\(CADR)g(FORM\)\))g(\(CADDR)g(FORM\)\)\)\))214 +1065 y(\)\))156 1148 y Fx(2.)f(A)15 b(new)g(macro)g Fw(stash)f +Fx(will)j(generate)e(the)g(form)g(found)g(frequen)o(tly)h(in)g +Fw(PROG)p Fx('s:)214 1231 y Fw(x)23 b(:=)h(cons[form;x])214 +1315 y Fx(Using)15 b(the)h(macro)e Fw(stash)p Fx(,)g(one)i(migh)o(t)f(write)g +(instead)h(of)f(the)g(ab)q(o)o(v)o(e:)214 1398 y Fw(\(STASH)23 +b(FORM)g(X\))214 1482 y(Stash)14 b Fx(ma)o(y)h(b)q(e)g(de\014ned)i(b)o(y:)214 +1565 y Fw(MACRO)23 b(\(\()214 1622 y(\(STASH)g(\(LAMBDA)g(\(FORM\))g(\(LIST)g +(\(QUOTE)g(SETQ\))g(\(CADAR)g(FORM\))214 1678 y(\(LIST)g(\(CONS)g(\(CADR)g +(FORM\))g(\(CADAR)g(FORM\)\)\))g(\)\)\))214 1735 y(\)\))156 +1818 y Fx(3.)f(New)17 b(macros)f(ma)o(y)h(b)q(e)g(de\014ned)i(in)f(terms)f +(of)f(old.)26 b Fw(Enter)17 b Fx(is)h(a)e(macro)h(for)f(adding)i(a)f(new)214 +1874 y(en)o(try)d(to)h(a)g(table)h(\(dotted)e(pairs\))h(stored)g(as)g(the)g +(v)m(alue)i(of)d(a)h(program)f(v)m(ariable.)214 1967 y Fw(enter[form])554 +1976 y Fk(\021)498 1938 y Fg(MA)o(CR)o(O)667 1967 y Fw +(list[STASH;list[CONS;cadr[)o(form];)214 2024 y(caddr[form];cadddr[form)o(]]) +214 2107 y Fx(Inciden)o(tally)l(,)21 b(use)d(of)f(macros)g(will)j(alleviate)f +(the)f(presen)o(t)g(di\016cult)o(y)h(resulting)g(from)e(the)214 +2164 y(90)d(LISP)i(compiler's)g(only)g(kno)o(wing)f(ab)q(out)h(those)e +(fexprs)i(in)g(existence)g(at)f(its)g(birth.)214 2229 y(The)g(macro)g +(de\014ning)h(function)g Fw(macro)f Fx(is)g(easily)i(de\014ned:)214 +2312 y Fw(macro[l])22 b Fk(\021)j Fw(deflist[l;MACRO])214 2395 +y Fx(The)15 b(new)h Fw(define)e Fx(is)i(a)e(little)j(harder:)214 +2479 y Fw(define[l])22 b Fk(\021)i Fw(deflist[mdef[l];EXPR])214 +2552 y(mdef[l])f Fk(\021)h Fw([)309 2608 y(atom[l])f Fk(!)h +Fw(l;)309 2665 y(eq[car[l];QUOTE])e Fk(!)i Fw(l;)p eop +%%Page: 43 43 +43 42 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(43)309 45 y Fw(member[car[l];\(LAMBDA)21 b(LABEL)i(PROG\)])g +Fk(!)405 102 y Fw(cons[car[l];cons[cadr[l)o(];mdef[)o(caddr[l)o(]]]];)309 +158 y(get[car[l];MACRO])f Fk(!)i Fw(mdef[get[car[l];MACRO][l]])o(;)309 +214 y(T)g Fk(!)g Fw(maplist[l;)p Fn(\025)p Fw([[j];mdef[car[)o(j]]]]])156 +291 y Fx(4.)e(The)11 b(macro)g(for)g Fw(select)g Fx(illustrates)h(the)g(use)g +(of)f(macros)f(as)i(a)f(means)g(of)g(allo)o(wing)i(functions)214 +347 y(of)h(an)i(arbitrary)e(n)o(um)o(b)q(er)i(of)e(argumen)o(ts:)214 +430 y Fw(select[form])578 439 y Fk(\021)522 401 y Fg(MA)o(CR)o(O)715 +430 y Fn(\025)p Fw([[g];)309 487 y(list[list[LAMBDA;list[g];co)o(ns[COND)o(;) +309 543 y(maplist[cddr[form];)p Fn(\025)p Fw([[l])o(;)405 600 +y([null[cdr[l]])22 b Fk(!)i Fw(list[T;car[l]];)428 656 y(T)g +Fk(!)g Fw(list[list[EQ;g;caar[l]];cadar)o([l]]]]])214 713 y +(]];cadr[form]]][gensym[)o(]])71 787 y Fx(There)11 b(are)g(a)g(n)o(um)o(b)q +(er)h(of)f(p)q(oin)o(ts)g(w)o(orth)g(noting)g(ab)q(out)g(Hart's)f(prop)q +(osal.)19 b(It)12 b(allo)o(ws)f(the)g(macro)g(expansion)0 844 +y(to)17 b(b)q(e)h(computed)g(b)o(y)g(an)g(arbitrary)f(user-de\014ned)i +(function,)g(rather)e(than)h(relying)g(on)g(substitution)h(in)o(to)e(a)0 +900 y(template,)e(as)g(so)g(man)o(y)g(other)g(macro)f(pro)q(cessors)h(of)g +(the)h(da)o(y)e(did.)22 b(He)15 b(noted)h(that)e(macros,)g(unlik)o(e)j +(fexprs,)0 956 y(require)i(no)g(sp)q(ecial)h(kno)o(wledge)f(for)f(eac)o(h)h +(one)g(on)f(the)h(part)f(of)g(the)h(compiler.)31 b(Macros)18 +b(are)g(expanded)i(at)0 1013 y(function)d(de\014nition)h(time,)e(rather)g +(than)f(on)h(the)h(\015y)f(as)g(a)f(function)i(is)g(in)o(terpreted)f(or)g +(compiled.)24 b(Note)16 b(the)0 1069 y(switc)o(hing)i(o\013)f(b)q(et)o(w)o +(een)h(S-expression)h(and)f(M-expression)g(syn)o(tax.)26 b(The)18 +b Fw(STASH)f Fx(macro)g(is)h(the)f(equiv)m(alen)o(t)0 1126 +y(of)e(the)h Fw(PUSH)f Fx(macro)g(found)h(in)g(In)o(terlisp)h([T)l(eitelman,) +g(1978])d(and)i(later)f(in)i(Common)d(Lisp)j(b)o(y)f(w)o(a)o(y)e(of)i(Lisp-)0 +1182 y(Mac)o(hine)e(Lisp;)h(the)e(v)o(erb)h(\\stash")e(w)o(as)h(commonly)h +(used)g(in)g(the)g(1960's.)j(There)d(are)f(t)o(w)o(o)f(minor)i(bugs)g(in)g +(the)0 1239 y(de\014nition)i(of)d Fw(mdef)p Fx(:)19 b(\014rst,)13 +b Fw(PROG)g Fx(is)i(not)e(prop)q(erly)i(handled,)g(b)q(ecause)g(it)f(fails)h +(to)e(pro)q(cess)h(all)h(the)f(statemen)o(ts)0 1295 y(in)i(a)f +Fw(PROG)g Fx(form;)f(second,)h Fw(COND)g Fx(is)h(not)f(handled)h(sp)q +(ecially)l(,)i(whic)o(h)e(can)f(lead)h(to)f(mistak)o(es)g(if)h(a)e(v)m +(ariable)j(has)0 1352 y(the)d(same)g(name)g(as)g(a)g(macro)g(and)g(the)g(v)m +(ariable)i(is)f(used)g(as)e(the)i(test)e(part)h(of)g(a)g Fw(COND)f +Fx(clause.)21 b(\(P)o(erhaps)14 b(this)0 1408 y(w)o(as)f(an)g(o)o(v)o(ersigh) +o(t,)f(or)h(p)q(erhaps)h(it)g(nev)o(er)f(o)q(ccurred)h(to)f(Hart)f(that)h(an) +o(y)o(one)g(w)o(ould)h(ha)o(v)o(e)e(the)i(bad)f(taste)g(to)g(use)0 +1465 y(a)j(name)h(for)e(t)o(w)o(o)g(suc)o(h)i(di\013eren)o(t)g(purp)q +(oses.\))24 b(The)16 b(last)h(example)g(illustrates)g(the)g(tec)o(hnique)h +(of)e(generating)0 1521 y(a)g(new)h(name)f(for)g(a)g(temp)q(orary)g(binding)j +(to)c(a)o(v)o(oid)i(m)o(ultiple)h(ev)m(aluations)g(of)e(an)g(argumen)o(t)g +(form.)23 b(Finally)l(,)0 1577 y(Hart)c(ac)o(hiev)o(ed)h(an)f(amazing)g +(increase)h(in)h(expressiv)o(e)f(p)q(o)o(w)o(er)e(with)i(a)f(deceptiv)o(ely)i +(simple)g(c)o(hange)e(to)g(the)0 1634 y(language,)c(b)o(y)g(encouraging)h +(the)f(user)g(to)g(exploit)h(the)g(p)q(o)o(w)o(er)e(of)h(Lisp)h(to)f(serv)o +(e)g(as)g(its)g(o)o(wn)g(metalanguage.)71 1690 y(Hart's)22 +b(macro)h(language)h(w)o(as)f(subsequen)o(tly)h(used)h(in)f(the)g(Lisp)h +(system)e(for)g(the)h(Q-32)f([Saunders,)0 1747 y(1964b].)31 +b(Insp)q(ection)22 b(of)d(the)g Fw(MDEF)g Fx(function)i(in)f(the)f(compiler)i +(co)q(de)f([Saunders,)h(1964a,)e(p.)33 b(311])18 b(rev)o(eals)0 +1803 y(that)c(the)h(error)f(in)i(pro)q(cessing)g Fw(PROG)e +Fx(statemen)o(ts)g(had)h(b)q(een)h(repaired:)k Fw(mdef[caddr[l]])13 +b Fx(w)o(as)h(replaced)i(b)o(y)0 1860 y Fw(mdef[cddr[l]])p +Fx(.)21 b(\(In)c(fact,)f(this)h(ma)o(y)e(b)q(e)i(what)f(Hart)g(had)g +(originally)i(in)o(tended;)g(in)f([Hart,)e(1963])g(the)i(\\)p +Fw(a)p Fx(")0 1916 y(app)q(ears)c(to)f(ha)o(v)o(e)h(b)q(een)g(written)g(in)h +(b)o(y)f(hand)g(as)f(a)h(correction)g(o)o(v)o(er)f(another)g(letter.)20 +b(P)o(erhaps)12 b(the)h(t)o(ypist)g(had)0 1973 y(made)18 b(the)h(t)o(yp)q +(ographical)g(error)e Fw(mdef[ccddr[l]])g Fx(and)h(subsequen)o(tly)i(a)e +(wrong)g(correction)g(w)o(as)g(made.\))0 2029 y(Unfortunately)l(,)c(the)h +(use)f(of)g Fw(mdef[cddr[l]])e Fx(has)i(its)g(o)o(wn)g(problems:)20 +b(a)14 b(v)m(ariable)h(whose)g(v)m(alue)g(is)g(returned)0 2086 +y(b)o(y)21 b(a)f Fw(LAMBDA)g Fx(expression)h(or)f(a)h(tag)e(at)h(the)h(head)g +(of)f(a)g Fw(PROG)g Fx(migh)o(t)h(b)q(e)g(incorrectly)h(recognized)g(as)e +(the)0 2142 y(name)e(of)f(a)g(macro,)g(thereb)o(y)h(treating)f(the)h(b)q(o)q +(dy)g(of)f(the)h Fw(LAMBDA)e Fx(or)h Fw(PROG)g Fx(form)g(as)g(a)h(macro)f +(call.)28 b(Pic)o(ky)l(,)0 2198 y(pic)o(ky|but)17 b(no)o(w)o(ada)o(ys)c(w)o +(e)i(do)g(try)g(to)g(b)q(e)g(careful)h(ab)q(out)f(that)g(sort)f(of)h(thing.) +71 2255 y(Macros)e(of)i(this)g(kind)g(w)o(ere)g(an)f(in)o(tegral)h(part)g(of) +f(the)h(design)g(of)f(Lisp)i(2.)k(Abrahams)14 b Fm(et)i(al.)k +Fx(remark)14 b(that)0 2311 y(b)o(y)h(1966)f(macros)h(w)o(ere)g(an)g(accepted) +h(part)e(of)h(Lisp)h(1.5)f(as)f(w)o(ell)i([Abrahams,)f(1966].)71 +2368 y(A)k(similar)i(sort)e(of)g(computed)h(macro)f(app)q(eared)h(in)h(the)f +(MIT)f(PDP-6)g(Lisp,)j(but)e(macros)f(calls)h(w)o(ere)0 2424 +y(expanded)f(on)f(the)g(\015y)g(as)g(they)g(w)o(ere)f(encoun)o(tered)i(b)o(y) +f(the)g(compiler)h(or)f(the)g(in)o(terpreter.)28 b(In)18 b(the)g(case)g(of)0 +2481 y(the)d(in)o(terpreter,)h(if)f(an)h(explicitly)i(named)d(function)h(in)g +(a)f(function)i(call)f(form)f(turned)g(out)g(to)g(ha)o(v)o(e)g(a)g +Fw(MACRO)0 2537 y Fx(prop)q(ert)o(y)f(on)g(its)h(prop)q(ert)o(y)f(list)h +(\(rather)f(than)g(one)h(of)f(the)g(function)i(indicators)f +Fw(EXPR)p Fx(,)e Fw(SUBR)p Fx(,)h Fw(LSUBR)p Fx(,)f Fw(FEXPR)p +Fx(,)0 2594 y(or)i Fw(FSUBR)p Fx(\))g(then)h(the)g(function)g(de\014nition)i +(w)o(as)d(giv)o(en)h(the)g(original)h(macro)e(call)i(form)e(as)g(an)h +(argumen)o(t)f(and)0 2650 y(w)o(as)e(exp)q(ected)i(to)e(return)h(another)g +(form)f(to)g(b)q(e)i(ev)m(aluated)f(in)h(place)g(of)e(the)h(call.)21 +b(The)14 b(example)h(giv)o(en)f(in)h(the)0 2707 y(PDP-6)g(Lisp)h(memo)f +([PDP-6)f(Lisp,)i(1967])e(w)o(as)p eop +%%Page: 44 44 +44 43 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(44)0 45 y Fw(\(DEFPROP)23 b(CONSCONS)215 102 y(\(LAMBDA)g(\(A\))406 +158 y(\(COND)g(\(\(NULL)g(\(CDDR)g(A\)\))h(\(CADR)f(A\)\))549 +214 y(\(\(LIST)g(\(QUOTE)g(CONS\))716 271 y(\(CADR)g(A\))716 +327 y(\(CONS)g(\(CAR)g(A\))859 384 y(\(CDDR)g(A\)\)\)\)\))215 +440 y(MACRO\))0 534 y Fx(This)c(de\014ned)i(a)d(macro)g(equiv)m(alen)o(t)j +(in)e(e\013ect)g(to)f(the)h(Common)f(Lisp)i(function)g Fw(list*)p +Fx(.)30 b(Note)18 b(the)h(use)g(of)0 591 y Fw(DEFPROP)10 b +Fx(to)g(de\014ne)i(a)f(function,)h(the)f(use)h(of)e Fw(QUOTE)g +Fx(rather)h(than)g(a)f(single)j(quote)d(c)o(haracter,)h(and)g(the)g(omission) +0 647 y(of)k(the)g(no)o(w)g(almost)f(univ)o(ersally)j(customary)e +Fw(T)g Fx(in)h(the)f(second)h Fw(COND)e Fx(clause.)71 703 y(An)19 +b(adv)m(an)o(tage)f(of)h(this)h(sc)o(heme)f(w)o(as)f(that)h(one)g(could)h +(de\014ne)g(some)f(functions)h(that)e(use)h(macros)g(and)0 +760 y(later)d(de\014ne)h(\(or)f(rede\014ne\))h(the)f(macro;)g(a)f(macro)h +(call)h(w)o(ould)g(alw)o(a)o(ys)e(use)i(the)f(latest)g(macro)f(de\014nition.) +25 b(A)0 816 y(dra)o(wbac)o(k,)14 b(ho)o(w)o(ev)o(er,)g(w)o(as)g(that)g(the)h +(in)o(terpreter)g(m)o(ust)f(constan)o(tly)h(re-expand)g(the)g(same)g(macro)f +(call)i(ev)o(ery)0 873 y(time)i(it)g(is)g(rep)q(eated,)g(reducing)h(sp)q(eed) +g(of)e(execution.)29 b(A)17 b(device)i(called)h Fm(displacing)d(macr)n(os)h +Fx(so)q(on)f(b)q(ecame)0 929 y(common)e(among)f(MacLisp)i(users;)f(it)h(in)o +(v)o(olv)o(ed)g(the)f(utilit)o(y)h(function)g Fw(DISPLACE)p +Fx(:)0 1023 y Fw(\(DEFUN)23 b(DISPLACE)g(\(OLD)g(NEW\))48 1080 +y(\(RPLACA)g(OLD)g(\(CAR)g(NEW\)\))48 1136 y(\(RPLACD)g(OLD)g(\(CDR)g +(NEW\)\))48 1192 y(OLD\))0 1286 y Fx(One)16 b(w)o(ould)g(then)f(write)0 +1380 y Fw(\(DEFPROP)23 b(CONSCONS)215 1437 y(\(LAMBDA)g(\(A\))286 +1493 y(\(DISPLACE)g(A)406 1549 y(\(COND)g(...\)\)\))215 1606 +y(MACRO\))0 1700 y Fx(The)16 b(e\013ect)f(w)o(as)f(to)h(destructiv)o(ely)i +(alter)e(the)g(original)i(list)f(structure)f(of)g(the)g(macro)g(call)i(so)e +(as)g(to)f(replace)j(it)0 1756 y(with)f(its)f(expansion.)71 +1813 y(This)d(all-to)q(o-clev)o(er)h(tric)o(k)f(had)h(dra)o(wbac)o(ks)e(of)g +(its)h(o)o(wn.)19 b(First,)12 b(it)g(failed)h(if)f(a)g(macro)f(needed)j(to)d +(expand)i(to)0 1869 y(an)i(atom)g(\(suc)o(h)h(as)f(a)g(n)o(um)o(b)q(er)h(or)f +(v)m(ariable)i(reference\);)e(macro)g(writers)h(learned)g(to)f(pro)q(duce)i +Fw(\(PROGN)23 b(FOO\))0 1926 y Fx(instead)16 b(of)f Fw(FOO)p +Fx(.)g(Second,)h(if)g(a)g(macro)f(w)o(ere)g(rede\014ned)i(after)e(a)g(call)i +(to)e(it)g(had)h(b)q(een)h(displaced,)g(subsequen)o(t)0 1982 +y(executions)k(of)f(the)g(call)h(w)o(ould)f(not)g(use)g(the)g(new)h +(de\014nition.)36 b(Third,)21 b(the)f(co)q(de)h(w)o(as)e(mo)q(di\014ed;)24 +b(prett)o(y-)0 2038 y(prin)o(ting)17 b(co)q(de)g(that)e(originally)j(con)o +(tained)e(a)g(macro)f(call)j(w)o(ould)e(displa)o(y)h(the)f(expansion,)h(not)f +(the)g(original)0 2095 y(macro)e(call.)21 b(This)15 b(last)g(dra)o(wbac)o(k)e +(w)o(as)h(tolerable)i(only)f(b)q(ecause)g(the)g(MacLisp)g(en)o(vironmen)o(t)g +(w)o(as)f(so)g(\014rmly)0 2151 y(\014le-based:)30 b(displacing)22 +b(macros)d(mo)q(di\014ed)i(only)f(the)g(in-core)g(cop)o(y)g(of)f(a)g +(program;)h(it)g(did)h(not)e(a\013ect)g(the)0 2208 y(master)14 +b(de\014nition,)i(whic)o(h)g(w)o(as)e(considered)i(to)e(b)q(e)i(the)f(text)f +(in)i(some)e(\014le.)21 b(Displacing)16 b(macros)e(of)h(this)g(kind)0 +2264 y(w)o(ould)h(ha)o(v)o(e)e(b)q(een)j(in)o(tolerable)f(in)g(In)o(terlisp.) +71 2321 y(Around)f(1978,)f(Lisp)i(Mac)o(hine)g(Lisp)g(in)o(tro)q(duced)h(an)e +(impro)o(v)o(emen)o(t)g(to)f(the)i(displacemen)o(t)g(tec)o(hnique:)0 +2415 y Fw(\(defun)23 b(displace)g(\(old)g(new\))48 2471 y(\(rplacd)g(new)g +(\(list)g(\(cons)g(\(car)h(old\))f(\(cdr)g(old\)\))h(new\)\))48 +2527 y(\(rplaca)f(old)g('si:displaced\))48 2584 y(new\))0 2690 +y(\(defmacro)g(si:displaced)f(\(old)h(new\))g(new\))p eop +%%Page: 45 45 +45 44 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(45)0 45 y(The)16 b(idea)g(is)h(that)e(the)g(macro)g(call)i(is)f +(displaced)i(b)o(y)e(a)f(list)i Fw(\(si:displaced)22 b Fm(macr)n(o-c)n(al)r +(l)i(exp)n(ansion)p Fw(\))p Fx(.)c(The)0 102 y(macro)15 b Fw(si:displaced)g +Fx(transparen)o(tly)g(returns)h(its)g(second)h(argumen)o(t)e(form,)g(so)g(ev) +o(erything)i(b)q(eha)o(v)o(es)f(as)f(if)0 158 y(the)f(expansion)h(itself)h +(had)e(replaced)h(the)g(macro)e(call.)21 b(While)15 b(expanding)h(the)e(call) +i(to)d Fw(si:displaced)g Fx(is)h(not)0 214 y(free,)k(it)g(is)g(presumably)g +(c)o(heap)q(er)g(than)f(con)o(tin)o(ually)i(re-expanding)g(the)f(original)g +(macro)f(call)i(\(if)e(not,)h(then)0 271 y(the)i(macro)f(writer)g(shouldn't)i +(use)f Fw(displace)p Fx(\).)32 b(The)20 b(Lisp)g(Mac)o(hine)h(prett)o(y-prin) +o(ter)e(recognizes)i(calls)g(to)0 327 y Fw(si:displace)14 b +Fx(and)h(prin)o(ts)g(only)h(the)f(original)i(macro)d(call.)71 +384 y(BBN)k(Lisp)i([T)l(eitelman,)f(1971])e(had)h Fm(thr)n(e)n(e)g +Fx(kinds)h(of)f(macro:)25 b Fm(op)n(en)p Fx(,)18 b Fm(c)n(ompute)n(d)p +Fx(,)h(and)g Fm(substitution)f Fx(\(de-)0 440 y(scrib)q(ed)i(b)q(elo)o(w\).) +31 b(A)18 b(macro)g(de\014nition)j(w)o(as)d(stored)g(in)h(the)g(prop)q(ert)o +(y)f(list)i(of)e(its)h(name)g(under)g(the)g Fw(MACRO)0 497 +y Fx(prop)q(ert)o(y;)e(the)g(form)g(of)f(the)h(prop)q(ert)o(y)g(v)m(alue)h +(determined)h(whic)o(h)f(of)e(three)h(t)o(yp)q(es)g(of)g(macro)f(it)i(w)o +(as.)24 b(Orig-)0 553 y(inally)c(all)f(three)f(t)o(yp)q(es)g(w)o(ere)g +(e\013ectiv)o(e)h(only)f(in)h(compiled)h(co)q(de.)30 b(Ev)o(en)o(tually)l(,) +19 b(ho)o(w)o(ev)o(er,)f(after)f(BBN)i(Lisp)0 610 y(b)q(ecame)d(In)o(terlisp) +g([T)l(eitelman,)g(1978],)d(a)i(D)o(WIM)f(hac)o(k)h(called)h(MA)o(CR)o(OTRAN) +g(w)o(as)e(added)i(that)e(made)h(all)0 666 y(three)20 b(t)o(yp)q(es)f(of)g +(macro)g(e\013ectiv)o(e)h(in)g(in)o(terpreted)g(co)q(de.)34 +b(If)20 b(in)o(terpreting)g(a)f(function)i(call)f(resulted)h(in)f(an)0 +723 y(\\unde\014ned)d(function")g(error,)d(the)i(D)o(WIM)f(system)g(w)o(ould) +h(step)g(in.)22 b(MA)o(CR)o(OTRAN)17 b(w)o(ould)f(gain)g(con)o(trol,)0 +779 y(expand)k(the)g(macro,)f(and)h(ev)m(aluate)g(the)g(resulting)h +(expansion.)33 b(The)20 b(In)o(terlisp)h(man)o(ual)f(duly)g(notes)g(that)0 +835 y(in)o(terpreted)i(macros)e(will)j(w)o(ork)d(only)i(if)f(D)o(WIM)f(is)i +(enabled.)39 b(Con)o(trast)19 b(this)j(with)f(the)g(MIT)g(approac)o(h)0 +892 y(of)c(building)k(macros)c(directly)i(in)o(to)f(the)g(in)o(terpreter)g +(\(as)f(w)o(ell)i(as)f(the)g(compiler\))g(as)g(a)g(primitiv)o(e)h(language)0 +948 y(feature.)71 1005 y(A)13 b(BBN-Lisp)i Fm(op)n(en)e Fx(macro)f(simply)j +(caused)f(the)f(macro)f(name)i(to)e(b)q(e)i(replaced)h(b)o(y)e(a)g(lam)o(b)q +(da)g(expression,)0 1061 y(causing)j(the)f(function)h(to)f(b)q(e)h(compiled)h +(\\op)q(en")e(or)g(in-line.)22 b(Here)16 b(is)f(an)g(op)q(en)h(macro)f +(de\014nition)i(for)d Fw(ABS)p Fx(:)0 1155 y Fw(\(LAMBDA)23 +b(\(X\))g(\(COND)h(\(\(GREATERP)e(X)i(0\))f(X\))h(\(T)g(\(MINUS)f(X\)\)\)\))0 +1249 y Fx(Of)15 b(course)h(this)f(has)g(exactly)h(the)f(same)g(form)g(as)f(a) +h(function)h(de\014nition.)71 1305 y(A)k(BBN-Lisp)j Fm(c)n(ompute)n(d)e +Fx(macro)f(w)o(as)g(similar)i(to)e(the)h(kind)h(in)f(MIT)g(PDP-6)f(Lisp,)j +(except)e(that)f(the)0 1362 y(expander)d(function)g(receiv)o(ed)h(the)f +Fw(CDR)f Fx(of)g(the)g(macro)g(call)i(rather)e(than)g(the)h(en)o(tire)g +(macro)f(call.)24 b(Here)17 b(is)g(a)0 1418 y(computed)f(macro)e(for)h +Fw(LIST)p Fx(:)0 1512 y Fw(\(X)24 b(\(LIST)f(\(QUOTE)g(CONS\))215 +1569 y(\(CAR)g(X\))215 1625 y(\(AND)g(\(CDR)g(X\))334 1681 +y(\(CONS)g(\(QUOTE)g(LIST\))477 1738 y(\(CDR)h(X])0 1832 y +Fx(The)16 b(leading)h Fw(X)f Fx(is)h(the)f(name)g(of)f(a)h(v)m(ariable)h(to)e +(b)q(e)i(b)q(ound)g(to)e(the)h Fw(CDR)f Fx(of)h(the)g(macro)f(call)i(form.)k +(Note)16 b(also)0 1888 y(the)f(use)h(of)f(a)f(closing)j(sup)q(erbrac)o(k)o +(et)e(in)h(the)f(de\014nition)i(\(see)e(section)h(2.3\).)71 +1945 y(A)h(BBN-Lisp)h Fm(substitution)f Fx(macro)f(consisted)i(of)e(a)h +(simple)h(pattern)f(\(a)f(parameter)g(list\))h(and)h(a)e(substi-)0 +2001 y(tution)j(template;)i(subforms)d(of)h(the)g(macro)f(call)i(w)o(ere)f +(substituted)g(for)g(o)q(ccurrences)g(in)h(the)f(template)g(of)0 +2058 y(corresp)q(onding)d(parameter)f(names.)k(A)d(substitution)g(macro)e +(for)h Fw(ABS)f Fx(w)o(ould)i(lo)q(ok)g(lik)o(e)g(this:)0 2151 +y Fw(\(\(X\))23 b(\(COND)g(\(\(GREATERP)g(X)h(0\))f(X\))h(\(T)f(\(MINUS)h +(X\)\)\)\))0 2245 y Fx(Ho)o(w)o(ev)o(er,)14 b(the)h(call)h +Fw(\(ABS)24 b(\(FOO)f(Z\)\))15 b Fx(w)o(ould)g(b)q(e)h(expanded)h(to)0 +2339 y Fw(\(COND)23 b(\(\(GREATERP)g(\(FOO)g(Z\))h(0\))f(\(FOO)g(Z\)\))h(\(T) +g(\(MINUS)f(\(FOO)g(Z\)\)\)\))0 2433 y Fx(leading)j(to)f(m)o(ultiple)h(ev)m +(aluations)h(of)d Fw(\(FOO)f(Z\))p Fx(,)i(whic)o(h)g(w)o(ould)h(b)q(e)f +(unfortunate)g(if)g Fw(\(FOO)f(Z\))g Fx(w)o(ere)h(an)0 2489 +y(exp)q(ensiv)o(e)f(computation)f(or)f(had)g(side)i(e\013ects.)41 +b(By)23 b(w)o(a)o(y)e(of)h(con)o(trast,)h(with)g(an)f(op)q(en)h(macro)f(the)h +(call)0 2546 y Fw(\(ABS)g(\(FOO)h(Z\)\))14 b Fx(w)o(ould)i(b)q(e)g(expanded)g +(to)0 2640 y Fw(\(\(LAMBDA)23 b(\(X\))g(\(COND)g(\(\(GREATERP)g(X)h(0\))f +(X\))h(\(T)f(\(MINUS)g(X\)\)\)\))h(\(FOO)f(Z\)\))p eop +%%Page: 46 46 +46 45 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(46)0 45 y(whic)o(h)16 b(w)o(ould)g(ev)m(aluate)g +Fw(\(FOO)23 b(Z\))15 b Fx(exactly)g(once.)71 102 y(Despite)c(the)f(care)g +(sometimes)h(required)g(to)f(a)o(v)o(oid)g(m)o(ultiple)j(ev)m(aluation,)f(ho) +o(w)o(ev)o(er,)e(the)g(pattern/template)0 158 y(metho)q(dology)j(for)f +(de\014ning)j(macros)d(is)i(v)o(ery)e(con)o(v)o(enien)o(t)i(and)f(visually)i +(app)q(ealing.)20 b(Indeed,)15 b(pattern)d(matc)o(h-)0 214 +y(ing)g(and)f(template)h(metho)q(dologies)g(w)o(ere)f(a)g(p)q(erv)m(asiv)o(e) +i(topic)f(in)g(the)f(dev)o(elopmen)o(t)h(of)f(languages)h(for)e(Arti\014cial) +0 271 y(In)o(telligence)k(throughout)d(the)h(1960's)e(and)i(1970's;)f(see)h +(section)g(4.)19 b(W)l(e)11 b(will)j(return)d(to)g(the)h(topic)g(of)g +(template-)0 327 y(based)k(macros)e(b)q(elo)o(w.)71 384 y(Muddle)21 +b([Galley)l(,)i(1975],)d(not)g(surprisingly)l(,)j(had)e(a)f(macro)g(facilit)o +(y)i(v)o(ery)e(m)o(uc)o(h)h(lik)o(e)g(that)f(of)h(PDP-6)0 440 +y(Lisp,)c(with)g(one)f(sligh)o(t)g(di\013erence.)24 b(The)17 +b(macro)e(expansion)i(function,)g(rather)e(than)h(b)q(eing)i(called)f(with)g +(the)0 497 y(macro)f(form)g(as)g(its)g(argumen)o(t,)g(w)o(as)g(applied)i(to)e +(the)h Fw(CDR)f Fx(of)g(the)h(form.)23 b(This)17 b(allo)o(w)o(ed)g(Muddle's)g +(complex)0 553 y(argumen)o(t-list)e(k)o(eyw)o(ords)e(to)h(come)g(in)o(to)g +(pla)o(y)l(,)h(allo)o(wing)g(certain)g(simple)h(kinds)f(of)f(pattern)g(matc)o +(hing)h(as)f(for)0 610 y(In)o(terlisp's)i(substitution)g(macros:)0 +688 y Fw()g(.N>>>)0 +823 y Fx(It)c(w)o(as)f(nev)o(ertheless)i(necessary)f(to)g(lab)q(oriously)h +(construct)f(the)g(result)g(as)g(for)f(a)h(computed)g(macro.)31 +b(The)0 880 y(result)20 b(of)g(expanding)h Fw()d Fx(w)o(ould)g(b)q +(e)g Fw(>)d Fx(\(note)f(that)g(in)i(Muddle)g +Fw(.X)e Fx(is)i(merely)f(a)0 936 y(readmacro)14 b(abbreviation)i(for)f +Fw()p Fx(,)15 b(the)g(lo)q(cal)h(v)m(alue)h(of)e +Fw(X)p Fx(\).)71 993 y(As)d(MacLisp)h(grew)f(out)g(of)g(PDP-6)f(Lisp,)j(the)f +(MacLisp)g(comm)o(unit)o(y)f(div)o(ersi\014ed,)i(pro)q(ducing)g(a)e(v)m +(ariet)o(y)g(of)0 1049 y(metho)q(dologies)17 b(for)f(de\014ning)i(macros.)23 +b(Simple)c(macros)c(suc)o(h)i(as)g Fw(INC)f Fx(w)o(ere)g(conceptually)i +(straigh)o(tforw)o(ard)0 1106 y(to)d(write,)f(if)i(a)f(bit)h(cum)o(b)q +(ersome)f(\(certainly)h(more)f(clumsy)h(than)f(in)h(Muddle)g(or)f(In)o +(terlisp\):)0 1184 y Fw(\(DEFUN)23 b(INC)g(MACRO)h(\(X\))167 +1241 y(\(LIST)f('SETQ)310 1297 y(\(CADR)g(X\))310 1354 y(\(LIST)g('PLUS)453 +1410 y(\(CADR)h(X\))453 1467 y(\(COND)g(\(\(CDDR)f(X\))g(\(CADDR)g(X\)\))h +(\(T)f(1\)\)\)\)\))0 1545 y Fx(Note)17 b(that)g(the)g(lac)o(k)h(of)f +(automatic)g(decomp)q(osition)i(\(\\destructuring"\))e(of)g(the)g(argumen)o +(t)g(forms)f(leads)j(to)0 1602 y(man)o(y)d(uses)h(of)g Fw(CAR)p +Fx(,)f Fw(CDR)p Fx(,)g(and)h Fw(COND)f Fx(within)i(the)f(co)q(de)g(that)f +(constructs)h(the)g(result.)25 b(One)17 b(can)g(use)g Fw(LET)g +Fx(to)0 1658 y(separate)e(the)g(destructuring)h(from)e(the)h(construction:)0 +1737 y Fw(\(DEFUN)23 b(INC)g(MACRO)h(\(X\))48 1793 y(\(LET)f(\(\(VAR)g +(\(CADR)g(X\)\))191 1850 y(\(N)g(\(COND)h(\(\(CDDR)f(X\))g(\(CADDR)g(X\)\))h +(\(T)f(1\)\)\))95 1906 y(\(LIST)h('SETQ)f(VAR)g(\(LIST)g('PLUS)h(VAR)f +(N\)\)\))0 1985 y Fx(but)15 b Fw(LET)p Fx(|itself)h(a)f(macro)g(\014rst)f(in) +o(v)o(en)o(ted)i(and)g(rein)o(v)o(en)o(ted)f(lo)q(cally)i(at)e(eac)o(h)g +(site|w)o(as)g(a)g(late-comer)g(to)g(the)0 2041 y(MacLisp)e(w)o(orld;)f +(according)g(to)g(Lisp)h(Arc)o(hiv)o(e,)f(it)g(w)o(as)f(retroactiv)o(ely)h +(absorb)q(ed)g(in)o(to)g(PDP-10)f(MacLisp)i(from)0 2098 y(Lisp-Mac)o(hine)21 +b(Lisp)e(in)h(1979)e(at)g(the)g(same)h(time)g(as)f Fw(DEFMACRO)f +Fx(and)i(the)g(complex)h(Lisp)f(Mac)o(hine)h Fw(DEFUN)0 2154 +y Fx(argumen)o(t)14 b(syn)o(tax.)20 b(Ab)q(out)15 b(the)g(b)q(est)h(one)f +(could)h(do)f(during)h(the)g(1970's)d(w)o(as)i(to)f(use)i(a)f +Fw(LAMBDA)f Fx(expression:)0 2233 y Fw(\(DEFUN)23 b(INC)g(MACRO)h(\(X\))48 +2289 y(\(\(LAMBDA)e(\(VAR)i(N\))119 2346 y(\(LIST)f('SETQ)h(VAR)f(\(LIST)g +('PLUS)g(VAR)h(N\)\))72 2402 y(\(CADR)f(X\))72 2459 y(\(COND)g(\(\(CDDR)g +(X\))g(\(CADDR)g(X\)\))h(\(T)f(1\)\)\)\))0 2537 y Fx(and)14 +b(man)o(y)g(programmers)f(found)h(this)h(none)f(to)q(o)g(attractiv)o(e.)k(As) +c(a)g(result,)g(the)h(writing)f(of)g(complex)h(macros)0 2594 +y(w)o(as)f(a)h(fairly)h(di\016cult)h(art,)d(and)h(wizards)h(dev)o(elop)q(ed)g +(their)g(o)o(wn)f(separate)g(st)o(yles)g(of)g(macro)f(de\014nition.)71 +2650 y(T)l(o)i(see)g(ho)o(w)g(easily)i(this)e(can)h(get)f(out)g(of)g(hand,)g +(consider)i(a)e(macro)f(for)h(a)g(simple)i Fw(FOR)e Fx(lo)q(op.)24 +b(A)16 b(t)o(ypical)0 2707 y(use)g(w)o(ould)f(b)q(e)h(this:)p +eop +%%Page: 47 47 +47 46 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(47)0 45 y Fw(\(for)23 b(a)h(1)g(100)48 102 y(\(print)f(a\))48 +158 y(\(print)g(\(*)g(a)h(a\)\)\))0 248 y Fx(This)16 b(should)g(expand)g(to)0 +338 y Fw(\(do)23 b(a)h(1)g(\(+)f(a)h(1\))g(\(>)f(a)h(100\))48 +394 y(\(print)f(a\))48 451 y(\(print)g(\(*)g(a)h(a\)\)\))0 +541 y Fx(This)16 b(is)h(a)e(trivial)i(syn)o(tactic)f(transformation,)e +(simple)k(but)e(con)o(v)o(enien)o(t,)g(de\014ning)h(a)f(F)l(ortran{DO-lo)q +(op{lik)o(e)0 597 y(syn)o(tax)g(in)h(terms)e(of)h(the)h(sligh)o(tly)g(more)f +(general)h(\\old-st)o(yle")f(MacLisp)h Fw(DO)f Fx(lo)q(op)h(\(see)f(section)h +(3.2\).)22 b(In)17 b(the)0 653 y(MacLisp)f(of)f(the)g(early)h(1970's)d(one)i +(migh)o(t)h(de\014ne)g(it)f(as)g(follo)o(ws:)0 743 y Fw(\(defun)23 +b(for)g(macro)h(\(x\))48 800 y(\(cons)f('do)191 856 y(\(cons)g(\(cadr)g(x\)) +334 913 y(\(cons)g(\(caddr)g(x\))477 969 y(\(cons)g(\(list)h('+)f(\(cadr)g +(x\))h(1\))620 1026 y(\(cons)g(\(list)f('>)g(\(cadr)h(x\))f(\(cadddr)g(x\)\)) +764 1082 y(\(cddddr)g(x\)\)\)\)\)\)\))0 1172 y Fx(That's)14 +b(a)h(lot)g(to)g(write)g(for)g(suc)o(h)g(a)g(simple)i(transformation.)71 +1228 y(Ev)o(en)o(tually)12 b(the)g(gurus)g(at)f(v)m(arious)h(MacLisp)h(sites) +f(dev)o(elop)q(ed)i(dozens)e(of)f(similar)i(but)f(not)g(quite)g(compat-)0 +1285 y(ible)17 b(macro-de\014ning)g(macros.)j(It)c(w)o(as)f(not)g(un)o(usual) +i(for)e(sev)o(eral)g(suc)o(h)h(pac)o(k)m(ages)g(to)f(b)q(e)h(in)h(use)f(at)f +(the)g(same)0 1341 y(site,)k(with)g(the)g(adheren)o(ts)f(of)g(eac)o(h)h(sect) +f(using)h(whatev)o(er)f(their)h(wizard)g(had)g(dev)o(elop)q(ed.)31 +b(Suc)o(h)19 b(pac)o(k)m(ages)0 1398 y(usually)i(included)h(to)q(ols)d(for)f +(destructuring)i(argumen)o(t)f(forms)f(and)i(for)e(constructing)i(result)f +(forms.)32 b(The)0 1454 y(to)q(ols)14 b(for)g(constructing)g(result)h(forms)e +(fell)j(in)o(to)e(t)o(w)o(o)f(ma)s(jor)g(categories:)19 b(substitution)c(and) +f(pseudo-quoting.)0 1511 y(Substitution)g(tec)o(hniques)h(required)f +(separate)e(men)o(tion)i(of)f(certain)g(sym)o(b)q(ols)h(in)f(a)g(template)h +(that)e(w)o(ere)h(to)f(b)q(e)0 1567 y(replaced)17 b(b)o(y)f(sp)q(eci\014ed)j +(v)m(alues.)24 b(Pseudo-quoting)16 b(allo)o(w)o(ed)h(the)f(co)q(de)h(to)e +(compute)i(a)e(replacemen)o(t)i(v)m(alue)h(to)0 1624 y(o)q(ccur)13 +b(within)h(the)f(template)g(itself;)i(it)e(w)o(as)f(called)i(pseudo-quoting)g +(b)q(ecause)g(the)f(template)g(w)o(as)f(surrounded)0 1680 y(b)o(y)17 +b(a)f(call)i(to)e(an)h(op)q(erator)f(that)g(w)o(as)g(\\just)g(lik)o(e)i +Fw(quote)p Fx(")e(except)h(for)g(sp)q(ecially)i(mark)o(ed)d(places)i(within)g +(the)0 1736 y(template.)71 1793 y(Macros)24 b(to)q(ok)h(a)h(ma)s(jor)e(step)i +(forw)o(ard)e(with)i(Lisp-Mac)o(hine)i(Lisp,)h(whic)o(h)e(consolidated)f(the) +g(v)m(ari-)0 1849 y(ous)19 b(macro-de\014ning)h(tec)o(hniques)g(in)o(to)g(t)o +(w)o(o)d(standardized)j(features)f(that)f(w)o(ere)h(adopted)g(throughout)g +(the)0 1906 y(MacLisp)h(comm)o(unit)o(y)f(and)g(ev)o(en)o(tually)h(in)o(to)e +(Common)h(Lisp.)32 b(The)19 b(macro-de\014ning)h(op)q(erator)e +Fw(DEFMACRO)0 1962 y Fx(pro)o(vided)g(list-structure)g(destructuring)g(to)f +(arbitrary)f(depth;)j(the)e(bac)o(kquote)g(feature)g(pro)o(vided)h(a)f(con)o +(v)o(e-)0 2019 y(nien)o(t)g(and)f(concise)h(pseudo-quoting)g(facilit)o(y)l(.) +24 b(Here)17 b(is)f(the)g(de\014nition)i(of)e(the)g Fw(FOR)g +Fx(macro)f(using)i Fw(DEFMACRO)0 2075 y Fx(alone:)0 2165 y +Fw(\(defmacro)23 b(for)g(\(var)g(lower)h(upper)f(.)g(body\))48 +2222 y(\(cons)g('do)191 2278 y(\(cons)g(var)334 2334 y(\(cons)g(lower)477 +2391 y(\(cons)g(\(list)h('+)f(var)h(1\))620 2447 y(\(cons)g(\(list)f('>)g +(var)h(upper\))764 2504 y(body\)\)\)\)\)\))0 2594 y Fx(Notice)12 +b(that)e(w)o(e)h(can)g(name)g(the)g(parts)g(of)f(the)h(original)i(form.)k +(Using)12 b(the)f(bac)o(kquote)g(pseudo-quoting)h(syn)o(tax,)0 +2650 y(whic)o(h)17 b(mak)o(es)e(a)h(cop)o(y)g(of)g(a)f(template,)i(\014lling) +h(in)f(eac)o(h)f(place)h(mark)o(ed)e(b)o(y)h(a)g(comma)f(with)i(the)f(v)m +(alue)h(of)f(the)0 2707 y(follo)o(wing)g(expression,)g(w)o(e)f(get)f(a)h(v)o +(ery)g(concise)h(and)g(easy-to-read)e(de\014nition:)p eop +%%Page: 48 48 +48 47 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(48)0 45 y Fw(\(defmacro)23 b(for)g(\(var)g(lower)h(upper)f(.)g +(body\))48 102 y(`\(do)g(,var)g(,lower)g(\(+)h(,var)f(1\))h(\(>)f(,var)h +(,upper\))f(,@body\)\))0 191 y Fx(Note)15 b(the)g(use)h(of)e +Fw(,@)h Fx(to)g(indicate)i Fm(splicing)p Fx(.)71 248 y(The)f(bac)o(kquote)g +(syn)o(tax)g(w)o(as)f(particularly)j(p)q(o)o(w)o(erful)e(when)h(nested.)23 +b(This)17 b(o)q(ccurred)g(primarily)h(within)0 304 y(macro-de\014ning)j +(macros;)g(b)q(ecause)g(suc)o(h)f(w)o(ere)g(co)q(ded)h(primarily)g(b)o(y)f +(wizards,)h(the)f(abilit)o(y)h(to)f(write)g(and)0 361 y(in)o(terpret)c +(nested)g(bac)o(kquote)f(expressions)i(w)o(as)d(so)q(on)i(surrounded)g(b)o(y) +g(a)f(certain)h(m)o(ystique.)22 b(Alan)16 b(Ba)o(wden)0 417 +y(of)c(MIT)f(acquired)i(a)f(particular)h(reputation)f(as)f(bac)o +(kquote-meister)h(in)h(the)f(early)g(da)o(ys)g(of)g(the)g(Lisp)h(Mac)o(hine.) +71 474 y(Bac)o(kquote)h(and)i Fw(DEFMACRO)e Fx(made)h(a)g(big)h +(di\013erence.)21 b(This)16 b(leap)g(in)g(expressiv)o(e)h(p)q(o)o(w)o(er,)d +(made)h(a)o(v)m(ailable)0 530 y(in)j(a)g(standard)f(form,)g(b)q(egan)h(a)f +(new)h(surge)f(of)g(language)h(extension)g(b)q(ecause)h(it)e(w)o(as)g(no)o(w) +g(m)o(uc)o(h)h(easier)g(to)0 587 y(de\014ne)e(new)f(language)g(constructs)f +(in)i(a)e(standard,)g(p)q(ortable)h(w)o(a)o(y)f(so)g(that)g(exp)q(erimen)o +(tal)j(dialects)f(could)f(b)q(e)0 643 y(shared.)k(Some,)14 +b(including)i(Da)o(vid)d(Mo)q(on,)g(ha)o(v)o(e)g(opined)h(that)f(the)g +(success)h(of)f(Lisp)h(as)f(a)g(language)g(designer's)0 700 +y(kit)g(is)g(largely)h(due)f(to)f(the)h(abilit)o(y)h(of)f(the)g(user)g(to)f +(de\014ne)i(macros)e(that)g(use)h(Lisp)h(as)e(the)h(pro)q(cessing)h(language) +0 756 y(and)f(list)h(structure)f(as)g(the)g(program)f(represen)o(tation,)h +(making)g(it)h(easy)f(to)f(extend)i(the)f(language)g(syn)o(tax)g(and)0 +812 y(seman)o(tics.)31 b(In)20 b(1980)e(Ken)o(t)h(Pitman)g(wrote)f(a)g(v)o +(ery)h(go)q(o)q(d)g(summary)f(of)h(the)g(adv)m(an)o(tages)f(of)h(macros)f(o)o +(v)o(er)0 869 y Fw(FEXPR)p Fx('s)c(in)i(de\014ning)h(new)e(language)h(syn)o +(tax)e([Pitman,)h(1980].)71 925 y(Not)j(ev)o(ery)h(macro)g(w)o(as)f(easy)h +(to)f(express)i(in)g(this)f(new)h(format,)e(ho)o(w)o(ev)o(er.)31 +b(Consider)20 b(the)f Fw(INC)g Fx(macro)0 982 y(discussed)g(ab)q(o)o(v)o(e.) +27 b(As)18 b(of)g(No)o(v)o(em)o(b)q(er)f(1978,)g(the)h(Lisp)h(Mac)o(hine)f +Fw(DEFMACRO)f Fx(destructuring)h(w)o(as)f(not)g(quite)0 1038 +y(ric)o(h)f(enough)f(to)g(handle)h(\\optional")g(argumen)o(t)e(forms:)0 +1128 y Fw(\(DEFUN)23 b(INC)g(MACRO)h(\(VAR)f(.)h(REST\))48 +1185 y(`\(SETQ)f(,VAR)g(\(+)h(,VAR)f(,\(IF)g(REST)h(\(CAR)f(REST\))g +(1\)\)\)\))0 1274 y Fx(The)11 b(optional)h(part)f(m)o(ust)f(b)q(e)i(handled)h +(with)e(an)g(explicitly)j(programmed)c(conditional)j(\(expressed)f(here)f +(using)0 1331 y Fw(IF)p Fx(,)17 b(whic)o(h)i(w)o(as)e(itself)i(in)o(tro)q +(duced)g(in)o(to)e(Lisp-Mac)o(hine)j(Lisp,)f(probably)g(under)f(the)g +(in\015uence)i(of)e(Sc)o(heme,)0 1387 y(as)g(a)g(macro)g(that)g(expanded)i +(in)o(to)e(an)h(equiv)m(alen)o(t)h Fw(COND)e Fx(form\).)28 +b(This)20 b(de\014ciency)g(w)o(as)e(so)q(on)g(noticed)i(and)0 +1444 y(quic)o(kly)d(remedied)f(b)o(y)f(allo)o(wing)h Fw(DEFMACRO)e +Fx(to)h(accept)g(the)h(same)e(complex)j(lam)o(b)q(da-list)f(syn)o(tax)f(as)f +Fw(DEFUN)p Fx(:)0 1534 y Fw(\(DEFUN)23 b(INC)g(MACRO)h(\(VAR)f(&OPTIONAL)g +(\(N)g(1\)\))48 1590 y(`\(SETQ)g(,VAR)g(\(+)h(,VAR)f(,N\)\)\))0 +1680 y Fx(This)i(o)q(ccurred)g(in)g(Jan)o(uary)f(1979,)h(according)g(to)f +(Lisp)h(Arc)o(hiv)o(e,)i(at)d(whic)o(h)h(time)g(MacLisp)g(absorb)q(ed)0 +1736 y Fw(DEFMACRO)14 b Fx(and)h Fw(DEFUN)g Fx(with)g Fw(&)p +Fx(-k)o(eyw)o(ords)g(from)f(Lisp-Mac)o(hine)j(Lisp.)71 1793 +y(An)22 b(additional)i(problem)f(w)o(as)e(that)h(rep)q(etitiv)o(e)i(syn)o +(tax,)f(of)e(the)i(kind)g(that)f(migh)o(t)g(b)q(e)h(expressed)g(in)0 +1849 y(extended)15 b(BNF)e(with)h(a)f(Kleene)i(star,)e(w)o(as)g(not)g +(captured)h(b)o(y)f(this)h(framew)o(ork)e(and)i(had)g(to)f(b)q(e)h +(programmed)0 1906 y(explicitly)l(.)23 b(Con)o(template)15 +b(this)g(simple)i(de\014nition)g(of)e Fw(LET)p Fx(:)0 1996 +y Fw(\(defmacro)23 b(let)g(\(bindings)g(.)g(body\))48 2052 +y(`\(\(lambda)f(,@\(mapcar)h(#'car)g(bindings\))g(,@body\))95 +2109 y(,@\(mapcar)g(#'cadr)g(bindings\)\)\))0 2198 y Fx(Note)15 +b(the)h(use)g(of)g Fw(MAPCAR)e Fx(for)h(iterativ)o(e)h(pro)q(cessing)h(of)e +(the)h(bindings.)23 b(This)17 b(di\016cult)o(y)g(w)o(as)e(not)g(tac)o(kled)h +(b)o(y)0 2255 y(Lisp-Mac)o(hine)h(Lisp)g(or)e(Common)f(Lisp;)i(in)h(that)d +(comm)o(unit)o(y)h Fw(DEFMACRO)g Fx(with)g Fw(&)p Fx(-k)o(eyw)o(ords)g(is)g +(the)h(state)e(of)0 2311 y(the)i(art)f(to)q(da)o(y)l(.)21 b(Common)15 +b(Lisp)i(did,)g(ho)o(w)o(ev)o(er,)e(generalize)i Fw(DEFMACRO)e +Fx(to)g(allo)o(w)h(recursiv)o(e)h(nesting)f(of)g(suc)o(h)0 +2368 y(lam)o(b)q(da-lists.)71 2424 y(F)l(urther)c(dev)o(elopmen)o(t)h(of)f +(the)g(theory)g(and)g(practice)h(of)f(Lisp)i(macros)d(w)o(as)h(carried)g +(forw)o(ard)f(primarily)j(b)o(y)0 2481 y(the)i(Sc)o(heme)g(comm)o(unit)o(y)l +(,)f(whic)o(h)h(w)o(as)f(in)o(terested)h(in)g(scoping)g(issues.)22 +b(Macros)14 b(are)h(fraugh)o(t)g(with)h(the)f(same)0 2537 y(kinds)20 +b(of)e(scoping)i(problems)f(and)g(acciden)o(tal)h(name)f(capture)g(that)f +(had)h(accompanied)g(sp)q(ecial)i(v)m(ariables.)0 2594 y(The)12 +b(problem)h(with)f(Lisp)i(macros,)d(from)g(the)i(time)f(of)g(Hart)f(in)i +(1963)e(to)g(the)h(mid-1980's,)g(is)g(that)g(a)f(macro)h(call)0 +2650 y(expands)18 b(in)o(to)e(an)h(expression)h(that)e(is)i(comp)q(osed)f(of) +g(sym)o(b)q(ols)g(that)f(ha)o(v)o(e)h(no)g(attac)o(hed)f(seman)o(tics.)26 +b(When)0 2707 y(substituted)15 b(bac)o(k)e(in)o(to)h(the)g(program,)f(a)g +(macro)h(expansion)h(could)f(conceiv)m(ably)j(tak)o(e)c(on)h(a)f(quite)i +(surprising)p eop +%%Page: 49 49 +49 48 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(49)0 45 y(meaning)21 b(dep)q(ending)h(on)e(the)g(lo)q(cal)h(en)o +(vironmen)o(t.)35 b(\(Macros)19 b(in)i(other)e(languages|the)i(C)f(prepro)q +(cessor)0 102 y([Kernighan,)k(1978;)d(Harbison,)j(1991])c(is)j(one)f +(example|ha)o(v)o(e)h(the)f(same)g(problem)g(if)h(they)f(op)q(erate)g(b)o(y)0 +158 y(straigh)o(t)14 b(substitution)i(of)f(text)g(or)f(tok)o(ens.\))71 +214 y(One)i(practical)h(w)o(a)o(y)e(to)h(a)o(v)o(oid)g(suc)o(h)g(problems)h +(is)f(for)g(the)g(macro)f(writer)h(to)g(try)f(to)h(c)o(ho)q(ose)g(names)g +(that)0 271 y(the)f(user)g(is)h(unlik)o(ely)h(to)d(stum)o(ble)i(across,)d +(either)j(b)o(y)f(pic)o(king)h(strange)f(names)f(suc)o(h)i(as)e +Fw(\045\045foo\045\045)g Fx(\(though)h(it)0 327 y(is)f(surprising)h(ho)o(w)e +(often)g(great)f(minds)j(will)g(think)f(alik)o(e\),)g(or)f(b)o(y)g(using)i +Fw(gensym)d Fx(\(as)h(Hart)g(did)h(in)h(his)f Fw(select)0 384 +y Fx(example,)g(sho)o(wn)f(ab)q(o)o(v)o(e\),)f(or)g(b)o(y)h(using)h(m)o +(ultiple)h(obarra)o(ys)d(or)g(pac)o(k)m(ages)h(to)g(a)o(v)o(oid)f(name)h +(clashes.)20 b(Ho)o(w)o(ev)o(er,)0 440 y(none)f(of)f(these)h(tec)o(hniques)g +(pro)o(vides)g(an)g(iron-glad)g(guaran)o(tee.)29 b(Steele)19 +b(p)q(oin)o(ted)h(out)e(that)f(careful)j(use)e(of)0 497 y(th)o(unks)d(could)h +(pro)o(v)m(ably)g(eliminate)h(the)e(problem,)h(though)f(not)g(in)h(all)g +(situations)g([Steele,)f(1978a].)71 553 y(The)h(prop)q(onen)o(ts)h(of)f(Sc)o +(heme)h(regarded)f(all)i(of)e(these)g(arrangemen)o(ts)g(as)g(to)q(o)f(\015a)o +(w)o(ed)i(or)f(to)q(o)f(clumsy)j(for)0 610 y(\\o\016cial")c(adoption)f(in)o +(to)h(Sc)o(heme.)20 b(The)13 b(result)h(w)o(as)f(that)f(Sc)o(heme)j(div)o +(ersi\014ed)g(in)f(the)g(1980's.)j(Nearly)d(ev)o(ery)0 666 +y(implemen)o(tation)g(had)e(some)g(kind)i(of)e(macro)g(facilit)o(y)h(but)g +(no)f(t)o(w)o(o)f(w)o(ere)h(alik)o(e.)20 b(Nearly)13 b(ev)o(ery)o(one)f +(agreed)h(that)0 723 y(macro)i(facilities)i(w)o(ere)f(in)o(v)m(aluable)i(in)e +(principle)i(and)e(in)g(practice)h(but)e(lo)q(ok)o(ed)h(do)o(wn)f(up)q(on)i +(eac)o(h)e(particular)0 779 y(instance)f(as)e(a)h(sort)f(of)g(shameful)i +(family)f(secret.)19 b(If)14 b(only)f(The)g(Righ)o(t)g(Thing)h(could)g(b)q(e) +f(found!)20 b(This)13 b(question)0 835 y(b)q(ecame)j(more)f(pressing)h(as)e +(the)i(p)q(ossibilit)o(y)h(of)e(dev)o(eloping)i(a)d(Sc)o(heme)i(standard)f(w) +o(as)f(bandied)j(ab)q(out.)71 892 y(In)f(the)f(mid-1980's)g(t)o(w)o(o)g(new)g +(sorts)g(of)g(prop)q(osals)h(w)o(ere)f(put)h(forw)o(ard:)j(h)o(ygienic)e +(macros)e(and)h(syn)o(tactic)0 948 y(closures.)j(Both)11 b(approac)o(hes)f +(in)o(v)o(olv)o(e)h(the)g(use)g(of)g(sp)q(ecial)h(syn)o(tactic)f(en)o +(vironmen)o(ts)g(to)f(ensure)h(that)f(references)0 1005 y(are)16 +b(prop)q(erly)i(matc)o(hed)e(to)g(de\014nitions.)26 b(A)16 +b(related)h(line)h(of)f(w)o(ork)e(allo)o(ws)i(the)f(programmer)g(to)g(con)o +(trol)g(the)0 1061 y(expansion)11 b(pro)q(cess)g(b)o(y)g(explicitly)i +(passing)e(around)g(and)f(manipulating)j(expander)e(functions)g([Dyb)o(vig,)g +(1986].)0 1118 y(All)17 b(of)e(these)h(w)o(ere)f(in)o(tended)j(as)d(macro)g +(facilities)i(for)f(Sc)o(heme,)g(previous)g(metho)q(ds)g(b)q(eing)h(regarded) +e(as)h(to)q(o)0 1174 y(deeply)h(\015a)o(w)o(ed)e(for)f(adoption)i(in)o(to)f +(suc)o(h)g(an)g(otherwise)h(elegan)o(t)f(language.)71 1231 +y(Hygienic)21 b(macros)e(w)o(ere)g(dev)o(elop)q(ed)i(in)g(1986)d(b)o(y)i +(Eugene)g(Kohlb)q(ec)o(k)o(er)h(with)f(assistance)g(from)f(Daniel)0 +1287 y(F)l(riedman,)25 b(Matthias)d(F)l(elleisen,)k(and)d(Bruce)h(Duba)e +([Kohlb)q(ec)o(k)o(er,)j(1986a].)41 b(The)23 b(idea)g(is)g(to)g(lab)q(el)h +(the)0 1344 y(o)q(ccurrences)19 b(of)e(v)m(ariables)i(with)f(a)g(tag)e +(indicating)k(whether)e(it)g(app)q(eared)g(in)h(the)f(original)g(source)g(co) +q(de)g(or)0 1400 y(w)o(as)e(in)o(tro)q(duced)i(as)f(a)g(result)g(of)g(macro)f +(expansion;)i(if)g(m)o(ultiple)h(macro)d(expansions)i(o)q(ccur,)f(the)g(tag)g +(m)o(ust)0 1456 y(indicate)j(whic)o(h)f(expansion)g(step)g(w)o(as)e(in)o(v)o +(olv)o(ed.)30 b(The)19 b(tec)o(hnique)g(renames)f(v)m(ariables)i(so)e(that)g +(a)g(v)m(ariable)0 1513 y(reference)e(cannot)f(refer)g(to)g(a)f(binding)k(in) +o(tro)q(duced)e(at)e(a)h(di\013eren)o(t)h(step.)71 1569 y(Kohlb)q(ec)o(k)o +(er's)g(Ph.D.)f(dissertation)h([Kohlb)q(ec)o(k)o(er,)g(1986b])f(carried)h +(this)g(a)f(step)h(further)f(b)o(y)h(prop)q(osing)g(a)0 1626 +y(pattern)i(matc)o(hing)h(and)g(template)g(substitution)g(language)g(for)f +(de\014ning)i(macros;)f(the)g(underlying)i(mec)o(h-)0 1682 +y(anism)e(automatically)h(used)g(h)o(ygienic)g(macro)f(expansion)h(to)e(a)o +(v)o(oid)h(name)g(clashes.)33 b(The)19 b(macro-de\014ning)0 +1739 y(language)e(w)o(as)g(ric)o(h)g(enough)h(to)e(express)i(a)e(wide)i(v)m +(ariet)o(y)g(of)e(useful)j(macros,)d(but)h(pro)o(vided)h(no)f(facilit)o(y)i +(for)0 1795 y(the)c(execution)i(of)e(arbitrary)f(user-sp)q(eci\014ed)k(Lisp)e +(co)q(de;)g(this)f(restriction)h(w)o(as)f(though)o(t)f(necessary)i(to)e(a)o +(v)o(oid)0 1852 y(sub)o(v)o(ersion)19 b(of)f(the)g(guaran)o(tee)g(of)g(go)q +(o)q(d)g(h)o(ygiene.)31 b(This)19 b(little)h(language)f(is)g(in)o(teresting)g +(in)g(its)g(o)o(wn)f(righ)o(t.)0 1908 y(While)13 b(not)e(as)g(general)g(as)g +(the)h(separate)e(matc)o(hing)i(and)f(substitution)h(facilities)i(of)d +Fw(DEFMACRO)f Fx(and)h(bac)o(kquote)0 1965 y(\(with)18 b(the)g(opp)q(ortunit) +o(y)h(to)e(p)q(erform)h(arbitrary)g(computations)g(in)h(b)q(et)o(w)o(een\),)f +(it)h(do)q(es)f(allo)o(w)h(for)e(optional)0 2021 y(and)c(rep)q(etitiv)o(e)i +(forms)d(b)o(y)h(using)h(a)f(BNF-lik)o(e)h(notation,)f(and)h(allo)o(ws)f(for) +g(optional)g(situations)h(b)o(y)f(p)q(ermitting)0 2077 y(m)o(ultiple)k(pro)q +(ductions)f(and)g(using)f(the)h(\014rst)f(one)g(that)f(matc)o(hes.)20 +b(F)l(or)14 b(example,)i Fw(INC)f Fx(migh)o(t)g(b)q(e)h(de\014ned)g(as)0 +2164 y Fw(\(extend-syntax)22 b(\(inc\))h(\(\))48 2221 y(\(\(inc)g(x\))g +(\(inc)h(x)g(1\)\))48 2277 y(\(\(inc)f(x)h(n\))f(\(setq)g(x)h(\(+)g(x)f +(n\)\)\)\))0 2364 y Fx(and)15 b Fw(LET)g Fx(as)0 2451 y Fw(\(extend-syntax)22 +b(\(let\))h(\(\))48 2507 y(\(\(let)g(\(\(var)g(value\))g(...\))g(body)h +(...\))72 2563 y(\(\(lambda)e(\(var)i(...\))f(body)g(...\))h(value)f +(...\)\)\))0 2650 y Fx(The)16 b(ellipsis)i(\\)p Fw(...)p Fx(")j(serv)o(es)16 +b(as)f(a)h(kind)g(of)g(Kleene)h(star.)k(Note)15 b(the)h(w)o(a)o(y)f(in)h +(whic)o(h)h(v)m(ariable-v)m(alue)h(pairs)e(are)0 2707 y(implicitly)i +(destructured)e(and)f(rearranged)g(in)o(to)g(t)o(w)o(o)f(separate)h(lists)h +(in)g(the)f(expansion.)p eop +%%Page: 50 50 +50 49 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(50)71 45 y(The)17 b(\014rst)g(list)i(giv)o(en)e(to)g +Fw(extend-syntax)f Fx(is)i(a)f(list)h(of)f(k)o(eyw)o(ords)g(that)f(are)i +(part)e(of)h(the)h(macro)f(syn)o(tax)0 102 y(and)f(not)g(to)f(b)q(e)i(tagged) +e(as)h(p)q(ossible)h(v)m(ariable)h(references.)k(The)17 b(second)f(list)h +(men)o(tions)f(v)m(ariables)h(that)f(ma)o(y)0 158 y(b)q(e)h(in)o(tro)q(duced) +g(b)o(y)f(the)g(macro)f(expansion)i(but)f(are)g Fm(intende)n(d)f +Fx(to)g(in)o(teract)h(with)g(the)g(argumen)o(t)f(forms.)22 +b(F)l(or)0 214 y(example,)17 b(consider)h(an)f(implemen)o(tation)h(\(using)f +(the)g(Sc)o(heme)g(call-with-curren)o(t-con)o(tin)o(uation)i(primitiv)o(e\))0 +271 y(of)13 b(a)g(sligh)o(t)h(generalization)h(of)e(the)h Fn(n)7 +b Fx(+)704 253 y Fj(1)p 704 260 18 2 v 704 287 a(2)740 271 +y Fx(lo)q(op)14 b(attributed)g(to)f(Dahl)g([Kn)o(uth,)h(1974];)e(it)i +(executes)g(statemen)o(ts)0 327 y(rep)q(eatedly)i(un)o(til)h(its)e +Fw(while)g Fx(clause)h(\(if)f(an)o(y\))f(fails)i(or)f(un)o(til)h +Fw(exit)f Fx(is)h(used.)0 416 y Fw(\(extend-syntax)22 b(\(loop)h(while)g +(repeat\))g(\(exit\))48 473 y(\(\(loop)g(e1)g(e2)h(...)f(repeat\))72 +529 y(\(call/cc)f(\(lambda)h(\(exit\))334 585 y(\(\(label)g(foo)406 +642 y(\(lambda)g(\(\))g(e1)h(e2)f(...)h(\(foo\)\)\)\)\)\)\))48 +698 y(\(\(loop)f(e1)g(...)h(while)f(p)h(e2)f(...)h(repeat\))72 +755 y(\(call/cc)e(\(lambda)h(\(exit\))334 811 y(\(\(label)g(foo)406 +868 y(\(lambda)g(\(\))g(e1)h(...)668 924 y(\(unless)f(p)h(\(exit)f(#f\)\))668 +981 y(e2)h(...)668 1037 y(\(foo\)\)\)\)\)\)\)\))0 1126 y Fx(In)17 +b(this)f(example)i Fw(loop)p Fx(,)d Fw(while)p Fx(,)g(and)i +Fw(repeat)e Fx(are)h(k)o(eyw)o(ords)f(and)i(should)g(not)f(b)q(e)h(confused)g +(with)f(p)q(ossible)0 1182 y(v)m(ariable)i(references;)f Fw(exit)f +Fx(is)i(b)q(ound)f(b)o(y)g(the)f(macro)g(but)h(is)g(in)o(tended)h(for)e(use)h +(in)g(the)g(argumen)o(t)f(forms)f(of)0 1239 y(the)h(macro)f(call.)23 +b(The)16 b(name)f Fw(foo)h Fx(is)g(not)f(in)o(tended)j(for)d(suc)o(h)h(use,)g +(and)g(the)f(h)o(ygienic)j(macro)d(expander)h(will)0 1295 y(rename)i(it)h(if) +g(necessary)g(to)e(a)o(v)o(oid)i(name)f(clashes.)30 b(\(Note)18 +b(that)g(y)o(ou)g(ha)o(v)o(e)g(to)g(try)g(hard)g(to)g(mak)o(e)g(a)g(name)0 +1352 y(a)o(v)m(ailable;)23 b(the)c(default)h(is)f(to)g(pla)o(y)h(it)f(safe,)h +(whic)o(h)g(mak)o(es)e Fw(extend-syntax)g Fx(easier)h(and)h(safer)f(for)f(no) +o(vice)0 1408 y(macro)c(writers)h(to)g(use.\))20 b(Note)14 +b(the)i(use)f(of)g(the)g(idiom)h(\\)p Fw(e1)23 b(e2)h(...)p +Fx(")19 b(to)c(require)h(that)e(at)h(least)g(one)g(form)f(is)0 +1465 y(presen)o(t)h(if)h(there)f(is)h(no)f Fw(while)f Fx(clause.)71 +1521 y(Syn)o(tactic)h(closures)h(w)o(ere)e(prop)q(osed)i(in)g(1988)e(b)o(y)g +(Alan)i(Ba)o(wden)f(and)h(Jonathan)f(Rees)g([Ba)o(wden,)g(1988].)0 +1577 y(Their)20 b(idea)g(b)q(ears)f(a)g(strong)f(resem)o(blance)i(to)e(the)h +(expansion-passing)i(tec)o(hnique)f(of)f(Dyb)o(vig,)h(F)l(riedman,)0 +1634 y(and)g(Ha)o(ynes)h([Dyb)o(vig,)f(1986])f(but)h(is)h(more)f(general.)35 +b(Syn)o(tactic)21 b(con)o(texts)e(are)h(represen)o(ted)h(not)f(b)o(y)g(the)0 +1690 y(automatically)g(managed)g(tags)e(of)i(h)o(ygienic)h(macro)e(expansion) +h(but)g(b)o(y)g(en)o(vironmen)o(t)g(ob)s(jects;)h(one)f(ma)o(y)0 +1747 y(\\close")g(a)f(piece)i(of)e(co)q(de)h(with)g(resp)q(ect)g(to)f(suc)o +(h)h(a)g(syn)o(tactic)f(en)o(vironmen)o(t,)i(thereb)o(y)e(giving)i(the)f +(macro)0 1803 y(writer)d(explicit)j(con)o(trol)c(o)o(v)o(er)h(the)g(corresp)q +(ondence)i(b)q(et)o(w)o(een)e(one)h(o)q(ccurrence)g(of)f(a)g(sym)o(b)q(ol)g +(and)h(another.)0 1860 y(Syn)o(tactic)g(closures)h(pro)o(vide)g(great)e(p)q +(o)o(w)o(er)h(and)g(\015exibili)q(t)o(y)i(but)e(put)h(the)f(burden)h(on)f +(the)h(programmer)e(to)0 1916 y(use)f(them)f(prop)q(erly)l(.)71 +1973 y(In)20 b(1990,)f(William)i(Clinger)g(\(who)d(used)j(to)d(b)q(e)j(at)d +(Indiana)j(Univ)o(ersit)o(y\))f(joined)g(forces)g(with)f(Rees)i(to)0 +2029 y(prop)q(ose)e(a)g(grand)g(syn)o(thesis)g(that)g(com)o(bines)h(the)f(b)q +(ene\014ts)h(of)e(h)o(ygienic)j(macros)d(and)i(syn)o(tactic)f(closures,)0 +2086 y(with)12 b(the)g(added)h(adv)m(an)o(tage)e(of)g(running)i(in)g(linear)g +(rather)e(than)h(quadratic)g(time.)19 b(Their)12 b(tec)o(hnique)h(is)g +(called,)0 2142 y(appropriately)18 b(enough,)g(\\macros)e(that)h(w)o(ork")f +([Clinger,)i(1991].)25 b(The)18 b(k)o(ey)f(insigh)o(t)h(ma)o(y)f(b)q(e)h +(explained)h(b)o(y)0 2198 y(analogy)f(to)f(reduction)h(in)h(the)f(lam)o(b)q +(da)g(calculus)i([Ch)o(urc)o(h,)d(1941].)26 b(Sometimes)19 +b(the)e(rule)i(of)e Fn(\013)p Fx(-con)o(v)o(ersion)0 2255 y(m)o(ust)22 +b(b)q(e)h(applied)h(to)e(rename)h(v)m(ariables)g(in)h(a)e(lam)o(b)q +(da-calculus)i(expression)g(so)e(that)g(a)g(subsequen)o(t)h +Fn(\014)r Fx(-)0 2311 y(reduction)16 b(will)g(not)f(pro)q(duce)h(a)e(name)h +(clash.)21 b(One)15 b(cannot)g(do)g(suc)o(h)g(renaming)g(all)h(at)e(once;)h +(it)g(is)h(necessary)0 2368 y(to)j(in)o(tersp)q(erse)h(renaming)g(with)g(the) +f Fn(\014)r Fx(-reductions,)j(b)q(ecause)e(a)f Fn(\014)r Fx(-reduction)i(can) +f(mak)o(e)f(t)o(w)o(o)f(copies)i(of)f(a)0 2424 y(lam)o(b)q(da-expression)i +(\(hence)g(b)q(oth)e(bind)i(the)f(same)f(name\))h(and)g(bring)g(the)g +(binding)h(of)f(one)f(in)o(to)h(con\015ict)0 2481 y(with)e(that)e(of)h(the)h +(other.)26 b(The)18 b(same)f(is)h(true)f(of)g(macros:)24 b(it)17 +b(is)h(necessary)g(to)f(in)o(tersp)q(erse)h(renaming)g(with)0 +2537 y(macro)d(expansion.)22 b(The)15 b(con)o(tribution)i(of)e(Clinger)h(and) +g(Rees)g(w)o(as)f(to)g(clarify)h(this)g(problem)g(and)g(pro)o(vide)g(a)0 +2594 y(fast,)e(complete)i(solution.)71 2650 y(The)k(Sc)o(heme)i(standard)e +([IEEE,)g(1991])f(w)o(as)g(adopted)i(without)f(a)h(macro)e(facilit)o(y)l(,)k +(so)d(confusion)i(still)0 2707 y(o\016cially)17 b(reigns)e(on)g(this)h(p)q +(oin)o(t.)k(Macros)15 b(remain)g(an)g(activ)o(e)h(researc)o(h)f(topic.)p +eop +%%Page: 51 51 +51 50 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(51)71 45 y(Wh)o(y)14 b(are)h(macros)g(so)g(imp)q(ortan)o(t)f(to)h +(Lisp)h(programmers?)k(Not)14 b(merely)i(for)f(the)g(syn)o(tactic)g(con)o(v)o +(enience)0 102 y(they)h(pro)o(vide,)g(but)g(b)q(ecause)h(they)f(are)f +(programs)g(that)g(manipulate)i(programs,)d(whic)o(h)j(has)e(alw)o(a)o(ys)g +(b)q(een)i(a)0 158 y(cen)o(tral)e(theme)h(in)g(the)f(Lisp)h(comm)o(unit)o(y)l +(.)k(If)c(F)o(OR)l(TRAN)g(is)g(the)f(language)g(that)g(pushes)h(n)o(um)o(b)q +(ers)f(around,)0 214 y(and)h(C)f(is)i(the)f(language)g(that)f(pushes)h(c)o +(haracters)f(and)h(p)q(oin)o(ters)g(around,)g(then)g(Lisp)h(is)f(the)g +(language)g(that)0 271 y(pushes)e(programs)f(around.)19 b(Its)14 +b(data)f(structures)g(are)g(useful)i(for)e(represen)o(ting)h(and)g +(manipulating)h(program)0 327 y(text.)k(The)14 b(macro)g(is)h(the)f(most)f +(immediate)i(example)g(of)f(a)g(program)f(written)h(in)h(a)f(metalanguage.)19 +b(Because)0 384 y(Lisp)h(is)f(its)g(o)o(wn)f(metalanguage,)g(the)h(p)q(o)o(w) +o(er)f(of)g(the)h(en)o(tire)g(programming)f(language)h(can)f(b)q(e)i(brough)o +(t)e(to)0 440 y(b)q(ear)d(on)h(the)f(task)f(of)h(transforming)g(program)f +(text.)71 497 y(By)h(comparison,)h(the)f(C)h(prepro)q(cessor)f(is)i +(completely)f(anemic;)h(the)e(macro)g(language)h(consists)g(en)o(tirely)0 +553 y(of)e(substitution)i(and)f(tok)o(en)f(concatenation.)20 +b(There)15 b(are)f(conditionals,)i(and)f(one)g(ma)o(y)f(conditionally)j +(de\014ne)0 610 y(a)g(macro,)g(but)h(a)f(C)g(macro)g(ma)o(y)f(not)h(expand)h +(in)o(to)g(suc)o(h)g(a)f(conditional.)28 b(There)18 b(is)g(neither)g +(recursion)g(nor)0 666 y(metarecursion,)d(whic)o(h)h(is)g(to)e(sa)o(y)h(that) +f(a)h(C)g(macro)g(can)g(neither)h(in)o(v)o(ok)o(e)f(itself)h(nor)f(de\014ne)i +(another)e(macro.)71 723 y(Lisp)j(users)f(\014nd)h(this)g(laughable.)28 +b(They)17 b(are)g(v)o(ery)g(m)o(uc)o(h)h(concerned)g(with)g(the)f +(programming)g(pro)q(cess)0 779 y(as)c(an)h(ob)s(ject)f(of)h(discourse)h(and) +f(an)f(ob)s(ject)h(of)f(computation,)h(and)g(they)g(insist)g(on)g(ha)o(ving)g +(the)g(b)q(est)g(p)q(ossible)0 835 y(means)21 b(of)f(expression)i(for)e(this) +h(purp)q(ose.)38 b(Wh)o(y)20 b(settle)h(for)f(an)o(ything)h(less)h(than)f +(the)f(full)j(programming)0 892 y(language)15 b(itself)t(?)71 +948 y(\(W)l(e)g(sa)o(y)g(this)i(not)e(only)i(to)e(illustrate)i(the)f(c)o +(haracter)f(of)g(Lisp,)i(but)f(also)g(to)f(illustrate)i(the)f(c)o(haracter)f +(of)0 1005 y(Lisp)q(ers.)21 b(The)13 b(Lisp)h(comm)o(unit)o(y)g(is)f(motiv)m +(ated,)h(in)g(part,)e(b)o(y)h(a)g(attitude)h(of)e(sup)q(eriorit)o(y)i(to)f +(the)g(comp)q(etition,)0 1061 y(whic)o(h)j(migh)o(t)f(b)q(e)h(another)f +(programming)f(language)i(or)e(another)h(dialect)i(of)d(Lisp.\))0 +1183 y Fo(3.4)56 b(Numerical)16 b(F)-5 b(acilities)0 1269 y +Fx(In)17 b(Lisp)i(1.6)c(and)i(through)g(PDP-6)f(Lisp,)i(most)e(Lisp)i +(systems)f(o\013ered)f(at)g(most)h(single-w)o(ord)g(\014xn)o(ums)g(\(in-)0 +1325 y(tegers\))f(and)i(single-w)o(ord)g(\015on)o(ums)f(\(\015oating-p)q(oin) +o(t)h(n)o(um)o(b)q(ers\).)26 b(\(PDP-1)16 b(Lisp)i([Deutsc)o(h,)f(1964])f +(had)h(only)0 1382 y(\014xn)o(ums;)k(apparen)o(tly)e(the)g(same)g(is)g(true)g +(of)g(the)g(M-460)f(Lisp)i([Hart,)e(1964].)30 b(Lisp)20 b(1.5)e(on)h(the)g +(7090)f(had)0 1438 y(\015oating-p)q(oin)o(t)d([McCarth)o(y)l(,)e(1962],)g(as) +i(did)g(Q-32)g(Lisp)h([Saunders,)e(1964b])g(and)h(PDP-6)f(Lisp)h([PDP-6)f +(Lisp,)0 1495 y(1967].\))71 1551 y(W)l(e)19 b(are)g(still)h(a)f(little)i +(uncertain)f(ab)q(out)f(the)h(origin)g(of)e(bign)o(ums)i(\(a)f(data)f(t)o(yp) +q(e)i(that)e(uses)i(a)f(v)m(ariable)0 1608 y(amoun)o(t)f(of)h(storage)e(so)i +(as)f(to)h(represen)o(t)g(arbitrarily)g(large)g(in)o(teger)g(v)m(alues,)i +(sub)s(ject)e(to)f(the)h(total)g(size)g(of)0 1664 y(the)j(heap,)i(whic)o(h)f +(is)g(where)f(bign)o(ums)h(are)f(stored\).)39 b(They)23 b(seem)f(to)f(ha)o(v) +o(e)h(app)q(eared)h(in)g(MacLisp)g(and)0 1720 y(Stanford)14 +b(Lisp)h(1.6)f(at)f(roughly)i(the)f(same)g(time,)h(and)f(p)q(erhaps)h(also)f +(in)h(Standard)f(Lisp.)21 b(They)15 b(w)o(ere)f(needed)0 1777 +y(for)h(sym)o(b)q(olic)h(algebra)g(programs)e(suc)o(h)i(as)f(REDUCE)g +([Hearn,)g(1971])e(and)j(MA)o(CSYMA)f([Mathlab)g(Group,)0 1833 +y(1977].)i(No)o(w)o(ada)o(ys)10 b(the)i(handling)h(of)e(bign)o(ums)h(is)g(a)g +(distinguishing)i(feature)d(of)g(Lisp,)j(though)d(not)g(an)h(absolute)0 +1890 y(requiremen)o(t.)29 b(Both)18 b(the)g(Sc)o(heme)g(Standard)g([IEEE,)f +(1991])g(and)h(Common)f(Lisp)i([CL)l(TL2,)g(1990])d(require)0 +1946 y(them.)j(Usually)12 b(the)g(algorithms)f(detailed)i(in)f(Kn)o(uth)g(V)l +(olume)g(2)f(are)h(used)g([Kn)o(uth,)f(1969;)f(Kn)o(uth,)j(1981].)k(Jon)0 +2003 y(L)e(White)f(wrote)g(a)g(pap)q(er)h(ab)q(out)f(a)g(set)g(of)f(primitiv) +o(es)j(that)e(allo)o(w)g(one)h(to)e(co)q(de)i(most)f(of)f(bign)o(um)i +(arithmetic)0 2059 y(e\016cien)o(tly)i(in)f(Lisp,)g(instead)f(of)g(ha)o(ving) +h(to)e(co)q(de)i(the)f(whole)h(thing)g(in)g(assem)o(bly)f(language)h([White,) +e(1986].)71 2116 y(There)21 b(is)g(also)g(a)g(literature)g(on)g(BIGFLO)o(A)l +(T)g(arithmetic.)38 b(It)21 b(has)g(b)q(een)h(used)f(in)h(sym)o(b)q(olic)g +(algebra)0 2172 y(systems)13 b([Mathlab)g(Group,)g(1977],)f(but)h(has)g(not)g +(b)q(ecome)h(a)f(\014xture)h(of)f(Lisp)h(dialects.)21 b(Lisp)14 +b(is)g(often)f(used)h(as)0 2229 y(a)f(platform)h(for)f(this)h(kind)h(of)f +(researc)o(h)f(b)q(ecause)i(ha)o(ving)f(bign)o(ums)h(gets)e(y)o(ou)g(2/3)g +(of)h(the)g(w)o(a)o(y)e(there)i([Bo)q(ehm,)0 2285 y(1986;)g(V)l(uillemi)q(n,) +19 b(1988].)h(The)c(MacLisp)h(functions)g Fw(HAULONG)e Fx(and)h +Fw(HAIPART)f Fx(w)o(ere)g(in)o(tro)q(duced)j(to)d(supp)q(ort)0 +2341 y(Macsyma's)c(big\015oat)h(arithmetic;)i(these)f(b)q(ecame)g(the)f +(Common)g(Lisp)h(functions)g Fw(INTEGER-LENGTH)e Fx(and)h(\(b)o(y)0 +2398 y(w)o(a)o(y)i(of)h(Lisp-Mac)o(hine)i(Lisp\))f Fw(LDB)p +Fx(.)71 2454 y(In)22 b(the)g(1980's)e(the)i(dev)o(elop)q(ers)i(of)d(Common)g +(Lisp)i(grappled)g(with)f(the)g(in)o(tro)q(duction)h(of)f(the)g(IEEE)0 +2511 y(\015oating-p)q(oin)o(t)17 b(standard)f([IEEE,)g(1985].)22 +b(\(It)16 b(is)h(notable)g(that,)f(as)g(of)g(this)h(writing,)g(most)f(other)g +(high-lev)o(el)0 2567 y(programming)11 b(languages)h(ha)o(v)o(e)f +Fm(not)h Fx(grappled)g(seriously)h(with)f(the)f(IEEE)h(\015oating-p)q(oin)o +(t)h(standard.)18 b(Indeed,)0 2624 y(ANSI)e(X3J3)f(\(F)o(OR)l(TRAN\))g +(rejected)h(an)f(explicit)j(request)d(to)f(do)h(so.\))71 2680 +y(While)k(Lisp)g(is)f(not)f(usually)i(though)o(t)e(of)h(as)f(a)g(n)o +(umerical)i(programming)e(language,)i(there)e(w)o(ere)h(three)p +eop +%%Page: 52 52 +52 51 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(52)0 45 y(strong)14 b(in\015uences)k(in)e(that)e(direction:)21 +b(MA)o(CSYMA,)15 b(the)g(S-1)g(pro)s(ject,)f(and)i(Gerald)f(Sussman.)71 +102 y(The)e(\014rst)f(go)q(o)q(d)h(n)o(umerical)h(Lisp)g(compiler)g(w)o(as)e +(dev)o(elop)q(ed)j(for)d(the)h(MA)o(CSYMA)g(group)f([Golden,)h(1970;)0 +158 y(Steele,)h(1977b;)e(Steele,)j(1977c];)d(it)h(w)o(as)g(imp)q(ortan)o(t)g +(to)f(them)i(and)f(their)h(users)f(that)g(n)o(umerical)h(co)q(de)g(b)q(e)g(b) +q(oth)0 214 y(fast)k(and)h(compact.)30 b(The)19 b(result)g(w)o(as)f(a)h(Lisp) +h(compiler)g(that)e(w)o(as)g(comp)q(etitiv)o(e)i(with)f(the)g(DEC)f(PDP-10)0 +271 y(F)o(OR)l(TRAN)e(compiler)h([F)l(ateman,)c(1973].)71 327 +y(The)i(S-1)g(w)o(as)f(initially)j(in)o(tended)f(to)f(b)q(e)g(a)g(fast)f +(signal)h(pro)q(cessor.)20 b(One)15 b(of)g(the)g(en)o(visioned)h +(applications)0 384 y(w)o(as)i(detection)j(of)d(submarines,)j(whic)o(h)f +(seemed)g(to)f(require)h(a)f(mix)h(of)f(n)o(umerical)h(signal)h(pro)q +(cessing)f(and)0 440 y(arti\014cial)e(in)o(telligence)j(tec)o(hniques.)27 +b(The)17 b(pro)s(ject)g(receiv)o(ed)h(advice)g(from)f(W.)f(Kahan)i(in)g(the)f +(design)h(of)f(its)0 497 y(\015oating-p)q(oin)o(t)j(arithmetic,)h(so)e(it)h +(ended)g(up)g(b)q(eing)h(quite)f(similar)h(to)e(the)g(ev)o(en)o(tual)h(IEEE)g +(standard.)32 b(It)0 553 y(seemed)19 b(appropriate)f(to)f(re\014ne)i(the)f +(tec)o(hniques)h(of)e(the)i(MacLisp)f(compiler)i(to)d(pro)q(duce)i(go)q(o)q +(d)f(n)o(umerical)0 610 y(co)q(de)e(in)h(S-1)f(Lisp)h([Bro)q(oks,)d(1982b].) +20 b(The)c(S-1)g(o\013ered)g(four)f(di\013eren)o(t)h(\015oating-p)q(oin)o(t)g +(formats)e(\(18,)h(36,)g(72,)0 666 y(and)h(144)f(bits\))h([Correll,)g(1979].) +k(In\015uenced)e(b)o(y)e(S-1)g(Lisp,)h(Common)e(Lisp)i(pro)o(vides)g(an)e +(expanded)i(system)0 723 y(of)e(\015oating-p)q(oin)o(t)h(data)e(t)o(yp)q(es)h +(to)g(accommo)q(date)g(suc)o(h)g(arc)o(hitectural)h(v)m(ariation.)71 +779 y(The)e(inclusion)j(of)d(complex)h(n)o(um)o(b)q(ers)g(in)g(Common)f(Lisp) +i(w)o(as)d(also)i(an)f(inheritance)i(from)e(the)h(S-1.)k(This)0 +835 y(w)o(as)c(something)g(of)h(a)f(stic)o(king)h(p)q(oin)o(t)g(with)g(Scott) +f(F)l(ahlman.)21 b(A)16 b(running)g(jok)o(e)f(w)o(as)g(an)g(acceptance)i +(test)e(for)0 892 y(nascen)o(t)g(Common)g(Lisp)i(implemen)o(tations)f(dev)o +(elop)q(ed)h(b)o(y)f(Steele.)21 b(It)16 b(w)o(as)e(in)i(three)g(parts.)k +(First)15 b(y)o(ou)g(t)o(yp)q(e)0 948 y Fw(T)p Fx(;)g(if)g(it)g(resp)q(onds)h +Fw(T)p Fx(,)f(it)g(passes)g(part)f(1.)20 b(Second,)15 b(y)o(ou)g(de\014ne)h +(the)f Fw(factorial)f Fx(function)i(and)f(then)h(calculate)0 +1037 y Fw(\(/)24 b(\(factorial)e(1000\))h(\(factorial)g(999\)\))0 +1126 y Fx(If)16 b(it)g(resp)q(onds)g Fw(1000)p Fx(,)f(it)h(passes)f(part)g +(2.)21 b(Third,)c(y)o(ou)e(try)g Fw(\(atanh)23 b(-2\))p Fx(.)e(If)16 +b(it)g(returns)f(a)h(complex)g(n)o(um)o(b)q(er,)0 1182 y(it)k(passes;)i +(extra)e(credit)g(if)h(it)f(returns)g(the)g Fm(c)n(orr)n(e)n(ct)f +Fx(complex)i(n)o(um)o(b)q(er.)35 b(It)20 b(w)o(as)f(a)g(long)i(time)f(b)q +(efore)g(an)o(y)0 1239 y(Common)e(Lisp)h(implemen)o(tation)h(passed)e(the)h +(third)f(part.)29 b(Steele)19 b(brok)o(e)f(an)h(implemen)o(tation)g(or)f(t)o +(w)o(o)f(on)0 1295 y(the)e(trade-sho)o(w)g(\015o)q(or)g(with)g(this)h +(three-part)f(test.)71 1352 y(Gerald)j(Sussman)g(and)h(his)g(studen)o(ts)f +(\(including)j(Gerald)d(Ro)o(ylance)h(and)f(Matthew)g(Halfan)o(t\))f(b)q +(ecame)0 1408 y(in)o(terested)i(in)h(n)o(umerical)g(applications)g(and)f(in)h +(the)e(use)i(of)e(Lisp)i(to)e(generate)g(and)h(transform)f(n)o(umerical)0 +1465 y(programs)h([Sussman,)j(1988;)d(Ro)o(ylance,)j(1988].)34 +b(Sussman)21 b(also)f(sp)q(en)o(t)h(a)f(fair)h(amoun)o(t)e(of)h(time)h(at)f +(MIT)0 1521 y(teac)o(hing)15 b(Lisp)g(to)f(undergraduates.)20 +b(Sussman)14 b(though)o(t)g(it)g(w)o(as)g(absolutely)h(crazy)f(to)g(ha)o(v)o +(e)g(to)g(tell)h(studen)o(ts)0 1577 y(that)g(the)h(quotien)o(t)g(of)g +Fw(10.0)f Fx(and)h Fw(4.0)g Fx(w)o(as)f Fw(2.5)g Fx(but)h(the)g(quotien)o(t)g +(of)g Fw(10)g Fx(and)g Fw(4)f Fx(w)o(as)h Fw(2)p Fx(.)21 b(Of)c(course,)e +(nearly)0 1634 y(all)h(other)e(programming)g(languages)h(ha)o(v)o(e)f(the)h +(same)f(problem)i(\(P)o(ascal)e([Jensen,)h(1974])e(and)i(its)g(deriv)m(ativ)o +(es)0 1690 y(b)q(eing)20 b(notable)g(exceptions\),)g(but)g(that)e(is)i(no)f +(excuse;)i(Lisp)g(aspires)e(to)g(b)q(etter)g(things,)h(and)f(cen)o(turies)h +(of)0 1747 y(mathematical)e(preceden)o(t)g(should)h(out)o(w)o(eigh)f(the)g +(few)f(decades)i(of)e(temp)q(orary)g(ab)q(erration)h(in)g(the)g(\014eld)h(of) +0 1803 y(computers.)28 b(A)o(t)17 b(Sussman's)g(urging,)i(the)f +Fw(/)f Fx(function)i(w)o(as)e(de\014ned)i(to)e(return)h(rationals)g(when)g +(necessary)l(,)0 1860 y(so)h Fw(\(/)24 b(10)g(4\))19 b Fx(in)i(Common)e(Lisp) +i(pro)q(duces)f Fw(5/2)p Fx(.)33 b(\(This)20 b(w)o(as)f(not)h(considered)h(a) +e(radical)i(c)o(hange)f(to)f(the)0 1916 y(language.)27 b(Rational)18 +b(n)o(um)o(b)q(ers)g(w)o(ere)f(already)h(in)g(use)g(in)h(sym)o(b)q(olic)f +(algebra)g(systems.)26 b(The)18 b(dev)o(elop)q(ers)g(of)0 1973 +y(Common)c(Lisp)j(w)o(ere)d(simply)j(in)o(tegrating)e(in)o(to)g(the)g +(language)g(functionalit)o(y)i(frequen)o(tly)e(required)h(b)o(y)f(their)0 +2029 y(clien)o(ts,)h(an)o(yw)o(a)o(y)l(.\))71 2086 y(All)c(this)f(pro)o(v)o +(ok)o(ed)e(another)i(debate,)g(for)f(in)i(MacLisp)f(and)g(its)g(descendan)o +(ts)g(the)g(slash)g(w)o(as)f(the)h(c)o(haracter-)0 2142 y(quoter;)g(moreo)o +(v)o(er,)f(bac)o(kslash)i(w)o(as)d(the)i(remainder)h(op)q(erator.)17 +b(The)11 b(committee)g(ev)o(en)o(tually)h(decided)g(to)f(sw)o(ap)0 +2198 y(the)g(roles)g(of)f(slash)h(and)g(bac)o(kslash,)g(so)g(that)f(slash)h +(b)q(ecame)g(alphab)q(etic)i(and)e(bac)o(kslash)g(b)q(ecame)g(the)g(c)o +(haracter)0 2255 y(quoter,)i(th)o(us)g(allo)o(wing)g(the)h(division)h(op)q +(eration)e(to)f(b)q(e)i(written)f(\\)p Fw(/)p Fx(")f(instead)i(of)f(\\)p +Fw(//)p Fx(")f(and)h(allo)o(wing)h(rational)0 2311 y(n)o(um)o(b)q(ers)h(to)g +(b)q(e)h(written)f(in)h(con)o(v)o(en)o(tional)f(notation.)20 +b(This)15 b(also)g(solv)o(ed)h(some)f(problems)g(caused)h(b)o(y)f(a)g(then)0 +2368 y(little-kno)o(wn)21 b(and)f(little-lo)o(v)o(ed)i(\(in)e(the)g(Lisp)g +(comm)o(unit)o(y\))g(op)q(erating)g(system)f(called)i(Unix,)h(whic)o(h)e +(used)0 2424 y(bac)o(kslash)g(as)g(a)f(c)o(haracter-quoter)g(and)h(slash)g +(in)h(\014le)g(names.)33 b(Ho)o(w)o(ev)o(er,)20 b(it)g(w)o(as)f(a)h(ma)s(jor) +e(incompatible)0 2481 y(c)o(hange)d(from)g(MacLisp)h(and)f(Zetalisp,)h(whic)o +(h)g(left)f(Common)g(Lisp)h(op)q(en)g(to)e(quite)i(some)f(criticism.)71 +2537 y(Of)20 b(course,)i(this)f(left)h(Common)d(Lisp)j(without)f(a)f +(truncating)h(in)o(teger)g(division)i(op)q(eration,)f(whic)o(h)f +Fm(is)0 2594 y Fx(o)q(ccasionally)h(useful.)39 b(Inspired)22 +b(b)o(y)f(the)g(man)o(y)g(rounding)g(mo)q(des)g(of)g(the)g(S-1)g([Correll,)h +(1979;)e(Hailp)q(ern,)0 2650 y(1979])14 b(\(whic)o(h)i(w)o(ere)f +(in\015uenced)j(in)e(turn)f(b)o(y)h(Kahan\),)f(Steele)h(added)g +Fm(four)g Fx(v)o(ersions)g(of)f(the)g(in)o(teger)h(division)0 +2707 y(op)q(eration)g(to)g(Common)g(Lisp|)p Fw(truncate)p Fx(,)g +Fw(round)p Fx(,)g Fw(ceiling)p Fx(,)f(and)h Fw(floor)p Fx(,)g(eac)o(h)g(of)g +(whic)o(h)h(accepts)f(either)p eop +%%Page: 53 53 +53 52 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(53)0 45 y(one)15 b(or)f(t)o(w)o(o)f(argumen)o(ts)h(and)h(returns)f +(a)g(quotien)o(t)h(and)g(remainder|th)o(us)h(b)q(ettering)f(ev)o(en)g(P)o +(ascal.)k(Ov)o(erall,)0 102 y(Common)e(Lisp)h(pro)o(vides)g(a)f(m)o(uc)o(h)g +(ric)o(her)h(set)f(of)g(n)o(umerical)i(primitiv)o(es,)g(and)e(pa)o(ys)g(ev)o +(en)h(closer)f(atten)o(tion)0 158 y(to)e(suc)o(h)g(details)h(as)f(the)g +(branc)o(h)h(cuts)f(of)g(complex)h(trigonometric)f(functions,)g(than)g(F)o +(OR)l(TRAN)i(ev)o(er)e(has.)0 280 y Fo(3.5)56 b(Some)17 b(Notable)h(F)-5 +b(ailures)0 366 y Fx(Despite)14 b(Lisp's)g(tendency)g(to)f(absorb)g(new)h +(features)f(o)o(v)o(er)f(time,)i(b)q(oth)f(from)g(other)g(programming)g +(languages)0 422 y(and)f(from)g(exp)q(erimen)o(ts)h(within)g(the)f(Lisp)h +(comm)o(unit)o(y)l(,)g(there)f(are)g(a)f(few)h(ideas)h(that)e(ha)o(v)o(e)h(b) +q(een)h(tried)g(rep)q(eat-)0 478 y(edly)18 b(in)f(v)m(arious)g(forms)f(but)h +(for)f(some)h(reason)f(simply)i(don't)e(catc)o(h)g(on)h(in)h(the)e(Lisp)i +(comm)o(unit)o(y)l(.)25 b(Notable)0 535 y(among)13 b(these)i(ideas)g(are)f +(Algol-st)o(yle)h(syn)o(tax,)e(generalized)j(m)o(ultiple)g(v)m(alues,)g(and)e +(logic)h(programming)f(with)0 591 y(uni\014cation)j(of)e(v)m(ariables.)0 +711 y Fu(3.5.1)52 b(Algol-St)o(yle)18 b(Syn)o(tax)0 797 y Fx(Ev)o(er)k(since) +h(Stev)o(e)f(Russell)i(\014rst)d(hand-co)q(ded)j(an)d(implemen)o(tation)j(of) +d Fw(EVAL)p Fx(,)g(S-expressions)i(ha)o(v)o(e)f(b)q(een)0 854 +y(the)d(standard)f(notation)g(for)g(writing)h(programs.)29 +b(In)19 b(almost)f(an)o(y)g(Lisp)i(system)e(of)h(the)f(last)h(thirt)o(y)f(y)o +(ears,)0 910 y(one)f(could)h(write)f(the)g(function)h Fw(UNION)f +Fx(\(whic)o(h)g(computes)g(the)g(union)h(of)f(t)o(w)o(o)f(sets)g(represen)o +(ted)i(as)f(lists)g(of)0 967 y(elemen)o(ts\))f(in)g(roughly)f(the)g(follo)o +(wing)h(form:)0 1060 y Fw(\(defun)23 b(union)g(\(x)h(y\))48 +1117 y(\(cond)f(\(\(null)g(x\))h(y\))191 1173 y(\(\(member)f(\(car)g(x\))h +(y\))f(\(union)g(\(cdr)h(x\))f(y\)\))191 1230 y(\(t)g(\(cons)h(\(car)f(x\))h +(\(union)f(\(cdr)g(x\))h(y\)\)\)\)\))71 1324 y Fx(The)17 b(original)h(in)o +(ten)o(tion,)g(ho)o(w)o(ev)o(er,)e(in)i(the)f(design)h(of)f(Lisp)h(w)o(as)e +(that)g(programs)g(w)o(ould)i(b)q(e)f(written)g(as)0 1380 y(M-expressions;)i +(the)f(S-expression)h(syn)o(tax)e(w)o(as)f(in)o(tended)j(only)g(for)e +(represen)o(tation)g(of)g(data.)27 b(The)18 b Fw(UNION)0 1437 +y Fx(function)e(in)g(M-expression)g(notation)f(lo)q(oks)g(lik)o(e)i(this:)0 +1530 y Fw(union[x;y])22 b(=)i([null[x])p Fk(!)p Fw(y;)334 1587 +y(member[car[x];y])p Fk(!)p Fw(union[cdr[x];y)o(];)334 1643 +y(T)p Fk(!)p Fw(cons[car[x];union[cdr[x];y]]])0 1737 y Fx(But)15 +b(as)g(McCarth)o(y)f(noted)h([McCarth)o(y)l(,)f(1981]:)182 +1810 y(The)24 b(unexp)q(ected)i(app)q(earance)f(of)f(an)g(in)o(terpreter)g +(tended)h(to)f(freeze)h(the)f(form)f(of)h(the)114 1867 y(language)p +Fn(:)8 b(:)g(:)d Fx(.)36 b(The)20 b(pro)s(ject)g(of)g(de\014ning)i +(M-expressions)f(precisely)p Fn(:)8 b(:)g(:)f Fx(w)o(as)20 +b(neither)h(\014nalized)114 1923 y(nor)15 b(completely)i(abandoned.)k(It)15 +b(just)g(receded)i(in)o(to)e(the)h(inde\014nite)h(future,)f(and)f(a)g(new)h +(gener-)114 1979 y(ation)g(of)g(programmers)g(app)q(eared)h(who)f(preferred)h +(in)o(ternal)h(notation)e([i.e.,)g(S-expressions])i(to)114 +2036 y(an)o(y)c(F)l(ortran-lik)o(e)i(or)f(Algol-lik)o(e)i(notation)e(that)f +(could)i(b)q(e)g(devised.)0 2109 y(Y)l(et)c(that)g(w)o(as)f(not)h(the)g(end)h +(of)f(the)g(story)l(.)18 b(Since)c(that)d(time)i(there)f(ha)o(v)o(e)g(b)q +(een)h(man)o(y)f(other)g(e\013orts)f(to)g(pro)o(vide)0 2165 +y(Lisp)18 b(with)f(an)f(Algol-lik)o(e)j(syn)o(tax.)k(Time)17 +b(and)g(again)g(a)f(Lisp)i(user)e(or)h(implemen)o(tor)g(has)f(felt)h(a)g(lac) +o(k)f(in)i(the)0 2222 y(language)12 b(and)g(pro)o(vided)g(a)g(solution|and)h +(not)e(infrequen)o(tly)i(attracted)e(a)g(substan)o(tial)h(group)g(of)f +(users|and)0 2278 y(y)o(et)k(in)h(the)f(long)h(run)f(none)h(of)e(these)i(has) +f(ac)o(hiev)o(ed)h(acceptance.)71 2335 y(The)c(earliest)h(example)g(of)f +(this|after)g(M-expressions,)h(of)f(course|app)q(ears)h(to)e(ha)o(v)o(e)h(b)q +(een)i(Henneman's)0 2391 y(A-language)i([Henneman,)f(1964].)j(Henneman)e(giv) +o(es)g(the)f(follo)o(wing)h(de\014nition)h(of)e Fw(UNION)p +Fx(:)p eop +%%Page: 54 54 +54 53 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(54)0 45 y Fw(\(DEFINE)23 b(UNION)g(\(OF)h(AND\))f(\(8\))48 +102 y(\(UNION)g(OF)g(X)h(AND)g(Y\))f(\(IF)h(X)f(IS)48 158 y(EMPTY)g(THEN)g(Y) +h(ELSE)f(IF)h(FIRST)f(OF)48 214 y(X)g(IS)h(A)g(MEMBER)f(OF)g(Y)h(THEN)f +(UNION)48 271 y(OF)g(REST)h(OF)f(X)h(AND)f(Y)h(ELSE)48 327 +y(CONNECT)f(FIRST)g(OF)g(X)h(TO)g(BEGIN)48 384 y(UNION)f(OF)g(REST)h(OF)f(X)h +(AND)g(Y)48 440 y(END\)\))0 534 y Fx(The)14 b(n)o(um)o(b)q(er)g +Fw(8)g Fx(in)h(this)f(de\014nition)i(is)e(the)g(precedence)i(of)d(the)h +Fw(UNION)f Fx(op)q(erator;)g(note)h(the)g(use)g(of)g Fw(BEGIN)f +Fx(and)0 591 y Fw(END)j Fx(as)f(paren)o(thetical)i(delimiters,)h(necessary)e +(b)q(ecause)h(the)f Fw(CONNECT)f Fn(:)8 b(:)g(:)22 b Fw(TO)16 +b Fn(:)8 b(:)g(:)21 b Fx(op)q(erator)15 b(\(whic)o(h)i(means)0 +647 y Fw(CONS)p Fx(\))d(has)h(higher)h(precedence.)71 703 y(W)l(e)k(\014nd)h +(it)f(curious)h(that)f(Henneman)h(w)o(en)o(t)f(to)f(the)i(trouble)f(of)g +(prett)o(y-prin)o(ting)h(the)f(M-expressions)0 760 y(and)c(S-expressions)h +(in)f(his)g(pap)q(er)h(but)e(presen)o(ted)h(all)h(his)f(examples)h(of)e +(A-language)h(in)g(the)g(sort)f(of)g(run-on,)0 816 y(blo)q(c)o(k-paragraph)i +(st)o(yle)h(often)f(seen)h(in)g(the)f(S-expressions)i(of)e(his)h(con)o(temp)q +(oraries.)26 b(No)o(w)o(ada)o(ys)16 b(w)o(e)h(w)o(ould)0 873 +y(format)d(suc)o(h)h(a)g(program)f(in)i(this)g(manner)f(for)g(clarit)o(y:)0 +967 y Fw(\(DEFINE)23 b(UNION)g(\(OF)h(AND\))f(\(8\))48 1023 +y(\(UNION)g(OF)g(X)h(AND)g(Y\))48 1080 y(\(IF)f(X)h(IS)f(EMPTY)h(THEN)f(Y)72 +1136 y(ELSE)g(IF)g(FIRST)h(OF)f(X)h(IS)g(A)f(MEMBER)g(OF)h(Y)191 +1192 y(THEN)f(UNION)g(OF)h(REST)f(OF)h(X)g(AND)f(Y)72 1249 +y(ELSE)g(CONNECT)g(FIRST)g(OF)h(X)f(TO)239 1305 y(BEGIN)g(UNION)g(OF)h(REST)f +(OF)g(X)h(AND)g(Y)f(END)48 1362 y(\)\))0 1456 y Fx(Suc)o(h)18 +b(formatting)f(w)o(as)g(not)g(unheard)h(of;)g(the)g(Algol)g(programmers)f(of) +g(the)h(da)o(y)f(used)h(similar)h(inden)o(tation)0 1512 y(con)o(v)o(en)o +(tions)c(in)h(their)g(published)i(programs.)71 1569 y(The)f(ARP)l(A-supp)q +(orted)j(LISP)e(2)f(pro)s(ject)g(aimed)h(at)f(pro)o(viding)i(Lisp)g(with)f(a) +f(syn)o(tax)g(resem)o(bling)i(that)0 1625 y(of)e(ALGOL)h(60,)f(citing)h(the)f +(adv)m(an)o(tage)g(that)f(\\ALGOL)i(algorithms)f(can)h(b)q(e)f(utilized)j +(with)e(little)g(c)o(hange")0 1681 y([Abrahams,)13 b(1966].)19 +b(LISP)c(2)f(co)q(de)h(for)f Fw(UNION)g Fx(in)h(the)g(st)o(yle)f(of)g(our)h +(running)g(example)h(w)o(ould)e(lo)q(ok)h(lik)o(e)h(this:)0 +1775 y Fw(SYMBOL)23 b(FUNCTION)g(UNION\(X,)g(Y\);)g(SYMBOL)g(X,)h(Y;)48 +1832 y(IF)f(NULL)h(X)f(THEN)h(Y)48 1888 y(ELSE)f(IF)h(MEMBER\(CAR)e(X,)i(Y\)) +f(THEN)h(UNION\(CDR)e(X,)i(Y\))48 1945 y(ELSE)f(CAR)g(X)h(.)g(UNION\(CDR)f +(X,)g(Y\);)0 2038 y Fx(Ho)o(w)o(ev)o(er,)12 b(con)o(temp)q(orary)f(examples)i +(of)f(LISP)h(2)f(co)q(de)h(seem)g(to)f(emphasize)h(the)g(use)f(of)g(lo)q(ops) +h(o)o(v)o(er)f(recursion,)0 2095 y(so)j(the)g(follo)o(wing)h(v)o(ersion)f +(migh)o(t)g(b)q(e)h(more)f(t)o(ypical)h(of)f(the)g(in)o(tended)i(st)o(yle:)0 +2189 y Fw(SYMBOL)23 b(FUNCTION)g(UNION\(X,)g(Y\);)g(SYMBOL)g(X,)h(Y;)0 +2245 y(BEGIN)48 2302 y(SYMBOL)f(Z)g Fk( )i Fw(Y;)48 2358 y(FOR)e(A)h(IN)f(X)h +(DO)95 2415 y(IF)g(NOT)f(MEMBER\(A,)g(Y\))h(THEN)f(Z)h Fk( )g +Fw(A)g(.)g(Z;)48 2471 y(RETURN)f(Z;)0 2527 y(END;)0 2621 y +Fx(\(Of)18 b(course,)h(this)g(v)o(ersion)g(pro)q(duces)g(a)f(result)h(that)f +(is)h(di\013eren)o(t)f(when)h(regarded)f(as)g(a)h(list,)g(although)g(the)0 +2678 y(same)c(when)h(regarded)f(as)g(a)f(set.\))p eop +%%Page: 55 55 +55 54 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(55)71 45 y(The)12 b(EL1)g(language)h(w)o(as)e(designed)j(b)o(y)e +(Ben)h(W)l(egbreit)g(as)e(part)h(of)g(his)h(Ph.D.)e(researc)o(h)h([W)l +(egbreit,)h(1970].)0 102 y(It)h(ma)o(y)g(b)q(e)g(lo)q(osely)i(c)o +(haracterized)e(as)g(a)g(Lisp)h(with)f(an)h(Algol-lik)o(e)h(surface)e(syn)o +(tax)f(and)h(strong)g(data)f(t)o(yping.)0 158 y(A)i(complete)h(programming)e +(system)g(called)j(ECL)e(w)o(as)f(built)j(around)d(EL1)h(at)g(Harv)m(ard)f +(in)i(the)f(early)h(1970's)0 214 y([W)l(egbreit,)f(1971;)f(W)l(egbreit,)h +(1972;)e(W)l(egbreit,)j(1974].)i(The)d Fw(UNION)g Fx(function)h(in)g(EL1)f +(lo)q(oks)h(lik)o(e)g(this:)0 308 y Fw(union)23 b(<-)h(EXPR\(x:)f(FORM,)g(y:) +g(FORM;)h(FORM\))48 365 y([\))f(x=NIL)g(=>)h(y;)119 421 y(MEMBER\(CAR\(x\),)e +(y\))i(=>)f(union\(CDR\(x\),)g(y\);)119 478 y(CONS\(CAR\(X\),)g +(union\(CDR\(x\),)f(y\)\))h(\(];)0 571 y Fx(Note)d(the)h(t)o(yp)q(e)g +(declarations)h(of)e Fw(x)p Fx(,)i Fw(y)p Fx(,)f(and)g(the)g(result)g(as)g(t) +o(yp)q(e)f Fw(FORM)h Fx(\(p)q(oin)o(ter)f(to)h(dotted)f(pair\).)37 +b(The)0 628 y(digraphs)17 b Fw([\))g Fx(and)g Fw(\(])f Fx(are)h(equiv)m(alen) +o(t)h(to)e Fw(BEGIN)g Fx(and)h Fw(END)f Fx(\(they)h(lo)q(ok)o(ed)g(b)q(etter) +g(on)g(a)f(Mo)q(del)i(33)e(T)l(elet)o(yp)q(e)0 684 y(than)g(they)h(do)f +(here\).)23 b(Within)18 b(a)e(blo)q(c)o(k)h(the)f(arro)o(w)f +Fw(=>)h Fx(indicates)i(the)e(conditional)i(return)e(of)g(a)g(v)m(alue)i(from) +0 741 y(the)12 b(blo)q(c)o(k,)h(resulting)g(in)g(a)e(notation)h(reminiscen)o +(t)h(of)f(McCarth)o(y's)e(conditional)k(notation)d(for)h(M-expressions.)71 +797 y(Lisp)21 b(itself)h(w)o(as)d(not)i(widely)h(used)f(at)f(Harv)m(ard's)f +(Cen)o(ter)i(for)e(Researc)o(h)i(in)h(Computing)f(T)l(ec)o(hnology)0 +854 y(at)f(that)g(time;)k(EL1)d(and)g(PPL)g(\(P)o(olymorphic)g(Programming)f +(Language,)i(a)e(somewhat)g(more)h(Joss-lik)o(e)0 910 y(in)o(teractiv)o(e)14 +b(system\))e(ma)o(y)h(ha)o(v)o(e)f(b)q(een)j(Harv)m(ard's)d(answ)o(er)h(to)f +(Lisp)j(at)d(the)i(time.)19 b(ECL)13 b(migh)o(t)g(ha)o(v)o(e)g(surviv)o(ed)0 +967 y(longer)h(if)g(W)l(egbreit)g(had)g(not)g(left)g(Harv)m(ard)f(for)g(Xero) +o(x)h(in)g(the)g(middle)i(of)d(the)h(pro)s(ject.)k(As)c(it)g(w)o(as,)f(ECL)h +(w)o(as)0 1023 y(used)i(for)e(researc)o(h)h(and)h(course)f(w)o(ork)f(at)h +(Harv)m(ard)g(throughout)f(the)i(1970's.)71 1080 y(W)l(e)11 +b(ha)o(v)o(e)g(already)h(discussed)h(T)l(eitelman's)f(CLISP)g(\(Con)o(v)o +(ersational)f(Lisp\),)i(whic)o(h)f(w)o(as)f(part)f(of)h(In)o(terlisp)0 +1136 y([T)l(eitelman,)17 b(1974].)j(The)c(function)h Fw(UNION)e +Fx(w)o(as)g(built)i(in)o(to)f(In)o(terlisp,)h(but)f(could)h(ha)o(v)o(e)f(b)q +(een)h(de\014ned)g(using)0 1192 y(CLISP)f(in)g(this)g(manner:)0 +1286 y Fw(DEFINEQ\(\(UNION)22 b(\(LAMBDA)h(\(X)g(Y\))48 1343 +y(\(IF)g(~X)h(THEN)f(Y)72 1399 y(ELSEIF)g(X:1)g(MEMBER)g(Y)h(THEN)f(UNION)g +(X::1)h(Y)72 1456 y(ELSE)f(])0 +1549 y Fx(In)15 b(CLISP)l(,)g Fw(~)f Fx(is)h(a)f(unary)g(op)q(erator)g +(meaning)g Fw(NOT)g Fx(or)g Fw(NULL)p Fx(.)f Fw(X:)p Fn(n)i +Fx(is)g(elemen)o(t)g Fn(n)f Fx(of)g(the)g(list)h Fw(X)p Fx(,)f(so)g +Fw(X:1)g Fx(means)0 1606 y Fw(\(CAR)23 b(X\))p Fx(;)11 b(similarly)j +Fw(X::1)d Fx(means)h Fw(\(CDR)23 b(X\))p Fx(.)12 b(The)g(function)g +Fw(MEMBER)f Fx(is)i(prede\014ned)g(b)o(y)f(CLISP)g(to)g(b)q(e)g(an)g(in\014x) +0 1662 y(op)q(erator,)k(but)i Fw(UNION)e Fx(is)i(not)f(\(though)f(the)i(user) +f(ma)o(y)f(so)h(de\014ne)h(it)g(if)f(desired\).)27 b(Angle)18 +b(brac)o(k)o(ets)e(indicate)0 1719 y(construction)e(of)f(a)g(list;)h +Fw(!)19 b Fx(within)c(suc)o(h)f(a)f(list)h(indicates)h(splicing,)g(so)e +Fw()13 b Fx(means)g Fw(\(CONS)23 b(A)h(B\))p Fx(.)13 +b(Finally)l(,)0 1775 y(the)19 b(use)h(of)e(a)h(\014nal)h Fw(])f +Fx(to)f(indicate)j(the)e(necessary)h(n)o(um)o(b)q(er)f(of)g(closing)h(paren)o +(theses)f(\(four,)g(in)h(this)g(case\),)0 1832 y(while)d(not)d(a)h(feature)g +(of)g(CLISP)h(prop)q(er,)f(is)h(consisten)o(t)f(with)h(the)f(In)o(terlisp)i +(st)o(yle.)71 1888 y(MLISP)g(w)o(as)f(an)h(Algol-lik)o(e)i(syn)o(tax)d(for)h +(Lisp,)h(\014rst)e(implemen)o(ted)j(for)d(the)h(IBM)g(360)f(b)o(y)h(Horace)g +(Enea)0 1945 y(and)f(then)g(re-implemen)o(ted)i(for)d(the)h(PDP-10)f(under)h +(Stanford)g(Lisp)h(1.6)d([Smith,)i(1970].)k(It)c(pro)o(vided)h(in\014x)0 +2001 y(op)q(erators;)j(a)f(complex)h Fw(FOR)f Fx(construct)g(for)g +(iteration;)i(v)m(arious)f(subscripting)h(notations)e(suc)o(h)h(as)f +Fw(A\(1,3\))0 2058 y Fx(\(elemen)o(t)k(of)e(a)h(t)o(w)o(o-dimensional)h(arra) +o(y\))e(and)h Fw(L[1,3,2])g Fx(\(equiv)m(alen)o(t)h(to)f Fw(\(cadr)h(\(caddr) +g(\(car)g(L\)\)\))p Fx(\);)0 2114 y(\\v)o(ector")14 b(op)q(erations)h(\(a)g +(concise)h(notation)f(for)g Fw(MAPCAR)p Fx(\);)e(and)j(destructuring)f +(assignmen)o(t.)0 2208 y Fw(EXPR)23 b(UNION)g(\(X,Y\);)501 +b(\045MLISP)23 b(version)g(of)g(UNION)72 2264 y(IF)g Ff(:)p +Fw(X)h(THEN)f(Y)h(ELSE)72 2321 y(IF)f(X[1])g Fe(\017)h Fw(Y)g(THEN)f +(UNION\(X\0141,Y\))72 2377 y(ELSE)g(X[1])g(CONS)h(UNION\(X\0141,Y\);)71 +2471 y Fx(V)l(aughan)16 b(Pratt)g(dev)o(elop)q(ed)i(an)f(Algol-st)o(yle)g +(notation)f(for)g(Lisp)i(called)g(CGOL)f([Pratt,)e(1973].)23 +b(Rather)0 2527 y(than)16 b(em)o(b)q(edding)i(algebraic)f(syn)o(tax)f(within) +h(S-expressions,)g(CGOL)g(emplo)o(y)o(ed)g(a)f(separate)f(full-blo)o(wn)j +(to-)0 2584 y(k)o(enizer)h(and)e(parser.)27 b(This)18 b(w)o(as)f(\014rst)g +(implemen)o(ted)j(for)d(Stanford)g(Lisp)i(1.6)d(in)j(1970)d(when)i(Pratt)f(w) +o(as)g(at)0 2640 y(Stanford;)c(at)g(this)h(time)g(there)g(w)o(as)f(an)g(exc)o +(hange)h(of)f(ideas)i(with)f(the)f(MLISP)h(pro)s(ject.)19 b(After)13 +b(Pratt)g(w)o(en)o(t)g(to)0 2697 y(MIT)g(shortly)f(thereafter,)h(he)g +(implemen)o(ted)h(a)f(v)o(ersion)g(for)f(MacLisp)h([Pratt,)f(1976].)17 +b(V)l(ersions)d(of)e(this)h(parser)p eop +%%Page: 56 56 +56 55 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(56)0 45 y(w)o(ere)13 b(also)g(used)g(in)h(the)f(sym)o(b)q(olic)h +(algebra)f(systems)g(SCRA)l(TCHP)l(AD)g(at)f(IBM)h(Y)l(orkto)o(wn)f(and)i(MA) +o(CSYMA)0 102 y(at)19 b(MIT's)h(Pro)s(ject)e(MA)o(C;)h(F)l(red)h(Blair,)i +(who)d(also)h(dev)o(elop)q(ed)i(LISP370,)e(did)h(the)f(reimplemen)o(tation)i +(for)0 158 y(SCRA)l(TCHP)l(AD,)15 b(while)i(Mic)o(hael)f(Genesereth)g(did)g +(it)f(for)g(MA)o(CSYMA.)71 214 y(Our)i(CGOL)g(v)o(ersion)g(of)g(the)g +Fw(UNION)f Fx(function)i(de\014nes)g(it)g(as)e(an)h(in\014x)h(op)q(erator)e +(\(the)h(n)o(um)o(b)q(ers)g(14)g(and)0 271 y(13)e(are)f(left)i(and)f(righ)o +(t)g(\\binding)i(p)q(o)o(w)o(ers")e(for)f(the)h(parser\):)0 +365 y Fw(define)23 b(x)h("UNION")f(y,)g(14,)h(13;)48 421 y(if)f(not)h(x)f +(then)h(y)48 478 y(else)f(if)h(member\(car)e(x,)i(y\))f(then)h(cdr)f(x)h +(union)f(y)48 534 y(else)g(car)g(x)h(.)g(cdr)f(x)h(union)f(y)h +Fd(})0 628 y Fx(Here)19 b(w)o(e)g(ha)o(v)o(e)f(assumed)h(the)g(v)o(ersion)h +(of)e(CGOL)h(implemen)o(ted)i(at)d(MIT,)h(whic)o(h)g(stuc)o(k)g(to)f(the)h +(standard)0 684 y(ASCI)q(I)d(c)o(haracter)e(set;)g(the)h(same)g(de\014nition) +h(using)g(the)f(Stanford)f(extended)i(c)o(haracter)e(set)g(w)o(ould)i(b)q(e:) +0 778 y Fw(define)23 b(x)h(")p Ff([)p Fw(")f(y,)h(14,)f(13;)48 +835 y(if)g Ff(:)p Fw(x)h(then)f(y)h(else)f(if)h Fe(\013)p Fw(x)f +Fe(")h Fw(y)g(then)f Fe(\014)r Fw(x)i Ff([)e Fw(y)h(else)f +Fe(\013)p Fw(x)h(.)g Fe(\014)r Fw(x)g Ff([)f Fw(y)h Fd(})71 +928 y Fx(The)14 b(\\)p Fw(.)p Fx(")19 b(represen)o(ts)13 b +Fw(CONS)g Fx(in)i(b)q(oth)f(the)f(ab)q(o)o(v)o(e)h(examples;)g(the)g +(delimiter)i Fd(})c Fx(\(actually)i(the)g(ASCI)q(I)h(\\alt-)0 +985 y(mo)q(de")g(c)o(haracter,)f(no)o(w)o(ada)o(ys)g(called)j(\\escap)q(e"\)) +e(indicates)i(the)e(end)h(of)f(a)f(top)h(lev)o(el)i(expression.)j(All)d +(unary)0 1041 y(Lisp)c(functions)f(are)f(unary)g(op)q(erators)g(in)h(CGOL,)g +(including)i Fw(CAR)d Fx(and)h Fw(CDR)p Fx(.)e(In)i(the)g(de\014nition)h(ab)q +(o)o(v)o(e)e(w)o(e)g(ha)o(v)o(e)0 1098 y(relied)18 b(on)d(the)h(fact)g(that)f +(suc)o(h)h(unary)g(op)q(erators)f(ha)o(v)o(e)g(v)o(ery)h(high)g(precedence,)i +(so)d Fw(cdr)23 b(x)h(union)f(y)16 b Fx(means)0 1154 y Fw(\(cdr)23 +b(x\))h(union)f(y)p Fx(,)18 b(not)g Fw(cdr)23 b(\(x)h(union)f(y\))p +Fx(.)28 b(W)l(e)18 b(also)g(carefully)h(c)o(hose)f(the)g(binding)i(p)q(o)o(w) +o(ers)d(for)h Fw(UNION)0 1211 y Fx(relativ)o(e)g(to)f(\\)p +Fw(.)p Fx(")26 b(so)17 b(that)f(the)i(last)f(expression)h(w)o(ould)g(b)q(e)g +(parsed)f(as)g Fw(\(car)24 b(x\))f(.)h(\(\(cdr)f(x\))h(union)f(y\)\))p +Fx(.)0 1267 y(It)14 b(is)g(not)f(ob)o(vious)h(that)f(this)h(is)h(the)e(b)q +(est)h(c)o(hoice;)h(Henneman)g(c)o(hose)e(to)h(giv)o(e)g Fw(CONS)f +Fx(\(in)h(the)g(form)f(of)g Fw(CONNECT)0 1324 y Fn(:)8 b(:)g(:)21 +b Fw(TO)15 b Fn(:)8 b(:)g(:)d Fx(\))15 b(higher)h(precedence)h(than)e +Fw(UNION)p Fx(.)f(Pratt)g(remark)o(ed)h([Pratt,)e(1976]:)182 +1397 y(If)i(y)o(ou)g(w)o(an)o(t)f(to)h(use)h(the)f(CGOL)g(notation)g(but)g +(don't)g(w)o(an)o(t)f(to)h(ha)o(v)o(e)g(an)o(ything)g(to)g(do)g(with)114 +1453 y(binding)e(p)q(o)o(w)o(ers,)f(simply)h(paren)o(thesize)f(ev)o(ery)g +(CGOL)g(expression)g(as)g(though)f(y)o(ou)g(w)o(ere)h(writing)114 +1510 y(in)k(Lisp.)21 b(Ho)o(w)o(ev)o(er,)14 b(if)h(y)o(ou)g(omit)g(all)h +(paren)o(theses)g Fn(:)8 b(:)g(:)20 b Fx(y)o(ou)15 b(will)i(not)e(often)g(go) +f(wrong.)0 1583 y(Compare)h(this)g(to)g(Henneman's)g(remark)g([Henneman,)g +(1964]:)182 1656 y(The)f(one)g(great)f(cause)h(of)f(most)g(of)g(the)h +(incorrect)g(results)g(obtained)h(in)f(practice)h(is)f(an)g(incor-)114 +1712 y(rect)h(precedence)i(b)q(eing)f(assigned)g(to)e(a)h(function.)71 +1785 y(During)h(the)f(1970's)g(a)g(n)o(um)o(b)q(er)h(of)f(\\AI)h(languages")g +(w)o(ere)f(designed)j(to)d(pro)o(vide)h(sp)q(eci\014c)i(programming)0 +1842 y(constructs)d(then)g(though)o(t)f(to)g(b)q(e)i(helpful)h(in)f(writing)f +(programs)f(for)g(AI)h(applications.)22 b(Some)15 b(of)f(these)h(w)o(ere)0 +1898 y(em)o(b)q(edded)e(within)f(Lisp)h(and)f(therefore)f(simply)h(inherited) +i(Lisp)e(syn)o(tax)f(\(and)g(in)h(some)g(cases)f(in\015uenced)j(Lisp)0 +1955 y(syn)o(tax|see)d(section)h(4)g(for)e(a)h(discussion)j(of)d(these\).)18 +b(Those)11 b(that)g(w)o(ere)g(not)g(em)o(b)q(edded)i(usually)g(had)f(a)f(syn) +o(tax)0 2011 y(related)16 b(to)f(that)g(of)g(Algol,)h(while)h(including)i +(some)c(of)g(the)h(other)f(features)g(of)g(Lisp)i(\(suc)o(h)f(as)f(sym)o(b)q +(olic)i(data)0 2068 y(structures)i(and)g(recursiv)o(e)h(functions\).)32 +b(Among)19 b(these)g(w)o(ere)g(POP-2)g([Burstall,)h(1971],)f(SAIL)h([F)l +(eldman,)0 2124 y(1972],)13 b(and)j(the)f(P)o(ascal-based)h(TELOS)f([T)l(ra)o +(vis,)g(1977].)71 2180 y(The)h(idea)g(of)f(in)o(tro)q(ducing)j(Algol-lik)o(e) +f(syn)o(tax)f(in)o(to)f(Lisp)i(k)o(eeps)f(p)q(opping)h(up)g(and)f(has)f +(seldom)i(failed)g(to)0 2237 y(create)e(enormous)f(con)o(tro)o(v)o(ersy)g(b)q +(et)o(w)o(een)h(those)g(who)f(\014nd)i(the)f(univ)o(ersal)h(use)f(of)g +(S-expressions)h(a)e(tec)o(hnical)0 2293 y(adv)m(an)o(tage)g(\(and)g(don't)g +(mind)h(the)f(admitted)h(relativ)o(e)g(clumsiness)h(of)e(S-expressions)h(for) +f(n)o(umerical)h(expres-)0 2350 y(sions\))i(and)h(those)f(who)g(are)g +(certain)h(that)e(algebraic)i(syn)o(tax)f(is)h(more)e(concise,)j(more)e(con)o +(v)o(enien)o(t,)h(or)f(ev)o(en)0 2406 y(more)e Fm(natur)n(al)g +Fx(\(whatev)o(er)f(that)h(ma)o(y)f(mean,)h(considering)i(that)d(all)i(these)g +(notations)e(are)h(arti\014cial\).)71 2463 y(W)l(e)c(conjecture)h(that)f +(Algol-st)o(yle)h(syn)o(tax)f(has)g(not)g(really)i(caugh)o(t)e(on)g(in)i(the) +e(Lisp)i(comm)o(unit)o(y)e(as)g(a)g(whole)0 2519 y(for)16 b(t)o(w)o(o)e +(reasons.)23 b(First,)16 b(there)g(are)g(not)g(enough)g(sp)q(ecial)i(sym)o(b) +q(ols)f(to)e(go)h(around.)23 b(When)16 b(y)o(our)g(domain)g(of)0 +2576 y(discourse)i(is)f(limited)h(to)e(n)o(um)o(b)q(ers)h(or)g(c)o +(haracters,)e(there)i(are)g(only)g(so)f(man)o(y)g(op)q(erations)h(of)g(in)o +(terest,)f(so)h(it)0 2632 y(is)h(not)e(di\016cult)j(to)d(assign)h(one)h(sp)q +(ecial)g(c)o(haracter)f(to)f(eac)o(h)h(and)h(b)q(e)f(done)h(with)f(it.)26 +b(But)17 b(Lisp)h(has)f(a)g(m)o(uc)o(h)0 2689 y(ric)o(her)e(domain)g(of)e +(discourse,)i(and)g(a)f(Lisp)h(programmer)e(often)h(approac)o(hes)g(an)h +(application)h(as)e(y)o(et)f(another)p eop +%%Page: 57 57 +57 56 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(57)0 45 y(exercise)22 b(in)f(language)f(design;)k(the)c(st)o(yle)h +(t)o(ypically)h(in)o(v)o(olv)o(es)f(designing)h(new)e(data)g(structures)g +(and)h(new)0 102 y(functions)14 b(to)f(op)q(erate)h(on)f(them|p)q(erhaps)i +(dozens)f(or)f(h)o(undreds|and)i(it's)e(to)q(o)g(hard)h(to)f(in)o(v)o(en)o(t) +h(that)e(man)o(y)0 158 y(distinct)i(sym)o(b)q(ols)g(\(though)e(the)h(APL)h +(comm)o(unit)o(y)f(certainly)h(has)f(tried\).)19 b(Ultimately)14 +b(one)f(m)o(ust)g(alw)o(a)o(ys)f(fall)0 214 y(bac)o(k)i(on)h(a)f(general)h +(function-call)h(notation;)e(it's)g(just)g(that)g(Lisp)i(programmers)d(don't) +h(w)o(ait)g(un)o(til)h(they)g(fail.)71 271 y(Second,)e(and)h(p)q(erhaps)f +(more)g(imp)q(ortan)o(t,)f(Algol-st)o(yle)i(syn)o(tax)f(mak)o(es)f(programs)g +(lo)q(ok)h(less)g(lik)o(e)i(the)e(data)0 327 y(structures)i(used)h(to)f +(represen)o(t)g(them.)21 b(In)16 b(a)f(culture)h(where)g(the)f(abilit)o(y)i +(to)d(manipulate)j(represen)o(tations)e(of)0 384 y(programs)h(is)h(a)g(cen)o +(tral)h(paradigm,)f(a)f(notation)h(that)f(distances)i(the)g(app)q(earance)f +(of)g(a)g(program)f(from)g(the)0 440 y(app)q(earance)h(of)e(its)h(represen)o +(tation)g(as)g(data)f(is)i(not)e(lik)o(ely)j(to)d(b)q(e)i(w)o(armly)e(receiv) +o(ed)i(\(and)f(this)h(w)o(as,)e(and)h(is,)0 497 y(one)f(of)g(the)g(principal) +j(ob)s(jections)d(to)g(the)g(inclusion)j(of)c Fw(loop)h Fx(in)h(Common)e +(Lisp\).)71 553 y(On)h(the)g(other)f(hand,)h(precisely)h(b)q(ecause)g(Lisp)f +(mak)o(es)g(it)f(easy)h(to)f(pla)o(y)h(with)g(program)e(represen)o(tations,)0 +610 y(it)21 b(is)g(alw)o(a)o(ys)f(easy)g(for)g(the)g(no)o(vice)h(to)f(exp)q +(erimen)o(t)i(with)f(alternativ)o(e)f(notations.)36 b(Therefore)20 +b(w)o(e)g(exp)q(ect)0 666 y(future)f(generations)f(of)g(Lisp)i(programmers)d +(to)h(con)o(tin)o(ue)i(to)d(rein)o(v)o(en)o(t)i(Algol-st)o(yle)h(syn)o(tax)e +(for)g(Lisp,)i(o)o(v)o(er)0 723 y(and)12 b(o)o(v)o(er)g(and)g(o)o(v)o(er)g +(again,)g(and)h(w)o(e)f(are)g(equally)i(con\014den)o(t)e(that)g(they)g(will)i +(con)o(tin)o(ue,)f(after)f(an)g(initial)j(p)q(erio)q(d)0 779 +y(of)h(infatuation,)h(to)f(reject)h(it.)25 b(\(P)o(erhaps)16 +b(this)h(pro)q(cess)g(should)h(b)q(e)f(regarded)g(as)f(a)g(rite)h(of)g +(passage)f(for)g(Lisp)0 835 y(hac)o(k)o(ers.\))0 956 y Fu(3.5.2)52 +b(Generalized)18 b(Multiple)h(V)l(alues)0 1041 y Fx(Man)o(y)c(Lisp)i +(extenders)f(ha)o(v)o(e)f(indep)q(enden)o(tly)k(gone)c(do)o(wn)h(the)g(follo) +o(wing)g(path.)21 b(Sometimes)16 b(it)g(is)g(desirable)0 1098 +y(to)e(return)g(more)f(than)h(one)h(item)f(from)g(a)f(function.)21 +b(It)14 b(is)h(a)o(wkw)o(ard)d(to)i(return)g(some)g(of)g(the)g(results)g +(through)0 1154 y(global)21 b(v)m(ariables,)i(and)e(ine\016cien)o(t)h(to)f +(cons)f(up)h(a)g(list)g(of)g(the)f(results)h(\(pushing)h(the)f(system)f(that) +g(m)o(uc)o(h)0 1211 y(closer)d(to)f(its)h(next)f(garbage)g(collection\))i +(when)f(w)o(e)g(kno)o(w)f(p)q(erfectly)h(w)o(ell)h(that)e(they)g(could)i(b)q +(e)f(returned)g(in)0 1267 y(mac)o(hine)h(registers)f(or)f(pushed)i(on)o(to)e +(the)h(mac)o(hine)h(con)o(trol)f(stac)o(k.)24 b(Curiously)l(,)18 +b(the)f(protot)o(ypical)g(example)0 1324 y(of)c(a)g(function)i(that)d(ough)o +(t)h(to)g(return)g(t)o(w)o(o)f(results)i(is)g(not)f(sym)o(b)q(olic)i(but)f(n) +o(umerical:)20 b(in)o(teger)14 b(division)h(migh)o(t)0 1380 +y(con)o(v)o(enien)o(tly)h(return)e(b)q(oth)h(a)f(quotien)o(t)h(and)f(a)h +(remainder.)20 b(\(Actually)l(,)15 b(it)g(w)o(ould)g(b)q(e)g(just)f(as)h(con) +o(v)o(enien)o(t)g(for)0 1437 y(the)i(programmer)f(to)h(use)h(t)o(w)o(o)e +(separate)g(functions,)i(but)g(w)o(e)f(kno)o(w)g(p)q(erfectly)h(w)o(ell)g +(that)f(the)g(computation)0 1493 y(of)e(one)g(pro)q(duces)h(the)f(other)g +(practically)i(for)d(free|again)i(it)g(is)f(an)g(e\016ciency)i(issue.\))71 +1549 y(Supp)q(ose,)g(then,)h(that)e(some)g(primitiv)o(e)i(means)f(of)f(pro)q +(ducing)i(m)o(ultiple)h(v)m(alues)f(is)f(pro)o(vided.)25 b(One)18 +b(w)o(a)o(y)0 1606 y(is)h(to)g(in)o(tro)q(duce)g(new)g(functions)h(and/or)e +(sp)q(ecial)j(forms.)30 b(Common)18 b(Lisp,)j(for)d(example,)i(follo)o(wing)g +(Lisp-)0 1662 y(Mac)o(hine)e(Lisp,)h(has)f(a)f(primitiv)o(e)i(function)f +(called)h Fw(VALUES)p Fx(;)e(the)g(result)h(of)g Fw(\(values)k(3)i(4)g(5\))17 +b Fx(is)h(the)g(three)0 1719 y(n)o(um)o(b)q(ers)d(3,)g(4,)f(and)i(5.)j(The)d +(sp)q(ecial)h(form)0 1813 y Fw(\(multiple-value-bind)k(\(p)j(q)f(r\))h +(\(foo\))f Fm(b)n(o)n(dy)p Fw(\))0 1906 y Fx(executes)15 b(its)g +Fm(b)n(o)n(dy)g Fx(with)g(the)g(v)m(ariables)h Fw(p)p Fx(,)e +Fw(q)p Fx(,)h(and)g Fw(r)f Fx(lo)q(cally)j(b)q(ound)e(to)f(three)h(v)m(alues) +h(returned)f(as)g(the)g(v)m(alue)0 1963 y(of)g(the)g(form)g +Fw(\(foo\))p Fx(.)71 2019 y(But)i(this)g(is)g(all)h(so)f(ad)g(ho)q(c)g(and)g +(inelegan)o(t.)26 b(P)o(erhaps)17 b(m)o(ultiple)i(v)m(alues)f(can)f(b)q(e)h +(made)e(to)h(emerge)g(from)0 2076 y(the)j(in)o(trinsic)h(structure)e(of)g +(the)h(language)f(itself.)34 b(Supp)q(ose,)21 b(for)e(example,)i(that)e(the)g +(b)q(o)q(dy)h(of)f(a)h(lam)o(b)q(da)0 2132 y(expression)c(w)o(ere)f(an)g +(implicit)j Fw(VALUES)c Fx(construct,)h(returning)g(the)h(v)m(alues)g(of)f +(all)h(its)f(subforms,)f(rather)h(than)0 2189 y(an)k(implicit)i +Fw(PROGN)p Fx(,)d(returning)i(the)f(v)m(alues)h(of)f(only)g(the)h(last)f +(subform?)31 b(That)19 b(tak)o(es)f(care)h(of)g(pro)q(ducing)0 +2245 y(m)o(ultiple)g(v)m(alues.)27 b(Supp)q(ose)18 b(further)f(that)f +(function)i(calls)g(w)o(ere)f(rede\014ned)h(to)f(use)g(all)h(the)f(v)m(alues) +i(returned)0 2302 y(b)o(y)c(eac)o(h)g(subform,)g(rather)g(than)g(just)f(one)i +(v)m(alue)g(from)f(eac)o(h)g(subform?)20 b(Then)c(one)f(could)i(write)0 +2395 y Fw(\(\(lambda)23 b(\(quo)g(rem\))g(...\))h(\(/)f(44)h(6\)\))0 +2489 y Fx(thereb)o(y)16 b(binding)i Fw(quo)d Fx(to)h(the)g(quotien)o(t)g +Fw(7)g Fx(and)g Fw(rem)f Fx(to)h(the)g(remainder)g Fw(2)p Fx(.)22 +b(That)16 b(tak)o(es)f(care)h(of)f(consuming)0 2546 y(m)o(ultiple)22 +b(v)m(alues.)38 b(All)21 b(v)o(ery)g(simple)h(and)e(tidy!)37 +b(Oops,)22 b(t)o(w)o(o)d(details)i(to)f(tak)o(e)g(care)h(of.)35 +b(First,)21 b(returning)0 2602 y(to)d(lam)o(b)q(da)h(expressions,)g(w)o(e)f +(see)h(that,)f(for)g(consistency)l(,)i(they)e(need)h(to)f(return)g(all)i(the) +e(v)m(alues)i(of)e(all)h(the)0 2659 y(subforms,)14 b(not)h(just)g(one)g(v)m +(alue)i(from)d(eac)o(h)i(subform.)j(So)c(the)h(form)p eop +%%Page: 58 58 +58 57 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(58)0 45 y Fw(\(\(lambda)23 b(\(quo)g(rem\))g(\(/)h(quo)f(rem\))h +(\(/)f(rem)h(quo\)\))f(\(/)h(44)f(6\)\))0 139 y Fx(returns)18 +b(four)g(v)m(alues:)28 b Fw(3)p Fx(,)19 b Fw(1)p Fx(,)f Fw(0)p +Fx(,)h(and)g Fw(2)p Fx(.)29 b(Second,)20 b(there)f(is)g(still)h(a)e(need)h +(for)f(sequencing)i(forms)e(that)f(ha)o(v)o(e)0 195 y(side)j(e\013ects)g(suc) +o(h)f(as)h(assignmen)o(t.)32 b(The)20 b(simple)h(solution)f(is)g(to)f(mak)o +(e)g(suc)o(h)h(forms)f(as)g Fw(\(setq)k(x)h(0\))19 b Fx(and)0 +252 y Fw(\(print)k(x\))15 b Fx(return)g(zero)g(v)m(alues,)h(so)f(that)0 +346 y Fw(\(\(lambda)23 b(\(quo)g(rem\))g(\(print)g(quo\))h(rem\))f(\(/)h(44)f +(6\)\))0 439 y Fx(returns)15 b(only)h(the)f(remainder)h Fw(2)f +Fx(after)f(prin)o(ting)j(the)e(quotien)o(t)g Fw(7)p Fx(.)71 +496 y(This)h(all)h(has)g(a)e(v)o(ery)h(simple)i(and)e(attractiv)o(e)g(stac)o +(k-based)f(implemen)o(tation.)25 b(Primitiv)o(es)17 b(simply)g(push)0 +552 y(all)e(their)f(v)m(alues,)h(one)f(after)f(another,)g(on)o(to)g(the)h +(stac)o(k.)19 b(A)o(t)13 b(the)h(start)f(of)g(the)h(pro)q(cessing)h(for)e(a)h +(function)g(call,)0 609 y(place)g(a)f(mark)o(er)f(on)i(the)f(stac)o(k;)g +(after)f(all)i(subforms)f(ha)o(v)o(e)g(b)q(een)h(pro)q(cessed,)g(simply)h +(searc)o(h)e(the)g(stac)o(k)f(for)h(the)0 665 y(most)g(recen)o(t)h(mark)o +(er;)f(ev)o(erything)i(ab)q(o)o(v)o(e)e(it)h(should)h(b)q(e)g(used)g(as)e +(argumen)o(ts)g(for)h(the)g(function)h(call|but)g(b)q(e)0 722 +y(sure)g(to)g(remo)o(v)o(e)f(or)h(cancel)h(the)g(mark)o(er)e(b)q(efore)h +(transferring)g(con)o(trol)g(to)g(the)g(function.)71 778 y(Y)l(es,)e(this)h +(is)h(all)f(v)o(ery)f(neat)h(and)f(tidy|and)i(as)e(so)q(on)h(as)f(y)o(ou)g +(try)g(to)g(use)h(it,)g(y)o(ou)f(\014nd)h(that)f(co)q(de)h(b)q(ecomes)0 +835 y(m)o(uc)o(h,)22 b(m)o(uc)o(h)f(harder)g(to)g(understand,)i(b)q(oth)e +(for)f(the)i(main)o(tainer)f(and)h(for)e(the)h(compiler.)39 +b(Ev)o(en)21 b(if)h(the)0 891 y(programmer)14 b(has)h(the)g(disciplin)q(e)j +(not)d(to)f(write)0 985 y Fw(\(cons)23 b(\(/)h(44)f(6\))h(\(setq)f(x)h(0\)\)) +0 1079 y Fx(whic)o(h)16 b(returns)g Fw(\(7)23 b(.)h(2\))15 +b Fx(after)g(setting)h Fw(x)f Fx(to)g(0,)g(the)g(compiler)i(can)f(nev)o(er)g +(b)q(e)g(sure)f(that)g(no)h(suc)o(h)g(atro)q(cities)0 1135 +y(lurk)i(in)h(the)f(co)q(de)g(it)g(is)h(pro)q(cessing.)28 b(In)19 +b(the)f(absence)g(of)g(fairly)g(complete)g(information)g(ab)q(out)g(ho)o(w)f +(man)o(y)0 1192 y(v)m(alues)e(are)e(pro)q(duced)i(b)o(y)e(eac)o(h)h +(function,)h(including)h(all)e(user-de\014ned)i(functions,)e(a)f(compiler)i +(cannot)f(v)o(erify)0 1248 y(that)f(a)h(function)h(call)g(will)g(supply)g +(the)f(correct)g(n)o(um)o(b)q(er)g(of)f(argumen)o(ts.)19 b(An)14 +b(imp)q(ortan)o(t)g(practical)g(c)o(hec)o(k)h(for)0 1305 y(Lisp)h +(programming)f(errors)f(is)i(th)o(us)f(made)g(all)h(but)g(imp)q(ossible.)71 +1361 y(Conditionals)g(in)o(tro)q(duce)g(t)o(w)o(o)e(further)h(problems.)21 +b(First:)e(what)c(shall)h(b)q(e)g(the)f(in)o(terpretation)h(of)0 +1455 y Fw(\(if)23 b(\(foo\))h(\(bar\)\))0 1549 y Fx(if)19 b +Fw(\(foo\))f Fx(returns)h(t)o(w)o(o)f(v)m(alues?)32 b(Shall)21 +b(the)e(second)g(v)m(alue)h(b)q(e)f(discarded,)i(or)d(treated)h(as)f(the)h(v) +m(alue)h(to)e(b)q(e)0 1605 y(returned)e(if)h(the)f(\014rst)f(v)m(alue)i(is)g +(true?)22 b(P)o(erhaps)16 b(the)g(predicate)h(should)g(b)q(e)f(required)h(to) +f(return)g(exactly)g(one)0 1662 y(v)m(alue.)21 b(V)l(ery)15 +b(w)o(ell,)g(but)g(there)g(remains)g(the)f(fact)h(that)e(the)i(t)o(w)o(o)e +(subforms)i(migh)o(t)f(return)h(di\013eren)o(t)g(n)o(um)o(b)q(ers)0 +1718 y(of)f(v)m(alues;)i Fw(\(if)23 b(\(foo\))h(3)f(\(/)h(44)f(6\)\))15 +b Fx(migh)o(t)f(return)h(the)g(single)h(v)m(alue)f Fw(3)g Fx(or)f(the)h(m)o +(ultiple)h(v)m(alues)g Fw(7)f Fx(and)g Fw(2)p Fx(.)0 1774 y(It)f(follo)o(ws)g +(immediately)i(that)e(no)g(compiler,)h(ev)o(en)f(if)h(presen)o(ted)f(with)h +(a)f(complete)h(program,)d(can)j(deduce)g(in)0 1831 y(general)h(ho)o(w)e(man) +o(y)h(v)m(alues)h(are)f(returned)h(b)o(y)f(eac)o(h)g(function)h(call;)g(it)g +(is)g(formally)f(undecidable.)71 1887 y(No)o(w)k(all)j(this)f(migh)o(t)f +(seem)h(to)f(b)q(e)h(en)o(tirely)h(in)f(the)g(spirit)h(of)e(Lisp)h(as)g(a)f +(w)o(eakly)g(t)o(yp)q(ed)h(language;)i(if)0 1944 y(the)c(t)o(yp)q(es)g(of)f +(the)h(v)m(alues)h(returned)g(b)o(y)e(functions)i(ma)o(y)e(not)h(b)q(e)g +(determinable)i(un)o(til)f(run)f(time,)h(wh)o(y)e(not)0 2000 +y(their)h(v)o(ery)f(cardinalit)o(y?)30 b(And)19 b(declarations)g(migh)o(t)f +(indicate)i(the)e(n)o(um)o(b)q(er)g(of)g(v)m(alues)h(where)g(e\016ciency)g +(is)0 2057 y(imp)q(ortan)o(t,)14 b(just)g(as)h(t)o(yp)q(e)f(declarations)i +(already)f(assist)f(man)o(y)g(Lisp)i(compilers.)21 b(Nev)o(ertheless,)15 +b(as)g(a)f(matter)0 2113 y(of)h(fact,)f(nearly)i(ev)o(ery)o(one)g(who)f(has)g +(follo)o(w)o(ed)h(this)f(path)h(has)f(giv)o(en)h(up)g(at)e(this)i(p)q(oin)o +(t)g(in)g(the)g(dev)o(elopmen)o(t,)0 2170 y(m)o(uttering)f(\\This)h(w)o(a)o +(y)e(madness)h(lies,")h(and)f(returned)h(home)f(rather)g(than)g(fall)h(in)o +(to)f(the)g(tarpit.)71 2226 y(W)l(e)f(ourselv)o(es)h(ha)o(v)o(e)e(indep)q +(enden)o(tly)18 b(follo)o(w)o(ed)c(this)h(line)h(of)e(though)o(t)f(and)i(ha)o +(v)o(e)e(had)i(con)o(v)o(ersations)f(with)0 2283 y(quite)21 +b(a)f(few)g(other)g(p)q(eople)h(who)f(ha)o(v)o(e)g(also)g(done)h(so.)34 +b(There)21 b(are)e(few)h(published)j(sources)d(w)o(e)g(can)h(cite,)0 +2339 y(ho)o(w)o(ev)o(er,)12 b(precisely)j(b)q(ecause)e(most)f(of)h(them)f(ev) +o(en)o(tually)i(judged)f(it)g(a)g(bad)g(idea)g(b)q(efore)g(publishing)j(an)o +(ything)0 2395 y(ab)q(out)e(it.)20 b(\(This)15 b(is)g(not)f(to)f(sa)o(y)h +(that)g(it)h(actually)g Fm(is)f Fx(a)g(bad)g(idea,)h(or)f(that)g(some)g(v)m +(ariation)h(cannot)f(eliminate)0 2452 y(its)i(disadv)m(an)o(tages;)h(here)f +(w)o(e)g(wish)h(merely)g(to)e(emphasize)j(the)e(similarit)o(y)h(of)f +(thinking)h(among)f(man)o(y)g(inde-)0 2508 y(p)q(enden)o(t)k(researc)o +(hers.\))30 b(Among)19 b(the)g(most)f(notable)h(e\013orts)f(that)g(did)i(pro) +q(duce)g(actual)f(implemen)o(tations)0 2565 y(b)q(efore)14 +b(ev)o(en)o(tual)g(abandonmen)o(t)g(are)f(SEUS)i(and)f(POP-2)f([Burstall,)h +(1971].)k(The)c(designers)h(and)f(implemen-)0 2621 y(tors)e(of)h(SEUS)h +(\(Ric)o(hard)g(W)l(eyhrauc)o(h,)g(Carolyn)f(T)l(alcott,)g(Da)o(vid)g(P)o +(osner,)g(Ralph)i(Goren,)e(William)i(Sc)o(herlis,)0 2678 y(Len)j(Bosac)o(k,)f +(and)h(Gabriel\))g(nev)o(er)f(published)j(their)e(results,)g(although)f(it)h +(w)o(as)e(a)h(no)o(v)o(el)h(language)f(design,)p eop +%%Page: 59 59 +59 58 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(59)0 45 y(and)15 b(had)g(a)f(fast,)g(compiler-)i(and)f(micro)q(co)q +(de-based)h(implemen)o(tation,)g(complete)f(with)g(programming)f(en)o(vi-)0 +102 y(ronmen)o(t.)27 b(POP-2)18 b(w)o(as)e(regarded)i(b)o(y)g(its)f +(designers)i(as)e(an)h(AI)g(language,)g(one)g(of)f(the)h(man)o(y)f(pro)q +(duced)i(in)0 158 y(the)c(late)g(1960's)f(and)h(early)h(1970's,)d(rather)h +(than)h(as)g(a)g(v)m(arian)o(t)g(of)f(Lisp;)i(it)g(enjo)o(y)o(ed)f(quite)g +(some)g(p)q(opularit)o(y)0 214 y(in)h(Europ)q(e)g(and)f(w)o(as)f(used)i(to)f +(implemen)o(t)h(the)f(logic)i(programming)d(language)h(POPLOG)h([Mellish,)h +(1984].)0 335 y Fu(3.5.3)52 b(Logic)19 b(Programm)m(ing)c(and)j +(Uni\014cation)0 420 y Fx(During)g(the)f(1970's)f(and)i(on)f(in)o(to)g(the)h +(1980's)e(there)h(ha)o(v)o(e)g(b)q(een)i(a)e(n)o(um)o(b)q(er)h(of)f(attempts) +f(to)h(in)o(tegrate)g(the)0 477 y(adv)m(an)o(tages)e(of)h(the)g(t)o(w)o(o)e +(p)q(erhaps)j(foremost)d(AI)i(programming)g(language)g(families,)h(Lisp)g +(and)f(Prolog,)f(in)o(to)0 533 y(a)20 b(single)h(language.)34 +b(Suc)o(h)21 b(e\013orts)e(w)o(ere)g(particularly)j(a)d(feature)h(of)g(the)g +(soft)o(w)o(are)e(side)j(of)e(the)h(Japanese)0 590 y(Fifth)d(Generation)g +(pro)s(ject.)24 b(Examples)18 b(of)e(this)i(are)e(Robinson's)i(LOGLISP)g +([Robinson,)g(1982],)e(the)h(T)l(A)o(O)0 646 y(pro)s(ject)11 +b([T)l(ak)o(euc)o(hi,)i(1983;)e(Okuno,)h(1984],)f(and)i(T)l(ABLOG)f([Malac)o +(hi,)h(1984].)k(There)c(ha)o(v)o(e)e(also)h(b)q(een)i(related)0 +703 y(attempts)j(to)h(in)o(tegrate)g(functional)h(programming)f(and)g +(Prolog.)28 b(\(All)20 b(these)e(should)h(b)q(e)g(con)o(trasted)f(with)0 +759 y(the)d(use)g(of)f(Lisp)i(as)e(a)g(con)o(v)o(enien)o(t)i(language)f(for)f +Fm(implementing)f Fx(Prolog,)h(as)g(exempli\014ed)k(b)o(y)c(Komoro)o(wski's)0 +816 y(QLOG)i([Komoro)o(wski,)e(1982])f(and)j(the)f(w)o(ork)f(of)h(Kahn)h(and) +f(Carlsson)g([Kahn,)g(1984].\))71 872 y(W)l(e)c(conjecture)h(that)e(this)i +(idea)g(has)g(not)f(caugh)o(t)f(on)i(in)g(the)f(Lisp)i(comm)o(unit)o(y)e(b)q +(ecause)i(of)e(uni\014cation,)i(the)0 928 y(v)m(ariable-matc)o(hing)k(pro)q +(cess)f(used)h(in)f(Prolog.)22 b(Indeed)17 b(one)f(can)g(easily)h(design)f(a) +g(language)g(that)f(has)g(man)o(y)0 985 y(of)f(the)h(features)g(of)f(Lisp)i +(but)f(uses)g(uni\014cation)i(during)f(pro)q(cedure)f(calls.)21 +b(The)15 b(problem)h(is)f(that)f(uni\014cation)0 1041 y(is)20 +b(su\016cien)o(tly)g(di\013eren)o(t)f(in)h(nature)f(from)f(lam)o(b)q +(da-binding)k(that)c(the)h(resulting)h(language)f(do)q(esn't)g(really)0 +1098 y(feel)f(lik)o(e)g(Lisp)g(an)o(y)e(more.)25 b(T)l(o)16 +b(the)h(a)o(v)o(erage)f(Lisp)i(programmer,)e(it)h(feels)h(lik)o(e)g(an)e +(extension)i(of)e(Prolog)h(but)0 1154 y(not)h(an)g(extension)h(of)e(Lisp;)k +(y)o(ou)c(just)h(can't)g(mess)g(around)g(that)f(m)o(uc)o(h)h(with)h +(something)f(as)g(fundamen)o(tal)0 1211 y(as)d(pro)q(cedure)h(calls.)22 +b(On)16 b(the)g(other)f(hand,)h(one)f(can)h(lea)o(v)o(e)f(Lisp)i(pro)q +(cedure)f(calls)h(as)e(they)h(are)f(and)g(pro)o(vide)0 1267 +y(uni\014cation)20 b(as)d(a)h(separate)g(facilit)o(y)h(that)e(can)h(b)q(e)h +(explicitly)i(in)o(v)o(ok)o(ed.)29 b(But)18 b(then)g(it)h(is)f(just)g +(another)g(Lisp)0 1324 y(library)e(routine,)f(and)h(the)f(result)h(do)q +(esn't)f(feel)h(at)e(all)i(lik)o(e)h(Prolog.)0 1467 y Fp(4)69 +b(Lisp)23 b(as)g(a)h(Language)g(Lab)r(oratory)0 1568 y Fx(An)13 +b(in)o(teresting)g(asp)q(ect)g(of)f(the)g(Lisp)i(culture,)g(in)f(con)o(trast) +e(to)h(those)g(surrounding)i(most)d(other)i(programming)0 1625 +y(languages,)21 b(is)g(that)e(to)o(y)g(dialects)j(are)d(regarded)h(with)h(a)f +(fair)g(amoun)o(t)f(of)h(resp)q(ect.)35 b(Lisp)21 b(has)f(b)q(een)h(used)0 +1681 y(throughout)15 b(its)g(history)g(as)g(a)g(language)g(lab)q(oratory)l(.) +20 b(It)15 b(is)h(trivial)g(to)e(add)i(a)f(few)g(new)g(functions)h(to)f(Lisp) +h(in)0 1738 y(suc)o(h)f(a)g(w)o(a)o(y)f(that)g(they)h(lo)q(ok)h(lik)o(e)g +(system-pro)o(vided)f(facilities.)22 b(Giv)o(en)16 b(macros,)d(CLISP)l(,)j +(or)f(the)g(equiv)m(alen)o(t,)0 1794 y(it)20 b(is)g(prett)o(y)g(easy)f(to)g +(add)h(new)h(con)o(trol)e(structures)h(or)f(other)g(syn)o(tactic)h +(constructs.)34 b(If)20 b(that)f(fails,)i(it)f(is)0 1851 y(the)e(w)o(ork)f +(of)g(only)h(half)g(an)g(hour)g(to)f(write,)h(in)g(Lisp,)h(a)f(complete)g(in) +o(terpreter)g(for)f(a)h(new)g(dialect.)28 b(T)l(o)18 b(see)0 +1907 y(ho)o(w)f(amazing)h(this)g(is,)h(imagine)g(starting)e(with)h(a)g(w)o +(orking)f(C,)g(F)l(ortran,)g(P)o(ascal,)h(PL/I,)g(BASIC,)g(or)g(APL)0 +1963 y(system|y)o(ou)e(can)h(write)f(and)h(run)g(an)o(y)f(program)f(in)i +(that)f(language,)h(but)f(ha)o(v)o(e)g(no)g(access)h(to)f(source)g(co)q(de)0 +2020 y(for)f(the)g(compiler)h(or)f(in)o(terpreter|and)h(then)g(tac)o(kling)f +(these)h(three)f(exercises:)56 2093 y(1.)22 b(Add)16 b(a)g(new)g(arithmetic)h +(op)q(erator)e(to)g(the)h(language)h(similar)g(to)e(the)h(one)g(for)g +(Pythagorean)f(addition)114 2149 y(in)j(Kn)o(uth's)f(Metafon)o(t)e(language)j +([Kn)o(uth,)f(1986]:)22 b Fw(a++b)17 b Fx(computes)1360 2111 +y Fk(p)p 1398 2111 139 2 v 38 x Fn(a)1422 2136 y Fj(2)1452 +2149 y Fx(+)10 b Fn(b)1517 2136 y Fj(2)1537 2149 y Fx(.)25 +b(The)18 b(language)f(is)h(to)114 2206 y(b)q(e)g(augmen)o(ted)f(in)i(suc)o(h) +f(a)f(w)o(a)o(y)g(that)g(the)h(new)g(op)q(erator)e(is)j(syn)o(tactically)f +(similar)h(to)e(the)h(language)114 2262 y(op)q(erators)f(for)h(addition)i +(and)f(subtraction.)30 b(\(F)l(or)18 b(C,)g(y)o(ou)g(ma)o(y)g(use)h +Fw(+++)f Fx(or)g Fw(@)g Fx(rather)g(than)h Fw(++)p Fx(;)h(for)114 +2319 y(APL,)15 b(use)g(one)h(of)e(the)i(customary)e(a)o(wful)h(o)o(v)o +(erstrik)o(es)g(suc)o(h)g(as)g Fw([)-15 b(+)g(])p Fx(.\))56 +2392 y(2.)22 b(Add)f(a)f Fw(case)g Fx(statemen)o(t)g(to)g(the)g(language.)37 +b(\(If)20 b(it)h(already)g(has)g(a)f Fw(case)g Fx(statemen)o(t,)g(then)h(add) +g(a)114 2448 y(statemen)o(t)14 b(called)i Fw(switch)f Fx(that)f(is)i(just)f +(lik)o(e)h(the)f Fw(case)g Fx(statemen)o(t)f(already)h(in)h(the)f(language,)g +(except)114 2505 y(that)c(when)h(the)g(selected)i(branc)o(h)e(has)g(b)q(een)h +(executed)g(con)o(trol)e(falls)i(through)f(to)f(succeeding)j(branc)o(hes;)114 +2561 y(a)k(sp)q(ecial)j Fw(break)d Fx(statemen)o(t,)h(or)f(dropping)i(out)f +(of)f(the)h(last)g(branc)o(h,)h(m)o(ust)e(b)q(e)i(used)g(to)e(terminate)114 +2618 y(execution)e(of)f(the)g Fw(switch)f Fx(statemen)o(t.\))56 +2691 y(3.)22 b(Add)15 b(full)i(lexically)h(scop)q(ed)e(functional)g(closures) +g(to)e(the)i(language.)p eop +%%Page: 60 60 +60 59 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(60)0 45 y(Without)18 b(source)g(co)q(de)h(for)f(the)g(compiler)h +(or)f(in)o(terpreter,)h(all)g(three)f(pro)s(jects)g(require)h(one)f +(practically)i(to)0 102 y(start)10 b(o)o(v)o(er)h(from)g(scratc)o(h.)18 +b(That)11 b(is)g(part)g(of)g(our)h(p)q(oin)o(t.)19 b(But)11 +b(ev)o(en)h(giv)o(en)g(source)f(co)q(de)h(for)f(a)g(F)l(ortran)g(compiler)0 +158 y(or)17 b(APL)h(in)o(terpreter,)g(all)h(three)e(exercises)i(are)e(m)o(uc) +o(h)h(more)f(di\016cult)i(than)e(in)i(Lisp.)28 b(The)18 b(Lisp)h(answ)o(er)e +(to)0 214 y(the)e(\014rst)g(one)g(is)h(a)f(one-liner)i(\(sho)o(wn)e(here)g +(in)h(Common)f(Lisp\):)0 304 y Fw(\(defun)23 b(++)h(\(x)f(y\))h(\(sqrt)f(\(+) +h(\(*)f(x)h(x\))f(\(*)h(y)g(y\)\)\)\))0 394 y Fx(Lisp)d(do)q(es)g(not)f +(reserv)o(e)g(sp)q(ecial)i(syn)o(tax)e(\(suc)o(h)g(as)g(in\014x)h(op)q +(erators\))e(for)h(use)g(b)o(y)g(built-in)j(op)q(erations,)e(so)0 +450 y(user-de\014ned)c(functions)f(lo)q(ok)f(just)g(lik)o(e)i +(system-de\014ned)f(functions)g(to)e(the)i(caller.)71 507 y(The)21 +b(second)g(requires)g(ab)q(out)g(a)f(dozen)i(lines)g(of)e(co)q(de)i(\(again,) +f(in)h(Common)e(Lisp,)j(using)e(bac)o(kquote)0 563 y(syn)o(tax)14 +b(as)h(describ)q(ed)i(in)f(the)g(discussion)h(of)d(macros\):)0 +653 y Fw(\(defmacro)23 b(switch)g(\(value)g(&rest)g(body\))48 +709 y(\(let*)g(\(\(newbody)g(\(mapcar)f(#'\(lambda)h(\(clause\))716 +766 y(`\(,\(gensym\))f(,@\(rest)h(clause\)\)\))620 822 y(body\)\))215 +879 y(\(switcher)f(\(mapcar)h(#'\(lambda)g(\(clause)g(newclause\))740 +935 y(`\(,\(first)f(clause\))h(\(go)h(,\(first)f(newclause\)\)\)\))644 +991 y(body)h(newbody\)\)\))95 1048 y(`\(block)f(switch)167 +1104 y(\(tagbody)g(\(case)g(,value)g(,@switcher\))382 1161 +y(\(break\))382 1217 y(,@\(apply)g(#'nconc)f(newbody\)\)\)\))0 +1299 y(\(defmacro)h(break)g(\(\))g('\(return-from)f(switch\)\))0 +1388 y Fx(Here)15 b(w)o(e)g(use)h(t)o(w)o(o)e(macros,)g(one)h(for)g +Fw(switch)f Fx(and)h(one)h(for)e Fw(break)p Fx(,)g(whic)o(h)i(together)f +(cause)g(the)h(statemen)o(t)0 1478 y Fw(\(switch)23 b(n)48 +1534 y(\(0)g(\(princ)g("none"\))g(\(break\)\))48 1591 y(\(1)g(\(princ)g("one) +h("\)\))48 1647 y(\(2)f(\(princ)g("too)h("\)\))48 1704 y(\(3)f(\(princ)g +("many"\)\)\))0 1793 y Fx(\(whic)o(h)16 b(alw)o(a)o(ys)e(prin)o(ts)i(either)g +Fw(many)p Fx(,)e Fw(too)23 b(many)p Fx(,)14 b Fw(one)24 b(too)f(many)p +Fx(,)15 b Fw(none)p Fx(,)f(or)g(nothing\))i(to)e(expand)i(in)o(to)0 +1883 y Fw(\(block)23 b(switch)48 1939 y(\(tagbody)f(\(case)i(n)310 +1996 y(\(0)g(\(go)f(G0042\)\))310 2052 y(\(1)h(\(go)f(G0043\))310 +2109 y(\(2)h(\(go)f(G0044\)\))310 2165 y(\(3)h(\(go)f(G0045\)\)\))262 +2222 y(\(return-from)g(switch\))72 2278 y(G0042)70 b(\(princ)24 +b("none"\))262 2335 y(\(return-from)f(switch\))72 2391 y(G0043)70 +b(\(princ)24 b("one)f("\))72 2448 y(G0044)70 b(\(princ)24 b("too)f("\))72 +2504 y(G0045)70 b(\(princ)24 b("many"\)\)\))0 2594 y Fx(whic)o(h)16 +b(is)g(not)f(unlik)o(e)h(the)g(co)q(de)f(that)g(w)o(ould)h(b)q(e)f(pro)q +(duced)i(b)o(y)e(a)g(C)g(compiler.)71 2650 y(F)l(or)d(examples)j(of)e(in)o +(terpreters)g(that)g(solv)o(e)h(the)f(third)h(problem)g(in)h(ab)q(out)e(100)g +(lines)i(of)e(co)q(de,)h(see)g([Steele,)0 2707 y(1978c;)g(Steele,)i(1978b].)p +eop +%%Page: 61 61 +61 60 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(61)71 45 y(There)15 b(is)h(a)f(ric)o(h)h(tradition)f(of)g(exp)q +(erimen)o(ting)i(with)e(augmen)o(tations)g(of)g(Lisp,)h(ranging)f(from)g +(\\let's)g(add)0 102 y(just)21 b(one)g(new)h(feature")f(to)f(in)o(v)o(en)o +(ting)i(completely)h(new)f(languages)f(using)h(Lisp)h(as)d(an)i(implemen)o +(tation)0 158 y(language.)h(This)17 b(activit)o(y)g(w)o(as)e(carried)i(on)f +(particularly)i(in)o(tensiv)o(ely)g(at)e(MIT)g(during)h(the)g(late)f(1960's)f +(and)0 214 y(the)i(1970's)e(but)j(also)f(at)f(other)g(institutions)j(suc)o(h) +e(as)g(Stanford)f(Univ)o(ersit)o(y)l(,)i(Carnegie-Mellon)g(Univ)o(ersit)o(y)l +(,)0 271 y(and)d(Indiana)h(Univ)o(ersit)o(y)l(.)21 b(A)o(t)15 +b(that)f(time)h(it)h(w)o(as)e(customary)g(to)g(mak)o(e)h(a)g(set)f(of)h +(ideas)h(ab)q(out)f(programming)0 327 y(st)o(yle)d(concrete)f(b)o(y)h +(putting)g(forth)e(a)i(new)f(programming)g(language)h(as)f(an)g(exemplar.)20 +b(\(This)11 b(w)o(as)g(true)g(outside)0 384 y(the)h(Lisp)i(comm)o(unit)o(y)e +(as)g(w)o(ell;)h(witness)g(the)f(proliferation)h(of)f(Algol-lik)o(e,)j(and)d +(particularly)h(P)o(ascal-inspired,)0 440 y(languages)k(around)g(the)g(same)f +(time)i(p)q(erio)q(d.)26 b(But)17 b(Lisp)h(made)f(it)g(con)o(v)o(enien)o(t)h +(to)e(try)g(out)h(little)h(ideas)g(with)0 497 y(a)e(small)h(amoun)o(t)e(of)h +(o)o(v)o(erhead,)f(as)h(w)o(ell)h(as)f(tac)o(kling)h(grand)f(rev)m(ampings)h +(requiring)g(man)o(y)f(man-mon)o(ths)f(of)0 553 y(e\013ort.\))71 +610 y(One)j(of)f(the)g(earliest)h(Lisp-based)h(languages)e(w)o(as)g(METEOR)g +([Bobro)o(w,)g(1964],)f(a)h(v)o(ersion)g(of)g(COMIT)0 666 y(with)22 +b(Lisp)g(syn)o(tax.)38 b(COMIT)21 b([MIT)g(RLE,)h(1962a;)d(MIT)j(RLE,)f +(1962b;)f(Yngv)o(e,)j(1972])d(w)o(as)g(a)h(pattern-)0 723 y(matc)o(hing)f +(language)h(that)f(rep)q(eatedly)h(matc)o(hed)g(a)f(set)g(of)g(rules)h +(against)f(the)h(con)o(ten)o(ts)f(of)g(a)g(\015at,)h(linear)0 +779 y(w)o(orkspace)16 b(of)g(sym)o(b)q(olic)i(tok)o(ens;)e(it)h(w)o(as)f(a)g +(precursor)h(of)f(SNOBOL)i(and)f(an)f(ancestor)h(of)f(suc)o(h)h(rule-based)0 +835 y(languages)f(as)g(OPS5)h([F)l(orgy)l(,)e(1977].)21 b(METEOR)16 +b(w)o(as)g(em)o(b)q(edded)h(within)h(the)e(MIT)g(Lisp)i(1.5)d(system)h(that)0 +892 y(ran)c(on)g(the)g(IBM)h(7090.)k(The)c(Lisp)g(co)q(de)g(for)f(METEOR)g +(is)h(a)f(little)h(under)g(300)e(80-column)i(cards)f(\(some)g(with)0 +948 y(more)18 b(whitespace)h(than)f(others\).)28 b(By)19 b(con)o(trast,)e +(the)i(7090)e(implemen)o(tation)i(of)f(the)g(COMIT)h(in)o(terpreter)0 +1005 y(o)q(ccupied)f(ab)q(out)e(10,000)e(w)o(ords)h(or)g(memory)l(,)h +(according)g(to)f(Yngv)o(e;)h(assuming)g(this)h(re\015ects)f(ab)q(out)g +(10,000)0 1061 y(lines)h(of)e(assem)o(bly)g(language)h(co)q(de,)g(w)o(e)f +(can)g(view)h(this)g(as)f(an)g(early)h(example)g(of)f(the)g(e\013ectiv)o +(eness)h(of)f(LISP)0 1118 y(as)g(a)g(high-lev)o(el)i(language)f(for)e(protot) +o(yping)h(other)g(languages.)71 1174 y(Another)d(of)f(the)i(early)f +(pattern-matc)o(hing)g(languages)h(built)g(on)f(Lisp)i(w)o(as)d(CONVER)l(T)i +([Guzman,)f(1966].)0 1231 y(Whereas)g(METEOR)g(w)o(as)f(prett)o(y)g(m)o(uc)o +(h)h(a)f(straigh)o(t)g(implemen)o(tation)i(of)f(COMIT)g(represen)o(ted)g(as)g +(Lisp)h(data)0 1287 y(structures,)k(CONVER)l(T)h(merged)g(the)f(pattern-matc) +o(hing)h(features)f(of)g(COMIT)g(with)h(the)f(recursiv)o(e)i(data)0 +1344 y(structures)h(of)g(Lisp,)i(allo)o(wing)f(the)g(matc)o(hing)f(of)g +(recursiv)o(ely)h(de\014ned)h(patterns)e(to)g(arbitrary)f(Lisp)j(data)0 +1400 y(structures.)71 1456 y(Carl)f(Hewitt)h(designed)h(an)f(extremely)g(am)o +(bitious)g(Lisp-lik)o(e)j(language)d(for)f(theorem-pro)o(ving)g(called)0 +1513 y(Planner)c([Hewitt,)f(1969;)f(Hewitt,)h(1972].)22 b(Its)16 +b(primary)h(con)o(tributions)g(consisted)g(of)f(adv)m(ances)h(in)g(pattern-)0 +1569 y(directed)j(in)o(v)o(o)q(cation)g(and)f(the)g(use)g(of)f(automatic)h +(bac)o(ktrac)o(king)f(as)h(an)g(implemen)o(tation)h(mec)o(hanism)g(for)0 +1626 y(goal-directed)c(searc)o(h.)k(It)c(w)o(as)e(nev)o(er)h(completely)i +(implemen)o(ted)g(as)e(originally)i(en)o(visioned,)g(but)e(it)h(spurred)0 +1682 y(three)f(other)f(imp)q(ortan)o(t)g(dev)o(elopmen)o(ts)h(in)h(the)f +(history)f(of)g(Lisp:)21 b(Micro-Planner,)16 b(Muddle,)f(and)g(Conniv)o(er.) +71 1739 y(Gerald)d(Ja)o(y)g(Sussman,)h(Drew)f(McDermott,)f(and)i(Eugene)g +(Charniak)f(implemen)o(ted)j(a)d(subset)g(of)g(Planner)0 1795 +y(called)20 b(Micro-Planner)e([Sussman,)h(1971],)d(whic)o(h)j(w)o(as)e(em)o +(b)q(edded)j(within)f(the)f(MIT)g(PDP-6)f(Lisp)i(system)0 1852 +y(that)e(ev)o(en)o(tually)j(b)q(ecame)e(MacLisp.)30 b(The)18 +b(seman)o(tics)g(of)g(the)g(language)h(as)f(implemen)o(ted)h(w)o(ere)f(not)g +(com-)0 1908 y(pletely)f(formalized.)k(The)16 b(implemen)o(tation)g(tec)o +(hniques)h(w)o(ere)e(rather)g(ad)g(ho)q(c)h(and)f(did)h(not)f(w)o(ork)g +(correctly)0 1965 y(in)f(certain)f(complicated)i(cases;)e(the)h(matc)o(her)e +(w)o(as)g(designed)j(to)d(matc)o(h)h(t)o(w)o(o)f(patterns,)g(eac)o(h)h(of)g +(whic)o(h)h(migh)o(t)0 2021 y(con)o(tain)d(v)m(ariables,)i(but)e(did)i(not)d +(use)i(a)f(complete)h(uni\014cation)g(algorithm.)19 b(\(Muc)o(h)11 +b(later,)g(Sussman,)h(on)f(learn-)0 2077 y(ing)17 b(ab)q(out)e(Prolog,)h +(remark)o(ed)f(to)g(Steele)i(that)f(Prolog)f(app)q(eared)i(to)e(b)q(e)i(the)f +(\014rst)f(correct)h(implemen)o(tation)0 2134 y(of)f(Micro-Planner.\))71 +2190 y(A)g(v)o(ersion)g(of)g(Planner)h(w)o(as)e(also)h(implemen)o(ted)i(in)f +(POP-2)g([Da)o(vies,)e(1984].)71 2247 y(The)e(language)f(Muddle)i(\(later)f +(MDL\))f(w)o(as)g(an)g(extended)i(v)o(ersion)f(of)f(Lisp)i(and)f(in)h(some)e +(w)o(a)o(ys)g(a)g(comp)q(eti-)0 2303 y(tor,)h(designed)i(and)g(used)f(b)o(y)g +(the)g(Dynamic)g(Mo)q(deling)h(Group)f(at)f(MIT,)h(whic)o(h)g(w)o(as)g +(separate)f(from)g(the)h(MIT)0 2360 y(AI)k(Lab)q(oratory)e(but)i(in)g(the)g +(same)f(building)j(at)d(545)f(T)l(ec)o(hnology)i(Square.)24 +b(This)17 b(e\013ort)e(w)o(as)h(b)q(egun)h(in)h(late)0 2416 +y(1970)c(b)o(y)h(Gerald)h(Ja)o(y)f(Sussman,)g(Carl)g(Hewitt,)g(Chris)h(Reev)o +(e,)f(and)h(Da)o(vid)f(Cressey)l(,)g(later)g(joined)h(b)o(y)f(Bruce)0 +2473 y(Daniels,)21 b(Greg)d(P\014ster,)h(and)h(Stu)f(Galley)l(.)32 +b(It)19 b(w)o(as)g(designed)h(\\)p Fn(:)8 b(:)g(:)25 b Fx(as)18 +b(a)h(successor)g(to)g(Lisp,)h(a)f(candidate)0 2529 y(v)o(ehicle)e(for)d(the) +h(Dynamic)g(Mo)q(deling)h(System,)e(and)h(a)g(p)q(ossible)i(base)e(for)f +(implemen)o(tation)i(of)e(Planner-70.")0 2586 y([Galley)l(,)j(1975])e(T)l(o)h +(some)g(exten)o(t)h(the)f(comp)q(etition)i(b)q(et)o(w)o(een)f(Muddle)g(and)g +(Lisp,)h(and)e(the)h(fact)f(that)f(Suss-)0 2642 y(man)20 b(had)g(a)g(fo)q(ot) +f(in)i(eac)o(h)f(camp,)h(resulted)g(in)g(cross-fertilization.)36 +b(The)20 b(I/O,)g(in)o(terrupt)g(handling,)j(and)0 2698 y(m)o +(ultiprogramming)14 b(\(that)g(is,)g(coroutining\))h(facilities)h(of)e +(Muddle)i(w)o(ere)e(m)o(uc)o(h)g(more)g(adv)m(anced)h(than)f(those)p +eop +%%Page: 62 62 +62 61 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(62)0 45 y(of)20 b(MacLisp)g(at)g(the)g(time.)35 b(Muddle)21 +b(had)f(a)g(more)f(complex)i(garbage)e(collector)i(than)f(PDP-10)f(MacLisp)0 +102 y(ev)o(er)c(had,)g(as)f(w)o(ell)i(as)f(a)g(larger)f(library)i(of)f +(application)h(subroutines,)g(esp)q(ecially)h(for)e(graphics.)20 +b(\(Some)15 b(Lisp)0 158 y(partisans)i(at)g(the)h(time)g(w)o(ould)g(reply)g +(that)f(Muddle)i(w)o(as)e(used)h(en)o(tirely)h(to)e(co)q(de)h(libraries)h(of) +e(subroutines)0 214 y(but)e(no)h(main)f(programs!)k(But)d(in)g(fact)f(some)g +(substan)o(tial)g(applications)i(w)o(ere)e(co)q(ded)i(in)f(Muddle.\))21 +b(Muddle)0 271 y(in)o(tro)q(duced)16 b(the)e(lam)o(b)q(da-list)i(syn)o(tax)e +(mark)o(ers)f(OPTIONAL,)i(REST,)g(and)f(A)o(UX)h(that)e(w)o(ere)i(later)f +(adopted)0 327 y(b)o(y)h(Conniv)o(er,)g(Lisp)i(Mac)o(hine)f(Lisp,)g(and)f +(Common)f(Lisp.)71 384 y(The)19 b(language)g(Conniv)o(er)g(w)o(as)f(designed) +i(b)o(y)f(Drew)f(McDermott)g(and)h(Gerald)g(Ja)o(y)f(Sussman)h(in)h(1972)0 +440 y(in)d(reaction)f(to)f(p)q(erceiv)o(ed)j(limitations)f(of)f +(Micro-Planner)h(and)f(in)h(particular)g(of)e(its)i(con)o(trol)e(structure.) +22 b(In)0 497 y(the)13 b(classic)i(pap)q(er)e Fm(Why)j(Conniving)c(Is)i +(Better)g(Than)g(Planning)e Fx([Sussman,)h(1972b;)f(Sussman,)h(1972a],)f +(they)0 553 y(argued)j(that)f(automatic)g(nested)h(bac)o(ktrac)o(king)f(w)o +(as)g(merely)i(an)e(o)o(v)o(erly)h(complicated)h(w)o(a)o(y)e(to)g(express)h +(a)f(set)0 610 y(of)h(F)o(ORALL)h(lo)q(ops)g(used)g(to)e(p)q(erform)h +(exhaustiv)o(e)h(searc)o(h:)182 683 y(It)k(is)h(our)f(con)o(ten)o(tion)g +(that)f(the)i(bac)o(ktrac)o(k)e(con)o(trol)h(structure)g(that)f(is)i(the)f +(bac)o(kb)q(one)h(of)114 739 y(Planner)c(is)g(more)f(of)f(a)i(hindrance)g(in) +h(the)e(solution)h(of)f(problems)h(than)f(a)g(help.)25 b(In)17 +b(particular,)114 796 y(automatic)g(bac)o(ktrac)o(king)h(encourages)g +(ine\016cien)o(t)i(algorithms,)e(conceals)h(what)f(is)h(happ)q(ening)114 +852 y(from)13 b(the)h(user,)g(and)g(misleads)h(him)f(with)g(primitiv)o(es)i +(ha)o(ving)e(p)q(o)o(w)o(erful)g(names)g(whose)f(p)q(o)o(w)o(er)h(is)114 +909 y(only)h(sup)q(er\014cial.)0 982 y(The)k(design)i(of)e(Conniv)o(er)g(put) +h(the)f(\015o)o(w)g(of)f(con)o(trol)h(v)o(ery)g(explicitly)j(in)e(the)g +(hands)f(of)g(the)h(programmer.)0 1038 y(The)15 b(mo)q(del)g(w)o(as)f(an)g +(extreme)h(generalization)h(of)e(coroutines;)g(there)h(w)o(as)f(only)h(one)f +(activ)o(e)h(lo)q(cus)h(of)e(con)o(trol,)0 1095 y(but)h(arbitrarily)g(man)o +(y)e(logical)j(threads)e(and)h(primitiv)o(es)g(for)f(explicitly)j +(transferring)d(the)h(activ)o(e)f(lo)q(cus)i(from)0 1151 y(one)f(to)f +(another.)19 b(This)d(design)g(w)o(as)e(strongly)g(in\015uenced)j(b)o(y)e +(the)g(\\spaghetti)g(stac)o(k")e(mo)q(del)j(in)o(tro)q(duced)g(b)o(y)0 +1207 y(Daniel)d(Bobro)o(w)f(and)g(Ben)h(W)l(egbreit)g([Bobro)o(w,)e(1973])g +(and)h(implemen)o(ted)i(in)f(BBN-Lisp)h(\(later)e(to)f(b)q(e)i(kno)o(wn)0 +1264 y(as)h(In)o(terlisp\).)20 b(Lik)o(e)c(spaghetti)e(stac)o(ks,)f(Conniv)o +(er)h(pro)o(vided)h(separate)f(notions)g(of)g(a)g(data)f(en)o(vironmen)o(t)i +(and)0 1320 y(a)j(con)o(trol)g(en)o(vironmen)o(t)h(and)g(the)g(p)q(ossibilit) +o(y)h(or)e(creating)h(closures)g(o)o(v)o(er)f(either.)30 b(\(Later)18 +b(w)o(ork)g(with)h(the)0 1377 y(Sc)o(heme)e(language)g(brough)o(t)f(out)g +(the)h(p)q(oin)o(t)g(that)f(data)g(en)o(vironmen)o(ts)h(and)g(con)o(trol)f +(en)o(vironmen)o(ts)h(do)f(not)0 1433 y(pla)o(y)11 b(symmetrical)g(roles)f +(in)i(the)e(in)o(terpretation)h(of)f(Lisp-lik)o(e)j(languages)e([Steele,)h +(1977d].\))k(Conniv)o(er)11 b(di\013ered)0 1490 y(from)k(spaghetti)g(stac)o +(ks)g(in)h(w)o(a)o(ys)f(stemming)h(primarily)g(from)f(implemen)o(tation)i +(considerations.)22 b(The)16 b(main)0 1546 y(p)q(oin)o(t)d(of)e(Conniv)o(er)i +(w)o(as)e(generalit)o(y)i(and)f(ease)g(of)g(implemen)o(tation;)i(it)e(w)o(as) +g(written)g(in)h(Lisp)g(and)f(represen)o(ted)0 1603 y(con)o(trol)h(and)h +(data)e(en)o(vironmen)o(ts)i(as)f(Lisp)i(list)f(structures,)f(allo)o(wing)h +(the)g(Lisp)g(garbage)f(collector)h(to)f(handle)0 1659 y(reclamation)20 +b(of)g(abandoned)h(en)o(vironmen)o(ts.)35 b(The)20 b(implemen)o(tation)h(of)f +(spaghetti)g(stac)o(ks,)g(on)g(the)g(other)0 1716 y(hand,)13 +b(in)o(v)o(olv)o(ed)h(structural)f(c)o(hanges)g(to)f(a)h(Lisp)h(system)e(at)h +(the)g(lo)o(w)o(est)f(lev)o(el.)20 b(It)13 b(addressed)h(e\016ciency)g +(issues)0 1772 y(b)o(y)i(allo)o(wing)g(stac)o(k-lik)o(e)g(allo)q(cation)h +(and)f(deallo)q(cation)h(b)q(eha)o(vior)f(wherev)o(er)g(p)q(ossible.)23 +b(The)16 b(p)q(olicy)h(w)o(as)e(pa)o(y)0 1828 y(as)h(y)o(ou)h(go)f(but)h +(don't)f(pa)o(y)g(if)h(y)o(ou)g(don't)f(use)h(it:)23 b(programs)16 +b(that)g(do)g(not)g(create)h(closures)g(should)h(not)e(pa)o(y)0 +1885 y(for)f(the)g(o)o(v)o(erhead)g(of)f(heap)i(managemen)o(t)e(of)h(con)o +(trol)g(and)g(data)g(en)o(vironmen)o(ts.)71 1941 y(A)o(t)g(ab)q(out)i(this)g +(time)f(Carl)h(Hewitt)f(and)h(his)g(studen)o(ts)f(b)q(egan)h(to)f(dev)o(elop) +h(the)g(actor)e(mo)q(del)j(of)e(compu-)0 1998 y(tation,)g(in)h(whic)o(h)h(ev) +o(ery)e(computational)h(en)o(tit)o(y)l(,)f(whether)h(program)e(or)h(data,)g +(is)h(an)f(actor:)22 b(an)16 b(agen)o(t)g(that)0 2054 y(can)d(receiv)o(e)h +(and)e(react)h(to)f(messages.)18 b(The)13 b(under-the-table)i(activit)o(y)e +(brough)o(t)f(out)g(b)o(y)h(Conniv)o(er)g(w)o(as)f(made)0 2111 +y(ev)o(en)i(more)f(explicit)i(in)f(this)g(mo)q(del;)h(ev)o(erything)f(w)o(as) +e(message-passing,)i(ev)o(erything)g(ran)f(on)g(con)o(tin)o(uations.)0 +2167 y(Hewitt)i(and)g(his)g(studen)o(t)g(Brian)g(Smith)g(commen)o(ted)g(on)f +(the)h(in)o(teraction)g(of)f(a)h(n)o(um)o(b)q(er)g(of)f(researc)o(h)g(groups) +0 2224 y(at)h(the)g(time)g([Smith,)g(1975]:)182 2297 y(The)e(early)g(w)o(ork) +f(on)h(PLANNER)h(w)o(as)e(done)h(at)f(MIT)h(and)g(published)j(in)d(IJCAI-69)h +([Hewitt,)114 2353 y(1969].)j(In)11 b(1970)f(a)h(group)g(of)f(in)o(terested)i +(researc)o(hers)f(\(including)i(P)o(eter)e(Deutsc)o(h,)g(Ric)o(hard)i(Fik)o +(es,)114 2410 y(Carl)g(Hewitt,)h(Je\013)f(Rulifson,)i(Alan)f(Ka)o(y)l(,)g +(Jim)g(Mo)q(ore,)f(Nils)i(Nilsson,)f(and)g(Ric)o(hard)h(W)l(aldinger\))114 +2466 y(gathered)g(at)f(P)o(a)s(jaro)f(Dunes)j(to)e(compare)h(notes)g(and)h +(concepts)p Fn(:)8 b(:)g(:)g(:)182 2522 y Fx(In)18 b(No)o(v)o(em)o(b)q(er)g +(1972,)f(Alan)h(Ka)o(y)g(ga)o(v)o(e)f(a)g(seminar)h(at)g(MIT)f(in)i(whic)o(h) +g(he)f(emphasized)h(the)114 2579 y(imp)q(ortance)e(of)g(using)h(in)o(ten)o +(tional)g(de\014nitions)h(of)d(data)h(structures)f(and)i(of)e(passing)i +(messages)114 2635 y(to)j(them)g(suc)o(h)h(as)f(w)o(as)g(done)h(to)f(a)g +(limited)j(exten)o(t)d(for)g(the)h(\\pro)q(cedural)g(data)f(structures")114 +2692 y(in)e(the)g(lam)o(b)q(da)g(calculus)h(languages)e(of)h(Landin,)h(Ev)m +(ans,)f(and)g(Reynolds)h(and)f(extensiv)o(ely)g(in)p eop +%%Page: 63 63 +63 62 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(63)114 45 y(SIMULA-67.)29 b(His)19 b(argumen)o(t)e(w)o(as)g(that)h +(only)g(the)h(data)e(t)o(yp)q(e)h(itself)h(really)g(\\kno)o(ws")e(ho)o(w)h +(to)114 102 y(implemen)o(t)e(an)o(y)e(giv)o(en)h(op)q(eration.)20 +b(W)l(e)15 b(had)g(previously)h(giv)o(en)f(some)f(atten)o(tion)g(to)g(pro)q +(cedural)114 158 y(data)21 b(structures)g(in)i(our)e(o)o(wn)g(researc)o(h)p +Fn(:)8 b(:)g(:)g(:)19 b Fx(Ho)o(w)o(ev)o(er,)j(w)o(e)f(w)o(ere)h(under)g(the) +g(misconception)114 214 y(that)13 b(pro)q(cedural)j(data)e(structures)g(w)o +(ere)g(to)q(o)g(ine\016cien)o(t)i(for)e(practical)h(use)g(although)g(they)f +(had)114 271 y(certain)h(adv)m(an)o(tages.)182 327 y(Ka)o(y's)g(lecture)h +(struc)o(k)f(a)g(resp)q(onsiv)o(e)h(note)g Fn(:)8 b(:)g(:)21 +b Fx(W)l(e)15 b(immediately)i(sa)o(w)e(ho)o(w)g(to)g(use)g(his)i(idea)114 +384 y Fn(:)8 b(:)g(:)23 b Fx(to)17 b(extend)h(the)g(principle)i(of)e(pro)q +(cedural)g(em)o(b)q(edding)i(of)d(kno)o(wledge)h(to)f(data)g(structures.)114 +440 y(In)g(e\013ect)f(eac)o(h)h(t)o(yp)q(e)f(of)g(data)g(structure)g(b)q +(ecomes)h(a)g(little)g Fm(plan)g Fx(of)f(what)g(to)f(do)i(for)f(eac)o(h)g +(kind)114 497 y(of)e(request)i(that)e(it)i(receiv)o(es)p Fn(:)8 +b(:)g(:)g(:)182 553 y Fx(Ka)o(y)16 b(prop)q(osed)h(a)f(language)h(called)h +(SMALL)l(T)l(ALK)h(with)e(a)f(tok)o(en)g(stream)g(orien)o(ted)h(in)o(ter-)114 +610 y(preter)e(to)f(implemen)o(t)j(these)e(ideas)p Fn(:)8 b(:)g(:)g(:)182 +666 y Fx([A)o(t)j(that)g(time,])i(P)o(eter)e(Bishop)i(and)g(Carl)f(Hewitt)g +(w)o(ere)g(w)o(orking)f(to)h(try)f(to)h(obtain)g(a)g(general)114 +723 y(solution)k(to)g(the)g(con)o(trol)f(structure)h(problems)h(whic)o(h)f +(had)g(con)o(tin)o(ued)h(to)f(plague)g(PLANNER-)114 779 y(lik)o(e)f(problem)f +(solving)h(systems)e(for)g(some)g(y)o(ears.)19 b(Sussman)14 +b(had)g(prop)q(osed)g(a)f(solution)i(orien)o(ted)114 835 y(around)10 +b(\\p)q(ossibilit)o(y)i(lists")f(whic)o(h)g(w)o(e)e(felt)i(had)f(v)o(ery)g +(serious)h(w)o(eaknesses)p Fn(:)d(:)g(:)g(:)f Fx(Simply)12 +b(lo)q(oking)f(at)114 892 y(their)h(con)o(ten)o(ts)e(using)i +Fw(try-next)f Fx(can)g(cause)h(unfortunate)f(global)h(side-e\013ects)g +Fn(:)c(:)g(:)17 b Fx([whic)o(h])12 b(mak)o(e)114 948 y(Conniv)o(er)g +(programs)g(hard)g(to)g(debug)h(and)g(understand.)19 b(The)13 +b(tok)o(en)f(streams)f(of)h(SMALL)l(T)l(ALK)114 1005 y(ha)o(v)o(e)h(the)h +(same)g(side-e\013ect)h(problem)g(as)e(the)i(p)q(ossibilit)o(y)h(lists)f(of)e +(Conniv)o(er.)20 b(After)14 b(the)g(lecture,)114 1061 y(Hewitt)h(p)q(oin)o +(ted)i(out)e(to)g(Ka)o(y)g(the)h(con)o(trol)f(structure)g(problems)i(in)o(v)o +(olv)o(ed)f(in)g(his)h(sc)o(heme)f(for)f(a)114 1118 y(tok)o(en)f(stream)h +(orien)o(ted)g(in)o(terpreter.)182 1174 y(By)30 b(Decem)o(b)q(er)g(1972,)i(w) +o(e)d(succeeded)j(in)e(generalizing)i(the)e(message)f(mec)o(hanism)i(of)114 +1231 y(SMALL)l(T)l(ALK)19 b(and)f(SIMULA-67;)h(the)e(p)q(ort)g(mec)o(hanism)i +(of)e(Krutar,)g(Balzer,)h(and)g(Mitc)o(hell;)114 1287 y(and)11 +b(the)f(previous)i(CALL)f(statemen)o(t)f(of)h(PLANNER-71)g(to)f(a)h(univ)o +(ersal)g(comm)o(unication)h(mec)o(h-)114 1344 y(anism.)18 b(Our)11 +b(generalization)h(solv)o(ed)g(the)e(con)o(trol)h(structure)f(problems)h +(that)f(Hewitt)h(p)q(oin)o(ted)h(out)114 1400 y(to)e(Ka)o(y)i(in)g(the)f +(design)i(of)e(SMALL)l(T)l(ALK.)h(W)l(e)g(dev)o(elop)q(ed)h(the)f(actor)e +(transmission)i(comm)o(unica-)114 1456 y(tion)h(primitiv)o(e)i(as)e(part)f +(of)h(a)g(new)h(language-indep)q(enden)o(t,)i(mac)o(hine-indep)q(ende)q(n)o +(t,)f(b)q(eha)o(vioral)114 1513 y(mo)q(del)20 b(of)f(computation.)33 +b(The)20 b(dev)o(elopmen)o(t)g(of)f(the)h(actor)e(mo)q(del)j(of)e +(computation)g(and)h(its)114 1569 y(rami\014cations)15 b(is)h(our)f +(principal)i(original)g(con)o(tribution)f(to)e(this)i(area)e(of)h(researc)o +(h)p Fn(:)8 b(:)g(:)g(:)182 1626 y Fx(The)18 b(follo)o(wing)i(w)o(ere)e(the)g +(main)h(in\015uences)i(on)d(the)g(dev)o(elopmen)o(t)h(of)f(the)h(actor)e(mo)q +(del)j(of)114 1682 y(computation:)168 1754 y Fk(\017)j Fx(The)c(suggestion)h +(b)o(y)f([Alan])h(Ka)o(y)f(that)g(pro)q(cedural)h(em)o(b)q(edding)h(b)q(e)g +(extended)f(to)f(co)o(v)o(er)214 1810 y(data)c(structures)g(in)h(the)g(con)o +(text)f(of)g(our)g(previous)i(attempts)d(to)h(generalize)i(the)f(w)o(ork)e(b) +o(y)214 1866 y(Ch)o(urc)o(h,)g(Landin,)j(Ev)m(ans,)e(and)g(Reynolds)i(on)e +(\\functional)h(data)f(structures.")168 1932 y Fk(\017)23 b +Fx(The)11 b(con)o(text)h(of)f(our)g(previous)h(attempts)f(to)g(clean)i(up)f +(and)f(generalize)j(the)d(w)o(ork)g(on)g(corou-)214 1988 y(tine)22 +b(con)o(trol)f(structures)g(of)g(Landin,)j(Mitc)o(hell,)g(Krutar,)e(Balzer,)h +(Reynolds,)h(Bobro)o(w-)214 2045 y(W)l(egbreit,)15 b(and)g(Sussman.)168 +2110 y Fk(\017)23 b Fx(The)h(in\015uence)i(of)d(Seymour)h(P)o(ap)q(ert's)f +(\\little)i(man")f(metaphor)f(for)h(computation)f(in)214 2166 +y(LOGO.)168 2231 y Fk(\017)g Fx(The)c(limitations)i(and)f(complexities)h(of)e +(capabilit)o(y-based)i(protection)f(sc)o(hemes.)33 b(Ev)o(ery)214 +2288 y(actor)12 b(transmission)h(is)h(in)g(e\013ect)f(an)g(in)o(ter-domain)h +(call)h(e\016cien)o(tly)f(pro)o(viding)g(an)g(in)o(trinsic)214 +2344 y(protection)h(on)g(actor)f(mac)o(hines.)168 2410 y Fk(\017)23 +b Fx(The)g(exp)q(erience)i(dev)o(eloping)g(previous)f(generations)f(of)g +(PLANNER.)h(Essen)o(tially)g(the)214 2466 y(whole)17 b(PLANNER-71)g(language) +g(\(together)e(with)i(some)f(extensions\))h(w)o(as)f(implemen)o(ted)214 +2522 y(b)o(y)f(Julian)i(Da)o(vies)e(in)h(POP-2)f(at)g(the)g(Univ)o(ersit)o(y) +h(of)f(Edin)o(burgh.)114 2594 y(In)k(terms)g(of)f(the)h(actor)f(mo)q(del)i +(of)e(computation,)i(con)o(trol)e(structure)h(is)h(simply)g(a)e(pattern)h(of) +114 2650 y(passing)d(messages)p Fn(:)8 b(:)g(:)g(:)k Fx(Actor)j(con)o(trol)h +(structure)f(has)h(the)f(follo)o(wing)i(adv)m(an)o(tages)e(o)o(v)o(er)g(that) +g(of)114 2707 y(Conniv)o(er:)p eop +%%Page: 64 64 +64 63 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(64)168 45 y Fk(\017)23 b Fx(A)d(serious)h(problem)g(with)g(the)g +(Conniv)o(er)g(approac)o(h)f(to)g(con)o(trol)g(structure)g(is)h(that)f(the) +214 102 y(programmer)c(\(whether)i(h)o(uman)g(or)g(mac)o(hine\))g(m)o(ust)f +(think)i(in)g(terms)e(of)h(lo)o(w)g(lev)o(el)h(data)214 158 +y(structures)11 b(suc)o(h)g(as)g(activ)m(ation)h(records)g(or)f(p)q +(ossibilit)o(y)i(links.)20 b(The)12 b(actor)e(approac)o(h)h(allo)o(ws)214 +214 y(the)k(programmer)g(to)g(think)h(in)h(terms)e(of)g(the)h(b)q(eha)o(vior) +g(of)g(ob)s(jects)f(that)g(naturally)h(o)q(ccur)214 271 y(in)g(the)f(domain)h +(b)q(eing)g(programmed)p Fn(:)8 b(:)g(:)g(:)168 344 y Fk(\017)23 +b Fx(Actor)14 b(transmission)i(is)g(en)o(tirely)g(free)f(of)g(side-e\013ects) +p Fn(:)8 b(:)g(:)g(:)168 417 y Fk(\017)23 b Fx(The)16 b(con)o(trol)f(mec)o +(hanisms)i(of)e(Conniv)o(er)h(violate)h(principles)h(of)d(mo)q(dularit)o(y)p +Fn(:)8 b(:)g(:)g(:)14 b Fx(Dijkstra)214 473 y(has)c(remark)o(ed)g(that)g(the) +g(use)h(of)f(the)g Fw(goto)g Fx(is)h(asso)q(ciated)g(with)f(badly)h +(structured)g(programs.)214 530 y(W)l(e)22 b(concur)h(in)g(this)f(judgemen)o +(t)h(but)f(feel)h(that)f(the)g(reason)g(is)g(that)g(the)g Fw(goto)g +Fx(is)h(not)214 586 y(a)c(su\016cien)o(tly)h(p)q(o)o(w)o(erful)g(primitiv)o +(e.)33 b(The)19 b(problem)h(with)g(the)f Fw(goto)g Fx(is)g(that)g(a)g +(message)214 643 y(cannot)c(b)q(e)g(sen)o(t)g(along)h(with)f(con)o(trol)g(to) +g(the)g(target)p Fn(:)8 b(:)g(:)f(:)168 716 y Fk(\017)23 b +Fx(Because)12 b(of)g(its)g(primitiv)o(e)i(con)o(trol)e(structures,)g(Conniv)o +(er)g(programs)f(are)h(di\016cult)i(to)d(write)214 772 y(and)21 +b(debug)p Fn(:)8 b(:)g(:)g(:)19 b Fx(Conniv)o(er)j(programs)e(are)h(prone)g +(to)g(going)g(in)o(to)g(in\014nite)i(lo)q(ops)f(for)e(no)214 +829 y(reason)14 b(that)h(is)h(v)o(ery)e(apparen)o(t)h(to)g(the)g(programmer.) +114 904 y(Nev)o(ertheless)c(Conniv)o(er)h(represen)o(ts)f(a)f(substan)o(tial) +i(adv)m(ance)f(o)o(v)o(er)f(Micro-Planner)i(in)g(increasing)114 +960 y(the)19 b(generalit)o(y)g(of)f(goal-orien)o(ted)i(computations)e(that)g +(can)h(b)q(e)h(easily)g(p)q(erformed.)31 b(Ho)o(w)o(ev)o(er,)114 +1017 y(this)19 b(increase)g(in)h(generalit)o(y)f(comes)f(at)g(the)h(price)g +(of)g(lo)o(w)o(ering)f(the)h(lev)o(el)h(of)e(the)h(language)g(of)114 +1073 y(problem)i(solving.)35 b(It)21 b(forces)e(users)i(to)e(think)i(in)g(lo) +o(w)f(lev)o(el)i(implemen)o(tation)g(terms)d(suc)o(h)i(as)114 +1130 y(\\p)q(ossibilit)o(y)15 b(lists")g(and)f(\\a-links.")20 +b(W)l(e)14 b(prop)q(ose)g(a)f(shift)h(in)h(the)f(paradigm)g(of)f(problem)h +(solving)114 1186 y(to)g(b)q(e)i(one)f(of)g(a)g(so)q(ciet)o(y)h(of)e +(individual)q(s)k(comm)o(unicating)e(b)o(y)f(passing)g(messages.)0 +1259 y(W)l(e)g(ha)o(v)o(e)g(quoted)f(Smith)i(and)f(Hewitt)g(at)f(length)i +(for)e(three)h(reasons:)k(b)q(ecause)d(their)g(comparativ)o(e)e(analysis)0 +1316 y(is)g(v)o(ery)e(explicit;)k(b)q(ecause)e(the)f(passage)g(illustrates)h +(the)g(man)o(y)e(connections)i(among)f(di\013eren)o(t)g(ideas)h(\015oating)0 +1372 y(around)g(in)g(the)g(AI,)f(Lisp,)i(and)f(other)f(programming)g +(language)h(comm)o(unities;)h(and)f(b)q(ecause)g(this)g(particular)0 +1429 y(p)q(oin)o(t)h(in)h(the)f(ev)o(olution)h(of)e(ideas)i(represen)o(ted)f +(a)g(distillation)i(that)d(so)q(on)h(fed)g(bac)o(k)g(quic)o(kly)h(and)f(p)q +(o)o(w)o(erfully)0 1485 y(in)o(to)g(the)g(ev)o(olution)h(of)f(Lisp)i(itself.) +j(\(F)l(or)15 b(a)f(more)h(recen)o(t)g(p)q(ersp)q(ectiv)o(e,)i(see)e +([Hewitt,)g(1991].\))71 1542 y(Hewitt)e(and)h(his)h(studen)o(ts)e(\(notably)h +(Ho)o(wie)g(Shrob)q(e,)g(Brian)h(Smith,)f(T)l(o)q(dd)g(Matson,)f(Roger)g +(Hale,)h(P)o(eter)0 1598 y(Bishop,)23 b(Marilyn)e(McLennan,)i(Russ)f(A)o +(tkinson,)g(Mik)o(e)f(F)l(reiling,)i(Ken)f(Kahn,)g(Keith)g(Nishihara,)h(Kath) +o(y)0 1654 y(V)l(an)f(San)o(t,)i(Aki)e(Y)l(oniza)o(w)o(a,)i(Benjamin)f(Kuip)q +(ers,)i(Ric)o(hard)e(Stieger,)h(and)e(Irene)h(Greif)t(\))f(dev)o(elop)q(ed)i +(and)0 1711 y(implemen)o(ted)18 b(in)f(MacLisp)g(a)f(new)g(language)h(to)f +(mak)o(e)f(concrete)i(the)f(actor)f(mo)q(del)j(of)d(computation.)23 +b(This)0 1767 y(language)17 b(w)o(as)f(\014rst)g(called)j(Planner-73)e(but)g +(the)f(name)h(w)o(as)f(later)h(c)o(hanged)g(to)f(PLASMA)h(\(PLAnner-lik)o(e)0 +1824 y(System)e(Mo)q(deled)h(on)g(Actors\))e([Smith,)h(1975;)f(Hewitt,)g +(1975].)71 1880 y(While)g(the)g(syn)o(tax)e(of)h(PLASMA)h(w)o(as)f +(recognizably)h(Lisp-lik)o(e,)i(it)e(made)f(use)h(of)f(sev)o(eral)g(kinds)i +(of)e(paren-)0 1937 y(theses)k(and)g(brac)o(k)o(ets)f(\(as)g(did)i(Muddle\))f +(as)g(w)o(ell)g(as)g(man)o(y)f(other)g(sp)q(ecial)j(c)o(haracters.)k(It)17 +b(is)g(reasonable)h(to)0 1993 y(assume)e(that)e(Hewitt)i(w)o(as)f(tempted)h +(b)o(y)f(the)h(p)q(ossibilities)j(of)c(the)h(then)g(newly)g(a)o(v)m(ailable)i +(Knigh)o(t)e(k)o(eyb)q(oard)0 2050 y(and)f(Xero)o(x)g(Graphics)g(Prin)o(ter)g +(\(X)o(GP\))f(prin)o(ter.)20 b(\(The)15 b(k)o(eyb)q(oards,)f(designed)i(b)o +(y)f(T)l(om)g(Knigh)o(t)h(of)e(the)h(MIT)0 2106 y(AI)h(Lab,)g(w)o(ere)g(the)g +(MIT)g(equiv)m(alen)o(t)h(of)f(the)g(extended-ASCI)q(I)i(k)o(eyb)q(oards)e +(dev)o(elop)q(ed)i(y)o(ears)d(earlier)i(at)e(the)0 2163 y(Stanford)j(AI)g +(Lab)q(oratory)l(.)29 b(Lik)o(e)19 b(the)f(Stanford)g(k)o(eyb)q(oards,)g +(Knigh)o(t)h(k)o(eyb)q(oards)f(had)h(Con)o(trol)e(and)i(Meta)0 +2219 y(k)o(eys)14 b(\(whic)o(h)g(w)o(ere)f(so)q(on)h(pressed)g(in)o(to)g +(service)h(in)g(the)e(dev)o(elopmen)o(t)i(of)e(the)h(command)g(set)f(for)h +(the)f(EMA)o(CS)0 2275 y(text)j(editor\))g(and)g(a)g(set)g(of)f(graphics)i +(that)e(included)k(suc)o(h)d(exotic)h(c)o(haracters)e(as)h +Fn(\013)p Fx(,)g Fn(\014)r Fx(,)g(and)g Fk(\021)p Fx(.)23 b(The)17 +b(X)o(GP)l(,)0 2332 y(at)d(200)g(dots)g(p)q(er)i(inc)o(h,)f(made)g(p)q +(ossible)i(the)d(prin)o(ting)i(of)f(suc)o(h)g(exotic)g(c)o(haracters.\))j +(The)d(recursiv)o(e)h(factorial)0 2388 y(function)g(lo)q(ok)o(ed)g(lik)o(e)g +(this)g(in)g(PLASMA:)0 2482 y Fw([factorial)262 2474 y(-)262 +2491 y(-)262 2482 y(-)72 2539 y(\(cases)143 2595 y(\()167 2587 +y(-)167 2603 y(-)167 2595 y(->)24 b([0])f(1\))143 2652 y(\()167 +2643 y(-)167 2660 y(-)167 2652 y(->)h([=n])f(\(n)h(*)f(\(factorial)g(\(n)g(-) +h(1\)\)\)\)\)])p eop +%%Page: 65 65 +65 64 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(65)0 45 y(Note)13 b(the)g(use)g(of)f(in\014x)i(arithmetic)g(op)q +(erators.)k(This)13 b(w)o(as)g(not)f(merely)i(clev)o(er)f(syn)o(tax,)g(but)g +(clev)o(er)g(seman)o(tics;)0 102 y Fw(\(n)24 b(-)f(1\))17 b +Fx(really)h(mean)o(t)f(that)g(a)g(message)f(con)o(taining)i(the)g +(subtraction)f(op)q(erator)f(and)i(the)f(n)o(um)o(b)q(er)h(1)f(w)o(as)0 +158 y(to)e(b)q(e)g(sen)o(t)g(to)g(the)g(n)o(um)o(b)q(er/actor/ob)s(ject)f +(named)h(b)o(y)g Fw(n)p Fx(.)71 214 y(One)e(ma)o(y)f(argue)h(that)f(Lisp)i +(dev)o(elopmen)o(t)f(at)f(MIT)h(to)q(ok)f(t)o(w)o(o)g(distinct)i(paths)e +(during)i(the)f(1970's.)k(In)d(the)0 271 y(\014rst)k(path,)g(MacLisp)h(w)o +(as)f(the)g(w)o(orkhorse)f(to)q(ol,)i(co)q(ded)g(in)g(assem)o(bly)f(language) +h(for)e(maxim)o(um)h(e\016ciency)0 327 y(and)d(compactness,)g(serving)g(the)h +(needs)f(of)g(the)g(AI)h(Lab)q(oratory)e(and)h(the)g(MA)o(CSYMA)g(group.)k +(The)c(second)0 384 y(path)h(consisted)g(of)f(an)h(extended)h(dialogue/comp)q +(etition/argumen)o(t)f(b)q(et)o(w)o(een)h(Hewitt)e(\(and)h(his)g(studen)o +(ts\))0 440 y(and)h(Sussman)f(\(and)h(his)g(studen)o(ts\),)f(with)h(b)q(oth)g +(sides)g(dra)o(wing)g(in)g(ideas)g(from)f(the)g(rest)h(of)f(the)g(w)o(orld)h +(and)0 497 y(spinning)d(some)d(o\013)g(as)g(w)o(ell.)20 b(This)12 +b(second)h(path)e(w)o(as)g(c)o(haracterized)i(b)o(y)e(a)h(quest)g(for)f +(\\the)g(righ)o(t)h(thing")g(where)0 553 y(eac)o(h)h(new)h(set)e(of)h(ideas)h +(w)o(as)e(exempli\014ed)k(in)e(the)f(form)f(of)h(a)g(new)g(language,)g +(usually)i(implemen)o(ted)g(on)e(top)f(of)0 610 y(a)j(Lisp-lik)o(e)j +(language)d(\(MacLisp)h(or)e(Muddle\))i(for)f(the)g(sak)o(e)g(of)g(rapid)h +(protot)o(yping)e(and)i(exp)q(erimen)o(tation.)71 666 y(The)d(next)g(round)g +(in)h(the)f(Hewitt/Sussman)g(dialogue)h(w)o(as,)e(of)g(course,)h(Sc)o(heme)h +(\(as)e(discussed)j(in)e(section)0 723 y(2.8\);)19 b(in)h(hindsigh)o(t,)h(w)o +(e)d(observ)o(e)h(that)f(this)h(dev)o(elopmen)o(t)h(seems)f(to)f(ha)o(v)o(e)h +(ended)h(the)f(dialogue,)h(p)q(erhaps)0 779 y(b)q(ecause)g(it)f(brough)o(t)f +(the)h(en)o(tire)g(path)g(of)f(exploration)i(full)g(circle.)32 +b(Starting)19 b(from)f(Lisp,)j(they)e(sough)o(t)f(to)0 835 +y(explicate)h(issues)f(of)f(searc)o(h,)g(of)g(con)o(trol)g(structures,)h(of)f +(mo)q(dels)h(of)f(computation,)g(and)h(\014nally)h(came)e(bac)o(k)0 +892 y(simply)f(to)e(go)q(o)q(d)g(old)i(Lisp,)f(but)g(with)g(a)f +(di\013erence:)21 b(lexical)c(scoping|closures,)f(in)f(short|w)o(ere)g +(needed)h(to)0 948 y(mak)o(e)c(Lisp)i(compatible)g(with)f(the)f(lam)o(b)q(da) +h(calculus)i(not)d(merely)h(in)g(syn)o(tax)f(but)h(also)g(in)g(seman)o(tics,) +g(thereb)o(y)0 1005 y(connecting)18 b(it)f(\014rmly)g(with)g(v)m(arious)g +(dev)o(elopmen)o(ts)h(in)f(mathematical)g(logic)g(and)g(pa)o(ving)g(the)g(w)o +(a)o(y)f(for)g(the)0 1061 y(Lisp)g(comm)o(unit)o(y)f(to)g(in)o(teract)g(with) +h(dev)o(elopmen)o(ts)f(in)h(functional)h(programming.)71 1118 +y(Hewitt)12 b(had)h(noted)g(that)e(the)i(actor)f(mo)q(del)h(could)h(capture)e +(the)h(salien)o(t)g(asp)q(ects)g(of)f(the)h(lam)o(b)q(da)g(calculus;)0 +1174 y(Sc)o(heme)i(demonstrated)g(that)f(the)g(lam)o(b)q(da)h(calculus)i +(captured)e(nearly)g(all)h(salien)o(t)f(asp)q(ects)g(\(excepting)g(only)0 +1231 y(side)h(e\013ects)f(and)g(sync)o(hronization\))h(of)f(the)g(actor)g(mo) +q(del.)71 1287 y(Sussman)f(and)g(Steele)h(b)q(egan)g(to)e(lo)q(ok)i(fairly)f +(in)o(tensely)i(at)d(the)i(seman)o(tics)f(of)g(Lisp-lik)o(e)i(as)e(w)o(ell)h +(as)f(actor-)0 1344 y(based)21 b(languages)g(in)h(this)g(new)f(ligh)o(t.)38 +b(Sc)o(heme)21 b(w)o(as)f(so)h(m)o(uc)o(h)g(simpler)h(ev)o(en)f(than)g(Lisp)h +(1.5,)g(once)f(one)0 1400 y(accepted)e(the)f(o)o(v)o(erheads)g(of)g(main)o +(taining)h(lexical)h(en)o(vironmen)o(ts)f(and)f(closures,)i(that)d(one)i +(could)g(write)f(a)0 1456 y(complete)h(in)o(terpreter)f(for)f(it)h(in)h(Lisp) +g(on)f(a)g(single)h(sheet)f(of)f(pap)q(er)i(\(or)e(in)i(t)o(w)o(o)d(30-line)j +(screenfuls\).)29 b(This)0 1513 y(allo)o(w)o(ed)14 b(for)e(extremely)i(rapid) +g(exp)q(erimen)o(tation)h(with)e(language)h(and)f(implemen)o(tation)i(ideas;) +f(at)f(one)g(p)q(oin)o(t)0 1569 y(Sussman)j(and)g(Steele)g(w)o(ere)g(testing) +f(and)h(measuring)g(as)f(man)o(y)g(as)g(ten)h(new)g(in)o(terpreters)g(a)f(w)o +(eek.)21 b(Some)15 b(of)0 1626 y(their)i(results)f(w)o(ere)h(summarized)g(in) +g Fm(The)g(A)o(rt)g(of)g(the)h(Interpr)n(eter)d Fx([Steele,)i(1978b].)22 +b(A)17 b(particular)g(p)q(oin)o(t)f(of)0 1682 y(in)o(terest)e(w)o(as)g +(comparison)h(of)f(call-b)o(y-name)i(and)e(call-b)o(y-v)m(alue)j(parameters;) +d(in)h(this)g(they)f(w)o(ere)h(in\015uenced)0 1739 y(b)o(y)j(w)o(ork)e(at)h +(Indiana)i(Univ)o(ersit)o(y)g(discussed)g(in)g(the)e(pap)q(er)h +Fm(CONS)g(Should)h(Not)f(Evaluate)h(Its)f(A)o(r)n(guments)0 +1795 y Fx([F)l(riedman,)d(1975].)71 1852 y(Besides)f(b)q(eing)g(itself)g +(susceptible)g(to)f(rapid)g(m)o(utation,)g(Sc)o(heme)g(has)g(also)g(serv)o +(ed)f(as)h(an)g(implemen)o(tation)0 1908 y(base)j(for)e(rapid)i(protot)o +(yping)f(of)g(y)o(et)g(other)g(languages.)21 b(One)16 b(p)q(opular)h(tec)o +(hnique)g(among)d(theoreticians)j(for)0 1965 y(formally)e(describing)i(the)d +(meaning)i(of)e(a)g(language)h(is)h(to)e(giv)o(e)h(a)f(denotational)h(seman)o +(tics,)g(whic)o(h)g(describ)q(es)0 2021 y(the)h(meaning)g(of)f(eac)o(h)h +(construct)f(in)h(terms)g(of)f(its)g(parts)g(and)h(their)g(relationships;)h +(lam)o(b)q(da)f(calculus)i(is)e(the)0 2077 y(glue)g(of)f(this)g(notation.)71 +2134 y(While)j(Sc)o(heme)g(sho)o(w)o(ed)f(that)f(a)h(prop)q(erly)h(designed)g +(Lisp)h(ga)o(v)o(e)d(one)h(all)h(the)f(\015exibilit)o(y)j(\(if)d(not)g(all)h +(the)0 2190 y(syn)o(tax\))d(one)h(needed)h(in)g(managing)f(con)o(trol)g +(structure)f(and)h(message-passing,)g(it)h(did)g(not)e(solv)o(e)h(the)g +(other)0 2247 y(goal)h(of)g(the)g(dev)o(elopmen)o(t)h(of)e(Lisp-based)j(AI)f +(languages:)24 b(the)17 b(automatic)g(managemen)o(t)f(of)h(goal-directed)0 +2303 y(searc)o(h)h(or)g(of)g(theorem)g(pro)o(ving.)29 b(After)18 +b(Sc)o(heme,)i(a)e(few)g(new)h(Lisp-based)h(languages)e(w)o(ere)g(dev)o(elop) +q(ed)i(in)0 2360 y(this)e(direction)g(b)o(y)f(Sussman)h(and)f(his)h(studen)o +(ts,)f(includin)q(g)j(constrain)o(t-based)d(systems)g([Sussman,)g(1975a;)0 +2416 y(Stallman,)j(1976;)e(Steele,)i(1979;)e(de)h(Kleer,)i(1978b])c(and)j +(truth)e(main)o(tenance)i(systems)e([de)h(Kleer,)i(1978a;)0 +2473 y(McAllester,)15 b(1978])d(based)i(on)f(non-monotonic)h(logic.)20 +b(The)14 b(tec)o(hnique)h(of)f(dep)q(endency-directed)j(bac)o(ktrac)o(k-)0 +2529 y(ing)g(eliminated)h(the)e(\\gian)o(t)f(nest)i(of)e(F)o(ORALL)i(lo)q +(ops")g(e\013ect)f(of)f(c)o(hronological)i(bac)o(ktrac)o(king.)22 +b(Ov)o(er)17 b(time)0 2586 y(this)h(line)g(of)f(researc)o(h)g(b)q(ecame)h +(more)e(of)h(a)g(database)g(design)h(problem)f(than)g(a)g(language)h(design)g +(problem,)0 2642 y(and)d(has)g(not)g(y)o(et)g(resulted)h(in)g(feedbac)o(k)g +(to)e(the)i(mainstream)e(ev)o(olution)i(of)f(Lisp.)p eop +%%Page: 66 66 +66 65 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(66)71 45 y(Dev)o(elopmen)o(t)17 b(of)f(languages)h(for)f +(arti\014cial)i(in)o(telligence)i(applications)f(con)o(tin)o(ued)e(at)g +(other)f(sites,)h(ho)o(w-)0 102 y(ev)o(er,)e(and)h(Lisp)h(has)e(remained)i +(the)f(v)o(ehicle)h(of)e(c)o(hoice)i(for)e(implemen)o(ting)j(them.)j(During) +16 b(the)g(early)g(1980's)0 158 y(C)d(b)q(ecame)g(the)g(alternativ)o(e)g(of)f +(c)o(hoice)i(for)e(a)h(while,)h(esp)q(ecially)i(where)d(e\016ciency)h(w)o(as) +e(a)h(ma)s(jor)e(concern.)20 b(Im-)0 214 y(pro)o(v)o(emen)o(ts)14 +b(in)h(Lisp)h(implemen)o(tation)g(tec)o(hniques,)f(particularly)h(in)f +(compilation)h(and)f(garbage)f(collection,)0 271 y(ha)o(v)o(e)h(swung)g(that) +f(particular)i(p)q(endulum)i(bac)o(k)d(a)g(bit.)71 327 y(During)h(the)g(AI)g +(b)q(o)q(om)g(of)f(the)h(early)g(1980's,)e(\\exp)q(ert)i(systems")f(w)o(as)g +(the)h(buzzw)o(ord;)g(this)h(w)o(as)e(usually)0 384 y(understo)q(o)q(d)j(to)e +(mean)i(rule-based)g(systems)f(written)g(in)h(languages)g(sup)q(er\014cially) +i(not)c(v)o(ery)h(di\013eren)o(t)h(from)0 440 y(METEOR)e(or)e(CONVER)l(T.)i +(OPS5)g(w)o(as)e(one)i(of)f(the)g(b)q(etter-kno)o(wn)h(rule-based)h +(languages)e(of)g(this)h(p)q(erio)q(d;)0 497 y(X)o(CON)d(\(an)g(exp)q(ert)h +(system)f(for)g(con\014guring)h(V)-5 b(AX)13 b(installations,)i(dev)o(elop)q +(ed)g(b)o(y)e(Carnegie-Mellon)i(Univ)o(er-)0 553 y(sit)o(y)g(for)g(Digital)h +(Equipmen)o(t)h(Corp)q(oration\))d(w)o(as)h(its)h(premier)g(application)h +(success)f(story)l(.)k(OPS5)c(w)o(as)e(\014rst)0 610 y(implemen)o(ted)k(in)g +(Lisp;)g(later)e(it)h(w)o(as)e(reco)q(ded)j(for)e(e\016ciency)i(in)f(BLISS)h +([W)l(ulf,)f(1971])e(\(a)h(CMU-dev)o(elop)q(ed)0 666 y(and)f(DEC-supp)q +(orted)h(systems)e(implemen)o(tation)j(language)e(at)g(ab)q(out)g(the)g(same) +g(seman)o(tic)h(lev)o(el)g(as)f(C\).)71 723 y(Another)22 b(imp)q(ortan)o(t)h +(category)e(of)i(AI)g(languagess)g(w)o(as)f(frame-based;)k(a)c(go)q(o)q(d)h +(example)h(w)o(as)e(KRL)0 779 y(\(Kno)o(wledge)16 b(Represen)o(tation)g +(Language\),)e(whic)o(h)i(w)o(as)f(implemen)o(ted)h(in)g(In)o(terlisp.)71 +835 y(Another)e(line)i(of)d(exp)q(erimen)o(tation)j(in)f(Lisp)g(is)g(in)g +(the)f(area)g(of)g(parallelism.)21 b(While)16 b(early)e(dev)o(elopmen)o(ts)0 +892 y(included)j(facilities)f(for)d(in)o(terrupt)h(handling)i(and)e(m)o +(ultiprogramming,)g(true)f(m)o(ultipro)q(cessing)j(ev)o(olv)o(ed)e(only)0 +948 y(with)k(the)g(a)o(v)m(ailabilit)o(y)h(of)e(appropriate)h(hardw)o(are)f +(facilities)i(\(in)f(some)g(cases)f(built)i(for)e(the)h(purp)q(ose\).)27 +b(S-1)0 1005 y(Lisp)21 b([Bro)q(oks,)e(1982a])e(w)o(as)i(designed)i(to)e(use) +g(the)h(m)o(ultiple)h(pro)q(cessors)e(of)g(an)g(S-1)h(system,)g(but)f(\(lik)o +(e)h(so)0 1061 y(man)o(y)15 b(other)f(features)h(of)g(S-1)g(Lisp\))h(that)e +(part)h(nev)o(er)g(really)h(w)o(ork)o(ed.)j(Some)c(of)g(the)g(most)f(imp)q +(ortan)o(t)h(early)0 1118 y(\\real")g(parallel)i(Lisp)f(implemen)o(tations)h +(w)o(ere)d(Multilisp,)j(Qlisp,)g(and)e(Butter\015y)h(PSL.)71 +1174 y(Multilisp)j([Halstead,)f(1984;)e(Halstead,)i(1985])e(w)o(as)g(the)i(w) +o(ork)e(of)h(Bert)h(Halstead)f(and)h(his)g(studen)o(ts)g(at)0 +1231 y(MIT.)g(Based)h(on)g(Sc)o(heme,)h(it)f(relied)h(primarily)g(on)f(the)g +(notion)g(of)f(a)h Fm(futur)n(e)p Fx(,)h(whic)o(h)f(is)g(a)g(sort)f(of)g +(laundry)0 1287 y(tic)o(k)o(et,)12 b(a)g(promise)g(to)f(deliv)o(er)j(a)d(v)m +(alue)j(later)e(once)g(it)g(has)g(b)q(een)h(computed.)19 b(Multilisp)14 +b(also)e(pro)o(vided)h(a)f Fw(pcall)0 1344 y Fx(construct,)17 +b(essen)o(tially)i(a)f(function)g(call)h(that)e(ev)m(aluates)h(the)g(argumen) +o(ts)e(concurren)o(tly)j(\(and)e(completely\))0 1400 y(b)q(efore)23 +b(in)o(v)o(oking)g(the)f(function.)42 b(Th)o(us)23 b Fw(pcall)e +Fx(pro)o(vides)i(a)f(certain)h(structured)f(discipli)q(ne)j(for)d(the)h(use)0 +1456 y(of)d(futures)g(that)f(is)i(adequate)f(for)g(man)o(y)g(purp)q(oses.)35 +b(Multilisp)22 b(ran)e(on)g(the)h(Concert)f(m)o(ultipro)q(cessor,)h(a)0 +1513 y(collection)i(of)d(32)h(Motorola)e(68000)h(pro)q(cessors.)36 +b(MultiSc)o(heme,)24 b(a)d(descendan)o(t)g(of)g(Multilisp,)j(w)o(as)c(later)0 +1569 y(implemen)o(ted)d(for)e(the)g(BBN)g(Butter\015y)h([Miller,)g(1987].)71 +1626 y(Butter\015y)f(PSL)h([Sw)o(anson,)e(1988])g(w)o(as)g(an)i(implemen)o +(tation)g(of)f(P)o(ortable)g(Standard)g(Lisp)i([Griss,)d(1982])0 +1682 y(on)h(the)g(BBN)h(Butter\015y)l(.)k(It)15 b(also)h(relied)g(en)o +(tirely)h(on)e(futures)g(for)g(the)g(spa)o(wning)g(of)g(parallel)i(pro)q +(cesses.)71 1739 y(Qlisp)g([Gabriel,)f(1984b;)e(Goldman,)h(1988])g(w)o(as)f +(dev)o(elop)q(ed)k(b)o(y)d(Ric)o(hard)i(Gabriel)f(and)g(John)g(McCarth)o(y)0 +1795 y(at)g(Stanford.)24 b(It)17 b(extended)g(Common)f(Lisp)i(with)f(a)f(n)o +(um)o(b)q(er)h(of)g(parallel)h(con)o(trol)e(structures)g(that)g(parallel)0 +1852 y(\(pun)c(in)o(tended\))i(existing)f(Common)e(Lisp)i(con)o(trol)f +(constructs,)g(notably)g Fw(qlet)p Fx(,)g Fw(qlambda)p Fx(,)f(and)i +Fw(qcatch)p Fx(.)18 b(The)0 1908 y(computational)e(mo)q(del)g(in)o(v)o(olv)o +(ed)g(a)f(global)h(queue)g(of)f(pro)q(cesses)g(and)h(a)f(means)g(of)g(spa)o +(wning)g(pro)q(cesses)h(and)0 1965 y(con)o(trolling)f(their)f(in)o(teraction) +g(and)g(resource)g(consumption.)20 b(F)l(or)13 b(example,)i +Fw(qlambda)d Fx(could)j(pro)q(duce)g(three)0 2021 y(kinds)f(of)f(functions:) +20 b(normal)13 b(ones,)g(as)g(pro)q(duced)h(b)o(y)f Fw(lambda)p +Fx(;)g(eager)g(ones,)g(whic)o(h)h(w)o(ould)g(spa)o(wn)f(a)f(separate)0 +2077 y(pro)q(cess)g(when)g(created;)g(and)g(dela)o(y)o(ed)g(ones,)g(whic)o(h) +h(w)o(ould)f(spa)o(wn)f(a)g(separate)g(pro)q(cess)h(when)g(in)o(v)o(ok)o(ed.) +19 b(Qlisp)0 2134 y(w)o(as)14 b(implemen)o(ted)j(on)e(the)h(Allian)o(t)g(FX8) +f(and)g(w)o(as)g(the)g(\014rst)g(compiled)i(parallel)f(Lisp)h(implemen)o +(tation.)71 2190 y(Connection)i(Mac)o(hine)h(Lisp)g([Steele,)g(1986])d(w)o +(as)h(a)h(dialect)h(of)f(Common)f(Lisp)i(extended)g(with)f(a)g(new)0 +2247 y(data)14 b(structure,)h(the)g Fm(xapping)g Fx(in)o(tended)i(to)d(supp)q +(ort)h(\014ne-grain)h(data)e(parallelism.)22 b(A)15 b(xapping)h(w)o(as)e +(imple-)0 2303 y(men)o(tationally)19 b(a)g(strange)f(h)o(ybrid)h(of)f(arra)o +(y)l(,)g(hash)h(table,)h(and)e(asso)q(ciation)h(list;)i(seman)o(tically)f(it) +f(is)g(a)f(set)0 2360 y(of)e(ordered)h(index-v)m(alue)i(pairs.)25 +b(The)16 b(primitiv)o(es)i(of)f(the)f(language)h(are)f(geared)h(to)o(w)o(ard) +e(pro)q(cessing)i(all)h(the)0 2416 y(v)m(alues)h(of)e(a)g(xapping)h +(concurren)o(tly)l(,)h(matc)o(hing)e(up)h(v)m(alues)h(from)d(di\013eren)o(t)i +(xappings)g(b)o(y)g(their)g(asso)q(ciated)0 2473 y(indexes.)j(The)16 +b(idea)g(w)o(as)e(that)h(indexes)h(are)f(lab)q(els)i(for)d(virtual)i(pro)q +(cessors.)71 2529 y(T)l(o)g(recapitulate:)24 b(Lisp)17 b(is)g(an)g(excellen)o +(t)h(lab)q(oratory)e(for)g(language)h(exp)q(erimen)o(tation)h(for)e(t)o(w)o +(o)f(reasons.)0 2586 y(First,)c(one)g(can)f(c)o(ho)q(ose)h(a)f(v)o(ery)h +(small)g(subset,)h(with)f(only)g(a)f(dozen)h(primitiv)o(es)h(or)f(so,)f(that) +g(is)i(still)g(recognizably)0 2642 y(a)f(mem)o(b)q(er)h(of)e(the)i(class)g +(of)f(Lisp-lik)o(e)i(languages.)19 b(It)12 b(is)f(v)o(ery)g(easy)h(to)e(b)q +(o)q(otstrap)h(suc)o(h)h(a)f(small)h(language,)g(with)0 2698 +y(v)m(ariations)17 b(of)g(c)o(hoice,)h(on)f(a)f(new)h(platform.)25 +b(If)17 b(it)g(lo)q(oks)g(promising,)h(one)f(can)g(\015esh)g(out)g(the)g +(long)g(laundry)p eop +%%Page: 67 67 +67 66 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(67)0 45 y(list)18 b(of)f(amenities)h(later.)25 b(Second,)19 +b(it)e(is)h(particularly)g(easy|the)f(w)o(ork)g(of)f(an)h(hour)g(or)g +(less|to)h(b)q(o)q(otstrap)0 102 y(suc)o(h)c(a)f(new)h(dialect)h(within)f(an) +g(existing)g(Lisp)h(implemen)o(tation.)21 b(Ev)o(en)13 b(if)h(the)g(host)f +(implemen)o(tation)i(di\013ers)0 158 y(in)i(fundamen)o(tal)g(w)o(a)o(ys)e +(from)h(the)g(new)h(dialect,)g(it)g(can)g(pro)o(vide)f(primitiv)o(e)i(op)q +(erations)f(suc)o(h)f(as)g(arithmetic)0 214 y(and)d(I/O)h(as)e(w)o(ell)i(as)f +(b)q(eing)h(a)f(programming)f(language)h(that)g(is)g(just)g(plain)h(con)o(v)o +(enien)o(t)g(for)e(writing)i(language)0 271 y(in)o(terpreters.)28 +b(If)18 b(y)o(ou)f(can)h(liv)o(e)h(with)f(the)f(generic,)i +(list-structure-orien)o(ted)g(syn)o(tax,)f(y)o(ou)f(can)h(ha)o(v)o(e)f(a)h +(\014eld)0 327 y(da)o(y)e(reprogramming)f(the)h(seman)o(tics.)23 +b(After)15 b(y)o(ou)h(get)f(that)h(righ)o(t)g(there)g(is)g(time)h(enough)f +(to)f(re-engineer)j(it)0 384 y(and,)d(if)h(y)o(ou)f(m)o(ust,)f(slap)h(a)g +(parser)g(on)g(the)h(fron)o(t.)0 525 y Fp(5)69 b(Wh)n(y)24 +b(Lisp)e(is)g(Div)n(erse)0 626 y Fx(In)15 b(this)f(history)g(of)g(the)g(ev)o +(olution)h(of)f(Lisp,)h(w)o(e)f(ha)o(v)o(e)f(seen)i(that)e(Lisp)j(seems)e(to) +f(ha)o(v)o(e)h(a)g(more)g(elab)q(orate)g(and)0 682 y(complex)j(history)e +(than)h(languages)g(with)g(wider)g(usage.)21 b(It)16 b(w)o(ould)g(seem)g +(that)f(almost)g(ev)o(ery)h(little)h(researc)o(h)0 739 y(group)h(has)h(its)g +(o)o(wn)f(v)o(ersion)h(of)f(Lisp)i(and)f(there)f(w)o(ould)h(app)q(ear)g(to)f +(b)q(e)h(as)g(man)o(y)f(Lisps)i(as)e(v)m(ariations)h(on)0 795 +y(language)c(concepts.)21 b(It)15 b(is)h(natural)f(to)f(ask)h(what)g(is)h(so) +e(sp)q(ecial)j(or)e(di\013eren)o(t)g(ab)q(out)g(Lisp)i(that)d(explains)j(it.) +71 852 y(There)g(are)f(six)i(basic)g(reasons:)23 b(its)17 b(theoretical)g +(foundations,)h(its)f(expressiv)o(eness,)h(its)f(malleabilit)o(y)l(,)j(its)0 +908 y(in)o(teractiv)o(e)c(and)f(incremen)o(tal)h(nature,)f(its)g(op)q +(erating)h(system)f(facilities,)h(and)g(the)f(p)q(eople)i(who)e(c)o(ho)q(ose) +g(it.)71 965 y Fu(Its)20 b(theoretical)i(foundations.)29 b +Fx(Lisp)19 b(w)o(as)e(founded)i(on)f(the)g(fo)q(oting)g(of)f(recursiv)o(e)i +(function)f(theory)0 1021 y(and)g(the)g(theory)f(of)g(computabilit)o(y)l(.)29 +b(The)18 b(w)o(ork)f(on)g(Sc)o(heme)i(aligned)g(it)f(with)g(Ch)o(urc)o(h's)f +(lam)o(b)q(da)h(calculus)0 1078 y(and)13 b(denotational)g(seman)o(tics.)19 +b(Its)13 b(purest)g(form)f(is)h(useful)h(for)e(mathematical)h(reasoning)g +(and)g(pro)q(of.)19 b(There-)0 1134 y(fore,)d(man)o(y)h(theoretically)h +(minded)g(researc)o(hers)f(ha)o(v)o(e)f(adopted)h(Lisp)h(or)e(Lisp-lik)o(e)j +(languages)e(in)h(whic)o(h)g(to)0 1191 y(express)h(their)f(ideas)h(and)g(to)e +(do)i(their)f(w)o(ork.)29 b(W)l(e)18 b(th)o(us)g(see)h(man)o(y)e(Lisp-orien)o +(ted)j(pap)q(ers)f(with)g(new)f(lan-)0 1247 y(guage)12 b(constructs)f +(explained,)k(existing)e(constructs)e(explained,)k(prop)q(erties)e(of)e +(programs)g(pro)o(v)o(ed,)h(and)g(pro)q(of)0 1303 y(tec)o(hniques)k +(explored.)71 1360 y(The)h(upshot)h(is)g(that)f(Lisp)i(and)f(Lisp-lik)o(e)i +(languages)e(are)f(alw)o(a)o(ys)g(in)h(the)g(forefron)o(t)e(of)h(basic)i +(language)0 1416 y(researc)o(h.)h(And)c(it)g(is)g(common)f(for)g(more)g +(practically)h(minded)h(theoretical)f(researc)o(hers)g(to)e(also)i(implemen)o +(t)0 1473 y(their)g(ideas)g(in)g(Lisp.)71 1529 y Fu(Its)g(expressiv)o(eness.) +h Fx(Lisp)f(has)f(pro)o(v)o(ed)g(itself)g(concerned)h(more)f(with)g +(expressiv)o(eness)h(than)f(an)o(ything)0 1586 y(else.)40 b(W)l(e)21 +b(can)h(see)g(this)g(more)f(obliquely)i(b)o(y)f(observing)g(that)f(only)h(a)f +(p)q(erson)h(w)o(ell-v)o(ersed)g(with)g(ho)o(w)f(a)0 1642 y(particular)16 +b(Lisp)g(is)g(implemen)o(ted)h(can)e(write)g(e\016cien)o(t)h(programs.)j +(Here)d(is)f(a)g(p)q(erfectly)h(nice)h(piece)f(of)f(co)q(de:)0 +1723 y Fw(\(defun)23 b(make-matrix)f(\(n)i(m\))48 1779 y(\(let)f(\(\(matrix)g +(\(\)\)\))95 1836 y(\(dotimes)g(\(i)h(n)g(matrix\))143 1892 +y(\(push)f(\(make-list)g(m\))g(matrix\)\)\)\))0 2005 y(\(defun)g(add-matrix)g +(\(m1)g(m2\))48 2061 y(\(let)g(\(\(l1)g(\(length)g(m1\)\))191 +2118 y(\(l2)g(\(length)g(m2\)\)\))95 2174 y(\(let)h(\(\(matrix)f +(\(make-matrix)f(l1)h(l2\)\)\))143 2231 y(\(dotimes)g(\(i)h(l1)f(matrix\))191 +2287 y(\(dotimes)g(\(j)g(l2\))239 2344 y(\(setf)g(\(nth)g(i)h(\(nth)f(j)h +(matrix\)\))382 2400 y(\(+)f(\(nth)h(i)f(\(nth)h(j)f(m1\)\))453 +2457 y(\(nth)h(i)f(\(nth)h(j)f(m2\)\)\)\)\)\)\)\)\))0 2537 +y Fx(The)16 b(expression)g(to)f(read)h(and)g(write)g(a)f(cell)i(in)g(a)e +(matrix)h(lo)q(oks)f(p)q(erfectly)i(harmless)f(and)g(fast)f(as)g(an)o +(ything.)0 2594 y(But)j(it)g(is)g(slo)o(w,)g(b)q(ecause)g Fw(nth)f +Fx(tak)o(es)g(time)h(prop)q(ortional)g(to)f(the)h(v)m(alue)h(of)e(its)h +(\014rst)f(argumen)o(t,)g(essen)o(tially)0 2650 y Fw(CDR)p +Fx(ing)c(do)o(wn)h(the)f(list)h(ev)o(ery)f(time)h(it)g(is)f(called.)21 +b(\(An)14 b(exp)q(erienced)h(Lisp)g(co)q(der)f(w)o(ould)f(iterate)h(o)o(v)o +(er)e(the)h(cells)0 2707 y(of)i(a)g(list)h(rather)e(than)h(o)o(v)o(er)g(n)o +(umeric)h(indices,)h(or)d(w)o(ould)i(use)f(arra)o(ys)f(instead)i(of)f +(lists.\))p eop +%%Page: 68 68 +68 67 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(68)71 45 y(Here)21 b(expressiv)o(eness)h(has)f(gone)h(a)o(wry)l(.) +37 b(P)o(eople)22 b(tend)f(to)g(exp)q(ect)h(that)e(op)q(erations)h(in)h(the)g +(language)0 102 y(cost)16 b(a)h(small)g(unit)h(time,)f(not)g(something)g +(complicated)h(to)e(\014gure)h(out.)24 b(But)17 b(this)h(exp)q(ectation)f(is) +g(false)h(for)0 158 y(a)g(su\016cien)o(tly)h(expressiv)o(e)g(language.)29 +b(When)18 b(the)g(primitiv)o(es)i(are)d(at)h(a)f(su\016ciewn)o(tly)j(high)f +(lev)o(el,)g(there)f(is)0 214 y(enough)12 b(wiggle)g(ro)q(om)f(underneath)h +(to)f(p)q(ermit)h(a)f(c)o(hoice)i(of)e(implemen)o(tation)h(strategies.)19 +b(Lisp)12 b(implemen)o(tors)0 271 y(con)o(tin)o(ue)k(to)f(explore)i(that)e +(space)h(of)f(strategies.)21 b(Precisely)d Fm(b)n(e)n(c)n(ause)c +Fx(Lisp)j(is)f(so)g(expressiv)o(e,)g(it)g(can)g(b)q(e)g(v)o(ery)0 +327 y(hard)f(to)g(write)g(fast)f(programs)g(\(though)h(it)h(is)f(easy)g(to)g +(write)g(prett)o(y)g(or)f(clear)i(ones\).)71 384 y Fu(Its)h(malleabilit)o(y)l +(.)j Fx(It)15 b(is)h(easy)f(with)g(Lisp)i(to)d(exp)q(erimen)o(t)j(with)e(new) +h(language)f(features,)g(b)q(ecause)h(it)f(is)0 440 y(p)q(ossible)k(to)d +(extend)i(Lisp)g(in)g(suc)o(h)f(a)g(w)o(a)o(y)f(that)g(the)i(extensions)f +(are)g(indistinguishabl)q(e)j(to)c(users)i(from)e(the)0 497 +y(base)i(language.)30 b(Primarily)20 b(this)e(is)h(accomplished)h(through)f +(the)f(use)h(of)f(macros,)g(whic)o(h)h(ha)o(v)o(e)f(b)q(een)i(part)0 +553 y(of)e(Lisp)i(since)f(1963)f([Hart,)f(1963].)28 b(Lisp)20 +b(macros,)e(with)h(their)g(use)g(of)f(Lisp)h(as)f(a)h(computation)f(engine)i +(to)0 610 y(compute)15 b(expansions,)g(ha)o(v)o(e)f(pro)o(v)o(ed)g(to)g(b)q +(e)i(a)e(more)g(e\013ectiv)o(e)h(w)o(a)o(y)f(to)f(extend)j(a)e(language)h +(than)f(the)h(string-)0 666 y(pro)q(cessing)j(mec)o(hanisms)g(of)e(other)h +(languages.)26 b(Suc)o(h)17 b(macro-based)g(extensions)h(are)f(accepted)h +(within)g(the)0 723 y(Lisp)e(comm)o(unit)o(y)f(in)i(a)d(w)o(a)o(y)h(that)f +(is)i(not)f(found)g(in)h(other)f(language)g(comm)o(unities.)71 +779 y(F)l(urthermore,)g(more)h(recen)o(t)h(Lisp)g(dialects)h(ha)o(v)o(e)e +(pro)o(vided)h(mec)o(hanisms)g(to)f(extend)h(the)f(t)o(yp)q(e)h(system.)0 +835 y(This)f(enables)h(p)q(eople)g(to)e(exp)q(erimen)o(t)h(with)g(new)g(data) +e(t)o(yp)q(es.)21 b(Of)16 b(course,)f(other)g(languages)h(ha)o(v)o(e)f(had)h +(this)0 892 y(mec)o(hanism,)f(but)f(in)h(Lisp)h(the)e(data)g(t)o(yping)h(mec) +o(hanism)g(com)o(bines)g(with)g(the)f(p)q(o)o(w)o(erful)h(macro)e(facilit)o +(y)j(and)0 948 y(the)j(functional)h(nature)f(of)f(the)h(language)g(to)g(allo) +o(w)g(en)o(tirely)h(new)f(computing)g(paradigms)g(to)f(b)q(e)i(built)g(in)0 +1005 y(Lisp.)g(F)l(or)11 b(example,)i(w)o(e)e(ha)o(v)o(e)g(seen)h(data-driv)o +(en)g(paradigms)g([Sussman,)f(1971],)g(p)q(ossible-w)o(orlds)i(paradigms)0 +1061 y([McDermott,)k(1974],)g(and)i(ob)s(ject-orien)o(ted)f(paradigms)h([Mo)q +(on,)f(1986])e([Bobro)o(w,)i(1986])f(implemen)o(ted)j(in)0 +1118 y(Lisp)c(in)g(suc)o(h)f(a)g(w)o(a)o(y)e(that)i(the)g(seams)f(b)q(et)o(w) +o(een)h(Lisp)h(and)g(these)f(new)g(paradigms)g(are)f(essen)o(tially)j(in)o +(visible.)71 1174 y Fu(Its)e(in)o(teractiv)o(e)g(and)h(incremen)o(tal)e +(nature.)19 b Fx(It)13 b(is)h(easy)f(to)g(explore)h(the)f(solutions)h(to)f +(programming)0 1231 y(problems)f(in)g(Lisp,)h(b)q(ecause)g(it)e(is)h(easy)f +(to)g(implemen)o(t)i(part)e(of)f(a)i(solution,)g(test)f(it,)h(mo)q(dify)g +(it,)g(c)o(hange)f(design,)0 1287 y(and)k(debug)h(the)f(c)o(hanges.)20 +b(There)15 b(is)g(no)g(length)o(y)h(edit-compile-li)q(nk)i(cycle.)j(Because) +15 b(of)g(this,)g(Lisp)h(is)g(useful)0 1344 y(for)f(rapid)i(protot)o(yping)f +(and)g(for)f(constructing)i(v)o(ery)f(large)g(programs)f(in)i(the)f(face)g +(of)g(an)g(incomplete|and)0 1400 y(p)q(ossibly)g(imp)q(ossible)g(to)e +(complete|plan)i(of)e(attac)o(k.)k(Therefore,)c(Lisp)i(has)e(often)g(b)q(een) +h(used)g(for)f(exploring)0 1456 y(territory)g(that)g(is)h(to)q(o)f(imp)q +(osing)i(with)f(other)g(languages.)k(This)d(c)o(haracteristic)f(of)f(Lisp)i +(mak)o(es)e(it)h(attractiv)o(e)0 1513 y(to)g(the)g(adv)o(en)o(turesome)g(and) +g(pioneering.)71 1569 y Fu(Its)20 b(op)q(erating)j(system)17 +b(facilities.)31 b Fx(Man)o(y)18 b(Lisp)h(implemen)o(tations)h(pro)o(vide)e +(facilities)j(reminiscen)o(t)0 1626 y(of)16 b(op)q(erating)h(systems:)22 +b(a)16 b(command)g(pro)q(cessor,)g(an)h(automatic)f(storage)f(managemen)o(t)h +(facilit)o(y)l(,)h(\014le)h(man-)0 1682 y(agemen)o(t,)h(displa)o(y)h(\(windo) +o(ws,)g(graphics,)g(mouse\))e(facilities,)k(m)o(ultitasking,)e(a)f(compiler,) +i(an)e(incremen)o(tal)0 1739 y(\(re\)link)o(er/loader,)c(a)g(sym)o(b)q(olic)i +(debugger,)e(p)q(erformance)g(monitoring,)g(and)h(sometimes)f(m)o(ultipro)q +(cessing.)71 1795 y(It)21 b(is)g(p)q(ossible)i(to)e(do)g(op)q(erating)g +(system)g(researc)o(h)g(in)g(Lisp)i(and)e(to)f(pro)o(vide)i(a)f(complete)h +(op)q(erating)0 1852 y(en)o(vironmen)o(t.)f(Com)o(bined)16 +b(with)f(its)h(in)o(teractiv)o(e)g(and)f(incremen)o(tal)i(nature,)d(it)i(is)g +(p)q(ossible)h(to)e(write)g(sophis-)0 1908 y(ticated)20 b(text)f(editors)h +(and)f(to)g(supplan)o(t)h(the)g(nativ)o(e)g(op)q(erating)f(system)h(of)f(the) +g(host)g(computer.)33 b(A)20 b(Lisp)0 1965 y(system)12 b(can)h(pro)o(vide)h +(an)e(op)q(erating)h(en)o(vironmen)o(t)h(that)e(pro)o(vides)h(strong)f(p)q +(ortabilit)o(y)i(across)e(a)g(wide)i(v)m(ariet)o(y)0 2021 y(of)d +(incompatible)j(platforms.)k(This)12 b(mak)o(es)f(Lisp)i(an)e(attractiv)o(e)g +(v)o(ehicle)i(for)e(researc)o(hers)h(and)f(thereb)o(y)h(further)0 +2077 y(div)o(ersi\014es)17 b(Lisp.)71 2134 y Fu(Its)25 b(p)q(eople.)42 +b Fx(Of)23 b(course,)g(languages)g(do)f(not)g(div)o(ersify)h(themselv)o(es;)j +(p)q(eople)e(div)o(ersify)f(languages.)0 2190 y(The)15 b(\014v)o(e)h +(preceding)g(factors)e(merely)i(serv)o(e)f(to)g(attract)e(p)q(eople)k(to)d +(Lisp)j(and)e(pro)o(vide)h(facilities)h(for)d(them)i(to)0 2247 +y(exp)q(erimen)o(t)e(with)e(Lisp.)21 b(If)12 b(the)h(p)q(eople)h(attracted)d +(to)h(Lisp)i(w)o(ere)e(not)g(in)o(terested)h(in)g(exploring)h(new)f(language) +0 2303 y(alternativ)o(es,)g(then)f(Lisp)i(w)o(ould)f(not)f(ha)o(v)o(e)g(b)q +(een)h(div)o(ersi\014ed,)i(so)d(there)g(m)o(ust)g(b)q(e)h(something)g(ab)q +(out)f(Lisp)i(that)0 2360 y(attracts)g(adv)o(en)o(turesome)g(p)q(eople.)71 +2416 y(Lisp)d(is)g(the)g(language)g(of)f(arti\014cial)h(in)o(telligence,)j +(among)c(other)g(things.)19 b(And)11 b(AI)g(is)g(a)f(branc)o(h)h(of)f +(computer)0 2473 y(science)19 b(that)d(is)i(directed)g(to)o(w)o(ards)d +(exploring)j(the)g(most)e(di\016cult)i(and)g(exotic)f(of)g(all)h(programming) +e(tasks:)0 2529 y(mimic)o(king)h(or)d(understanding)j(cognition)f(and)f(in)o +(telligence.)23 b(\(Recall)17 b(that)d(sym)o(b)q(olic)j(computation,)e(no)o +(w)f(a)0 2586 y(\014eld)19 b(of)f(its)g(o)o(wn,)g(w)o(as)f(at)g(man)o(y)h +(institutions)h(originally)h(considered)f(a)f(branc)o(h)g(of)g(AI.\))f(The)i +(p)q(eople)g(who)0 2642 y(are)c(attracted)g(to)g(AI)h(are)g(generally)h +(creativ)o(e)e(and)h(b)q(old,)h(and)f(the)g(language)g(designers)g(and)g +(implemen)o(tors)0 2698 y(follo)o(w)f(in)h(this)g(mold,)f(often)g(b)q(eing)i +(AI)e(researc)o(hers)g(or)g(former)f(AI)i(researc)o(hers)f(themselv)o(es.)p +eop +%%Page: 69 69 +69 68 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(69)71 45 y(Lisp)14 b(pro)o(vides)g(its)g(p)q(eculiar)h(set)e(of)g +(c)o(haracteristics)h(b)q(ecause)g(those)g(features|or)f(ones)g(lik)o(e)i +(them|w)o(ere)0 102 y(required)j(for)f(the)g(early)g(adv)m(ances)h(of)f(AI.)g +(Only)h(when)g(AI)f(w)o(as)g(the)g(sub)s(ject)g(of)f(commercial)i(concerns)g +(did)0 158 y(AI)e(companies)g(turn)f(to)f(languages)i(other)e(than)h(Lisp.)71 +214 y(Another)d(attraction)g(is)h(that)e(Lisp)j(is)f(a)f(language)h(of)f(exp) +q(erts,)h(whic)o(h)g(for)f(our)g(purp)q(oses)i(means)e(that)g(Lisp)0 +271 y(is)17 b(not)g(a)g(language)g(designed)h(for)e(inexp)q(ert)i +(programmers)e(to)g(co)q(de)i(robust)e(reliable)j(soft)o(w)o(are.)k +(Therefore,)0 327 y(there)c(is)g(little)h(compile-time)h(t)o(yp)q(e)d(c)o +(hec)o(king,)j(there)d(are)h(few)f(mo)q(dule)i(systems,)f(there)f(is)i +(little)g(safet)o(y)d(or)0 384 y(discipline)23 b(built)d(in)o(to)f(the)g +(language.)31 b(It)19 b(is)h(an)e(\\anarc)o(hic")h(language,)h(while)h(most)d +(other)g(languages)h(are)0 440 y(\\fascist")c(\(as)f(hac)o(k)o(ers)h(w)o +(ould)g(ha)o(v)o(e)g(it)h([Ra)o(ymond,)e(1991]\).)71 497 y(Here)h(are)g(ho)o +(w)g(some)f(others)h(ha)o(v)o(e)g(put)g(it:)114 586 y Fm(LISP)f(is)i +(unusual,)g(in)f(the)i(sense)d(that)j(it)f(cle)n(arly)f(deviates)h(fr)n(om)g +(every)g(other)h(typ)n(e)f(of)g(pr)n(o)n(gr)n(am-)114 643 y(ming)11 +b(language)h(that)g(has)g(ever)g(b)n(e)n(en)e(develop)n(e)n(d)p +Fn(:)e(:)g(:)e Fm(.)19 b(The)11 b(the)n(or)n(etic)n(al)h(c)n(onc)n(epts)e +(and)i(implic)n(ations)114 699 y(of)k(LISP)f(far)h(tr)n(ansc)n(end)f(its)h +(pr)n(actic)n(al)g(usage.)993 769 y(|)p Fx(Jean)g(E.)f(Sammet)g([Sammet,)f +(1969,)g(p.)h(406])114 873 y Fm(This)i(is)g(one)g(of)h(the)g(gr)n(e)n(at)f +(advantage)h(of)g(Lisp-like)e(languages:)23 b(They)17 b(have)h(very)g(few)f +(ways)h(of)114 929 y(forming)13 b(c)n(omp)n(ound)h(expr)n(essions,)f(and)g +(almost)h(no)f(syntactic)h(structur)n(e)p Fn(:)8 b(:)g(:)g(:)j +Fm(After)i(a)h(short)g(time)114 986 y(we)19 b(for)n(get)h(ab)n(out)g +(syntactic)f(details)h(of)g(the)g(language)f(\(b)n(e)n(c)n(ause)f(ther)n(e)i +(ar)n(e)g(none\))e(and)i(get)g(on)114 1042 y(with)c(the)h(r)n(e)n(al)e +(issues.)882 1112 y(|)p Fx(Ab)q(elson)i(and)f(Sussman)f([Ab)q(elson,)h(1985,) +d(p.)j(xvii])114 1216 y Fm(Syntactic)f(sugar)i(c)n(auses)e(c)n(anc)n(er)h(of) +g(the)h(semic)n(olon.)1569 1286 y(|)p Fx(Alan)g(P)o(erlis)114 +1389 y Fm(What)g(I)f(like)f(ab)n(out)i(Lisp)f(is)f(that)i(you)g(c)n(an)f(fe)n +(el)f(the)i(bits)f(b)n(etwe)n(en)f(your)i(to)n(es.)1049 1459 +y(|)p Fx(Drew)e(McDermott)f([McDermott,)f(1977])114 1562 y +Fm(Lisp)21 b(has)h(such)g(a)g(simple)f(syntax)h(and)g(semantics)f(that)i(p)n +(arsing)e(c)n(an)g(b)n(e)h(tr)n(e)n(ate)n(d)f(as)h(an)g(ele-)114 +1619 y(mentary)17 b(task.)23 b(Thus)17 b(p)n(arsing)f(te)n(chnolo)n(gy)h +(plays)f(almost)h(no)g(r)n(ole)g(in)g(Lisp)f(pr)n(o)n(gr)n(ams,)h(and)g(the) +114 1675 y(c)n(onstruction)h(of)g(language)h(pr)n(o)n(c)n(essors)e(is)h(r)n +(ar)n(ely)g(an)g(imp)n(e)n(diment)g(to)h(the)g(r)n(ate)g(of)f(gr)n(owth)h +(and)114 1732 y(change)d(of)g(lar)n(ge)g(Lisp)f(systems.)993 +1802 y(|)p Fx(Alan)h(P)o(erlis)g(\(forw)o(ard)e(to)g([Ab)q(elson,)i(1985]\)) +114 1905 y Fm(APL)h(is)g(like)h(a)g(b)n(e)n(autiful)g(diamond|\015aw)r(less,) +g(b)n(e)n(autiful)r(ly)g(symmetric)n(al.)26 b(But)18 b(you)h(c)n(an)-5 +b('t)18 b(add)114 1962 y(anything)d(to)i(it.)k(If)16 b(you)h(try)f(to)h(glue) +f(on)g(another)h(diamond,)f(you)h(don)-5 b('t)17 b(get)f(a)h(bigger)f +(diamond.)114 2035 y(Lisp)f(is)g(like)h(a)g(b)n(al)r(l)f(of)h(mud.)22 +b(A)n(dd)15 b(mor)n(e)h(and)g(it's)g(stil)r(l)f(a)h(b)n(al)r(l)f(of)h(mud|it) +i(stil)r(l)d(lo)n(oks)g(like)g(Lisp.)1252 2105 y(|)p Fx(Jo)q(el)h(Moses)f +([Moses?,)f(1978?])114 2208 y Fm(Pasc)n(al)d(is)h(for)h(building)f(pyr)n +(amids|imp)n(osing,)h(br)n(e)n(athtaking,)g(static)f(structur)n(es)h(built)f +(by)g(armies)114 2265 y(pushing)k(he)n(avy)g(blo)n(cks)f(into)h(plac)n(e.)21 +b(Lisp)15 b(is)h(for)h(building)e(or)n(ganisms)p Fn(:)8 b(:)g(:)g(:)993 +2335 y Fm(|)p Fx(Alan)16 b(P)o(erlis)g(\(forw)o(ard)e(to)g([Ab)q(elson,)i +(1985]\))114 2438 y Fm(Lisp)f(is)h(the)g(me)n(dium)h(of)g(choic)n(e)f(for)g +(p)n(e)n(ople)g(who)h(enjoy)f(fr)n(e)n(e)g(style)f(and)h(\015exibility.)569 +2508 y(|)p Fx(Gerald)g(Ja)o(y)f(Sussman)g(\(in)o(tro)q(duction)h(to)f([F)l +(riedman,)g(1987],)e(p.)i(ix\))114 2611 y Fm(Hey,)h(Quux:)21 +b(L)n(et's)15 b(quit)i(hacking)f(this)g(p)n(ap)n(er)g(and)h(hack)f(Lisp)g +(inste)n(ad!)1113 2682 y(|)p Fx(rpg)f(\(the)g(\014nal)h(edit\))g([Gabriel,)f +(1992])p eop +%%Page: 70 70 +70 69 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(70)0 45 y Fp(References)0 136 y Fl([Ab)q(elson,)13 +b(1985])22 b(Ab)q(elson,)11 b(Harold,)g(and)g(Gerald)g(Ja)o(y)g(Sussman)g +(with)f(Julie)h(Sussman.)i Fc(Structur)n(e)f(and)h(Interpr)n(etation)68 +186 y(of)h(Computer)h(Pr)n(o)n(gr)n(ams)p Fl(.)i(MIT)d(Press,)h(Cam)o +(bridge,)d(Massac)o(h)o(usetts,)j(1985.)i(ISBN)e(0-262-01077-1.)0 +258 y([Abrahams,)d(1966])21 b(Abrahams,)14 b(P)o(aul)g(W.,)g(Je\013rey)j(A.)e +(Barnett,)h(Erwin)f(Bo)q(ok,)g(Donna)f(Firth,)h(Stanley)g(L.)f(Kemen)o(y)m(,) +68 308 y(Clark)9 b(W)m(eissman,)g(Lo)o(w)o(ell)g(Ha)o(wkinson,)h(Mic)o(hael)g +(I.)g(Levin,)g(and)g(Rob)q(ert)h(A.)e(Saunders.)14 b(The)c(LISP)h(2)f +(programmi)o(ng)68 358 y(language)15 b(and)h(system.)25 b(In)16 +b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)g(the)h(1966)f(AFIPS)h(F)m(al)r(l)f +(Joint)f(Computer)h(Confer)n(enc)n(e)p Fl(,)g(v)o(olume)d(29,)68 +407 y(pp.)f(661{676,)e(San)i(F)m(rancisco,)g(California,)e(No)o(v)o(em)o(b)q +(er)i(1966.)f(American)g(F)m(ederation)i(of)f(Information)e(Pro)q(cessing)68 +457 y(So)q(cieties.)j(Spartan)g(Bo)q(oks,)g(W)m(ashington,)e(D.)h(C.,)g +(1966.)0 529 y([A)o(CM)g(AIPL,)h(1977])21 b(Asso)q(ciation)f(for)g(Computing) +d(Mac)o(hinery)m(.)36 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)20 b(of)g(the)h(A)o +(rti\014cial)e(Intel)r(ligenc)n(e)h(and)68 579 y(Pr)n(o)n(gr)n(amming)12 +b(L)n(anguages)i(Confer)n(enc)n(e)p Fl(,)e(Ro)q(c)o(hester,)h(New)f(Y)m(ork,) +f(August)h(1977.)i Fc(A)o(CM)e(SIGPLAN)h(Notic)n(es)p Fl(,)f(12:8,)68 +629 y(August)i(1977.)j Fc(A)o(CM)e(SIGAR)m(T)g(Newsletter)p +Fl(,)c(64,)i(August)i(1977.)0 701 y([A)o(CM)e(LFP)m(,)h(1982])21 +b(Asso)q(ciation)12 b(for)g(Computing)e(Mac)o(hinery)m(.)15 +b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)h(the)f(1982)h(A)o(CM)f(Symp)n(osium)h +(on)g(Lisp)68 751 y(and)h(F)m(unctional)h(Pr)n(o)n(gr)n(amming)p +Fl(,)c(Pittsburgh,)i(P)o(ennsylv)n(ania,)f(August)h(1982.)j(ISBN)e +(0-89791-082-6.)0 823 y([A)o(CM)e(LFP)m(,)h(1984])21 b(Asso)q(ciation)12 +b(for)g(Computing)e(Mac)o(hinery)m(.)15 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)e(of) +h(the)f(1984)h(A)o(CM)f(Symp)n(osium)h(on)g(Lisp)68 873 y(and)h(F)m +(unctional)h(Pr)n(o)n(gr)n(amming)p Fl(,)c(Austin,)i(T)m(exas,)f(August)i +(1984.)i(ISBN)d(0-89791-142-3.)0 945 y([A)o(CM)f(LFP)m(,)h(1986])21 +b(Asso)q(ciation)12 b(for)h(Computing)d(Mac)o(hinery)m(.)16 +b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)h(the)f(1986)i(A)o(CM)e(Confer)n(enc)n +(e)h(on)g(Lisp)68 995 y(and)h(F)m(unctional)h(Pr)n(o)n(gr)n(amming)p +Fl(,)c(Cam)o(bridge,)g(Massac)o(h)o(usetts,)k(August)e(1986.)j(ISBN)d +(0-89791-200-4.)0 1067 y([A)o(CM)f(LFP)m(,)h(1988])21 b(Asso)q(ciation)12 +b(for)h(Computing)d(Mac)o(hinery)m(.)16 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)d(of) +h(the)f(1988)i(A)o(CM)e(Confer)n(enc)n(e)h(on)g(Lisp)68 1117 +y(and)h(F)m(unctional)h(Pr)n(o)n(gr)n(amming)p Fl(,)c(Sno)o(wbird,)h(Utah,)h +(July)g(1988.)j(ISBN)d(0-89791-273-X.)0 1189 y([A)o(CM)f(OOPSLA,)i(1986])21 +b(Asso)q(ciation)j(for)f(Computing)f(Mac)o(hinery)m(.)h Fc(Pr)n(o)n(c)n(e)n +(e)n(dings)h(of)g(the)h(A)o(CM)e(Confer)n(enc)n(e)h(on)68 1238 +y(Obje)n(cte)n(d-Oriente)n(d)14 b(Pr)n(o)n(gr)n(amming,)h(Systems,)g(L)n +(anguages,)i(and)f(Applic)n(ations)f(\(OOPSLA)g('86\))p Fl(,)f(P)o(ortland,)g +(Ore-)68 1288 y(gon,)f(Octob)q(er)i(1986.)i Fc(A)o(CM)e(SIGPLAN)g(Notic)n(es) +p Fl(,)e(21:11,)f(No)o(v)o(em)o(b)q(er)h(1986.)k(ISBN)d(0-89791-204-7.)0 +1360 y([A)o(CM)f(PLDI,)h(1990])21 b(Asso)q(ciation)e(for)f(Computing)f(Mac)o +(hinery)m(.)32 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)19 b(of)h(the)f(1990)h(A)o(CM) +f(SIGPLAN)h('90)68 1410 y(Confer)n(enc)n(e)13 b(on)g(Pr)n(o)n(gr)n(amming)g +(L)n(anguage)h(Design)g(and)g(Implementation)p Fl(,)e(White)f(Plains,)h(New)g +(Y)m(ork,)g(June)g(1990.)68 1460 y Fc(A)o(CM)i(SIGPLAN)h(Notic)n(es)f +Fl(25:6,)e(June)j(1990.)d(ISBN)j(0-89791-364-7.)0 1532 y([A)o(CM)e(PSDE,)h +(1984])21 b(Asso)q(ciation)15 b(for)g(Computing)e(Mac)o(hinery)m(.)21 +b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)16 b(of)f(the)h(A)o(CM)g(SIGSOFT/SIGPLAN)68 +1582 y(Symp)n(osium)21 b(on)f(Pr)n(actic)n(al)g(Softwar)n(e)f(Development)i +(Envir)n(onments)p Fl(,)g(Pittsburgh,)g(P)o(ennsylv)n(ania,)f(April)f(1984.) +68 1632 y Fc(A)o(CM)14 b(SIGPLAN)i(Notic)n(es)p Fl(,)d(19:5,)f(Ma)o(y)h +(1984;)g(also)18 b Fc(A)o(CM)c(Softwar)n(e)h(Engine)n(ering)g(Notes)p +Fl(,)e(9:3,)g(Ma)o(y)g(1984.)k(ISBN)68 1682 y(0-89791-131-8.)0 +1754 y([Bac)o(kus,)d(1978])21 b(Bac)o(kus,)c(John.)25 b(Can)16 +b(programmi)o(ng)d(b)q(e)k(lib)q(erated)g(from)d(the)j(v)o(on)e(Neumann)h(st) +o(yle?)25 b(A)16 b(functional)68 1803 y(st)o(yle)f(and)f(its)h(algebra)f(of)g +(programs.)19 b Fc(Communic)n(ations)d(of)g(the)f(A)o(CM)p +Fl(,)f(21:8,)g(pp.)g(613{641,)e(August)k(1978.)j(1977)68 1853 +y(A)o(CM)14 b(T)m(uring)f(Aw)o(ard)g(Lecture.)0 1925 y([Bak)o(er,)h(1978])21 +b(Bak)o(er,)16 b(Henry)h(B.,)f(Jr.)25 b(List)16 b(pro)q(cessing)h(in)f(real)g +(time)e(on)i(a)g(serial)g(computer.)24 b Fc(Communic)n(ations)17 +b(of)68 1975 y(the)e(A)o(CM)p Fl(,)e(21:4,)f(pp.)h(280{294,)f(April)h(1978.)0 +2047 y([Bartley)m(,)g(1986])21 b(Bartley)m(,)14 b(Da)o(vid)e(H.,)h(and)h +(John)g(C.)f(Jensen.)20 b(The)14 b(implemen)o(tatio)o(n)d(of)j(PC)g(Sc)o +(heme.)j(In)d([A)o(CM)g(LFP)m(,)68 2097 y(1986],)e(pp.)h(86{93.)0 +2169 y([Ba)o(wden,)g(1988])22 b(Ba)o(wden,)14 b(Alan,)f(and)g(Jonathan)h +(Rees.)19 b(Syn)o(tactic)14 b(closures.)19 b(In)14 b([A)o(CM)f(LFP)m(,)h +(1988],)e(pp.)h(86{95.)0 2241 y([Berk)o(eley)m(,)h(1964])21 +b(Berk)o(eley)m(,)16 b(Edm)o(und)e(C.,)g(and)h(Daniel)f(G.)g(Bobro)o(w,)h +(eds.)22 b Fc(The)16 b(Pr)n(o)n(gr)n(amming)g(L)n(anguage)h(LISP:)f(Its)68 +2291 y(Op)n(er)n(ation)d(and)h(Applic)n(ations)p Fl(.)h(Information)9 +b(In)o(ternational,)i(Inc.,)h(and)g(MIT)h(Press,)g(Cam)o(bridge,)d(Massac)o +(h)o(usetts,)68 2341 y(1964.)0 2413 y([Blac)o(k,)j(1964])21 +b(Blac)o(k,)13 b(Fisc)o(her.)19 b(St)o(yles)14 b(of)g(programmi)o(ng)d(in)i +(LISP.)19 b(In)13 b([Berk)o(eley)m(,)h(1964],)e(pp.)i(96{107.)0 +2485 y([Bobro)o(w,)f(1964])21 b(Bobro)o(w,)14 b(Daniel)f(G.)19 +b(METEOR:)14 b(A)g(LISP)g(in)o(terpreter)i(for)e(string)h(transformations.)i +(In)d([Berk)o(eley)m(,)68 2535 y(1964],)e(pp.)h(161{190.)0 +2607 y([Bobro)o(w,)g(1972])21 b(Bobro)o(w,)12 b(Rob)q(ert)h(J.,)f(Ric)o(hard) +g(R.)f(Burton,)i(and)f(Daryle)g(Lewis.)k Fc(UCI-LISP)d(Manual)h(\(A)o(n)g +(Extende)n(d)68 2657 y(Stanfor)n(d)21 b(LISP)g(1.6)f(System\))p +Fl(.)37 b(Information)18 b(and)i(Computer)f(Science)j(T)m(ec)o(hnical)d(Rep)q +(ort)i(21,)f(Univ)o(ersit)o(y)h(of)68 2707 y(California,)11 +b(Irvine,)i(Irvine,)h(California,)d(Octob)q(er)16 b(1972.)p +eop +%%Page: 71 71 +71 70 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(71)0 45 y Fl([Bobro)o(w,)13 b(1973])21 b(Bobro)o(w,)g(Daniel)e(G.,) +h(and)f(Ben)i(W)m(egbreit.)35 b(A)20 b(mo)q(del)e(and)i(stac)o(k)g(implemen)o +(tatio)o(n)d(of)i(m)o(ultiple)68 95 y(en)o(vironmen)o(ts.)e +Fc(Communic)n(ations)e(of)g(the)g(A)o(CM)p Fl(,)e(16:10,)f(pp.)h(591{603,)f +(Octob)q(er)k(1973.)0 170 y([Bobro)o(w,)d(1986])21 b(Bobro)o(w,)h(Daniel)d +(G.,)i(Kenneth)h(Kahn,)f(Gregor)g(Kiczales,)h(Larry)f(Masin)o(ter,)h(Mark)e +(Ste\014k,)i(and)68 219 y(F)m(rank)17 b(Zdyb)q(el.)29 b(CommonLo)q(o)o(ps:)23 +b(Merging)17 b(Lisp)h(and)f(ob)r(ject-orien)o(ted)i(programmi)o(ng.)26 +b(In)18 b([A)o(CM)f(OOPSLA,)68 269 y(1986],)12 b(pp.)h(17{29.)0 +344 y([Bo)q(ehm,)f(1986])22 b(Bo)q(ehm,)17 b(Hans-J.,)i(Rob)q(ert)f(Cart)o +(wrigh)o(t,)g(Mark)g(Riggle,)f(and)h(Mic)o(hael)f(J.)h(O'Donnell.)29 +b(Exact)18 b(real)68 394 y(arithmetic:)f(A)d(case)g(study)h(in)e(higher)h +(order)h(programmi)o(ng.)g(In)f([A)o(CM)f(LFP)m(,)h(1986],)e(pp.)h(162{173.)0 +469 y([Bro)q(oks,)h(1982a])21 b(Bro)q(oks,)c(Ro)q(dney)f(A.,)h(Ric)o(hard)f +(P)m(.)g(Gabriel,)g(and)g(Guy)h(L.)f(Steele)h(Jr.)27 b(S-1)16 +b(Common)e(Lisp)i(imple-)68 518 y(men)o(tation.)g(In)e([A)o(CM)f(LFP)m(,)g +(1982],)f(pp.)i(108{113.)0 593 y([Bro)q(oks,)g(1982b])21 b(Bro)q(oks,)14 +b(Ro)q(dney)g(A.,)g(Ric)o(hard)f(P)m(.)h(Gabriel,)f(and)h(Guy)f(L.)h(Steele)h +(Jr.)20 b(An)14 b(optimizing)e(compiler)g(for)68 643 y(lexically)i(scop)q(ed) +j(LISP.)23 b(In)16 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)g(the)h(1982)g(Symp)n +(osium)g(on)g(Compiler)f(Construction)p Fl(,)f(pp.)g(261{275,)68 +693 y(Boston,)i(June)g(1982.)e(Asso)q(ciation)i(for)f(Computing)f(Mac)o +(hinery)m(.)25 b Fc(A)o(CM)17 b(SIGPLAN)h(Notic)n(es)p Fl(,)f(17:6,)e(June)i +(1982.)68 742 y(ISBN)d(0-89791-074-5.)0 817 y([Bro)q(oks,)g(1984])21 +b(Bro)q(oks,)c(Ro)q(dney)g(A.,)g(and)f(Ric)o(hard)g(P)m(.)g(Gabriel.)26 +b(A)17 b(critique)g(of)f(Common)d(Lisp.)27 b(In)16 b([A)o(CM)h(LFP)m(,)68 +867 y(1984],)12 b(pp.)h(1{8.)0 942 y([Burk)o(e,)h(1983])21 +b(Burk)o(e,)14 b(G.)d(S.,)i(G.)e(J.)i(Carrette,)h(and)f(C.)f(R.)g(Eliot.)j +Fc(NIL)f(R)n(efer)n(enc)n(e)g(Manual)p Fl(.)j(Rep)q(ort)c(MIT/LCS/TR-)68 +992 y(311,)f(MIT)i(Lab)q(oratory)g(for)f(Computer)g(Science,)i(Cam)o(bridge,) +d(Massac)o(h)o(usetts,)j(1983.)0 1066 y([Burstall,)e(1971])21 +b(Burstall,)10 b(R.)f(M.,)g(J.)g(S.)g(Collins,)g(and)g(R.)g(J.)g(P)o +(opplestone,)i(eds.)g Fc(Pr)n(o)n(gr)n(amming)f(in)h(POP-2)p +Fl(.)g(Edin)o(burgh)68 1116 y(Univ)o(ersit)o(y)j(Press,)h(1971.)0 +1191 y([Campb)q(ell,)c(1984])21 b(Campb)q(ell,)10 b(J.)i(A.,)g(ed.)k +Fc(Implementations)d(of)h(Pr)n(olo)n(g)p Fl(.)g(Ellis)e(Horw)o(o)q(o)q(d)g +(Limited,)e(Chic)o(hester,)j(1984.)68 1241 y(ISBN)h(0-470-20045-6.)h(Also)f +(published)g(b)o(y)f(John)h(Wiley)f(&)i(Sons,)e(New)i(Y)m(ork.)0 +1315 y([Ch)o(urc)o(h,)e(1941])22 b(Ch)o(urc)o(h,)h(Alonzo.)e +Fc(The)h(Calculi)f(of)h(L)n(amb)n(da)h(Conversion.)e Fl(Annals)h(of)f +(Mathematics)f(Studies)j(6.)68 1365 y(Princeton)14 b(Univ)o(ersit)o(y)f +(Press,)i(Princeton,)f(New)g(Jersey)m(,)h(1941.)c(Reprin)o(ted)j(b)o(y)g +(Klaus)f(Reprin)o(t)g(Corp.,)g(New)h(Y)m(ork,)68 1415 y(1965.)0 +1490 y([Clark,)e(1982])22 b(Clark,)12 b(K.)g(L.,)h(and)f(S.-)627 +1483 y(\027)627 1490 y(A.)g(T\177)-21 b(arnlund,)13 b(eds.)k +Fc(L)n(o)n(gic)d(Pr)n(o)n(gr)n(amming)p Fl(.)i(Academic)c(Press,)j(New)e(Y)m +(ork,)f(1982.)0 1564 y([Clinger,)g(1984])22 b(Clinger,)10 b(William)o(.)g +(The)i(Sc)o(heme)f(311)f(compiler:)15 b(An)c(exercise)i(in)d(denotational)g +(seman)o(tics.)j(In)d([A)o(CM)68 1614 y(LFP)m(,)j(1984],)f(pp.)h(356{364.)0 +1689 y([Clinger,)f(1985a])22 b(Clinger,)15 b(William)d(\(ed.\).)25 +b Fc(The)17 b(R)n(evise)n(d)g(R)n(evise)n(d)g(R)n(ep)n(ort)g(on)h(Scheme;)g +(or,)f(A)o(n)g(Unc)n(ommon)h(Lisp)p Fl(.)68 1739 y(AI)c(Memo)e(848,)h(MIT)h +(Arti\014cial)f(In)o(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)e(Massac) +o(h)o(usetts,)16 b(August)e(1985.)0 1813 y([Clinger,)e(1985b])22 +b(Clinger,)15 b(William)d(\(ed.\).)25 b Fc(The)16 b(R)n(evise)n(d)h(R)n +(evise)n(d)g(R)n(ep)n(ort)g(on)g(Scheme;)h(or,)f(A)o(n)g(Unc)n(ommon)h(Lisp)p +Fl(.)68 1863 y(Computer)13 b(Science)i(Departmen)o(t)e(T)m(ec)o(hnical)h(Rep) +q(ort)g(174,)f(Indiana)g(Univ)o(ersit)o(y)m(,)g(Blo)q(omington,)e(June)j +(1985.)0 1938 y([Clinger,)e(1988])22 b(Clinger,)14 b(William)e(D.,)i(Anne)i +(H.)f(Hartheimer,)g(and)g(Eric)h(M.)f(Ost.)23 b(Implemen)o(tatio)o(n)13 +b(strategies)j(for)68 1988 y(con)o(tin)o(uations.)h(In)d([A)o(CM)f(LFP)m(,)g +(1988],)f(pp.)i(124{131.)0 2063 y([Clinger,)e(1990])22 b(Clinger,)13 +b(William)d(D.)19 b(Ho)o(w)13 b(to)h(read)h(\015oating)e(p)q(oin)o(t)h(n)o +(um)o(b)q(ers)g(accurately)m(.)19 b(In)14 b([A)o(CM)f(PLDI,)h(1990],)68 +2112 y(pp.)f(92{101.)0 2187 y([Clinger,)f(1991])22 b(Clinger,)15 +b(William)o(,)d(and)k(Jonathan)f(Rees.)24 b(Macros)16 b(that)g(w)o(ork.)23 +b(In)15 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)i(of)f(the)h(Eighte)n(enth)68 +2237 y(A)o(nnual)k(A)o(CM)g(Symp)n(osium)h(on)g(Principles)e(of)i(Pr)n(o)n +(gr)n(amming)e(L)n(anguages)p Fl(,)j(pp.)e(155{162,)f(Orlando,)h(Florida,)68 +2287 y(Jan)o(uary)14 b(1991.)e(Asso)q(ciation)i(for)f(Computing)f(Mac)o +(hinery)m(.)18 b(ISBN)c(0-89791-419-8.)0 2361 y([CL)m(TL1,)e(1984])26 +b Fc(Common)15 b(Lisp:)j(The)d(L)n(anguage)p Fl(.)f(By)g(Guy)f(L.)g(Steele)i +(Jr.,)e(Scott)h(E.)g(F)m(ahlman,)c(Ric)o(hard)j(P)m(.)g(Gabriel,)68 +2411 y(Da)o(vid)d(A.)i(Mo)q(on,)g(and)f(Daniel)g(L.)h(W)m(einreb.)i(Digital)c +(Press,)k(Burlington,)d(Massac)o(h)o(usetts,)j(1984.)d(ISBN)h(0-932376-)68 +2461 y(41-X.)0 2536 y([CL)m(TL2,)g(1990])31 b Fc(Common)18 +b(Lisp:)24 b(The)17 b(L)n(anguage)i(\(Se)n(c)n(ond)f(Edition\))p +Fl(.)e(By)h(Guy)f(L.)g(Steele)i(Jr.,)f(Scott)g(E.)f(F)m(ahlman,)68 +2586 y(Ric)o(hard)10 b(P)m(.)g(Gabriel,)g(Da)o(vid)g(A.)g(Mo)q(on,)h(Daniel)f +(L.)g(W)m(einreb,)h(Daniel)f(G.)g(Bobro)o(w,)h(Linda)f(G.)g(DeMic)o(hiel,)g +(Son)o(y)o(a)g(E.)68 2635 y(Keene,)k(Gregor)e(Kiczales,)i(Crispin)e(P)o +(erdue,)i(Ken)o(t)f(M.)f(Pitman,)f(Ric)o(hard)h(C.)g(W)m(aters,)h(and)f(Jon)h +(L)f(White.)k(Digital)68 2685 y(Press,)f(Bedford,)f(Massac)o(h)o(usetts,)h +(1990.)e(ISBN)h(1-55558-041-6.)p eop +%%Page: 72 72 +72 71 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(72)0 45 y Fl([Cohen,)13 b(1981])21 b(Cohen,)12 b(Jacques.)j +(Garbage)c(collection)g(of)g(link)o(ed)g(data)g(structures.)17 +b Fc(A)o(CM)12 b(Computing)h(Surveys)p Fl(,)f(13:3,)68 95 y(pp.)h(341{367,)f +(Septem)o(b)q(er)i(1981.)0 169 y([Correll,)f(1979])21 b(Correll,)d(Stev)o +(en.)30 b(S-1)18 b(unipro)q(cessor)h(arc)o(hitecture)h(\(SMA-4\).)29 +b(In)18 b Fc(The)h(S-1)f(Pr)n(oje)n(ct)g(1979)h(A)o(nnual)68 +219 y(R)n(ep)n(ort)p Fl(,)13 b(v)o(olume)f(I,)h(c)o(hapter)i(4.)e(La)o +(wrence)i(Liv)o(ermore)e(Lab)q(oratory)m(,)g(Liv)o(ermore,)f(California,)f +(1979.)0 294 y([Da)o(vies,)h(1984])22 b(Da)o(vies,)16 b(J.)25 +b(POPLER:)16 b(Implemen)o(tation)e(of)h(a)h(POP-2{based)h(PLANNER.)26 +b(In)16 b([Campb)q(ell,)e(1984],)68 344 y(pp.)f(28{49.)0 418 +y([DEC,)g(1964])21 b(Digital)f(Equipmen)o(t)h(Corp)q(oration,)j(Ma)o(ynard,)f +(Massac)o(h)o(usetts.)45 b Fc(Pr)n(o)n(gr)n(amme)n(d)22 b(Data)h(Pr)n(o)n(c)n +(essor{6)68 468 y(Handb)n(o)n(ok)p Fl(,)14 b(1964.)0 542 y([DEC,)f(1969])21 +b(Digital)11 b(Equipmen)o(t)h(Corp)q(oration,)g(Ma)o(ynard,)g(Massac)o(h)o +(usetts.)19 b Fc(PDP-10)c(R)n(efer)n(enc)n(e)f(Handb)n(o)n(ok)p +Fl(,)f(1969.)0 617 y([DEC,)g(1981])21 b(Digital)12 b(Equipmen)o(t)h(Corp)q +(oration,)f(Ma)o(ynard,)i(Massac)o(h)o(usetts.)20 b Fc(V)l(AX)14 +b(A)o(r)n(chite)n(ctur)n(e)f(Handb)n(o)n(ok)p Fl(,)i(1981.)0 +692 y([de)f(Kleer,)g(1978a])21 b(de)d(Kleer,)g(Johan,)f(Jon)g(Do)o(yle,)f +(Charles)h(Ric)o(h,)g(Guy)f(L.)g(Steele)i(Jr.,)f(and)g(Gerald)g(Ja)o(y)f +(Sussman.)68 741 y Fc(AMORD:)g(A)g(De)n(ductive)h(Pr)n(o)n(c)n(e)n(dur)n(e)f +(System)p Fl(.)23 b(AI)16 b(Memo)e(435,)g(MIT)i(Arti\014cial)f(In)o +(telligence)g(Lab)q(oratory)m(,)g(Cam-)68 791 y(bridge,)e(Massac)o(h)o +(usetts,)j(Jan)o(uary)d(1978.)0 866 y([de)h(Kleer,)g(1978b])22 +b(de)14 b(Kleer,)g(Johan,)f(and)h(Gerald)f(Ja)o(y)h(Sussman.)j +Fc(Pr)n(op)n(agation)e(of)g(Constr)n(aints)f(Applie)n(d)h(to)f(Cir)n(cuit)68 +916 y(Synthesis)p Fl(.)k(AI)c(Memo)e(485,)h(MIT)g(Arti\014cial)g(In)o +(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)e(Massac)o(h)o(usetts,)k +(Septem)o(b)q(er)68 965 y(1978.)i(Also)c(in)h Fc(Cir)n(cuit)f(The)n(ory)i +(and)h(Applic)n(ations)p Fl(,)d(8,)g(pp.)g(127{144,)f(1980.)0 +1040 y([Deutsc)o(h,)i(1964])21 b(Deutsc)o(h,)g(L.)e(P)o(eter,)i(and)e(Edm)o +(und)e(C.)i(Berk)o(eley)m(.)34 b(The)19 b(LISP)g(implemen)o(tation)d(for)j +(the)g(PDP-1)68 1090 y(computer.)e(In)d([Berk)o(eley)m(,)g(1964],)e(pp.)h +(326{375.)0 1164 y([Deutsc)o(h,)h(1973])21 b(Deutsc)o(h,)13 +b(L.)d(P)o(eter.)15 b(A)d(LISP)f(mac)o(hine)f(with)h(v)o(ery)h(compact)e +(programs.)i(In)g([IJCAI,)e(1973],)g(pp.)h(697{)68 1214 y(703.)0 +1289 y([Deutsc)o(h,)j(1976])21 b(Deutsc)o(h,)g(L.)e(P)o(eter,)i(and)e(Daniel) +f(G)g(Bobro)o(w.)34 b(An)19 b(e\016cien)o(t,)h(incremen)o(tal,)f(automatic)e +(garbage)68 1338 y(collector.)h Fc(Communic)n(ations)d(of)g(the)g(A)o(CM)p +Fl(,)e(19:9,)f(pp.)i(522{526,)d(Septem)o(b)q(er)k(1976.)0 1413 +y([Dresc)o(her,)g(1987])21 b(Dresc)o(her,)d(Gary)m(.)25 b Fc(Obje)n(ctLISP)17 +b(User)f(Manual)p Fl(.)26 b(LMI)16 b(\(LISP)h(Mac)o(hine,)g(Inc.\),)f(Cam)o +(bridge,)f(Mas-)68 1463 y(sac)o(h)o(usetts,)g(1987.)0 1537 +y([Dyb)o(vig,)d(1986])21 b(Dyb)o(vig,)12 b(R.)g(Ken)o(t,)i(Daniel)e(P)m(.)h +(F)m(riedman,)e(and)i(Christopher)i(T.)e(Ha)o(ynes.)k(Expansion-passing)c(st) +o(yle:)68 1587 y(Bey)o(ond)h(con)o(v)o(en)o(tional)f(macros.)k(In)d([A)o(CM)f +(LFP)m(,)g(1986],)f(pp.)i(143{150.)0 1662 y([Eastlak)o(e,)f(1968])21 +b(Eastlak)o(e,)e(D.,)f(R.)g(Green)o(blatt,)h(J.)f(Hollo)o(w)o(a)o(y)m(,)f(T.) +g(Knigh)o(t,)i(and)f(S.)g(Nelson.)32 b Fc(ITS)19 b(1.5)g(R)n(efer)n(enc)n(e) +68 1711 y(Manual)p Fl(.)24 b(AI)16 b(Memo)f(161,)g(MIT)h(Arti\014cial)f(In)o +(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)f(Massac)o(h)o(usetts,)k +(June)e(1968.)68 1761 y(Revised)e(as)g(AI)g(Memo)e(161A,)h(July)h(1969.)0 +1836 y([Eastlak)o(e,)f(1972])21 b(Eastlak)o(e,)13 b(Donald)g(E.)18 +b Fc(ITS)c(Status)h(R)n(ep)n(ort)p Fl(.)j(AI)13 b(Memo)g(238,)f(MIT)i +(Arti\014cial)f(In)o(telligence)g(Lab)q(ora-)68 1886 y(tory)m(,)g(Cam)o +(bridge,)e(Massac)o(h)o(usetts,)16 b(April)d(1972.)0 1960 y([F)m(ateman,)e +(1973])22 b(F)m(ateman,)13 b(Ric)o(hard)h(J.)22 b(Reply)14 +b(to)h(an)g(editorial.)20 b Fc(A)o(CM)c(SIGSAM)g(Bul)r(letin)p +Fl(,)f(25,)f(pp.)h(9{11,)f(Marc)o(h)68 2010 y(1973.)19 b(This)c(rep)q(orts)h +(the)f(results)h(of)f(a)f(test)i(in)e(whic)o(h)h(a)f(compiled)f(MacLisp)i +(\015oating-p)q(oin)o(t)f(program)f(w)o(as)h(faster)68 2060 +y(than)e(equiv)n(alen)o(t)f(F)m(ortran)g(co)q(de.)i(The)f(n)o(umerical)e(p)q +(ortion)i(of)f(the)i(co)q(de)f(w)o(as)g(iden)o(tical)f(and)h(MacLisp)g(used)h +(a)e(faster)68 2110 y(subroutine-call)i(proto)q(col.)0 2184 +y([F)m(eldman,)e(1972])21 b(F)m(eldman,)15 b(J.)i(A.,)g(J.)f(R.)g(Lo)o(w,)h +(D.)f(C.)g(Swinehart,)h(and)g(R.)f(H.)g(T)m(a)o(ylor.)25 b(Recen)o(t)18 +b(dev)o(elopmen)o(ts)e(in)68 2234 y(SAIL.)25 b(In)16 b Fc(Pr)n(o)n(c)n(e)n(e) +n(dings)h(of)f(the)i(1972)f(AFIPS)h(F)m(al)r(l)e(Joint)h(Computer)g(Confer)n +(enc)n(e)p Fl(,)f(v)o(olume)e(41,)i(pp.)g(1193{1202,)68 2284 +y(Stanford,)d(California,)e(No)o(v)o(em)o(b)q(er)i(1972.)g(American)g(F)m +(ederation)h(of)f(Information)e(Pro)q(cessing)16 b(So)q(cieties.)0 +2358 y([F)m(essenden,)f(1983])21 b(F)m(essenden,)14 b(Carol,)e(William)c +(Clinger,)k(Daniel)f(P)m(.)h(F)m(riedman,)f(and)h(Christopher)h(Ha)o(ynes.)j +Fc(Scheme)68 2408 y(311)f(V)m(ersion)g(4)g(R)n(efer)n(enc)n(e)f(Manual)p +Fl(.)19 b(T)m(ec)o(hnical)14 b(Rep)q(ort)g(137,)f(Indiana)g(Univ)o(ersit)o(y) +m(,)g(F)m(ebruary)h(1983.)0 2483 y([F)m(o)q(deraro,)f(1982])21 +b(F)m(o)q(deraro,)16 b(J.)g(K.,)f(and)h(K.)g(L.)f(Sklo)o(w)o(er.)23 +b Fc(The)17 b(FRANZ)g(Lisp)g(Manual)p Fl(.)25 b(Univ)o(ersit)o(y)15 +b(of)h(California,)68 2532 y(Berk)o(eley)m(,)e(California,)d(April)i(1982.)0 +2607 y([F)m(orgy)m(,)f(1977])21 b(F)m(orgy)m(,)15 b(C.,)h(and)f(J.)h +(McDermott.)24 b(OPS,)16 b(a)g(domain-indep)q(enden)o(t)f(pro)q(duction)i +(system)e(language.)24 b(In)68 2657 y Fc(Pr)n(o)n(c)n(e)n(e)n(dings)16 +b(of)h(the)g(Fifth)g(International)g(Joint)f(Confer)n(enc)n(e)h(on)g(A)o +(rti\014cial)f(Intel)r(ligenc)n(e)h(\(IJCAI-77\))p Fl(,)e(pp.)h(933{)68 +2707 y(935,)c(Cam)o(bridge,)g(Massac)o(h)o(usetts,)j(August)g(1977.)d(In)o +(ternational)h(Join)o(t)h(Council)f(on)h(Arti\014cial)f(In)o(telligence.)p +eop +%%Page: 73 73 +73 72 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(73)0 45 y Fl([F)m(riedman,)11 b(1975])22 b(F)m(riedman,)d(Daniel)f +(P)m(.,)i(and)g(Da)o(vid)e(S.)i(Wise.)35 b Fc(CONS)20 b(Should)h(Not)f +(Evaluate)h(Its)f(A)o(r)n(guments)p Fl(.)68 95 y(T)m(ec)o(hnical)13 +b(Rep)q(ort)h(44,)f(Indiana)g(Univ)o(ersit)o(y)m(,)g(No)o(v)o(em)o(b)q(er)g +(1975.)0 170 y([F)m(riedman,)e(1987])22 b(F)m(riedman,)9 b(Daniel)h(P)m(.,)h +(and)g(Matthias)g(F)m(elleisen.)j Fc(The)e(Little)f(LISPer)p +Fl(.)g(T)m(rade)g(edition.)j(MIT)d(Press,)68 219 y(Cam)o(bridge,)i(Massac)o +(h)o(usetts,)18 b(1987.)j(ISBN)16 b(0-262-56038-0.)c(Also)j(published)g(b)o +(y)h(Science)g(Researc)o(h)h(Asso)q(ciates,)68 269 y(Chicago,)12 +b(Third)i(Edition,)f(1989.)f(ISBN)j(0-574-24005-5.)0 344 y([Gabriel,)d(1982]) +21 b(Gabriel,)14 b(Ric)o(hard)h(P)m(.,)f(and)h(Larry)h(M.)e(Masin)o(ter.)22 +b(P)o(erformance)15 b(of)g(Lisp)g(systems.)22 b(In)15 b([A)o(CM)g(LFP)m(,)68 +394 y(1982],)d(pp.)h(123{142.)0 469 y([Gabriel,)f(1984a])21 +b(Gabriel,)15 b(Ric)o(hard)h(P)m(.,)f(and)h(Martin)f(E.)h(F)m(rost.)24 +b(A)16 b(programming)c(en)o(vironmen)o(t)j(for)h(a)f(timeshared)68 +518 y(system.)i(In)d([A)o(CM)g(PSDE,)f(1984],)f(pp.)i(185{192.)0 +593 y([Gabriel,)e(1984b])21 b(Gabriel,)d(Ric)o(hard)g(P)m(.,)f(and)h(John)g +(McCarth)o(y)m(.)31 b(Queue-based)19 b(m)o(ultipro)q(cessing)e(Lisp.)30 +b(In)18 b([A)o(CM)68 643 y(LFP)m(,)13 b(1984],)f(pp.)h(25{44.)0 +718 y([Gabriel,)f(1985])21 b(Gabriel,)14 b(Ric)o(hard)g(P)m(.)21 +b Fc(Performanc)n(e)16 b(and)g(Evaluation)h(of)e(Lisp)h(Systems)p +Fl(.)21 b(MIT)15 b(Press,)h(Cam)o(bridge,)68 767 y(Massac)o(h)o(usetts,)f +(1985.)i(ISBN)e(0-262-07093-6.)0 842 y([Gabriel,)d(1988])21 +b(Gabriel,)16 b(Ric)o(hard)g(P)m(.,)f(and)h(Ken)o(t)h(M.)f(Pitman.)24 +b(T)m(ec)o(hnical)15 b(issues)j(of)e(separation)g(in)g(function)g(cells)68 +892 y(and)d(v)n(alue)h(cells.)k Fc(Lisp)d(and)g(Symb)n(olic)g(Computation)p +Fl(,)f(1:1,)e(pp.)i(81{101,)e(June)j(1988.)i(ISSN)d(0892-4635.)0 +967 y([Gabriel,)e(1992])21 b(Gabriel,)14 b(Ric)o(hard)g(P)m(.)g(P)o(ersonal)g +(comm)o(unication)e(to)i(Guy)g(L.)g(Steele)i(Jr.,)e(No)o(v)o(em)o(b)q(er)g +(30,)g(1992)f(\(t)o(w)o(o)68 1016 y(hours)h(b)q(efore)h(handing)e(o\013)h +(this)g(man)o(uscript)f(to)g(F)m(ederal)h(Express\).)0 1091 +y([Galley)m(,)d(1975])21 b(Galley)m(,)e(S.W.,)g(and)g(Greg)g(P\014ster.)36 +b Fc(The)20 b(MDL)g(L)n(anguage)p Fl(.)35 b(Programming)16 +b(T)m(ec)o(hnology)j(Division)68 1141 y(Do)q(cumen)o(t)13 b(SYS.11.01,)e(MIT) +j(Pro)r(ject)h(MA)o(C,)f(Cam)o(bridge,)e(Massac)o(h)o(usetts,)j(No)o(v)o(em)o +(b)q(er)e(1975.)0 1216 y([Gesc)o(hk)o(e,)h(1977])21 b(Gesc)o(hk)o(e,)16 +b(Charles)g(M.,)e(James)h(H.)g(Morris)g(Jr.,)g(and)g(Edwin)g(H.)g(Satterth)o +(w)o(aite.)22 b(Early)15 b(exp)q(erience)68 1266 y(with)e(Mesa.)19 +b Fc(Communic)n(ations)c(of)g(the)g(A)o(CM)p Fl(,)e(20:8,)f(pp.)i(540{553,)d +(August)k(1977.)0 1340 y([Golden,)d(1970])22 b(Golden,)c(Je\013rey)i(P)m(.)31 +b Fc(A)19 b(User's)f(Guide)h(to)g(the)g(A.)g(I.)f(Gr)n(oup)i(LISCOM)f(Lisp)g +(Compiler:)26 b(Interim)68 1390 y(R)n(ep)n(ort)p Fl(.)17 b(AI)d(Memo)f(210,)g +(MIT)h(Pro)r(ject)h(MA)o(C,)e(Cam)o(bridge,)f(Massac)o(h)o(usetts,)j(Decem)o +(b)q(er)f(1970.)0 1465 y([Goldman,)c(1988])22 b(Goldman,)7 +b(Ron,)j(and)g(Ric)o(hard)g(P)m(.)f(Gabriel.)i(Preliminary)d(results)k(with)e +(the)g(initial)e(implemen)o(tation)68 1515 y(of)13 b(Qlisp.)18 +b(In)c([A)o(CM)f(LFP)m(,)g(1988],)f(pp.)i(143{152.)0 1589 y([Green)o(blatt,)f +(1974])21 b(Green)o(blatt,)14 b(Ric)o(hard.)j Fc(The)e(LISP)g(Machine)p +Fl(.)k(W)m(orking)12 b(P)o(ap)q(er)j(79,)e(MIT)h(Arti\014cial)f(In)o +(telligence)68 1639 y(Lab)q(oratory)m(,)f(Cam)o(bridge,)g(Massac)o(h)o +(usetts,)j(No)o(v)o(em)o(b)q(er)f(1974.)0 1714 y([Greussa)o(y)m(,)f(1977])21 +b(Greussa)o(y)m(,)d(P)m(.)28 b Fc(Contribution)17 b(\022)-21 +b(a)18 b(la)g(d)o(\023)-20 b(e\014nition)19 b(interpr)o(\023)-20 +b(etive)17 b(et)g(\022)-21 b(a)18 b(l'impl)o(\023)-20 b(ementation)18 +b(des)g(lamb)n(da-)68 1764 y(langages)p Fl(.)g(Th)o(\022)-20 +b(ese)15 b(d'Etat,)f(Univ)o(ersit)o(\023)-20 b(e)14 b(de)h(P)o(aris)e(VI,)h +(No)o(v)o(em)o(b)q(er)f(1977.)0 1838 y([Gries,)g(1977])21 b(Gries,)13 +b(Da)o(vid.)j(An)e(exercise)h(in)e(pro)o(ving)f(parallel)g(programs)h +(correct.)18 b Fc(Communic)n(ations)d(of)f(the)h(A)o(CM)p Fl(,)68 +1888 y(20:12,)d(pp.)h(921{930,)f(Decem)o(b)q(er)i(1977.)0 1963 +y([Griss,)f(1981])21 b(Griss,)c(Martin)e(L.,)h(and)g(An)o(thon)o(y)g(C.)f +(Hearn.)26 b(A)16 b(p)q(ortable)g(LISP)g(compiler.)24 b Fc(Softwar)n(e)16 +b(Pr)n(actic)n(e)g(and)68 2013 y(Exp)n(erienc)n(e)p Fl(,)d(11,)g(pp.)h +(541{605,)d(1981.)0 2087 y([Griss,)i(1982])21 b(Griss,)15 b(Martin)g(L.,)f +(Eric)h(Benson,)h(and)f(Gerald)g(Q.)f(Maguire)h(Jr.)22 b(PSL:)15 +b(A)g(p)q(ortable)g(LISP)g(system.)21 b(In)68 2137 y([A)o(CM)13 +b(LFP)m(,)g(1982],)f(pp.)i(88{97.)0 2212 y([Guzman,)d(1966])22 +b(Guzman,)12 b(Adolfo,)g(and)i(Harold)f(V.)h(McIn)o(tosh.)19 +b Fc(CONVER)m(T)p Fl(.)e(AI)d(Memo)f(99,)g(MIT)h(Pro)r(ject)h(MA)o(C,)68 +2262 y(Cam)o(bridge,)c(Massac)o(h)o(usetts,)16 b(June)f(1966.)0 +2337 y([Hailp)q(ern,)e(1979])21 b(Hailp)q(ern,)g(Bren)o(t)f(T.,)h(and)e +(Bruce)i(L.)f(Hitson.)35 b Fc(S-1)20 b(A)o(r)n(chite)n(ctur)n(e)f(Manual)p +Fl(.)36 b(T)m(ec)o(hnical)20 b(Rep)q(ort)68 2386 y(161)11 b(\(ST)m +(AN-CS-79-715\),)f(Departmen)o(t)i(of)f(Electrical)i(Engineering,)f(Stanford) +f(Univ)o(ersit)o(y)m(,)h(Stanford,)g(California,)68 2436 y(Jan)o(uary)i +(1979.)0 2511 y([Halstead,)f(1984])21 b(Halstead,)14 b(Rob)q(ert)g(H.,)f(Jr.) +19 b(Implemen)o(tation)11 b(of)i(Multilisp:)k(Lisp)d(on)f(a)h(m)o(ultipro)q +(cessor.)k(In)13 b([A)o(CM)68 2561 y(LFP)m(,)g(1984],)f(pp.)h(9{17.)0 +2635 y([Halstead,)g(1985])21 b(Halstead,)12 b(Rob)q(ert)f(H.,)g(Jr.)k +(Multilisp:)g(A)d(language)e(for)h(concurren)o(t)i(sym)o(b)q(olic)c +(computation.)j Fc(A)o(CM)68 2685 y(T)m(r)n(ansactions)i(on)i(Pr)n(o)n(gr)n +(amming)e(L)n(anguages)i(and)g(Systems)p Fl(,)d(7:4,)g(pp.)g(501{538,)f +(Octob)q(er)j(1985.)p eop +%%Page: 74 74 +74 73 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(74)0 45 y Fl([Harbison,)13 b(1991])21 b(Harbison,)13 +b(Sam)o(uel)e(P)m(.,)i(and)g(Guy)g(L.)f(Steele)j(Jr.)i Fc(C:)d(A)g(R)n(efer)n +(enc)n(e)g(Manual)p Fl(.)k(Pren)o(tice-Hall,)13 b(Engle-)68 +95 y(w)o(o)q(o)q(d)g(Cli\013s,)g(New)i(Jersey)m(,)f(third)g(edition,)f(1991.) +k(ISBN)d(0-13-110933-2.)0 170 y([Hart,)f(1963])21 b(Hart,)f(Timoth)o(y)c(P)m +(.)31 b Fc(MA)o(CR)o(O)19 b(De\014nitions)g(for)g(LISP)p Fl(.)32 +b(AI)18 b(Memo)f(57,)i(MIT)f(Arti\014cial)g(In)o(telligence)68 +219 y(Pro)r(ject|RLE)c(and)g(MIT)g(Computation)d(Cen)o(ter,)k(Cam)o(bridge,)d +(Massac)o(h)o(usetts,)j(Octob)q(er)g(1963.)0 294 y([Hart,)e(1964])21 +b(Hart,)11 b(Timoth)o(y)d(P)m(.,)i(and)g(Thomas)f(G.)g(Ev)n(ans.)j(Notes)f +(on)f(implemen)o(ting)d(LISP)k(for)e(the)i(M-460)f(computer.)68 +344 y(In)k([Berk)o(eley)m(,)f(1964],)f(pp.)i(191{203.)0 419 +y([Hearn,)g(1971])21 b(Hearn,)13 b(A.)g(C.)j(REDUCE)d(2:)k(A)c(system)f(and)h +(language)f(for)h(algebraic)f(manipulation.)h(In)g Fc(Pr)n(o)n(c)n(e)n(e)n +(dings)68 469 y(of)18 b(the)g(Se)n(c)n(ond)i(Symp)n(osium)e(on)h(Symb)n(olic) +g(and)g(A)o(lgebr)n(aic)e(Manipulation)p Fl(,)i(pp.)e(128{133,)f(Los)i +(Angeles,)h(Marc)o(h)68 518 y(1971.)0 593 y([Henneman,)12 b(1964])22 +b(Henneman,)27 b(William)o(.)48 b(An)26 b(auxiliary)d(language)h(for)h(more)f +(natural)h(expression|The)h(A-)68 643 y(language.)17 b(In)d([Berk)o(eley)m(,) +f(1964],)f(pp.)i(239{248.)0 718 y([Hewitt,)f(1969])22 b(Hewitt,)d(Carl.)31 +b(PLANNER:)18 b(A)h(language)e(for)i(pro)o(ving)e(theorems)i(in)f(rob)q(ots.) +32 b(In)18 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)68 767 y(the)d([First])e +(International)i(Joint)g(Confer)n(enc)n(e)g(on)h(A)o(rti\014cial)d(Intel)r +(ligenc)n(e)i(\(IJCAI\))p Fl(,)e(pp.)h(295{301,)e(W)m(ashington,)68 +817 y(D.)g(C.,)g(Ma)o(y)g(1969.)f(In)o(ternational)i(Join)o(t)f(Council)g(on) +h(Arti\014cial)f(In)o(telligence.)0 892 y([Hewitt,)g(1972])22 +b(Hewitt,)g(Carl.)37 b Fc(Description)21 b(and)h(The)n(or)n(etic)n(al)e(A)o +(nalysis)h(\(Using)g(Schemata\))h(of)f(PLANNER:)g(A)68 942 +y(L)n(anguage)12 b(for)e(Pr)n(oving)h(The)n(or)n(ems)f(and)i(Manipulating)g +(Mo)n(dels)f(in)g(a)g(R)n(ob)n(ot)p Fl(.)g(PhD)f(thesis,)h(Massac)o(h)o +(usetts)g(Institute)68 992 y(of)i(T)m(ec)o(hnology)m(,)f(Cam)o(bridge,)g +(Massac)o(h)o(usetts,)j(April)e(1972.)k(MIT)d(Arti\014cial)f(In)o(telligence) +i(Lab)q(oratory)e(TR-258.)0 1066 y([Hewitt,)g(1975])22 b(Hewitt,)15 +b(Carl.)21 b(Ho)o(w)14 b(to)h(use)h(what)f(y)o(ou)g(kno)o(w.)20 +b(In)c Fc(Pr)n(o)n(c)n(e)n(e)n(dings)f(of)h(the)g(F)m(ourth)g(International)g +(Joint)68 1116 y(Confer)n(enc)n(e)h(on)g(A)o(rti\014cial)f(Intel)r(ligenc)n +(e)p Fl(,)g(v)o(olume)e(1,)i(pp.)g(189{198,)e(Tbilisi,)h(Georgia,)g(USSR,)h +(Septem)o(b)q(er)g(1975.)68 1166 y(In)o(ternational)g(Join)o(t)h(Council)f +(on)h(Arti\014cial)f(In)o(telligence.)h(Originally)e(circulated)i(as)g(W)m +(orking)f(P)o(ap)q(er)h(93,)g(MIT)68 1216 y(Arti\014cial)c(In)o(telligence)h +(Lab)q(oratory)m(,)f(Cam)o(bridge,)e(Massac)o(h)o(usetts,)16 +b(Ma)o(y)d(1975.)0 1290 y([Hewitt,)g(1991])22 b(Hewitt,)g(Carl,)f(and)g +(Je\013)h(Inman.)37 b(D)o(AI)20 b(b)q(et)o(wixt)h(and)g(b)q(et)o(w)o(een:)33 +b(F)m(rom)19 b(\\in)o(telligen)o(t)g(agen)o(ts")i(to)68 1340 +y(op)q(en)f(systems)g(science.)38 b Fc(IEEE)21 b(T)m(r)n(ansactions)f(on)h +(Systems,)h(Man,)g(and)f(Cyb)n(ernetics)p Fl(,)f(21:6,)g(pp.)g(1409{1419,)68 +1390 y(No)o(v)o(em)o(b)q(er/Decem)o(b)q(er)13 b(1991.)0 1465 +y([Hieb,)g(1990])21 b(Hieb,)15 b(Rob)q(ert,)h(R.)e(Ken)o(t)h(Dyb)o(vig,)f +(and)h(Carl)f(Bruggeman.)21 b(Represen)o(ting)16 b(con)o(trol)f(in)f(the)i +(presence)i(of)68 1515 y(\014rst-class)d(con)o(tin)o(uations.)i(In)d([A)o(CM) +f(PLDI,)h(1990],)d(pp.)j(66{77.)0 1589 y([IEEE,)g(1985])21 +b(IEEE,)d(New)h(Y)m(ork.)30 b Fc(IEEE)19 b(Standar)n(d)h(for)e(Binary)h(Flo)n +(ating-Point)g(A)o(rithmetic)p Fl(,)e(ANSI/IEEE)i(STD)68 1639 +y(754-1985,)11 b(1985.)17 b(An)d(American)f(National)g(Standard.)0 +1714 y([IEEE,)h(1991])21 b(IEEE)15 b(Computer)f(So)q(ciet)o(y)m(,)h(New)g(Y)m +(ork.)20 b Fc(IEEE)c(Standar)n(d)g(for)f(the)h(Scheme)g(Pr)n(o)n(gr)n(amming) +f(L)n(anguage)p Fl(,)68 1764 y(IEEE)f(STD)g(1178-1990,)d(1991.)0 +1838 y([IJCAI,)i(1973])22 b(In)o(ternational)14 b(Join)o(t)h(Council)g(on)g +(Arti\014cial)g(In)o(telligence.)23 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)16 +b(of)g(the)g(Thir)n(d)g(International)68 1888 y(Joint)e(Confer)n(enc)n(e)h +(on)h(A)o(rti\014cial)d(Intel)r(ligenc)n(e)i(\(IJCAI3\))p Fl(,)e(Stanford,)g +(California,)e(August)k(1973.)0 1963 y([Iv)o(erson,)f(1962])21 +b(Iv)o(erson,)14 b(Kenneth)h(E.)j Fc(A)d(Pr)n(o)n(gr)n(amming)f(L)n(anguage)p +Fl(.)19 b(Wiley)m(,)12 b(New)j(Y)m(ork,)e(1962.)0 2038 y([Jensen,)i(1974])21 +b(Jensen,)13 b(Kathleen,)f(and)g(Niklaus)f(Wirth.)i Fc(Pasc)n(al)g(User)f +(Manual)i(and)f(R)n(ep)n(ort)p Fl(.)h(Springer-V)m(erlag,)d(New)68 +2087 y(Y)m(ork,)i(1974.)0 2162 y([Kahn,)g(1984])21 b(Kahn,)14 +b(K.)g(M.,)f(and)h(M.)f(Carlsson.)19 b(Ho)o(w)14 b(to)f(implemen)o(t)f +(Prolog)h(on)h(a)f(LISP)i(mac)o(hine.)i(In)d([Campb)q(ell,)68 +2212 y(1984],)e(pp.)h(117{134.)0 2287 y([Kempf,)f(1987])21 +b(Kempf,)15 b(James,)g(W)m(arren)h(Harris,)f(Ro)o(y)g(D'Souza,)g(and)h(Alan)f +(Sn)o(yder.)23 b(Exp)q(erience)18 b(with)d(Common-)68 2337 +y(Lo)q(ops.)j(In)c Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)g(the)g(A)o(CM)g +(Confer)n(enc)n(e)g(on)h(Obje)n(cte)n(d-Oriente)n(d)e(Pr)n(o)n(gr)n(amming)g +(Systems,)h(L)n(anguages,)68 2386 y(and)j(Applic)n(ations)f(\(OOPSLA)h('87\)) +p Fl(,)f(pp.)g(214{226,)e(Orlando,)i(Florida,)f(Octob)q(er)i(1987.)e(Asso)q +(ciation)g(for)h(Com-)68 2436 y(puting)c(Mac)o(hinery)m(.)18 +b Fc(A)o(CM)d(SIGPLAN)g(Notic)n(es)p Fl(,)e(22:12,)f(Decem)o(b)q(er)i(1987.)j +(ISBN)d(0-89791-247-0.)0 2511 y([Kernighan,)f(1978])21 b(Kernighan,)13 +b(Brian)f(W.,)g(and)g(Dennis)h(Ritc)o(hie.)i Fc(The)f(C)f(Pr)n(o)n(gr)n +(amming)g(L)n(anguage)p Fl(.)k(Pren)o(tice-Hall,)68 2561 y(Englew)o(o)q(o)q +(d)c(Cli\013s,)g(New)i(Jersey)m(,)f(1978.)0 2635 y([Kn)o(uth,)f(1969])22 +b(Kn)o(uth,)10 b(Donald)f(E.)i Fc(Seminumeric)n(al)g(A)o(lgorithms)p +Fl(,)d(v)o(olume)g(2)h(of)h Fc(The)g(A)o(rt)g(of)h(Computer)g(Pr)n(o)n(gr)n +(amming)p Fl(.)68 2685 y(Addison-W)m(esley)m(,)h(Reading,)h(Massac)o(h)o +(usetts,)i(1969.)p eop +%%Page: 75 75 +75 74 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(75)0 45 y Fl([Kn)o(uth,)13 b(1974])22 b(Kn)o(uth,)16 +b(Donald)g(E.)25 b(Structured)18 b(programming)13 b(with)j(GO)g(TO)g +(statemen)o(ts.)26 b Fc(Computing)17 b(Surveys)p Fl(,)68 95 +y(6:4,)12 b(pp.)i(261{301,)d(Decem)o(b)q(er)k(1974.)0 168 y([Kn)o(uth,)e +(1981])22 b(Kn)o(uth,)g(Donald)d(E.)37 b Fc(Seminumeric)n(al)21 +b(A)o(lgorithms)f(\(Se)n(c)n(ond)h(Edition\))p Fl(,)h(v)o(olume)c(2)j(of)e +Fc(The)i(A)o(rt)f(of)68 218 y(Computer)14 b(Pr)n(o)n(gr)n(amming)p +Fl(.)k(Addison-W)m(esley)m(,)12 b(Reading,)h(Massac)o(h)o(usetts,)i(1981.)e +(ISBN)h(0-201-03822-6.)0 291 y([Kn)o(uth,)f(1986])22 b(Kn)o(uth,)11 +b(Donald)e(E.)k Fc(The)f(MET)m(AF)o(ONT)f(Bo)n(ok)p Fl(,)g(v)o(olume)e(C)h +(of)g Fc(Computers)h(and)i(T)m(yp)n(esetting)p Fl(.)f(Addison-)68 +341 y(W)m(esley)m(,)h(Reading,)f(Massac)o(h)o(usetts,)j(1986.)e(ISBN)h +(0-201-13445-4.)0 414 y([Kohlb)q(ec)o(k)o(er,)g(1986a])21 b(Kohlb)q(ec)o(k)o +(er,)12 b(Eugene,)g(Daniel)d(P)m(.)h(F)m(riedman,)f(Matthias)i(F)m(elleisen,) +f(and)h(Bruce)h(Duba.)g(Hygienic)68 464 y(macro)g(expansion.)18 +b(In)c([A)o(CM)g(LFP)m(,)f(1986],)f(pp.)h(151{161.)0 538 y([Kohlb)q(ec)o(k)o +(er,)h(1986b])21 b(Kohlb)q(ec)o(k)o(er,)c(Jr.,)f(Eugene)h(E.)24 +b Fc(Syntactic)17 b(Extensions)g(in)g(the)g(Pr)n(o)n(gr)n(amming)f(L)n +(anguage)i(Lisp)p Fl(.)68 587 y(T)m(ec)o(hnical)13 b(Rep)q(ort)h(109,)f +(Indiana)g(Univ)o(ersit)o(y)m(,)g(August)h(1986.)j(Ph.D.)c(thesis.)0 +661 y([Komoro)o(wski,)e(1982])21 b(Komoro)o(wski,)13 b(H.)i(J.)22 +b(QLOG:)15 b(The)g(programming)d(en)o(vironmen)o(t)i(for)h(PR)o(OLOG)f(in)h +(LISP.)22 b(In)68 710 y([Clark,)12 b(1982],)g(pp.)h(315{322.)0 +784 y([Kranz,)h(1986])21 b(Kranz,)h(Da)o(vid,)d(Ric)o(hard)h(Kelsey)m(,)h +(Jonathan)f(Rees,)h(P)o(aul)f(Hudak,)h(James)e(Philbin,)h(and)f(Norman)68 +834 y(Adams.)j(ORBIT:)16 b(An)g(optimizing)d(compiler)h(for)i(Sc)o(heme.)23 +b(In)16 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)f(the)h(1986)h(A)o(CM)e(SIGPLAN) +h('86)68 883 y(Symp)n(osium)h(on)g(Compiler)f(Construction)p +Fl(,)g(pp.)f(219{233,)g(P)o(alo)g(Alto,)g(California,)f(June)j(1986.)d(Asso)q +(ciation)i(for)68 933 y(Computing)11 b(Mac)o(hinery)m(.)18 +b Fc(A)o(CM)d(SIGPLAN)g(Notic)n(es)p Fl(,)e(21:7,)f(July)i(1986.)j(ISBN)d +(0-89791-197-0.)0 1007 y([Landin,)e(1964])22 b(Landin,)12 b(P)o(eter)k(J.)i +(The)c(mec)o(hanical)f(ev)n(aluation)f(of)h(expressions.)20 +b Fc(Computer)14 b(Journal)p Fl(,)g(6:4,)e(1964.)0 1080 y([Landin,)g(1965])22 +b(Landin,)e(P)o(eter)i(J.)37 b(A)20 b(corresp)q(ondence)j(b)q(et)o(w)o(een)f +(ALGOL)e(60)f(and)h(Ch)o(urc)o(h's)h(lam)o(b)q(da-notatio)o(n.)68 +1130 y Fc(Communic)n(ations)15 b(of)g(the)g(A)o(CM)p Fl(,)e(8:2{3,)f(F)m +(ebruary{Marc)o(h)i(1965.)0 1203 y([Lisp)f(Arc)o(hiv)o(e])32 +b Fb(LISP)21 b(ARCHIV)p Fl(.)j(On-line)16 b(arc)o(hiv)o(e)g(of)g(MacLisp)h +(release)g(notes,)g(1969{1981,)d(with)i(en)o(tries)i(b)o(y)e(Jon)g(L)68 +1253 y(White,)e(Guy)g(L.)g(Steele)h(Jr.,)g(Ho)o(w)o(ard)f(I.)g(Cannon,)g(Ric) +o(hard)g(P)m(.)f(Gabriel,)h(Ric)o(hard)g(M.)g(Stallman,)d(Eric)k(C.)f(Rosen,) +68 1303 y(Ric)o(hard)f(Green)o(blatt,)h(and)f(Rob)q(ert)i(W.)e(Kerns.)0 +1376 y([Lisp)g(Conference,)i(1980])24 b Fc(Confer)n(enc)n(e)13 +b(R)n(e)n(c)n(or)n(d)f(of)h(the)g(1980)g(LISP)g(Confer)n(enc)n(e)p +Fl(,)e(Stanford,)g(California,)f(August)h(1980.)68 1426 y(Republished)j(b)o +(y)f(Asso)q(ciation)h(for)g(Computing)e(Mac)o(hinery)m(.)0 +1499 y([Malac)o(hi,)g(1984])21 b(Malac)o(hi,)h(Y)m(onathan,)f(Zohar)h(Manna,) +g(and)f(Ric)o(hard)g(W)m(aldinger.)38 b(T)m(ABLOG:)21 b(The)g(deductiv)o(e-) +68 1549 y(tableau)13 b(programming)e(language.)17 b(In)c([A)o(CM)h(LFP)m(,)f +(1984],)f(pp.)h(323{330.)0 1622 y([Marti,)g(1979])21 b(Marti,)c(J.,)h(A.)f +(C.)g(Hearn,)h(M.)f(L.)g(Griss,)h(and)f(C.)g(Griss.)29 b(Standard)17 +b(lisp)g(rep)q(ort.)30 b Fc(A)o(CM)18 b(SIGPLAN)68 1672 y(Notic)n(es)p +Fl(,)13 b(14:10,)f(pp.)h(48{68,)f(Octob)q(er)k(1979.)0 1745 +y([Mathlab)d(Group,)g(1977])21 b(Mathlab)12 b(Group,)g(The.)17 +b Fc(MA)o(CSYMA)c(R)n(efer)n(enc)n(e)h(Manual)h(\(V)m(ersion)e(Nine\))p +Fl(.)j(MIT)c(Lab)q(ora-)68 1795 y(tory)i(for)f(Computer)g(Science,)i(Cam)o +(bridge,)d(Massac)o(h)o(usetts,)j(1977.)0 1868 y([McAllester,)f(1978])22 +b(McAllester,)16 b(Da)o(vid)e(A.)22 b Fc(A)16 b(Thr)n(e)n(e)f(V)m(alue)n(d)h +(T)m(ruth)g(Maintenanc)n(e)h(System)p Fl(.)22 b(AI)16 b(Memo)e(473,)g(MIT)68 +1918 y(Arti\014cial)f(In)o(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)e +(Massac)o(h)o(usetts,)16 b(Ma)o(y)d(1978.)0 1991 y([McCarth)o(y)m(,)g(1962]) +21 b(McCarth)o(y)m(,)12 b(John,)f(P)o(aul)g(W.)f(Abrahams,)h(Daniel)f(J.)h +(Edw)o(ards,)h(Timoth)o(y)d(P)m(.)i(Hart,)g(and)h(Mic)o(hael)e(I.)68 +2041 y(Levin.)18 b Fc(LISP)d(1.5)g(Pr)n(o)n(gr)n(ammer's)e(Manual)p +Fl(.)19 b(MIT)14 b(Press,)h(Cam)o(bridge,)d(Massac)o(h)o(usetts,)j(1962.)0 +2115 y([McCarth)o(y)m(,)e(1980])21 b(McCarth)o(y)m(,)11 b(John.)j(Lisp:)j +(Notes)12 b(on)f(its)g(past)g(and)g(future.)j(In)d([Lisp)g(Conference,)i +(1980],)d(pp.)g(v{viii.)0 2188 y([McCarth)o(y)m(,)j(1981])21 +b(McCarth)o(y)m(,)d(John.)28 b(History)17 b(of)f(LISP.)28 b(In)17 +b(W)m(exelblat,)g(Ric)o(hard)g(L.,)f(ed.,)i Fc(History)f(of)h(Pr)n(o)n(gr)n +(am-)68 2238 y(ming)f(L)n(anguages)p Fl(,)g(A)o(CM)f(Monograph)g(Series,)h(c) +o(hapter)g(IV,)f(pp.)g(173{197.)e(Academic)h(Press,)j(New)f(Y)m(ork,)e(1981.) +68 2287 y(\(Final)e(published)h(v)o(ersion)g(of)g(the)h(Pro)q(ceedings)g(of)f +(the)h(A)o(CM)f(SIGPLAN)g(History)g(of)f(Programming)e(Languages)68 +2337 y(Conference,)k(Los)f(Angeles,)g(California,)d(June)k(1978.\))i(ISBN)d +(0-12-745040-8.)0 2411 y([McDermott,)e(1974])22 b(McDermott,)15 +b(Drew)i(V.,)f(and)f(Gerald)h(Ja)o(y)g(Sussman.)24 b Fc(The)16 +b(CONNIVER)h(R)n(efer)n(enc)n(e)g(Manual)p Fl(.)68 2460 y(AI)d(Memo)e(295a,)h +(MIT)h(Arti\014cial)f(In)o(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)e +(Massac)o(h)o(usetts,)16 b(Jan)o(uary)d(1974.)0 2534 y([McDermott,)f(1977])22 +b(McDermott,)11 b(Drew)g(V.)g(Oral)g(remark)g(at)g(the)h(A)o(CM)f(Symp)q +(osium)e(on)i(Arti\014cial)g(In)o(telligence)g(and)68 2583 +y(Programmi)o(ng)g(Languages,)i(Ro)q(c)o(hester,)i(New)g(Y)m(ork,)e(August)h +(1977,)e(as)i(recollected)i(b)o(y)d(Guy)h(L.)f(Steele)i(Jr.)0 +2657 y([McDermott,)d(1980])22 b(McDermott,)16 b(Drew.)26 b(An)16 +b(e\016cien)o(t)h(en)o(vironmen)o(t)e(allo)q(cation)g(sc)o(heme)i(in)f(an)g +(in)o(terpreter)i(for)e(a)68 2707 y(lexically-scop)q(ed)d(LISP.)18 +b(In)c([Lisp)g(Conference,)h(1980],)d(pp.)h(154{162.)p eop +%%Page: 76 76 +76 75 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(76)0 45 y Fl([Mellish,)12 b(1984])22 b(Mellish,)13 +b(C.,)h(and)g(S.)g(Hardy)m(.)20 b(In)o(tegrating)14 b(Prolog)g(in)g(the)h +(POPLOG)g(en)o(vironmen)o(t.)j(In)d([Campb)q(ell,)68 95 y(1984],)d(pp.)h +(147{162.)0 170 y([Miller,)f(1987])22 b(Miller,)15 b(James)g(Slo)q(cum.)22 +b Fc(MultiScheme:)h(A)17 b(Par)n(al)r(lel)e(Pr)n(o)n(c)n(essing)i(System)g +(Mase)n(d)g(on)g(MIT)g(Scheme)p Fl(.)68 219 y(PhD)d(thesis,)g(Massac)o(h)o +(usetts)i(Institute)e(of)g(T)m(ec)o(hnology)m(,)e(Cam)o(bridge,)f(Massac)o(h) +o(usetts,)16 b(August)e(1987.)0 294 y([MIT)f(RLE,)h(1962a])21 +b(MIT)9 b(Researc)o(h)i(Lab)q(oratory)e(of)g(Electronics.)h(MIT)f(Press,)j +(Cam)o(bridge,)c(Massac)o(h)o(usetts.)13 b Fc(COMIT)68 344 +y(Pr)n(o)n(gr)n(ammers)g(R)n(efer)n(enc)n(e)i(Manual)p Fl(,)f(June)h(1962.)0 +419 y([MIT)e(RLE,)h(1962b])21 b(MIT)d(Researc)o(h)h(Lab)q(oratory)f(of)f +(Electronics.)i(MIT)f(Press,)j(Cam)o(bridge,)16 b(Massac)o(h)o(usetts.)33 +b Fc(A)o(n)68 469 y(Intr)n(o)n(duction)15 b(to)g(COMIT)f(Pr)n(o)n(gr)n +(amming)p Fl(,)f(June)h(1962.)0 543 y([Mo)q(on,)f(1974])21 +b(Mo)q(on,)12 b(Da)o(vid)f(A.)k Fc(MacLISP)f(R)n(efer)n(enc)n(e)f(Manual)p +Fl(.)j(MIT)c(Pro)r(ject)i(MA)o(C,)d(Cam)o(bridge,)f(Massac)o(h)o(usetts,)68 +593 y(April)j(1974.)0 668 y([Mo)q(on,)g(1984])21 b(Mo)q(on,)12 +b(Da)o(vid)f(A.)k(Garbage)d(collection)g(in)f(a)h(large)g(Lisp)g(system.)j +(In)e([A)o(CM)e(LFP)m(,)h(1984],)e(pp.)i(235{246.)0 742 y([Mo)q(on,)h(1986]) +21 b(Mo)q(on,)10 b(Da)o(vid)e(A.)j(Ob)r(ject-orien)o(ted)h(programmi)o(ng)7 +b(with)i(\015a)o(v)o(ors.)i(In)f([A)o(CM)f(OOPSLA,)h(1986],)f(pp.)g(1{8.)0 +817 y([Mo)q(ore,)k(1976])22 b(Mo)q(ore,)15 b(J.)f(Strother)i(I)q(I.)21 +b Fc(The)16 b(InterLISP)g(Virtual)f(Machine)i(Sp)n(e)n(ci\014c)n(ation)p +Fl(.)k(T)m(ec)o(hnical)15 b(Rep)q(ort)g(CSL)68 867 y(76-5,)d(Xero)o(x)i(P)o +(alo)f(Alto)h(Researc)o(h)h(Cen)o(ter,)f(P)o(alo)f(Alto,)g(California,)e +(Septem)o(b)q(er)k(1976.)0 942 y([Moses,)f(1970])21 b(Moses,)13 +b(Jo)q(el.)i Fc(The)e(F)m(unction)h(of)f(FUNCTION)f(in)h(LISP)p +Fl(.)i(AI)d(Memo)f(199,)g(MIT)h(Arti\014cial)f(In)o(telligence)68 +992 y(Lab)q(oratory)m(,)h(Cam)o(bridge,)g(Massac)o(h)o(usetts,)j(June)g +(1970.)0 1066 y([Moses?,)f(1978?])20 b(Moses,)14 b(Jo)q(el,)f(as)h(recalled)f +(\(and)g(probably)g(paraphrased\))h(b)o(y)f(Guy)g(L.)g(Steele)h(Jr.)f(There)i +(has)e(b)q(een)h(a)68 1116 y(p)q(ersisten)o(t)f(confusion)d(in)h(the)h +(literature)f(ab)q(out)g(this)g(remark.)f(Some)g(ha)o(v)o(e)h(rep)q(orted)h +(that)f(Moses)h(said)f(it)g(while)f(on)h(a)68 1166 y(panel)h(at)h(the)h(A)o +(CM)e(APL)i(79)e(Conference.)i(Moses)g(denies)g(ha)o(ving)d(ev)o(er)j(made)e +(that)h(particular)f(remark,)g(ho)o(w)o(ev)o(er,)68 1216 y(and)j(indeed)h +(Steele)h(has)e(heard)i(him)c(den)o(y)j(it.)f(Steele,)h(ho)o(w)o(ev)o(er,)g +(is)g(equally)e(certain)i(that)g(Moses)g Fc(did)g Fl(mak)o(e)e(suc)o(h)68 +1266 y(a)h(remark|not)f(at)h(the)h(APL)g(conference,)h(but)f(while)f +(standing)g(in)g(the)h(do)q(orw)o(a)o(y)f(of)f(Steele)j(and)e(White's)g +(o\016ce,)68 1315 y(MIT)i(ro)q(om)e(n)o(um)o(b)q(er)h(NE43-834,)h(circa)g +(1978.)e(Jon)j(L)e(White)h([p)q(ersonal)g(comm)o(unication)d(to)i(Steele,)j +(No)o(v)o(em)o(b)q(er)68 1365 y(30,)13 b(1992])g(indep)q(enden)o(tly)i +(recalls)g(ha)o(ving)e(heard)i(Moses)h(comparing)c(APL)j(to)f(a)g(diamond)e +(and)j(Lisp)f(to)g(a)g(ball)g(of)68 1415 y(m)o(ud)g(on)i(at)g(least)g(three)i +(separate)f(o)q(ccasions)g(in)e(that)h(o\016ce)h(building,)d(once)j(in)f +(NE43-834.)e(The)j(confusion)e(will)68 1465 y(undoubtedly)f(p)q(ersist.)0 +1539 y([Naur,)f(1963])21 b(Naur,)13 b(P)o(eter)i(\(ed.\),)e(et)h(al.)i +(Revised)e(rep)q(ort)g(on)f(the)h(algorithmic)d(language)h(ALGOL)h(60.)k +Fc(Communic)n(a-)68 1589 y(tions)e(of)f(the)h(A)o(CM)p Fl(,)e(6:1,)g(pp.)g +(1{20,)g(Jan)o(uary)h(1963.)0 1664 y([Okuno,)f(1984])21 b(Okuno,)14 +b(Hiroshi)g(G.,)f(Ikuo)h(T)m(ak)o(euc)o(hi,)f(Nobuy)o(asu)h(Osato,)h(Y)m +(asushi)f(Hibino,)f(and)h(Kazufumi)e(W)m(atan-)68 1714 y(ab)q(e.)j(T)m(A)o +(O:)c(A)g(fast)h(in)o(terpreter-cen)o(ter)q(ed)j(Lisp)c(system)h(on)f(Lisp)h +(mac)o(hine)f(ELIS.)j(In)e([A)o(CM)f(LFP)m(,)g(1984],)g(pp.)g(140{)68 +1764 y(149.)0 1838 y([Organic)o(k,)i(1972])21 b(Organic)o(k,)d(Elliot)f(I.)30 +b Fc(The)19 b(Multics)f(System:)27 b(A)o(n)19 b(Examination)g(of)g(Its)f +(Structur)n(e)p Fl(.)30 b(MIT)18 b(Press,)68 1888 y(Cam)o(bridge,)11 +b(Massac)o(h)o(usetts,)16 b(1972.)0 1963 y([P)o(adget,)d(1986])21 +b(P)o(adget,)g(Julian,)e(et)h(al.)34 b(Desiderata)20 b(for)f(the)h +(standardisation)f(of)g(Lisp.)34 b(In)19 b([A)o(CM)g(LFP)m(,)g(1986],)68 +2013 y(pp.)13 b(54{66.)0 2087 y([PDP-6)g(Lisp,)g(1967])22 b +Fc(PDP-6)13 b(LISP)h(\(LISP)f(1.6\))p Fl(.)h(AI)e(Memo)e(116,)h(MIT)h(Pro)r +(ject)g(MA)o(C,)g(Cam)o(bridge,)d(Massac)o(h)o(usetts,)68 2137 +y(Jan)o(uary)16 b(1967.)26 b(Revised)17 b(as)g(Memo)f(116A,)g(April)g(1967.)f +(The)j(rep)q(ort)g(do)q(es)f(not)g(b)q(ear)h(the)f(author's)g(name,)f(but)68 +2187 y(Je\013rey)f(P)m(.)e(Golden)h([Golden,)e(1970])g(attributes)j(it)f(to)f +(Jon)h(L)g(White.)0 2262 y([Pitman,)d(1980])22 b(Pitman,)11 +b(Ken)o(t)k(M.)j(Sp)q(ecial)c(forms)e(in)i(Lisp.)j(In)d([Lisp)g(Conference,)h +(1980],)c(pp.)j(179{187.)0 2337 y([Pitman,)d(1983])22 b(Pitman,)13 +b(Ken)o(t)i(M.)21 b Fc(The)16 b(R)n(evise)n(d)g(MacLISP)h(Manual)p +Fl(.)22 b(MIT/LCS/TR)14 b(295,)g(MIT)h(Lab)q(oratory)f(for)68 +2386 y(Computer)f(Science,)i(Cam)o(bridge,)c(Massac)o(h)o(usetts,)16 +b(Ma)o(y)d(1983.)0 2461 y([Pratt,)g(1973])22 b(Pratt,)17 b(V)m(aughan)f(R.)27 +b(T)m(op)16 b(do)o(wn)h(op)q(erator)g(precedence.)30 b(In)17 +b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)f(the)h(A)o(CM)f(Symp)n(osium)68 +2511 y(on)e(Principles)f(of)h(Pr)n(o)n(gr)n(amming)g(L)n(anguages)p +Fl(,)f(pp.)g(41{51,)e(Boston,)i(Octob)q(er)h(1973.)e(Asso)q(ciation)g(for)h +(Computing)68 2561 y(Mac)o(hinery)m(.)0 2635 y([Pratt,)f(1976])22 +b(Pratt,)13 b(V)m(aughan)e(R.)k Fc(CGOL:)e(A)o(n)h(A)o(lternative)f(External) +g(R)n(epr)n(esentation)h(for)f(LISP)h(Users)p Fl(.)h(AI)e(W)m(ork-)68 +2685 y(ing)g(P)o(ap)q(er)h(121,)f(MIT)h(Arti\014cial)f(In)o(telligence)h(Lab) +q(oratory)m(,)f(Cam)o(bridge,)f(Massac)o(h)o(usetts,)j(Marc)o(h)f(1976.)p +eop +%%Page: 77 77 +77 76 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(77)0 45 y Fl([Quam,)12 b(1972])21 b(Quam,)11 b(Lynn)h(H.,)g(and)g +(Whit\014eld)g(Di\016e.)j Fc(Stanfor)n(d)f(LISP)g(1.6)f(Manual)p +Fl(.)k(SAIL)12 b(Op)q(erating)h(Note)g(28.6,)68 95 y(Stanford)g(Arti\014cial) +h(In)o(telligence)g(Lab)q(oratory)m(,)e(Stanford,)h(California,)f(1972.)0 +169 y([Ra)o(ymond,)e(1991])22 b(Ra)o(ymond,)8 b(Eric,)k(ed.)i +Fc(The)e(New)f(Hacker's)h(Dictionary)p Fl(.)h(MIT)e(Press,)i(Cam)o(bridge,)c +(Massac)o(h)o(usetts,)68 219 y(1991.)j(ISBN)j(0-262-68069-6.)0 +294 y([Rees,)f(1982])21 b(Rees,)12 b(Jonathan)f(A.,)g(and)g(Norman)f(I.)h +(Adams)f(IV.)k(T:)d(A)g(dialect)g(of)g(Lisp;)h(or,)f(LAMBD)o(A:)g(The)h +(ultimate)68 344 y(soft)o(w)o(are)i(to)q(ol.)j(In)d([A)o(CM)f(LFP)m(,)g +(1982],)f(pp.)i(114{122.)0 418 y([Rees,)g(1986])21 b(Rees,)11 +b(Jonathan,)f(William)c(Clinger,)j(et)h(al.)h(The)f(revised)1148 +403 y Fa(3)1177 418 y Fl(rep)q(ort)h(on)e(the)i(algorithmic)c(language)i(Sc)o +(heme.)68 468 y Fc(A)o(CM)14 b(SIGPLAN)h(Notic)n(es)p Fl(,)e(21:12,)f(pp.)i +(37{79,)e(Decem)o(b)q(er)i(1986.)0 542 y([Reynolds,)f(1972])21 +b(Reynolds,)16 b(John)g(C.)24 b(De\014nitional)14 b(in)o(terpreters)19 +b(for)c(higher)h(order)h(programming)12 b(languages.)24 b(In)68 +592 y Fc(Pr)n(o)n(c)n(e)n(e)n(dings)15 b(of)g(the)g(A)o(CM)g(National)g +(Confer)n(enc)n(e)p Fl(,)f(pp.)g(717{740,)e(Boston,)i(August)h(1972.)e(Asso)q +(ciation)h(for)g(Com-)68 642 y(puting)f(Mac)o(hinery)m(.)0 +717 y([Robinson,)f(1982])21 b(Robinson,)12 b(J.)h(A.,)f(and)h(E.)f(E.)h(Sib)q +(ert.)k(LOGLISP:)c(Motiv)n(ation,)e(design,)h(and)h(implemen)o(tation.)g(In) +68 766 y([Clark,)f(1982],)g(pp.)h(299{313.)0 841 y([Ro)o(ylance,)f(1988])21 +b(Ro)o(ylance,)e(Gerald.)30 b(Expressing)19 b(mathematical)c(subroutines)k +(constructiv)o(ely)m(.)32 b(In)18 b([A)o(CM)g(LFP)m(,)68 891 +y(1988],)12 b(pp.)h(8{13.)0 965 y([Rudlo)q(e,)f(1962])22 b(Rudlo)q(e,)d(H.)35 +b Fc(T)m(ap)n(e)19 b(Editor)p Fl(.)34 b(Program)18 b(W)m(rite-up)g(BBN-101,)j +(Bolt)e(Beranek)h(and)f(Newman)f(Inc.,)68 1015 y(Cam)o(bridge,)11 +b(Massac)o(h)o(usetts,)16 b(Jan)o(uary)e(1962.)0 1090 y([Sab)q(ot,)f(1988])21 +b(Sab)q(ot,)12 b(Gary)f(W.)j Fc(The)f(Par)n(alation)f(Mo)n(del:)18 +b(A)o(r)n(chite)n(ctur)n(e-Indep)n(endent)13 b(Par)n(al)r(lel)f(Pr)n(o)n(gr)n +(amming)p Fl(.)i(MIT)68 1140 y(Press,)h(Cam)o(bridge,)c(Massac)o(h)o(usetts,) +16 b(1988.)h(ISBN)d(0-262-19277-2.)0 1214 y([Sammet,)c(1969])22 +b(Jean)f(E.)g(Sammet.)35 b Fc(Pr)n(o)n(gr)n(amming)21 b(L)n(anguages:)33 +b(History)20 b(and)i(F)m(undamentals)p Fl(.)39 b(Pren)o(tice-Hall,)68 +1264 y(Englew)o(o)q(o)q(d)13 b(Cli\013s,)g(New)i(Jersey)m(,)f(1969.)0 +1338 y([Saunders,)g(1964a])21 b(Saunders,)g(Rob)q(ert)f(A.)34 +b(The)20 b(LISP)f(listing)f(for)h(the)h(Q-32)f(compiler,)f(and)i(some)e +(samples.)33 b(In)68 1388 y([Berk)o(eley)m(,)13 b(1964],)f(pp.)i(290{317.)0 +1463 y([Saunders,)g(1964b])21 b(Saunders,)i(Rob)q(ert)d(A.)37 +b(The)21 b(LISP)g(system)f(for)g(the)g(Q-32)g(computer.)37 +b(In)20 b([Berk)o(eley)m(,)i(1964],)68 1513 y(pp.)13 b(220{238.)0 +1587 y([Sha)o(w,)g(1981])21 b(Sha)o(w,)16 b(Mary)m(,)g(Wm.)e(A.)h(W)m(ulf,)g +(and)h(Ralph)f(L.)h(London.)24 b(Abstraction)17 b(and)f(v)o(eri\014cation)g +(in)g(Alphard:)68 1637 y(Iteration)g(and)g(generators.)27 b(In)16 +b(Sha)o(w,)g(Mary)m(,)g(ed.,)h Fc(ALPHARD:)g(F)m(orm)g(and)h(Content)p +Fl(,)e(c)o(hapter)i(3,)e(pp.)g(73{116.)68 1687 y(Springer-V)m(erlag,)d(New)h +(Y)m(ork,)f(1981.)k(ISBN)e(0-387-90663-0.)0 1761 y([Smith,)c(1970])22 +b(Smith,)14 b(Da)o(vid)h(Can\014eld.)25 b Fc(MLISP)p Fl(.)h(T)m(ec)o(hnical) +16 b(Rep)q(ort)h(AIM-135,)e(Stanford)h(Arti\014cial)g(In)o(telligence)68 +1811 y(Pro)r(ject,)e(Octob)q(er)i(1970.)0 1886 y([Smith,)11 +b(1973])22 b(Smith,)10 b(Da)o(vid)h(Can\014eld,)g(and)h(Horace)h(J.)f(Enea.)j +(Bac)o(ktrac)o(king)d(in)g(MLISP2:)17 b(An)12 b(e\016cien)o(t)h(bac)o(ktrac)o +(k-)68 1935 y(ing)g(metho)q(d)g(for)g(LISP.)19 b(In)14 b([IJCAI,)f(1973],)f +(pp.)h(677{685.)0 2010 y([Smith,)e(1975])22 b(Smith,)14 b(Brian)i(C.,)g(and)f +(Carl)h(Hewitt.)25 b Fc(A)16 b(PLASMA)i(Primer)p Fl(.)23 b(W)m(orking)14 +b(P)o(ap)q(er)j(92,)f(MIT)g(Arti\014cial)68 2060 y(In)o(telligence)e(Lab)q +(oratory)m(,)e(Cam)o(bridge,)g(Massac)o(h)o(usetts,)k(Octob)q(er)f(1975.)0 +2134 y([Sobalv)n(arro,)d(1988])21 b(Sobalv)n(arro,)10 b(P)o(atric)o(k)h(G.)i +(A)e(Lifetime-based)e(Garbage)i(Collector)g(for)f(LISP)h(Systems)g(on)g +(General-)68 2184 y(Purp)q(ose)26 b(Computers.)49 b(Bac)o(helor's)25 +b(Thesis,)j(Massac)o(h)o(usetts)e(Institute)g(of)e(T)m(ec)o(hnology)m(,)h +(Cam)o(bridge,)g(Mas-)68 2234 y(sac)o(h)o(usetts,)15 b(Septem)o(b)q(er)f +(1988.)0 2308 y([Stallman,)c(1976])22 b(Stallman,)17 b(Ric)o(hard)i(M.,)g +(and)g(Gerald)g(Ja)o(y)g(Sussman.)32 b Fc(F)m(orwar)n(d)19 +b(R)n(e)n(asoning)i(and)f(Dep)n(endency-)68 2358 y(Dir)n(e)n(cte)n(d)15 +b(Backtr)n(acking)h(in)g(a)g(System)g(for)f(Computer-A)o(ide)n(d)g(Cir)n +(cuit)g(A)o(nalysis)p Fl(.)20 b(AI)15 b(Memo)f(380,)g(MIT)h(Arti\014cial)68 +2408 y(In)o(telligence)h(Lab)q(oratory)m(,)g(Cam)o(bridge,)f(Massac)o(h)o +(usetts,)j(Septem)o(b)q(er)f(1976.)24 b(Also)17 b(in)e Fc(A)o(rti\014cial)h +(Intel)r(ligenc)n(e)p Fl(,)h(9,)68 2458 y(pp.)c(135-196,)f(1977.)0 +2532 y([Steele,)i(1975])21 b(Steele,)14 b(Guy)f(Lewis,)h(Jr.)k(Multipro)q +(cessing)c(compactifying)d(garbage)i(collection.)k Fc(Communic)n(ations)e(of) +68 2582 y(the)g(A)o(CM)p Fl(,)e(18:9,)f(pp.)h(495{508,)f(Septem)o(b)q(er)i +(1975.)0 2657 y([Steele,)g(1976a])21 b(Steele,)c(Guy)e(Lewis,)h(Jr.,)g(and)f +(Gerald)g(Ja)o(y)h(Sussman.)22 b Fc(LAMBD)o(A:)17 b(The)g(Ultimate)e(Imp)n +(er)n(ative)p Fl(.)23 b(AI)68 2707 y(Memo)12 b(353,)h(MIT)h(Arti\014cial)f +(In)o(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)f(Massac)o(h)o(usetts,)j +(Marc)o(h)f(1976.)p eop +%%Page: 78 78 +78 77 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(78)0 45 y Fl([Steele,)14 b(1976b])21 b(Steele,)16 +b(Guy)f(Lewis,)g(Jr.)22 b Fc(LAMBD)o(A:)16 b(The)g(Ultimate)f(De)n(clar)n +(ative)p Fl(.)21 b(AI)16 b(Memo)d(379,)i(MIT)g(Arti\014cial)68 +95 y(In)o(telligence)f(Lab)q(oratory)m(,)e(Cam)o(bridge,)g(Massac)o(h)o +(usetts,)k(No)o(v)o(em)o(b)q(er)d(1976.)0 170 y([Steele,)h(1977a])21 +b(Steele,)14 b(Guy)f(Lewis,)h(Jr.)k Fc(Compiler)13 b(Optimization)h(Base)n(d) +i(on)f(Viewing)f(LAMBD)o(A)h(as)g(R)n(ename)g(plus)68 219 y(Goto.)j +Fl(Master's)d(thesis,)f(Massac)o(h)o(usetts)i(Institute)f(of)e(T)m(ec)o +(hnology)m(,)f(Ma)o(y)i(1977.)j(Published)d(as)g([Steele,)g(1978a].)0 +294 y([Steele,)g(1977b])21 b(Steele,)g(Guy)d(Lewis,)h(Jr.)32 +b(Data)18 b(represen)o(tations)j(in)d(PDP-10)g(MacLISP.)32 +b(In)19 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)g(the)68 344 y(1977)d(MA)o +(CSYMA)g(Users')f(Confer)n(enc)n(e)p Fl(,)g(pp.)f(203{214,)f(W)m(ashington,)h +(D.)g(C.,)g(July)h(1977.)e(NASA)j(Scien)o(ti\014c)f(and)68 +394 y(T)m(ec)o(hnical)h(Information)e(O\016ce.)j(Also)f(published)h(as)g(AI)f +(Memo)g(420,)g(MIT)g(Arti\014cial)g(In)o(telligence)h(Lab)q(oratory)m(,)68 +444 y(Cam)o(bridge,)11 b(Massac)o(h)o(usetts,)16 b(Septem)o(b)q(er)e(1977.)0 +518 y([Steele,)g(1977c])22 b(Steele,)17 b(Guy)e(Lewis,)i(Jr.)25 +b(F)m(ast)16 b(arithmetic)f(in)g(maclisp.)23 b(In)16 b Fc(Pr)n(o)n(c)n(e)n(e) +n(dings)h(of)f(the)h(1977)h(MA)o(CSYMA)68 568 y(Users')f(Confer)n(enc)n(e)p +Fl(,)h(pp.)e(215{224,)g(W)m(ashington,)h(D.)f(C.,)i(July)f(1977.)f(NASA)h +(Scien)o(ti\014c)h(and)f(T)m(ec)o(hnical)g(Infor-)68 618 y(mation)h(O\016ce.) +j(Also)f(published)h(as)f(AI)h(Memo)e(421,)i(MIT)g(Arti\014cial)f(In)o +(telligence)g(Lab)q(oratory)m(,)h(Cam)o(bridge,)68 668 y(Massac)o(h)o +(usetts,)15 b(Septem)o(b)q(er)f(1977.)0 742 y([Steele,)g(1977d])21 +b(Steele,)15 b(Guy)e(L.,)g(Jr.)19 b(Macaroni)13 b(is)h(b)q(etter)h(than)f +(spaghetti.)k(In)c([A)o(CM)g(AIPL,)f(1977],)f(pp.)i(60{66.)0 +817 y([Steele,)g(1977e])22 b(Steele,)c(Guy)f(Lewis,)h(Jr.)28 +b(Debunking)17 b(the)g(`exp)q(ensiv)o(e)h(pro)q(cedure)h(call')d(m)o(yth;)h +(or,)g(Pro)q(cedure)j(call)68 867 y(implem)o(en)o(tations)13 +b(considered)18 b(harmful;)c(or,)i(LAMBD)o(A:)f(The)i(ultimate)d(GOTO.)23 +b(In)16 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)g(the)f(A)o(CM)68 +917 y(National)c(Confer)n(enc)n(e)p Fl(,)f(pp.)g(153{162,)e(Seattle,)j(Octob) +q(er)h(1977.)c(Asso)q(ciation)i(for)g(Computing)e(Mac)o(hinery)m(.)i(Revised) +68 967 y(v)o(ersion)16 b(published)f(as)h(AI)g(Memo)f(443,)g(MIT)g +(Arti\014cial)g(In)o(telligence)h(Lab)q(oratory)m(,)f(Cam)o(bridge,)f(Massac) +o(h)o(usetts,)68 1016 y(Octob)q(er)h(1977.)0 1091 y([Steele,)f(1978a])21 +b(Steele,)13 b(Guy)f(Lewis,)h(Jr.)j Fc(RABBIT:)e(A)g(Compiler)e(for)h(SCHEME) +h(\(A)g(Study)g(in)g(Compiler)f(Optimiza-)68 1141 y(tion\))p +Fl(.)k(T)m(ec)o(hnical)c(Rep)q(ort)g(474,)g(MIT)g(Arti\014cial)f(In)o +(telligence)i(Lab)q(oratory)m(,)e(Ma)o(y)h(1978.)j(This)d(is)g(a)h(revised)g +(v)o(ersion)68 1191 y(of)f(the)h(author's)g(master's)g(thesis)g([Steele,)g +(1977a].)0 1266 y([Steele,)g(1978b])21 b(Steele,)16 b(Guy)e(Lewis,)h(Jr.,)f +(and)h(Gerald)f(Ja)o(y)h(Sussman.)k Fc(The)d(A)o(rt)f(of)g(the)h(Interpr)n +(eter;)f(or,)g(The)h(Mo)n(d-)68 1315 y(ularity)h(Complex)i(\(Parts)f(Zer)n +(o,)h(One,)g(and)g(Two\))p Fl(.)29 b(AI)18 b(Memo)e(453,)i(MIT)f +(Arti\014cial)g(In)o(telligence)h(Lab)q(oratory)m(,)68 1365 +y(Cam)o(bridge,)11 b(Massac)o(h)o(usetts,)16 b(Ma)o(y)d(1978.)0 +1440 y([Steele,)h(1978c])22 b(Steele,)12 b(Guy)e(Lewis,)i(Jr.,)f(and)g +(Gerald)g(Ja)o(y)f(Sussman.)j Fc(The)f(R)n(evise)n(d)h(R)n(ep)n(ort)f(on)h +(SCHEME:)f(A)g(Diale)n(ct)68 1490 y(of)f(LISP)p Fl(.)i(AI)e(Memo)e(452,)h +(MIT)h(Arti\014cial)f(In)o(telligence)g(Lab)q(oratory)m(,)g(Cam)o(bridge,)f +(Massac)o(h)o(usetts,)k(Jan)o(uary)d(1978.)0 1564 y([Steele,)k(1979])21 +b(Steele,)15 b(Guy)f(Lewis,)h(Jr.,)f(and)g(Gerald)g(Ja)o(y)h(Sussman.)k +(Constrain)o(ts.)h(In)14 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)h(the)f(APL)h +(79)68 1614 y(Confer)n(enc)n(e)p Fl(,)d(pp.)g(208{225,)e(Ro)q(c)o(hester,)j +(New)g(Y)m(ork,)f(June)h(1979.)e(Asso)q(ciation)h(for)g(Computing)e(Mac)o +(hinery)m(.)17 b Fc(APL)68 1664 y(Quote)h(Quad)p Fl(,)f(9:4,)f(June)i(1979.)d +(Also)i(published)g(as)g(AI)g(Memo)f(502,)g(MIT)h(Arti\014cial)f(In)o +(telligence)h(Lab)q(oratory)m(,)68 1714 y(Cam)o(bridge,)11 +b(Massac)o(h)o(usetts,)16 b(No)o(v)o(em)o(b)q(er)d(1978.)0 +1789 y([Steele,)h(1980])21 b(Steele,)d(Guy)e(Lewis,)h(Jr.,)g(and)g(Gerald)f +(Ja)o(y)g(Sussman.)26 b(The)17 b(dream)e(of)h(a)h(lifetime:)k(A)c(lazy)f(v)n +(ariable)68 1838 y(exten)o(t)f(mec)o(hanism.)g(In)f([Lisp)f(Conference,)i +(1980],)d(pp.)i(163{172.)0 1913 y([Steele,)g(1982])21 b(Steele,)15 +b(Guy)e(L.,)g(Jr.)18 b(An)c(o)o(v)o(erview)g(of)g(Comm)o(on)d(Lisp.)18 +b(In)c([A)o(CM)f(LFP)m(,)g(1982],)f(pp.)i(98{107.)0 1988 y([Steele,)g(1986]) +21 b(Steele,)e(Guy)f(L.,)f(Jr.,)h(and)g(W.)e(Daniel)h(Hillis.)28 +b(Connection)18 b(Mac)o(hine)f(Lisp:)26 b(Fine-grained)17 b(parallel)68 +2038 y(sym)o(b)q(olic)12 b(pro)q(cessing.)19 b(In)14 b([A)o(CM)f(LFP)m(,)g +(1986],)f(pp.)i(279{297.)0 2112 y([Steele,)g(1990a])21 b(Steele,)d(Guy)e(L.,) +g(Jr.)26 b(Making)15 b(async)o(hronous)i(parallelism)d(safe)j(for)f(the)h(w)o +(orld.)25 b(In)16 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)68 2162 +y(the)g(Sevente)n(enth)h(A)o(nnual)g(A)o(CM)f(Symp)n(osium)h(on)f(Principles) +g(of)g(Pr)n(o)n(gr)n(amming)g(L)n(anguages)p Fl(,)g(pp.)f(218{231,)f(San)68 +2212 y(F)m(rancisco,)e(Jan)o(uary)h(1990.)f(Asso)q(ciation)g(for)h(Computing) +e(Mac)o(hinery)m(.)18 b(ISBN)c(0-89791-343-4.)0 2287 y([Steele,)g(1990b])21 +b(Steele,)d(Guy)d(L.,)h(Jr.,)g(and)g(Jon)g(L)g(White.)24 b(Ho)o(w)16 +b(to)g(prin)o(t)g(\015oating-p)q(oin)o(t)e(n)o(um)o(b)q(ers)i(accurately)m(.) +25 b(In)68 2337 y([A)o(CM)13 b(PLDI,)g(1990],)f(pp.)i(112{126.)0 +2411 y([Sussman,)e(1971])21 b(Sussman,)11 b(Gerald)h(Ja)o(y)m(,)e(T)m(erry)i +(Winograd,)f(and)g(Eugene)i(Charniak.)h Fc(Micr)n(o-PLANNER)e(R)n(efer)n(enc) +n(e)68 2461 y(Manual)p Fl(.)21 b(AI)15 b(Memo)e(203A,)h(MIT)h(Arti\014cial)f +(In)o(telligence)h(Lab)q(oratory)m(,)e(Cam)o(bridge,)g(Massac)o(h)o(usetts,)k +(Decem)o(b)q(er)68 2511 y(1971.)0 2586 y([Sussman,)12 b(1972a])21 +b(Sussman,)11 b(Gerald)g(Ja)o(y)m(,)g(and)h(Drew)g(Vincen)o(t)g(McDermott.)i +(F)m(rom)c(PLANNER)i(to)f(CONNIVER|)68 2635 y(A)e(genetic)h(approac)o(h.)h +(In)e Fc(Pr)n(o)n(c)n(e)n(e)n(dings)i(of)f(the)h(1972)h(F)m(al)r(l)e(Joint)h +(Computer)f(Confer)n(enc)n(e)p Fl(,)g(pp.)f(1171{1179,)e(Mon)o(tv)n(ale,)68 +2685 y(New)14 b(Jersey)m(,)h(August)f(1972.)f(AFIPS)h(Press.)20 +b(This)13 b(is)h(the)h(published)f(v)o(ersion)g(of)f([Sussman,)f(1972b].)p +eop +%%Page: 79 79 +79 78 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(79)0 45 y Fl([Sussman,)12 b(1972b])22 b(Sussman,)d(Gerald)h(Ja)o(y) +m(,)g(and)f(Drew)i(Vincen)o(t)f(McDermott.)35 b Fc(Why)21 b(Conniving)g(is)f +(Better)f(than)68 95 y(Planning)p Fl(.)35 b(AI)20 b(Memo)e(255A,)g(MIT)h +(Arti\014cial)g(In)o(telligence)h(Lab)q(oratory)m(,)g(Cam)o(bridge,)e(Massac) +o(h)o(usetts,)k(April)68 145 y(1972.)0 219 y([Sussman,)12 b(1975a])21 +b(Sussman,)12 b(Gerald)h(Ja)o(y)m(,)g(and)g(Ric)o(hard)g(M)g(Stallman.)i +Fc(Heuristic)e(T)m(e)n(chniques)i(in)f(Computer-A)o(ide)n(d)68 +269 y(Cir)n(cuit)19 b(A)o(nalysis)p Fl(.)36 b(AI)20 b(Memo)f(328,)i(MIT)f +(Arti\014cial)f(In)o(telligence)i(Lab)q(oratory)m(,)f(Cam)o(bridge,)f(Massac) +o(h)o(usetts,)68 319 y(Marc)o(h)14 b(1975.)0 394 y([Sussman,)e(1975b])22 +b(Sussman,)14 b(Gerald)h(Ja)o(y)m(,)g(and)g(Guy)g(Lewis)h(Steele)h(Jr.)23 +b Fc(SCHEME:)17 b(A)o(n)f(Interpr)n(eter)f(for)h(Extende)n(d)68 +444 y(L)n(amb)n(da)k(Calculus)p Fl(.)33 b(AI)19 b(Memo)f(349,)h(MIT)g +(Arti\014cial)f(In)o(telligence)h(Lab)q(oratory)m(,)g(Cam)o(bridge,)f(Massac) +o(h)o(usetts,)68 493 y(Decem)o(b)q(er)c(1975.)0 568 y([Sussman,)e(1988])21 +b(Sussman,)13 b(Gerald)h(Ja)o(y)m(,)f(and)g(Matthew)i(Halfan)o(t.)i +(Abstraction)e(in)e(n)o(umerical)g(metho)q(ds.)k(In)d([A)o(CM)68 +618 y(LFP)m(,)f(1988],)f(pp.)h(1{7.)0 693 y([Sw)o(anson,)g(1988])21 +b(Sw)o(anson,)11 b(Mark)f(R.,)g(Rob)q(ert)h(R.)e(Kessler,)k(and)d(Gary)g +(Lindstrom.)h(An)g(implemen)o(tatio)o(n)d(of)i(P)o(ortable)68 +742 y(Standard)k(Lisp)f(on)h(the)h(BBN)f(Butter\015y.)20 b(In)14 +b([A)o(CM)f(LFP)m(,)g(1988],)f(pp.)i(132{142.)0 817 y([Swinehart,)f(1972])21 +b(Swinehart,)12 b(D.)f(C.,)h(and)f(R.)g(F.)h(Sproull.)h Fc(SAIL)p +Fl(.)i(SAIL)d(Op)q(erating)g(Note)h(57.2,)d(Stanford)i(Arti\014cial)68 +867 y(In)o(telligence)i(Lab)q(oratory)m(,)e(Stanford,)i(California,)d(1972.)0 +942 y([Sym)o(b)q(olics,)g(1985])21 b(Sym)o(b)q(olics,)16 b(Inc.,)i(Cam)o +(bridge,)e(Massac)o(h)o(usetts.)30 b Fc(R)n(efer)n(enc)n(e)18 +b(Guide)g(to)g(Symb)n(olics-Lisp)p Fl(,)g(Marc)o(h)68 992 y(1985.)0 +1066 y([T)m(ak)o(euc)o(hi,)12 b(1983])22 b(T)m(ak)o(euc)o(hi,)15 +b(Ikuo,)g(Hiro)q(c)o(hi)h(Okuno,)f(and)h(Nobuy)o(asu)g(Ohsato.)24 +b(T)m(A)o(O:)15 b(A)h(harmonic)e(mean)g(of)i(Lisp,)68 1116 +y(Prolog,)c(and)i(Smalltalk.)h Fc(A)o(CM)f(SIGPLAN)i(Notic)n(es)p +Fl(,)d(18:7,)f(pp.)h(65{74,)f(July)i(1983.)0 1191 y([T)m(eitelman,)d(1966])21 +b(T)m(eitelman,)12 b(W)m(arren.)19 b Fc(PILOT:)14 b(A)h(Step)h(towar)n(d)e +(Man-Computer)i(Symbiosis)p Fl(.)j(T)m(ec)o(hnical)14 b(Rep)q(ort)68 +1241 y(MA)o(C-TR-32,)e(MIT)i(Pro)r(ject)h(MA)o(C,)e(Septem)o(b)q(er)i(1966.)h +(Ph.D.)d(thesis.)0 1315 y([T)m(eitelman,)e(1971])21 b(T)m(eitelman,)15 +b(W.,)h(D.)g(G.)g(Bobro)o(w,)h(A.)f(K.)g(Hartley)m(,)h(and)f(D.)g(L.)g(Murph) +o(y)m(.)26 b Fc(BBN-LISP:)18 b(TENEX)68 1365 y(R)n(efer)n(enc)n(e)d(Manual)p +Fl(.)j(Bolt)c(Beranek)h(and)f(Newman)f(Inc.,)g(Cam)o(bridge,)f(Massac)o(h)o +(usetts,)j(1971.)0 1440 y([T)m(eitelman,)c(1973])21 b(T)m(eitelman,)12 +b(W)m(arren.)18 b(CLISP:)13 b(Con)o(v)o(ersational)g(LISP.)18 +b(In)c([IJCAI,)f(1973],)f(pp.)i(686{690.)0 1515 y([T)m(eitelman,)d(1974])21 +b(T)m(eitelman,)10 b(W)m(arren,)h(et)h(al.)h Fc(InterLISP)g(R)n(efer)n(enc)n +(e)f(Manual)p Fl(.)j(Xero)o(x)c(P)o(alo)g(Alto)g(Researc)o(h)h(Cen)o(ter,)68 +1564 y(P)o(alo)h(Alto,)g(California,)e(1974.)17 b(First)d(revision.)0 +1639 y([T)m(eitelman,)d(1978])21 b(T)m(eitelman,)10 b(W)m(arren,)h(et)h(al.)h +Fc(InterLISP)g(R)n(efer)n(enc)n(e)f(Manual)p Fl(.)j(Xero)o(x)c(P)o(alo)g +(Alto)g(Researc)o(h)h(Cen)o(ter,)68 1689 y(P)o(alo)h(Alto,)g(California,)e +(Octob)q(er)k(1978.)i(Third)d(revision.)0 1764 y([T)m(esler,)f(1973])22 +b(T)m(esler,)c(La)o(wrence)h(G.,)e(Horace)h(J.)f(Enea,)h(and)g(Da)o(vid)e(C.) +h(Smith.)27 b(The)17 b(LISP70)h(pattern)g(matc)o(hing)68 1813 +y(system.)f(In)d([IJCAI,)g(1973],)e(pp.)h(671{676.)0 1888 y([Thac)o(k)o(er,)g +(1982])22 b(Thac)o(k)o(er,)13 b(C.)f(P)m(.,)f(E.)h(M.)h(McCreigh)o(t,)f(B.)h +(W.)e(Lampson,)g(R.)h(F.)g(Sproull,)g(and)g(D.)g(R.)f(Boggs.)16 +b(Alto:)h(A)68 1938 y(p)q(ersonal)10 b(computer.)i(In)f(Siewiorek,)f(Daniel)g +(P)m(.,)g(C.)f(Gordon)h(Bell,)h(and)f(Allen)g(New)o(ell,)g(eds.,)h +Fc(Computer)h(Structur)n(es:)68 1988 y(Principles)k(and)i(Examples)p +Fl(,)f(Computer)e(Science)j(Series,)f(c)o(hapter)g(33,)f(pp.)g(549{572.)d +(McGra)o(w-Hill,)i(New)i(Y)m(ork,)68 2038 y(1982.)g(ISBN)d(0-07-057302-6.)0 +2112 y([T)m(ra)o(vis,)e(1977])21 b(T)m(ra)o(vis,)15 b(Larry)m(,)f(Masahiro)h +(Honda,)f(Ric)o(hard)h(LeBlanc,)h(and)f(Stephen)h(Zeigler.)22 +b(Design)15 b(rationale)f(for)68 2162 y(TELOS,)g(a)f(P)m(ASCAL-based)i(AI)f +(language.)j(In)d([A)o(CM)f(AIPL,)h(1977],)d(pp.)j(67{76.)0 +2237 y([Ungar,)f(1984])21 b(Da)o(vid)10 b(Ungar.)k(Generation)e(sca)o(v)o +(enging:)k(A)c(non-disruptiv)o(e)f(high)g(p)q(erformance)g(storage)h +(reclamation)68 2287 y(algorithm.)j(In)f([A)o(CM)f(PSDE,)h(1984],)e(pp.)h +(157{167.)0 2361 y([Utah,)g(1982])21 b(Utah)c(Sym)o(b)q(olic)d(Computation)g +(Group.)26 b Fc(The)17 b(Portable)g(Standar)n(d)h(LISP)f(Users)g(Manual)p +Fl(.)26 b(T)m(ec)o(hnical)68 2411 y(Rep)q(ort)14 b(TR-10,)e(Departmen)o(t)h +(of)h(Computer)f(Science,)i(Univ)o(ersit)o(y)f(of)f(Utah,)g(Salt)h(Lak)o(e)f +(Cit)o(y)m(,)g(Jan)o(uary)g(1982.)0 2486 y([V)m(uillemi)o(n,)e(1988])21 +b(V)m(uillemin,)10 b(Jean.)17 b(Exact)d(real)f(computer)g(arithmetic)f(with)h +(con)o(tin)o(ued)g(fractions.)k(In)c([A)o(CM)g(LFP)m(,)68 2536 +y(1988],)f(pp.)h(14{27.)0 2610 y([W)m(and,)f(1977])21 b(W)m(and,)10 +b(Mitc)o(hell,)h(and)f(Daniel)g(P)m(.)g(F)m(riedman.)i Fc(Compiling)f(L)n +(amb)n(da)i(Expr)n(essions)f(Using)g(Continuations)68 2660 +y(and)j(F)m(actorization)p Fl(.)j(T)m(ec)o(hnical)13 b(Rep)q(ort)i(55,)e +(Indiana)g(Univ)o(ersit)o(y)m(,)g(July)g(1977.)p eop +%%Page: 80 80 +80 79 bop 0 -100 a Fq(Steele)16 b(and)g(Gabriel,)f(Ev)o(olution)h(of)f(Lisp) +1168 b Fx(80)0 45 y Fl([W)m(aters,)13 b(1984])21 b(W)m(aters,)13 +b(Ric)o(hard)f(C.)k(Expressional)d(lo)q(ops.)i(In)e Fc(Pr)n(o)n(c)n(e)n(e)n +(dings)g(of)h(the)g(Eleventh)g(A)o(nnual)g(A)o(CM)f(Symp)n(o-)68 +95 y(sium)e(on)h(Principles)f(of)g(Pr)n(o)n(gr)n(amming)g(L)n(anguages)p +Fl(,)g(pp.)f(1{10,)f(Salt)h(Lak)o(e)g(Cit)o(y)m(,)f(Utah,)h(Jan)o(uary)g +(1984.)f(Asso)q(ciation)68 145 y(for)k(Computing)f(Mac)o(hinery)m(.)18 +b(ISBN)c(0-89791-125-3.)0 219 y([W)m(aters,)f(1989a])21 b(W)m(aters,)11 +b(Ric)o(hard)e(C.)j Fc(Optimization)f(of)h(Series)f(Expr)n(essions,)h(Part)f +(I:)h(User's)e(Manual)j(for)e(the)g(Series)68 269 y(Macr)n(o)20 +b(Package)p Fl(.)36 b(AI)20 b(Memo)f(1082,)h(MIT)f(Arti\014cial)g(In)o +(telligence)h(Lab)q(oratory)m(,)g(Cam)o(bridge,)f(Massac)o(h)o(usetts,)68 +319 y(Jan)o(uary)14 b(1989.)0 394 y([W)m(aters,)f(1989b])21 +b(W)m(aters,)c(Ric)o(hard)f(C.)25 b Fc(Optimization)17 b(of)g(Series)g(Expr)n +(essions,)h(Part)f(II:)g(Overview)f(of)h(the)g(The)n(ory)68 +444 y(and)d(Implementation)p Fl(.)i(AI)d(Memo)e(1083,)g(MIT)i(Arti\014cial)f +(In)o(telligence)g(Lab)q(oratory)m(,)g(Cam)o(bridge,)e(Massac)o(h)o(usetts,) +68 493 y(Jan)o(uary)k(1989.)0 568 y([W)m(egbreit,)f(1970])21 +b(W)m(egbreit,)14 b(Ben.)22 b Fc(Studies)16 b(in)f(Extensible)h(Pr)n(o)n(gr)n +(amming)f(L)n(anguages)p Fl(.)22 b(PhD)15 b(thesis,)g(Harv)n(ard)f(Uni-)68 +618 y(v)o(ersit)o(y)m(,)f(Cam)o(bridge,)f(Massac)o(h)o(usetts,)j(1970.)0 +693 y([W)m(egbreit,)e(1971])21 b(W)m(egbreit,)f(Ben.)34 b(The)19 +b(ECL)g(programming)d(system.)33 b(In)19 b Fc(Pr)n(o)n(c)n(e)n(e)n(dings)g +(of)h(the)g(1971)g(F)m(al)r(l)f(Joint)68 742 y(Computer)14 +b(Confer)n(enc)n(e)p Fl(,)g(pp.)f(253{262,)f(Mon)o(tv)n(ale,)g(New)j(Jersey)m +(,)f(August)h(1971.)d(AFIPS)j(Press.)0 817 y([W)m(egbreit,)e(1972])21 +b(W)m(egbreit,)e(Ben,)h(Ben)g(Brosgol,)f(Glenn)f(Hollo)o(w)o(a)o(y)m(,)f +(Charles)i(Prenner,)i(and)d(Ja)o(y)g(Spitzen.)33 b Fc(ECL)68 +867 y(Pr)n(o)n(gr)n(ammer's)14 b(Manual)p Fl(.)23 b(T)m(ec)o(hnical)14 +b(Rep)q(ort)i(21-72,)d(Harv)n(ard)i(Univ)o(ersit)o(y)g(Cen)o(ter)h(for)f +(Researc)o(h)h(in)f(Computing)68 917 y(T)m(ec)o(hnology)m(,)d(Cam)o(bridge,)f +(Massac)o(h)o(usetts,)16 b(Septem)o(b)q(er)e(1972.)0 992 y([W)m(egbreit,)f +(1974])21 b(W)m(egbreit,)h(Ben,)h(Glenn)d(Hollo)o(w)o(a)o(y)m(,)f(Ja)o(y)i +(Spitzen,)i(and)d(Judy)h(T)m(o)o(wnley)m(.)37 b Fc(ECL)21 b(Pr)n(o)n(gr)n +(ammer's)68 1041 y(Manual)p Fl(.)31 b(T)m(ec)o(hnical)18 b(Rep)q(ort)h +(23-74,)e(Harv)n(ard)h(Univ)o(ersit)o(y)g(Cen)o(ter)i(for)e(Researc)o(h)h(in) +f(Computing)e(T)m(ec)o(hnology)m(,)68 1091 y(Cam)o(bridge,)11 +b(Massac)o(h)o(usetts,)16 b(Decem)o(b)q(er)e(1974.)0 1166 y([W)m(einreb,)f +(1978])21 b(W)m(einreb,)f(Daniel,)e(and)h(Da)o(vid)e(Mo)q(on.)33 +b Fc(LISP)19 b(Machine)i(Manual,)g(Pr)n(eliminary)d(V)m(ersion)p +Fl(.)32 b(MIT)68 1216 y(Arti\014cial)13 b(In)o(telligence)h(Lab)q(oratory)m +(,)f(Cam)o(bridge,)e(Massac)o(h)o(usetts,)16 b(No)o(v)o(em)o(b)q(er)d(1978.)0 +1290 y([W)m(einreb,)g(1981])21 b(W)m(einreb,)15 b(Daniel,)f(and)g(Da)o(vid)g +(Mo)q(on.)21 b Fc(LISP)16 b(Machine)h(Manual,)f(Thir)n(d)g(Edition)p +Fl(.)21 b(MIT)15 b(Arti\014cial)68 1340 y(In)o(telligence)f(Lab)q(oratory)m +(,)e(Cam)o(bridge,)g(Massac)o(h)o(usetts,)k(Marc)o(h)e(1981.)0 +1415 y([White,)f(1980])21 b(White,)15 b(Jon)g(L.)21 b(Address/memory)14 +b(managemen)o(t)f(for)h(a)h(gigan)o(tic)f(LISP)h(en)o(vironmen)o(t;)f(or,)h +(GC)g(con-)68 1465 y(sidered)g(harmful.)h(In)d([Lisp)h(Conference,)h(1980],)d +(pp.)h(119{127.)0 1539 y([White,)g(1986])21 b(White,)14 b(Jon)g(L.)k +(Recon\014gurable,)c(retargetable)h(bign)o(ums:)i(A)d(case)h(study)g(in)f +(e\016cien)o(t,)g(p)q(ortable)g(Lisp)68 1589 y(system)f(building.)k(In)d([A)o +(CM)f(LFP)m(,)g(1986],)f(pp.)i(174{191.)0 1664 y([W)m(ulf,)d(1971])22 +b(W)m(ulf,)11 b(W.A.,)h(D.B.)h(Russell,)g(and)h(A.N.)f(Hab)q(ermann.)j +(Bliss:)j(A)13 b(language)g(for)g(systems)h(programming)o(.)68 +1714 y Fc(Communic)n(ations)h(of)g(the)g(A)o(CM)p Fl(,)e(14:12,)f(pp.)h +(780{790,)f(Decem)o(b)q(er)i(1971.)0 1789 y([W)m(ulf,)d(1975])22 +b(W)m(ulf,)11 b(William)o(,)f(Ric)o(hard)j(K.)h(Johnsson,)g(Charles)g(B.)f(W) +m(einsto)q(c)o(k,)g(Stev)o(en)h(O.)g(Hobbs,)f(and)h(Charles)f(M.)68 +1838 y(Gesc)o(hk)o(e.)18 b Fc(The)c(Design)h(of)f(an)h(Optimizing)f(Compiler) +p Fl(,)e(v)o(olume)f(2)i(of)g Fc(Pr)n(o)n(gr)n(amming)g(L)n(anguage)j(Series) +p Fl(.)h(American)68 1888 y(Elsevier,)d(New)g(Y)m(ork,)f(1975.)k(ISBN)e +(0-444-00164-6.)0 1963 y([Yngv)o(e,)e(1972])21 b(Yngv)o(e,)i(Victor)e(H.)40 +b Fc(Computer)21 b(Pr)n(o)n(gr)n(amming)g(with)g(COMIT)g(II)p +Fl(.)39 b(MIT)21 b(Press,)j(Reading,)e(Mas-)68 2013 y(sac)o(h)o(usetts,)15 +b(1972.)i(ISBN)d(0-262-74007-9.)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-1.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-1.html @@ -0,0 +1,30 @@ + + +Brief Guide to CLOS: Conventions + + +Previous +Next +Contents +
    +

    1. Conventions

    + +

    Think of upper case in things like DEFCLASS as literals -- I +don't mean to imply that actual upper case would be used. ``Thing*'' +means zero or more occurrences of thing; ``thing+'' means one or more. +Curly brackets { and } are used for grouping, as in {a b}+, which +means a b, a b a b, a b a b a b, etc.

    + +

    CLISP specific note: Before using CLOS, you need to +enter ``(USE-PACKAGE "CLOS")''.

    +

    CMUCL specific note: /usr/lib/cmucl/lisp.core should point to +/usr/lib/cmucl/pcl-lisp.core or you could have build +a custom image with pcl.

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-7.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-7.html @@ -0,0 +1,101 @@ + + +Brief Guide to CLOS: Method combination. + + +Previous +Next +Contents +
    +

    7. Method combination.

    + +

    When more than one class defines a method for a generic function, and +more than one method is applicable to a given set of arguments, the +applicable methods are combined into a single "effective method". +Each individual method definition is then only part of the definition +of the effective method.

    +

    One kind of method combination is always supported by CLOS. It is +called standard method combination. It is also possible to define +new kinds of method combination. Standard method combination +involves four kinds of methods:

    +

    +

      +
    • Primary methods form the main body of the effective method. +Only the most specific primary method is called, but it can +call the next most specific primary method by calling + +
      +
      +(call-next-method)
      +
      +
      + +
    • +
    • :BEFORE methods are all called before the primary method, with +the most specific :BEFORE method called first. +
    • +
    • :AFTER methods are all called after the primary method, with +the most specific :AFTER method called last. +
    • +
    • :AROUND methods run before the other methods. As with +primary methods, only the most specific is called and the +rest can be invoked by CALL-NEXT-METHOD. When the least +specific :AROUND method calls CALL-NEXT-METHOD, what it +calls is the combination of :BEFORE, :AFTER, and primary +methods.
    • +
    +

    +

    :BEFORE, :AFTER, and :AROUND methods are indicated by putting the +corresponding keyword as a qualifier in the method definition. +:BEFORE and :AFTER methods are the easiest to use, and a simple +example will show how they work:

    +

    +

    +
    +(defclass food () ())
    +
    +(defmethod cook :before ((f food))
    +  (print "A food is about to be cooked."))
    +
    +(defmethod cook :after ((f food))
    +  (print "A food has been cooked."))
    +
    +(defclass pie (food)
    +  ((filling :accessor pie-filling :initarg :filling :initform 'apple)))
    +
    +(defmethod cook ((p pie))
    +  (print "Cooking a pie")
    +  (setf (pie-filling p) (list 'cooked (pie-filling p))))
    +
    +(defmethod cook :before ((p pie))
    +  (print "A pie is about to be cooked."))
    +
    +(defmethod cook :after ((p pie))
    +  (print "A pie has been cooked."))
    +
    +(setq pie-1 (make-instance 'pie :filling 'apple))
    +
    +
    +

    +

    And now:

    +

    +

    +
    +<cl> (cook pie-1)
    +"A pie is about to be cooked."
    +"A food is about to be cooked." 
    +"Cooking a pie"
    +"A food has been cooked."
    +"A pie has been cooked."
    +(cooked apple)
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-5.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-5.html @@ -0,0 +1,50 @@ + + +Brief Guide to CLOS: Multiple inheritance + + +Previous +Next +Contents +
    +

    5. Multiple inheritance

    + +

    A class can have more than one superclass. With single inheritance +(one superclass), it's easy to order the superclasses from most to +least specific. This is the rule:

    +

    +

      +
    • Rule 1: Each class is more specific than its superclasses. + +In multiple inheritance this is harder. Suppose we have +(defclass a (b c) ...) + +Class A is more specific than B or C (for instances of +A), but what if +something (an :INITFORM, or a method) is specified by +B and C? Which +overrides the other? The rule in CLOS is that the superclasses listed +earlier are more specific than those listed later. So: +
    • +
    • Rule 2: For a given class, superclasses listed earlier are more +specific than those listed later. + +These rules are used to compute a linear order for a class and all its +superclasses, from most specific to least specific. This order is the +"class precedence list" of the class. + +The two rules are not always enough to determine a unique order, +however, so CLOS has an algorithm for breaking ties. This ensures +that all implementations always produce the same order, but it's +usually considered a bad idea for programmers to rely on exactly +what the order is. If the order for some superclasses is important, +it can be expressed directly in the class definition.
    • +
    +

    + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-8.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-8.html @@ -0,0 +1,142 @@ + + +Brief Guide to CLOS: Quick reference + + +Previous +Next +Contents +
    +

    8. Quick reference

    + +

    Square brackets ("[" and "]") indicate optional elements. A vertical +bar ("|") indicates an alternative. Thing* means zero or more +occurrence of thing, thing+ means one or more occurrence. "{" and "}" +are used for grouping.

    + +

    8.1 Defining a class

    + +

    +

    +
    +(DEFCLASS class-name (superclass-name*)
    +  (slot-description*))
    +
    +
    +

    + + +

    8.2 Slot descriptions

    + +

    (slot-name slot-option*) +

    +
    :ACCESSOR

    function-name

    +
    :INITFORM

    expression

    +
    :INITARG

    keyword-symbol

    +
    +

    + + +

    8.3 Making instances

    + +

    (MAKE-INSTANCE class {initarg value}*)

    + + +

    8.4 Method definitions

    + +

    (DEFMETHOD generic-function-name [qualifier] specialized-lambda-list +form*) +where +

      +
    • generic-function-name is a symbol
    • +
    • qualifier is :BEFORE, :AFTER, :AROUND, or else omitted
    • +
    • specialized-lambda-list is +( {variable | (variable class-name)}* )
    • +
    +

    + + +

    8.5 Some functions

    + + +

    (DESCRIBE instance)

    + +

    (DESCRIBE class)

    + +

    (FIND-CLASS class-name) -> class

    + +

    As in: +

    +
    +<cl> (FIND-CLASS 'teacher)
    +
    +#<STANDARD-CLASS TEACHER {90374C5}>
    +
    +
    +

    + +

    (CLASS-NAME class) -> symbol

    + +

    As in: +

    +
    +<cl> (class-name (find-class 'teacher))
    +
    +TEACHER
    +
    +
    +

    + +

    (CLASS-PRECEDENCE-LIST class) -> list of classes

    + +

    [This is called (CLOS::CLASS-PRECEDENCE-LIST class) in CLISP.]

    +

    [This is called (PCL:CLASS-PRECEDENCE-LIST class) in CMUCL.]

    +

    As in (CMUCL): +

    +
    +* (pcl:class-precedence-list  (find-class 'teacher))
    +
    +(#<Standard-Class TEACHER {902FF6D}> #<Standard-Class PERSON {9010ADD}>
    + #<Standard-Class STANDARD-OBJECT {56753B5}>
    + #<Slot-Class PCL::SLOT-OBJECT {567545D}> #<Built-In-Class INSTANCE {567BDDD}>
    + #<Built-In-Class T {567B68D}>)
    +
    +
    +

    + + +

    (CLASS-DIRECT-SUPERCLASSES class) -> list of classes

    + +

    [This is called (CLOS::CLASS-DIRECT-SUPERCLASSES class) in CLISP.]

    +

    [This is called (PCL:CLASS-DIRECT-SUPERCLASSES class) in CMU.]

    +

    As in (CMUCL): +

    +
    +* (pcl:class-direct-superclasses (find-class 'teacher))
    +
    +(#<Standard-Class PERSON {9010ADD}>)
    +
    +
    +

    + +

    (CLASS-DIRECT-SUBCLASSES class) -> list of classes

    + +

    [This isn't available in CLISP.]

    +

    [This is called (PCL:CLASS-DIRECT-SUBCLASSES class) in CMU.]

    +

    As in: +

    +
    +* (pcl:class-direct-subclasses (find-class 'teacher))
    +
    +(#<Standard-Class MATHS-TEACHER {9040E9D}>)
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-2.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-2.html @@ -0,0 +1,106 @@ + + +Brief Guide to CLOS: Defining classes. + + +Previous +Next +Contents +
    +

    2. Defining classes.

    + +

    You define a class with DEFCLASS :

    +

    +

    +
    +(DEFCLASS class-name (superclass-name*)
    +  (slot-description*)
    +  class-option*)
    +
    +
    +

    + +

    For simple things, forget about class options.

    + +

    A slot-description has the form (slot-name slot-option*) , where each +option is a keyword followed by a name, expression, or whatever. The +most useful slot options are

    + +

    +

    +
    :ACCESSOR

    function-name

    +
    :INITFORM

    expression

    +
    :INITARG

    symbol

    +
    +

    + +

    (Initargs are usually keywords.)

    + +

    DEFCLASS is similar to DEFSTRUCT. The syntax is a bit different, and +you have more control over what things are called. For instance, +consider the DEFSTRUCT:

    + +

    +

    +
    +(defstruct person
    +  (name 'bill)
    +  (age 10))
    +
    +
    +

    + +

    DEFSTRUCT would automatically define slots with expressions to +compute default initial values, access-functions like PERSON-NAME +to get and set slot values, and a MAKE-PERSON that took keyword +initialization arguments (initargs) as in

    + +

    +

    +
    +(make-person :name 'george :age 12)
    +
    +
    +

    + +

    A DEFCLASS that provided similar access functions, etc, would be:

    + +

    +

    +
    +(defclass person ()
    +  ((name :accessor person-name
    +         :initform 'bill
    +         :initarg :name)
    +   (age :accessor person-age
    +        :initform 10
    +        :initarg :age)))
    +
    +
    +

    + +

    Note that DEFCLASS lets you control what things are called. For +instance, you don't have to call the accessor PERSON-NAME. You could +call it NAME.

    + +

    In general, you should pick names that make sense for a group of +related classes rather than rigidly following the DEFSTRUCT +conventions.

    + +

    You do not have to provide all options for every slot. +Maybe you don't want it to be possible to initialize a slot +when calling MAKE-INSTANCE (for which see below). In that case, +don't provide an :INITARG. Or maybe there isn't a meaningful +default value. (Perhaps the meaningful values will always be +specified by a subclass.) In that case, no :INITFORM.

    + +

    Note that classes are objects. To get the class object from its +name, use (FIND-CLASS name). Ordinarily, you won't need to do this.

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-4.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-4.html @@ -0,0 +1,92 @@ + + +Brief Guide to CLOS: Inheritance of slot options + + +Previous +Next +Contents +
    +

    4. Inheritance of slot options

    + +

    The class above had no superclass. That's why there was a +"()" after +"defclass person". Actually, this means it +has one superclass: the +class STANDARD-OBJECT.

    +

    When there are superclasses, a subclass can specify a slot that has +already been specified for a superclass. When this happens, the +information in slot options has to be combined. For the slot options +listed above, either the option in the subclass overrides the one in +the superclass or there is a union:

    +

    +

    +
    :ACCESSOR

    union

    +
    :INITARG

    union

    +
    :INITFORM

    overrides

    +
    +

    +

    This is what you should expect. The subclass can change the +default initial value by overriding the :INITFORM, and can add +to the initargs and accessors.

    + +

    However, the "union" for accessor is just a consequence of how +generic functions work. If they can apply to instances of a +class C, they can also apply to instances of subclasses of C.

    + +

    (Accessor functions are generic. This may become clearer +once generic functions are discussed, below.)

    + +

    Here are some subclasses:

    + +

    +

    +
    +<cl> (defclass teacher (person)
    +      ((subject :accessor teacher-subject
    +                :initarg :subject)))
    +#<clos:standard-class teacher @ #x7cf796> 
    +
    +#<cl> (defclass maths-teacher (teacher)
    +       ((subject :initform "Mathematics")))
    +#<clos:standard-class maths-teacher @ #x7d94be> 
    +
    +<cl> (setq p2 (make-instance 'maths-teacher
    +                 :name 'john
    +                 :age 34))
    +#<maths-teacher @ #x7dcc66> 
    +
    +<cl> (describe p2)
    +#<maths-teacher @ #x7dcc66>; is an instance of
    +     class #<clos:standard-class maths-teacher @ #x7d94be>:
    + The following slots have :INSTANCE allocation:
    + age        34
    + name       john
    + subject    "Mathematics"
    +
    +
    +

    + +

    Note that classes print like +#<clos:standard-class maths-teacher @ #x7d94be>. +The #<...> notation usually has the form

    +

    +

    +
    +#<class-of-the-object ... more information ...>
    +
    +
    +

    +

    So an instance of maths-teacher prints as +#<MATHS-TEACHER ...>. +The notation for the classes above indicates that they are +instances of STANDARD-CLASS. DEFCLASS defines standard classes. +DEFSTRUCT defines structure classes.

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-3.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-3.html @@ -0,0 +1,119 @@ + + +Brief Guide to CLOS: Instances + + +Previous +Next +Contents +
    +

    3. Instances

    + +

    You can make an instance of a class with MAKE-INSTANCE. It's +similar to the MAKE-x functions defined by DEFSTRUCT but lets you +pass the class to instantiate as an argument:

    + +

    +

    +
    +(MAKE-INSTANCE class {initarg value}*)
    +
    +
    +

    +

    Instead of the class object itself, you can use its name. +For example:

    + +

    +

    +
    +(make-instance 'person :age 100)
    +
    +
    +

    + +

    This person object would have age 100 and name BILL, the default.

    + +

    It's often a good idea to define your own constructor functions, +rather than call MAKE-INSTANCE directly, because you can hide +implementation details and don't have to use keyword parameters +for everything. For instance, you might want to define

    + +

    +

    +
    +(defun make-person (name age)
    +  (make-instance 'person :name name :age age))
    +
    +
    +

    + +

    if you wanted the name and age to be required, positional parameters, +rather than keyword parameters.

    + +

    The accessor functions can be used to get and set slot values:

    + +

    +

    +
    +<cl> (setq p1 (make-instance 'person :name 'jill :age 100))
    +#<person @ #x7bf826> 
    +
    +<cl> (person-name p1)
    +jill 
    +
    +<cl> (person-age p1)
    +100 
    +
    +<cl> (setf (person-age p1) 101)
    +101 
    +
    +<cl> (person-age p1)
    +101 
    +
    +
    +

    + +

    Note that when you use DEFCLASS, the instances are printed using +the #<...> notation, rather than +as #s(person :name jill :age 100) . +But you can change the way instances are printed by defining methods +on the generic function PRINT-OBJECT.

    +

    Slots can also be accessed by name using (SLOT-VALUE instance slot-name):

    + +

    +

    +
    +<cl> (slot-value p1 'name)
    +jill 
    +
    +<cl> (setf (slot-value p1 'name) 'jillian)
    +jillian 
    +
    +<cl> (person-name p1)
    +jillian 
    +
    +
    +

    +

    You can find out various things about an instance by calling +DESCRIBE:

    + +

    +

    +
    +<cl> (describe p1)
    +#<person @ #x7bf826> is an instance 
    + of class #<clos:standard-class person @ #x7ad8ae>:
    +The following slots have :INSTANCE allocation:
    +age     101
    +name    jillian
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide.sgml +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide.sgml @@ -0,0 +1,634 @@ + + +
    + +Brief Guide to <tt/CLOS/ + +<author> Jeff Dalton, University of Edinburgh, <J.Dalton@ed.ac.uk> + Modified by Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> + and Peter Van Eynde <s950045@uia.ua.ac.be> + +<toc> + +<sect>Conventions + +<p> +Think of upper case in things like <tt/DEFCLASS/ as literals -- I +don't mean to imply that actual upper case would be used. ``Thing*'' +means zero or more occurrences of thing; ``thing+'' means one or more. +Curly brackets { and } are used for grouping, as in {a b}+, which +means a b, a b a b, a b a b a b, etc. + + +CLISP specific note: Before using <tt/CLOS/, you need to +enter ``(USE-PACKAGE &dquot;CLOS&dquot;)''. + +CMUCL specific note: /usr/lib/cmucl/lisp.core should point to + /usr/lib/cmucl/pcl-lisp.core or you could have build + a custom image with pcl. + + +<sect>Defining classes. + +<p> +You define a class with <tt/DEFCLASS/ : + +<tscreen><verb> +(DEFCLASS class-name (superclass-name*) + (slot-description*) + class-option*) +</verb></tscreen> + + +For simple things, forget about class options. + + +A slot-description has the form <tt/(slot-name slot-option*)/ , where each +option is a keyword followed by a name, expression, or whatever. The +most useful slot options are + + +<descrip> +<tag/:ACCESSOR/function-name +<tag/:INITFORM/expression +<tag/:INITARG/symbol +</descrip> + + +(Initargs are usually keywords.) + + +<tt/DEFCLASS/ is similar to <tt/DEFSTRUCT/. The syntax is a bit different, and +you have more control over what things are called. For instance, +consider the <tt/DEFSTRUCT/: + + +<tscreen><verb> +(defstruct person + (name 'bill) + (age 10)) +</verb></tscreen> + + +<tt/DEFSTRUCT/ would automatically define slots with expressions to +compute default initial values, access-functions like <tt/PERSON-NAME/ +to get and set slot values, and a <tt/MAKE-PERSON/ that took keyword +initialization arguments <tt/(initargs)/ as in + + +<tscreen><verb> +(make-person :name 'george :age 12) +</verb></tscreen> + + +A <tt/DEFCLASS/ that provided similar access functions, etc, would be: + + +<tscreen><verb> +(defclass person () + ((name :accessor person-name + :initform 'bill + :initarg :name) + (age :accessor person-age + :initform 10 + :initarg :age))) +</verb></tscreen> + + +Note that <tt/DEFCLASS/ lets you control what things are called. For +instance, you don't have to call the accessor <tt/PERSON-NAME/. You could +call it <tt/NAME/. + + +In general, you should pick names that make sense for a group of +related classes rather than rigidly following the <tt/DEFSTRUCT/ +conventions. + + +You do not have to provide all options for every slot. +Maybe you don't want it to be possible to initialize a slot +when calling <tt/MAKE-INSTANCE/ (for which see below). In that case, +don't provide an <tt/:INITARG/. Or maybe there isn't a meaningful +default value. (Perhaps the meaningful values will always be +specified by a subclass.) In that case, no <tt/:INITFORM/. + + +Note that classes are objects. To get the class object from its +name, use <tt/(FIND-CLASS name)/. Ordinarily, you won't need to do this. + + +<sect>Instances + +<p> +You can make an instance of a class with <tt/MAKE-INSTANCE/. It's +similar to the <tt/MAKE-x/ functions defined by <tt/DEFSTRUCT/ but lets you +pass the class to instantiate as an argument: + + +<tscreen><verb> +(MAKE-INSTANCE class {initarg value}*) +</verb></tscreen> + +Instead of the class object itself, you can use its name. +For example: + + +<tscreen><verb> +(make-instance 'person :age 100) +</verb></tscreen> + + +This person object would have age <tt/100/ and name <tt/BILL/, the default. + + +It's often a good idea to define your own constructor functions, +rather than call <tt/MAKE-INSTANCE/ directly, because you can hide +implementation details and don't have to use keyword parameters +for everything. For instance, you might want to define + + +<tscreen><verb> +(defun make-person (name age) + (make-instance 'person :name name :age age)) +</verb></tscreen> + + +if you wanted the name and age to be required, positional parameters, +rather than keyword parameters. + + +The accessor functions can be used to get and set slot values: + + +<tscreen><verb> +<cl> (setq p1 (make-instance 'person :name 'jill :age 100)) +#<person @ #x7bf826> + +<cl> (person-name p1) +jill + +<cl> (person-age p1) +100 + +<cl> (setf (person-age p1) 101) +101 + +<cl> (person-age p1) +101 +</verb></tscreen> + + +Note that when you use <tt/DEFCLASS/, the instances are printed using +the <tt/#<...>/ notation, rather than +as <tt/#s(person :name jill :age 100)/ . +But you can change the way instances are printed by defining methods +on the generic function <tt/PRINT-OBJECT/. + +Slots can also be accessed by name using <tt/(SLOT-VALUE instance slot-name)/: + + +<tscreen><verb> +<cl> (slot-value p1 'name) +jill + +<cl> (setf (slot-value p1 'name) 'jillian) +jillian + +<cl> (person-name p1) +jillian +</verb></tscreen> + +You can find out various things about an instance by calling +<tt/DESCRIBE/: + + +<tscreen><verb> +<cl> (describe p1) +#<person @ #x7bf826> is an instance + of class #<clos:standard-class person @ #x7ad8ae>: +The following slots have :INSTANCE allocation: +age 101 +name jillian +</verb></tscreen> + + +<sect>Inheritance of slot options + +<p> +The class above had no superclass. That's why there was a + <tt/&dquot;()&dquot;/ after +<tt/&dquot;defclass person&dquot;/. Actually, this means it +has one superclass: the +class <tt/STANDARD-OBJECT/. + +When there are superclasses, a subclass can specify a slot that has +already been specified for a superclass. When this happens, the +information in slot options has to be combined. For the slot options +listed above, either the option in the subclass overrides the one in +the superclass or there is a union: + +<descrip> +<tag/:ACCESSOR/union +<tag/:INITARG/union +<tag/:INITFORM/overrides +</descrip> + +This is what you should expect. The subclass can <bf/change/ the +default initial value by overriding the <tt/:INITFORM/, and can add +to the initargs and accessors. + + +However, the &dquot;union&dquot; for accessor is just a consequence of how +generic functions work. If they can apply to instances of a +class C, they can also apply to instances of subclasses of C. + + +(Accessor functions are generic. This may become clearer +once generic functions are discussed, below.) + + +Here are some subclasses: + + +<tscreen><verb> +<cl> (defclass teacher (person) + ((subject :accessor teacher-subject + :initarg :subject))) +#<clos:standard-class teacher @ #x7cf796> + +#<cl> (defclass maths-teacher (teacher) + ((subject :initform "Mathematics"))) +#<clos:standard-class maths-teacher @ #x7d94be> + +<cl> (setq p2 (make-instance 'maths-teacher + :name 'john + :age 34)) +#<maths-teacher @ #x7dcc66> + +<cl> (describe p2) +#<maths-teacher @ #x7dcc66>; is an instance of + class #<clos:standard-class maths-teacher @ #x7d94be>: + The following slots have :INSTANCE allocation: + age 34 + name john + subject "Mathematics" +</verb></tscreen> + + +Note that classes print like +<tt/#<clos:standard-class maths-teacher @ #x7d94be>/. +The <tt/#<...>/ notation usually has the form + +<tscreen><verb> +#<class-of-the-object ... more information ...> +</verb></tscreen> + +So an instance of maths-teacher prints as +<tt/#<MATHS-TEACHER ...>/. +The notation for the classes above indicates that they are +instances of <tt/STANDARD-CLASS/. <tt/DEFCLASS/ defines standard classes. +<tt/DEFSTRUCT/ defines structure classes. + + +<sect>Multiple inheritance + +<p> +A class can have more than one superclass. With single inheritance +(one superclass), it's easy to order the superclasses from most to +least specific. This is the rule: + +<itemize> +<item>Rule 1: Each class is more specific than its superclasses. + +In multiple inheritance this is harder. Suppose we have +<tt/(defclass a (b c) ...)/ + +Class <tt/A/ is more specific than <tt/B/ or <tt/C/ (for instances of +<tt/A/), but what if +something (an <tt/:INITFORM/, or a method) is specified by +<tt/B/ and <tt/C/? Which +overrides the other? The rule in <tt/CLOS/ is that the superclasses listed +earlier are more specific than those listed later. So: + +<item>Rule 2: For a given class, superclasses listed earlier are more + specific than those listed later. + +These rules are used to compute a linear order for a class and all its +superclasses, from most specific to least specific. This order is the +&dquot;class precedence list&dquot; of the class. + +The two rules are not always enough to determine a unique order, +however, so <tt/CLOS/ has an algorithm for breaking ties. This ensures +that all implementations always produce the same order, but it's +usually considered a bad idea for programmers to rely on exactly +what the order is. If the order for some superclasses is important, +it can be expressed directly in the class definition. +</itemize> + +<sect>Generic functions and methods + +<p> +Generic function in <tt/CLOS/ are the closest thing to &dquot;messages&dquot;. +Instead of writing + +<tscreen><verb> +(SEND instance operation-name arg*) +</verb></tscreen> + +you write + +<tscreen><verb> +(operation-name instance arg*) +</verb></tscreen> + +The operations / messages are generic functions -- functions whose +behavior can be defined for instances of particular classes by +defining methods. + +<tt/(DEFGENERIC function-name lambda-list)/ can be used to define a generic +function. You don't have to call <tt/DEFGENERIC/, however, because +<tt/DEFMETHOD/ +automatically defines the generic function if it has not been defined +already. On the other hand, it's often a good idea to use <tt/DEFGENERIC/ +as a declaration that an operation exists and has certain parameters. + +Anyway, all of the interesting things happen in methods. A method is +defined by: + +<tscreen><verb> +(DEFMETHOD generic-function-name specialized-lambda-list + form*) +</verb></tscreen> + +This may look fairly cryptic, but compare it to <tt/DEFUN/ described in +a similar way: + +<tscreen><verb> +(DEFUN function-name lambda-list form*) +</verb></tscreen> + +A &dquot;lambda list&dquot; is just a list of formal parameters, plus things like +<tt/&OPTIONAL/ or <tt/&REST/. It's because of such +complications that we say +&dquot;lambda-list&dquot; instead of &dquot;(parameter*)&dquot; +when describing the syntax. + +[I won't say anything +about <tt> &OPTIONAL </tt>, +<tt/&REST/, or <tt/&KEY/ in methods. +The rules are in CLtL2 or the HyperSpec, if you want to know them.] + +So a normal function has a lambda list like <tt/(var1 var2 ...)/. +A method has one in which each parameter can be &dquot;specialized&dquot; +to a particular class. So it looks like: + +<tscreen><verb> +((var1 class1) (var2 class2) ...) +</verb></tscreen> + +The specializer is optional. Omitting it means that the method +can apply to instances of any class, including classes that were +not defined by <tt/DEFCLASS/. For example: + +<tscreen><verb> +(defmethod change-subject ((teach teacher) new-subject) + (setf (teacher-subject teach) new-subject)) +</verb></tscreen> + +Here the new-subject could be any object. If you want to restrict +it, you might do something like: + +<tscreen><verb> +(defmethod change-subject ((teach teacher) (new-subject string)) + (setf (teacher-subject teach) new-subject)) +</verb></tscreen> + +Or you could define classes of subjects. + +Methods in &dquot;classical&dquot; object-oriented programming specialize +only one parameter. In <tt/CLOS/, you can specialize more than one. +If you do, the method is sometimes called a multi-method. + +A method defined for a class <tt/C/ overrides any method defined +for a superclass of <tt/C/. The method for <tt/C/ is +&dquot;more specific&dquot; +than the method for the superclass, because <tt/C/ is more specific +that the classes it inherits from (eg, dog is more specific +than animal). + +For multi-methods, the determination of which method is more +specific involves more than one parameter. The parameters +are considered from left to right. + +<tscreen><verb> +(defmethod test ((x number) (y number)) + '(num num)) + +(defmethod test ((i integer) (y number)) + '(int num)) + +(defmethod test ((x number) (j integer)) + '(num int)) + +(test 1 1) => (int num), not (num int) +(test 1 1/2) => (int num) +(test 1/2 1) => (num int) +(test 1/2 1/2) => (num num) +</verb></tscreen> + + +<sect>Method combination. + +<p> +When more than one class defines a method for a generic function, and +more than one method is applicable to a given set of arguments, the +applicable methods are combined into a single &dquot;effective method&dquot;. +Each individual method definition is then only part of the definition +of the effective method. + +One kind of method combination is always supported by <tt/CLOS/. It is +called standard method combination. It is also possible to define +new kinds of method combination. Standard method combination +involves four kinds of methods: + +<itemize> +<item>Primary methods form the main body of the effective method. + Only the most specific primary method is called, but it can + call the next most specific primary method by calling + +<tscreen><verb> +(call-next-method) +</verb></tscreen> + +<item> <tt/:BEFORE/ methods are all called before the primary method, with + the most specific <tt/:BEFORE/ method called first. + +<item> <tt/:AFTER/ methods are all called after the primary method, with + the most specific <tt/:AFTER/ method called last. + +<item> <tt/:AROUND/ methods run before the other methods. As with + primary methods, only the most specific is called and the + rest can be invoked by <tt/CALL-NEXT-METHOD/. When the least + specific <tt/:AROUND/ method calls <tt/CALL-NEXT-METHOD/, what it + calls is the combination of <tt/:BEFORE/, <tt/:AFTER/, and primary + methods. +</itemize> + +<tt/:BEFORE/, <tt/:AFTER/, and <tt/:AROUND/ methods are indicated by putting the +corresponding keyword as a qualifier in the method definition. +<tt/:BEFORE/ and <tt/:AFTER/ methods are the easiest to use, and a simple +example will show how they work: + +<tscreen><verb> +(defclass food () ()) + +(defmethod cook :before ((f food)) + (print "A food is about to be cooked.")) + +(defmethod cook :after ((f food)) + (print "A food has been cooked.")) + +(defclass pie (food) + ((filling :accessor pie-filling :initarg :filling :initform 'apple))) + +(defmethod cook ((p pie)) + (print "Cooking a pie") + (setf (pie-filling p) (list 'cooked (pie-filling p)))) + +(defmethod cook :before ((p pie)) + (print "A pie is about to be cooked.")) + +(defmethod cook :after ((p pie)) + (print "A pie has been cooked.")) + +(setq pie-1 (make-instance 'pie :filling 'apple)) +</verb></tscreen> + +And now: + +<tscreen><verb> +<cl> (cook pie-1) +"A pie is about to be cooked." +"A food is about to be cooked." +"Cooking a pie" +"A food has been cooked." +"A pie has been cooked." +(cooked apple) +</verb></tscreen> + + +<sect>Quick reference + +<p> +Square brackets (&dquot;[&dquot; and &dquot;]&dquot;) indicate optional elements. A vertical +bar (&dquot;|&dquot;) indicates an alternative. Thing* means zero or more +occurrence of thing, thing+ means one or more occurrence. &dquot;{&dquot; and &dquot;}&dquot; +are used for grouping. + +<sect1>Defining a class + +<p> +<tscreen><verb> +(DEFCLASS class-name (superclass-name*) + (slot-description*)) +</verb></tscreen> + +<sect1>Slot descriptions + +<p> +<tt/(slot-name slot-option*)/ +<descrip> +<tag/:ACCESSOR/function-name +<tag/:INITFORM/expression +<tag/:INITARG/keyword-symbol +</descrip> + +<sect1>Making instances + +<p> +<tt/(MAKE-INSTANCE class {initarg value}*)/ + +<sect1>Method definitions + +<p> +<tt/ +(DEFMETHOD generic-function-name [qualifier] specialized-lambda-list + form*)/ +where +<itemize> +<item> generic-function-name is a symbol +<item> qualifier is :BEFORE, :AFTER, :AROUND, or else omitted +<item> specialized-lambda-list is +( {variable | (variable class-name)}* ) +</itemize> + +<sect1>Some functions + +<p> +<sect2>(DESCRIBE instance) +<sect2>(DESCRIBE class) + +<sect2>(FIND-CLASS class-name) -> class +<p> +As in: +<tscreen><verb> +<cl> (FIND-CLASS 'teacher) + +#<STANDARD-CLASS TEACHER {90374C5}> +</verb></tscreen> + +<sect2>(CLASS-NAME class) -> symbol +<p> +As in: +<tscreen><verb> +<cl> (class-name (find-class 'teacher)) + +TEACHER +</verb></tscreen> + +<sect2>(CLASS-PRECEDENCE-LIST class) -> list of classes +<p> +[This is called <tt/(CLOS::CLASS-PRECEDENCE-LIST class)/ in CLISP.] + +[This is called <tt/(PCL:CLASS-PRECEDENCE-LIST class)/ in CMUCL.] + +As in (CMUCL): +<tscreen><verb> +* (pcl:class-precedence-list (find-class 'teacher)) + +(#<Standard-Class TEACHER {902FF6D}> #<Standard-Class PERSON {9010ADD}> + #<Standard-Class STANDARD-OBJECT {56753B5}> + #<Slot-Class PCL::SLOT-OBJECT {567545D}> #<Built-In-Class INSTANCE {567BDDD}> + #<Built-In-Class T {567B68D}>) +</verb></tscreen> + + +<sect2>(CLASS-DIRECT-SUPERCLASSES class) -> list of classes + +<p> +[This is called <tt/(CLOS::CLASS-DIRECT-SUPERCLASSES/ class) in CLISP.] + +[This is called <tt/(PCL:CLASS-DIRECT-SUPERCLASSES/ class) in CMU.] + +As in (CMUCL): +<tscreen><verb> +* (pcl:class-direct-superclasses (find-class 'teacher)) + +(#<Standard-Class PERSON {9010ADD}>) +</verb></tscreen> + +<sect2>(CLASS-DIRECT-SUBCLASSES class) -> list of classes + +<p> +[This isn't available in CLISP.] + +[This is called <tt/(PCL:CLASS-DIRECT-SUBCLASSES/ class) in CMU.] + +As in: +<tscreen><verb> +* (pcl:class-direct-subclasses (find-class 'teacher)) + +(#<Standard-Class MATHS-TEACHER {9040E9D}>) +</verb></tscreen> + +</article> --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide-6.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide-6.html @@ -0,0 +1,136 @@ +<HTML> +<HEAD> +<TITLE>Brief Guide to CLOS: Generic functions and methods + + +Previous +Next +Contents +
    +

    6. Generic functions and methods

    + +

    Generic function in CLOS are the closest thing to "messages". +Instead of writing

    +

    +

    +
    +(SEND instance operation-name arg*)
    +
    +
    +

    +

    you write

    +

    +

    +
    +(operation-name instance arg*)
    +
    +
    +

    +

    The operations / messages are generic functions -- functions whose +behavior can be defined for instances of particular classes by +defining methods.

    +

    (DEFGENERIC function-name lambda-list) can be used to define a generic +function. You don't have to call DEFGENERIC, however, because +DEFMETHOD +automatically defines the generic function if it has not been defined +already. On the other hand, it's often a good idea to use DEFGENERIC +as a declaration that an operation exists and has certain parameters.

    +

    Anyway, all of the interesting things happen in methods. A method is +defined by:

    +

    +

    +
    +(DEFMETHOD generic-function-name specialized-lambda-list
    +  form*)
    +
    +
    +

    +

    This may look fairly cryptic, but compare it to DEFUN described in +a similar way:

    +

    +

    +
    +(DEFUN function-name lambda-list form*)
    +
    +
    +

    +

    A "lambda list" is just a list of formal parameters, plus things like +&OPTIONAL or &REST. It's because of such +complications that we say +"lambda-list" instead of "(parameter*)" +when describing the syntax.

    +

    [I won't say anything +about &OPTIONAL , +&REST, or &KEY in methods. +The rules are in CLtL2 or the HyperSpec, if you want to know them.]

    +

    So a normal function has a lambda list like (var1 var2 ...). +A method has one in which each parameter can be "specialized" +to a particular class. So it looks like:

    +

    +

    +
    +((var1 class1) (var2 class2) ...)
    +
    +
    +

    +

    The specializer is optional. Omitting it means that the method +can apply to instances of any class, including classes that were +not defined by DEFCLASS. For example:

    +

    +

    +
    +(defmethod change-subject ((teach teacher) new-subject)
    +  (setf (teacher-subject teach) new-subject))
    +
    +
    +

    +

    Here the new-subject could be any object. If you want to restrict +it, you might do something like:

    +

    +

    +
    +(defmethod change-subject ((teach teacher) (new-subject string))
    +  (setf (teacher-subject teach) new-subject))
    +
    +
    +

    +

    Or you could define classes of subjects.

    +

    Methods in "classical" object-oriented programming specialize +only one parameter. In CLOS, you can specialize more than one. +If you do, the method is sometimes called a multi-method.

    +

    A method defined for a class C overrides any method defined +for a superclass of C. The method for C is +"more specific" +than the method for the superclass, because C is more specific +that the classes it inherits from (eg, dog is more specific +than animal).

    +

    For multi-methods, the determination of which method is more +specific involves more than one parameter. The parameters +are considered from left to right.

    +

    +

    +
    +(defmethod test ((x number) (y number))
    +  '(num num))
    +
    +(defmethod test ((i integer) (y number))
    +  '(int num))
    +
    +(defmethod test ((x number) (j integer))
    +  '(num int))
    +
    +(test 1 1)      =>  (int num), not (num int)
    +(test 1 1/2)    =>  (int num) 
    +(test 1/2 1)    =>  (num int) 
    +(test 1/2 1/2)  =>  (num num) 
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Clos/CLOS-guide.html +++ cmucl-20a-20090928/own-work/tutorials/Clos/CLOS-guide.html @@ -0,0 +1,53 @@ + + + +Brief Guide to CLOS + + +Previous +Next +Contents +
    +

    Brief Guide to CLOS

    + +

    Jeff Dalton, University of Edinburgh, <J.Dalton@ed.ac.uk> + Modified by Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> + and Peter Van Eynde <s950045@uia.ua.ac.be>

    +

    +

    1. Conventions

    + +

    +

    2. Defining classes.

    + +

    +

    3. Instances

    + +

    +

    4. Inheritance of slot options

    + +

    +

    5. Multiple inheritance

    + +

    +

    6. Generic functions and methods

    + +

    +

    7. Method combination.

    + +

    +

    8. Quick reference

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-5.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-5.html @@ -0,0 +1,44 @@ + + +Common LISP Hints: Conses + + +Previous +Next +Contents +
    +

    5. Conses

    + +

    A cons is just a two-field record. The fields are called ``car'' and +``cdr'', for historical reasons. (On the first machine where LISP was +implemented, there were two instructions CAR and CDR which stood for +"Contents of Address portion of Register" and ""Contents of Decrement +portion of Register". Registers were twice as wide as the width of an +address, so you could have 2 adresses in one register. (sizeof(int)== +2*sizeof(void *) ) Conses were implemented using these two registers.)

    +

    Conses are easy to use:

    +

    +

    +
    +> (cons 4 5)            ;Allocate a cons. Set the car to 4 and the cdr to 5.
    +(4 . 5)
    +                        ;you have just allocated memory and promptly
    +                        ;forgotten about it. In C this would cause 
    +                        ;a memory leak, but not in LISP.
    +> (cons (cons 4 5) 6)
    +((4 . 5) . 6)
    +> (car (cons 4 5))
    +4
    +> (cdr (cons 4 5))
    +5
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-12.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-12.html @@ -0,0 +1,70 @@ + + +Common LISP Hints: Dynamic Scoping + + +Previous +Next +Contents +
    +

    12. Dynamic Scoping

    + +

    The let and let* forms provide lexical scoping, which is what you +expect if you're used to programming in C or Pascal. Dynamic scoping is +what you get in BASIC: if you assign a value to a dynamically scoped +variable, every mention of that variable returns that value until you +assign another value to the same variable.

    +

    In LISP, dynamically scoped variables are called special variables. You +can declare a special variable with the defvar special form. Here are +some examples of lexically and dynamically scoped variables.

    +

    In this example, the function check-regular references a regular (ie, +lexically scoped) variable. Since check-regular is lexically outside of +the let which binds regular, check-regular returns the +variable's global value.

    +

    +

    +
    +> (set 'regular 5)    ;setq would make it special in CMUCL!
    +5 
    +> (defun check-regular () regular)
    +CHECK-REGULAR 
    +> (check-regular)
    +5 
    +> (let ((regular 6)) (check-regular))
    +5
    +
    +
    +

    +

    In this example, the function check-special references a special (ie, +dynamically scoped) variable. Since the call to check-special is +temporally inside of the let which binds special, +check-special returns +the variable's local value.

    +

    +

    +
    +> (defvar *special* 5)
    +*SPECIAL*
    +> (defun check-special () *special*)
    +CHECK-SPECIAL
    +> (check-special)
    +5
    +> (let ((*special* 6)) (check-special))
    +6
    +
    +
    +

    +

    By convention, the name of a special variable begins and ends with a *. +Special variables are chiefly used as global variables, since +programmers usually expect lexical scoping for local variables and +dynamic scoping for global variables.

    +

    For more information on the difference between lexical and dynamic +scoping, see Common LISP: the Language.

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-21.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-21.html @@ -0,0 +1,46 @@ + + +Common LISP Hints: Lambda + + +Previous +Next +Contents +
    +

    21. Lambda

    + +

    If you just want to create a temporary function and don't want to +bother giving it a name, lambda is what you need.

    +

    +

    +
    +> #'(lambda (x) (+ x 3))
    +(LAMBDA (X) (+ X 3))
    +> (funcall * 5)               ;* is the last result,remember?
    +8
    +<tscreen><verb>
    +
    +The combination of <tt/lambda/ and <tt/mapcar/ can replace many loops. For
    +example, the following two forms are equivalent:
    +
    +<tscreen><verb>
    +> (do ((x '(1 2 3 4 5) (cdr x))
    +       (y nil))
    +      ((null x) (reverse y))
    +    (push (+ (car x) 2) y))
    +(3 4 5 6 7)
    +> (mapcar #'(lambda (x) (+ x 2)) '(1 2 3 4 5))
    +(3 4 5 6 7)
    +
    +
    +

    +

    However the first version will run significantly faster when compiled +by CMUCL. But speed isn't everything and the second version is a lot +clearer and easier to debug.

    + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-8.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-8.html @@ -0,0 +1,71 @@ + + +Common LISP Hints: Printing + + +Previous +Next +Contents +
    +

    8. Printing

    + +

    Some functions can cause output. The simplest one is print, which +prints its argument and then returns it.

    +

    +

    +
    +> (print 3)
    +3
    +3
    +
    +
    +

    +

    The first 3 above was printed, the second was returned.

    +

    If you want more complicated output, you will need to use format. +Here's an example:

    +

    +

    +
    +> (format t "An atom: ~S~%and a list: ~S~%and an integer: ~D~%"
    +          nil (list 5) 6)
    +An atom: NIL
    +and a list: (5)
    +and an integer: 6
    +
    +
    +

    +

    The first argument to format is either t, nil, or a +stream. T specifies +output to the terminal. Nil means not to print anything but to return a +string containing the output instead. Streams are general places for +output to go: they can specify a file, or the terminal, or another +program. This handout will not describe streams in any further detail.

    +

    The second argument is a formatting template, which is a string +optionally containing formatting directives.

    +

    All remaining arguments may be referred to by the formatting +directives. LISP will replace the directives with some appropriate +characters based on the arguments to which they refer and then print +the resulting string.

    +

    Format always returns nil unless its first argument is nil, in which +case it prints nothing and returns the string instead of printing it.

    +

    There are three different directives in the above example: +~S, ~D, and +~%. The first one accepts any LISP object and is +replaced by a printed +representation of that object (the same representation which is +produced by print). The second one accepts only integers. The third one +doesn't refer to an argument; it is always replaced by a carriage +return.

    +

    Another useful directive is ~~, which is replaced by +a single ~.

    +

    Refer to a LISP manual for (many, many) additional formatting +directives.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial.sgml +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial.sgml @@ -0,0 +1,1358 @@ + + +
    + +Common LISP Hints + +<author>Geoffrey J. Gordon <ggordon@cs.cmu.edu> + Modified by Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> + and Peter Van Eynde <s950045@uia.ua.ac.be> + +<date>Friday, February 5, 1993 + +<toc> + +<sect> Note for other lisp's. + +<p> +Note: This tutorial introduction to Common Lisp was written for the +CMU environment, so some of the details of running lisp toward the end +may differ from site to site. + + +<sect>Further Information + +<p> +The best LISP textbook I know of is + + Guy L. Steele Jr. <em/Common LISP: the Language , The second edition/. Digital Press. 1990. Also called Cltl2. + +The first edition is easier to read; the second describes a more recent +standard. (The differences between the two standards shouldn't affect +casual programmers.) + +A book by Dave Touretsky has also been recommended to me, although I +haven't read it, so I can't say anything about it. + + + +<sect>Symbols + +<p> +A symbol is just a string of characters. There are restrictions on what +you can include in a symbol and what the first character can be, but as +long as you stick to letters, digits, and hyphens, you'll be safe. +(Except that if you use only digits and possibly an initial hyphen, +LISP will think you typed an integer rather than a symbol.) Some +examples of symbols: + +<enum> +<item> a +<item> b +<item> c1 +<item> foo +<item> bar +<item> baaz-quux-garply +</enum> + +Some things you can do with symbols follow. (Things after a <tt/``>''/ prompt +are what you type to the LISP interpreter, while other things are what +the LISP interpreter prints back to you. The <tt/``;''/ is LISP's comment +character: everything from a <tt/``;''/ to the end of line is ignored.) + +<tscreen><verb> +> (setq a 5) ;store a number as the value of a symbol + ;cmucl will print a warning, ignore it. +5 +> a ;take the value of a symbol +5 +> (let ((a 6)) a) ;bind the value of a symbol temporarily to 6 +6 +> a ;the value returns to 5 once the let is finished +5 +> (+ a 6) ;use the value of a symbol as an argument to a function +11 +> b ;try to take the value of a symbol which has no value +Error: Attempt to take the value of the unbound symbol B + ;or in CMUCL: +Error in KERNEL::UNBOUND-SYMBOL-ERROR-HANDLER: the variable B is unbound. + +Restarts: + 0: [ABORT] Return to Top-Level. + +Debug (type H for help) + +(EVAL B) +0] + ; return to top-level by typing "0" or + ; "restart 0" +</verb></tscreen> + +There are two special symbols, <em/t/ and <em/nil/. The value of <tt/t/ is defined +always to be <tt/t/, and the value of <tt/nil/ is defined always to be <tt/nil/. LISP +uses <tt/t/ and <tt/nil/ to represent true and false. An example of this use is +in the if statement, described more fully later: + +<tscreen><verb> +> (if t 5 6) +5 +> (if nil 5 6) +6 +> (if 4 5 6) +5 +</verb></tscreen> + +The last example is odd but correct: <tt/nil/ means false, and anything else +means true. (Unless we have a reason to do otherwise, we use <tt/t/ to mean +true, just for the sake of clarity.) + +Symbols like <tt/t/ and <tt/nil/ are called self-evaluating symbols, because +they evaluate to themselves. There is a whole class of self-evaluating +symbols called keywords; any symbol whose name starts with a colon is a +keyword. (See below for some uses for keywords.) Some examples: + +<tscreen><verb> +> :this-is-a-keyword +:THIS-IS-A-KEYWORD +> :so-is-this +:SO-IS-THIS +> :me-too +:ME-TOO +</verb></tscreen> + +<sect>Numbers + +<p> +An integer is a string of digits optionally preceded by + or -. A real +number looks like an integer, except that it has a decimal point and +optionally can be written in scientific notation. A rational looks like +two integers with a / between them. LISP supports complex numbers, +which are written <tt/#c(r i)/ (where r is the real part and i is the +imaginary part). A number is any of the above. Here are some numbers: + +<enum> +<item> 5 +<item> 17 +<item> -34 +<item> +6 +<item> 3.1415 +<item> 1.722e-15 +<item> #c(1.722e-15 0.75) +</enum> + +The standard arithmetic functions are all available: <tt/+/, <tt/-/, +<tt/*/, <tt>/</tt>, <tt/floor/, +<tt/ceiling/, <tt/mod/, <tt/sin/, <tt/cos/, <tt/tan/, <tt/sqrt/, +<tt/exp/, <tt/expt/, and so forth. All of them +accept any kind of number as an argument. <tt/+/, <tt/-/, <tt/*/, and +<tt>/</tt> return a +number according to type contagion: an integer plus a rational is a +rational, a rational plus a real is a real, and a real plus a complex +is a complex. Here are some examples: + +<tscreen><verb> +> (+ 3 3/4) ;type contagion +15/4 +> (exp 1) ;e +2.7182817 +> (exp 3) ;e*e*e +20.085537 +> (expt 3 4.2) ;exponent with a base other than e +100.90418 +> (+ 5 6 7 (* 8 9 10)) ;the fns +-*/ all accept multiple arguments +</verb></tscreen> + +There is no limit to the absolute value of an integer except the memory +size of your computer. Be warned that computations with bignums (as +large integers are called) can be slow. (So can computations with +rationals, especially compared to the corresponding computations with +small integers or floats.) + +<sect>Conses + +<p> +A cons is just a two-field record. The fields are called ``car'' and +``cdr'', for historical reasons. (On the first machine where LISP was +implemented, there were two instructions <tt/CAR/ and <tt/CDR/ which stood for +"Contents of Address portion of Register" and ""Contents of Decrement +portion of Register". Registers were twice as wide as the width of an +address, so you could have 2 adresses in one register. (sizeof(int)== +2*sizeof(void *) ) Conses were implemented using these two registers.) + +Conses are easy to use: + +<tscreen><verb> +> (cons 4 5) ;Allocate a cons. Set the car to 4 and the cdr to 5. +(4 . 5) + ;you have just allocated memory and promptly + ;forgotten about it. In C this would cause + ;a memory leak, but not in LISP. +> (cons (cons 4 5) 6) +((4 . 5) . 6) +> (car (cons 4 5)) +4 +> (cdr (cons 4 5)) +5 +</verb></tscreen> + + +<sect>Lists + +<p> +You can build many structures out of conses. Perhaps the simplest is a +linked list: the car of each cons points to one of the elements of the +list, and the cdr points either to another cons or to <tt/nil/. You can +create such a linked list with the list fuction: + +<tscreen><verb> +> (list 4 5 6) +(4 5 6) +</verb></tscreen> + +Notice that LISP prints linked lists a special way: it omits some of +the periods and parentheses. The rule is: if the <tt/cdr/ of a cons is +<tt/nil/, +LISP doesn't bother to print the period or the <tt/nil/; and if the +<tt/cdr/ of +cons A is cons B, then LISP doesn't bother to print the period for cons +A or the parentheses for cons B. So: + +<tscreen><verb> +> (cons 4 nil) +(4) +> (cons 4 (cons 5 6)) +(4 5 . 6) +> (cons 4 (cons 5 (cons 6 nil))) +(4 5 6) +</verb></tscreen> + +The last example is exactly equivalent to the call <tt/(list 4 5 6)/. Note +that <tt/nil/ now means the list with no elements: the cdr of (a b), a list +with 2 elements, is (b), a list with 1 element; and the cdr of (b), a +list with 1 element, is <tt/nil/, which therefore must be a list with no +elements. + +The car and cdr of <tt/nil/ are defined to be nil. + +If you store your list in a variable, you can make it act like a stack: + +<tscreen><verb> +> (setq a nil) +NIL +> (push 4 a) +(4) +> (push 5 a) +(5 4) +> (pop a) +5 +> a +(4) +> (pop a) +4 +> (pop a) +NIL +> a +NIL +</verb></tscreen> + + +<sect>Functions + +<p> +You saw one example of a function above. Here are some more: + +<tscreen><verb> +> (+ 3 4 5 6) ;this function takes any number of arguments +18 +> (+ (+ 3 4) (+ (+ 4 5) 6)) ;isn't prefix notation fun? +22 +> (defun foo (x y) (+ x y 5)) ;defining a function +FOO +> (foo 5 0) ;calling a function +10 +> (defun fact (x) ;a recursive function + (if (> x 0) + (* x (fact (- x 1))) + 1 + ) ) +FACT +> (fact 5) +120 +> (defun a (x) (if (= x 0) t (b (- x)))) ;mutually recursive functions +A +> (defun b (x) (if (> x 0) (a (- x 1)) (a (+ x 1)))) +B +> (a 5) +T +> (defun bar (x) ;a function with multiple statements in + (setq x (* x 3)) ;its body -- it will return the value + (setq x (/ x 2)) ;returned by its final statement + (+ x 4)) +BAR +> (bar 6) +13 +</verb></tscreen> + +When we defined <tt/foo/, we gave it two arguments, <tt/x/ and +<tt/y/. Now when we +call <tt/foo/, we are required to provide exactly two arguments: the first +will become the value of <tt/x/ for the duration of the call to +<tt/foo/, and the +second will become the value of <tt/y/ for the duration of the call. In +LISP, most variables are lexically scoped; that is, if <tt/foo/ calls <tt/bar/ +and <tt/bar/ tries to reference <tt/x/, <tt/bar/ will not get +<tt/foo/'s value for <tt/x/. + +The process of assigning a symbol a value for the duration of some +lexical scope is called binding. + +You can specify optional arguments for your functions. Any argument +after the symbol <tt/&optional/ is optional: + +<tscreen><verb> +> (defun bar (x &optional y) (if y x 0)) +BAR +> (defun baaz (&optional (x 3) (z 10)) (+ x z)) +BAAZ +> (bar 5) +0 +> (bar 5 t) +5 +> (baaz 5) +15 +> (baaz 5 6) +11 +> (baaz) +13 +</verb></tscreen> + +It is legal to call the function <tt/bar/ with either one or two arguments. +If it is called with one argument, <tt/x/ will be bound to the value of that +argument and <tt/y/ will be bound to <tt/nil/; if it is called with two +arguments, <tt/x/ and <tt/y/ will be bound to the values of the first +and second +argument, respectively. + +The function <tt/baaz/ has two optional arguments. It specifies a default +value for each of them: if the caller specifies only one argument, <tt/z/ +will be bound to 10 instead of to <tt/nil/, and if the caller specifies no +arguments, <tt/x/ will be bound to 3 and <tt/z/ to 10. + +You can make your function accept any number of arguments by ending its +argument list with an <tt/&rest/ parameter. LISP will collect all arguments +not otherwise accounted for into a list and bind the <tt/&rest/ +parameter to +that list. So: + +<tscreen><verb> +> (defun foo (x &rest y) y) +FOO +> (foo 3) +NIL +> (foo 4 5 6) +(5 6) +</verb></tscreen> + +Finally, you can give your function another kind of optional argument +called a keyword argument. The caller can give these arguments in any +order, because they're labelled with keywords. + +<tscreen><verb> +> (defun foo (&key x y) (cons x y)) +FOO +> (foo :x 5 :y 3) +(5 . 3) +> (foo :y 3 :x 5) +(5 . 3) +> (foo :y 3) +(NIL . 3) +> (foo) +(NIL) +</verb></tscreen> + +An <tt/&key/ parameter can have a default value too: + +<tscreen><verb> +> (defun foo (&key (x 5)) x) +FOO +> (foo :x 7) +7 +> (foo) +5 +</verb></tscreen> + + +<sect>Printing + +<p> +Some functions can cause output. The simplest one is <tt/print/, which +prints its argument and then returns it. + +<tscreen><verb> +> (print 3) +3 +3 +</verb></tscreen> + +The first 3 above was printed, the second was returned. + +If you want more complicated output, you will need to use <tt/format/. +Here's an example: + +<tscreen><verb> +> (format t "An atom: ˜S˜%and a list: ˜S˜%and an integer: ˜D˜%" + nil (list 5) 6) +An atom: NIL +and a list: (5) +and an integer: 6 +</verb></tscreen> + +The first argument to format is either <tt/t/, <tt/nil/, or a +stream. <tt/T/ specifies +output to the terminal. <tt/Nil/ means not to print anything but to return a +string containing the output instead. Streams are general places for +output to go: they can specify a file, or the terminal, or another +program. This handout will not describe streams in any further detail. + +The second argument is a formatting template, which is a string +optionally containing formatting directives. + +All remaining arguments may be referred to by the formatting +directives. LISP will replace the directives with some appropriate +characters based on the arguments to which they refer and then print +the resulting string. + +Format always returns <tt/nil/ unless its first argument is <tt/nil/, in which +case it prints nothing and returns the string instead of printing it. + +There are three different directives in the above example: +<tt/˜S/, <tt/˜D/, and +<tt/˜%/. The first one accepts any LISP object and is +replaced by a printed +representation of that object (the same representation which is +produced by print). The second one accepts only integers. The third one +doesn't refer to an argument; it is always replaced by a carriage +return. + +Another useful directive is <tt/˜˜/, which is replaced by +a single ˜. + +Refer to a LISP manual for (many, many) additional formatting +directives. + + + +<sect>Forms and the Top-Level Loop + +<p> +The things which you type to the LISP interpreter are called forms; the +LISP interpreter repeatedly reads a form, evaluates it, and prints the +result. This procedure is called the read-eval-print loop. + +Some forms will cause errors. After an error, LISP will put you into +the debugger so you can try to figure out what caused the error. LISP +debuggers are all different; but most will respond to the command +"help" or ":help" by giving some form of help. + +In general, a form is either an atom (for example, a symbol, an +integer, or a string) or a list. If the form is an atom, LISP evaluates +it immediately. Symbols evaluate to their value; integers and strings +evaluate to themselves. If the form is a list, LISP treats its first +element as the name of a function; it evaluates the remaining elements +recursively, and then calls the function with the values of the +remaining elements as arguments. + +For example, if LISP sees the form <tt/(+ 3 4)/, it treats <tt/+/ as +the name of +a function. It then evaluates 3 to get 3 and 4 to get 4; finally it +calls <tt/+/ with 3 and 4 as the arguments. The <tt/+/ function +returns 7, which +LISP prints. + +The top-level loop provides some other conveniences; one particularly +convenient convenience is the ability to talk about the results of +previously typed forms. LISP always saves its most recent three +results; it stores them as the values of the symbols <tt/*/, <tt/**/, +and <tt/***/. +For example: + +<tscreen><verb> +> 3 +3 +> 4 +4 +> 5 +5 +> *** +3 +> *** +4 +> *** +5 +> ** +4 +> * +4 +</verb></tscreen> + + +<sect>Special forms + +<p> +There are a number of special forms which look like function calls but +aren't. These include control constructs such as <tt/if/ statements and do +loops; assignments like <tt/setq/, <tt/setf/, <tt/push/, and <tt/pop/; +definitions such as +<tt/defun/ and <tt/defstruct/; and binding constructs such as +<tt/let/. (Not all of +these special forms have been mentioned yet. See below.) + +One useful special form is the <tt/quote/ form: <tt/quote/ prevents +its argument +from being evaluated. For example: + +<tscreen><verb> +> (setq a 3) +3 +> a +3 +> (quote a) +A +> 'a ;'a is an abbreviation for (quote a) + ;it's the quote next to the enter key + ;on a qwerty keyboard +A +</verb></tscreen> + +Another similar special form is the <tt/function/ form: <tt/function/ +causes its +argument to be interpreted as a function rather than being evaluated. +For example: + +<tscreen><verb> +> (setq + 3) +3 +> + +3 +> '+ ++ +> (function +) +#<Function + @ #x-fbef9de> +> #'+ ;#'+ is an abbreviation for (function +) +#<Function + @ #x-fbef9de> +</verb></tscreen> + +The <tt/function/ special form is useful when you want to pass a function as +an argument to another function. See below for some examples of +functions which take functions as arguments. + +<sect>Binding + +<p> +Binding is lexically scoped assignment. It happens to the variables in +a function's parameter list whenever the function is called: the formal +parameters are bound to the actual parameters for the duration of the +function call. You can bind variables anywhere in a program with the +let special form, which looks like this: + +<tscreen><verb> +(let ((var1 val1) + (var2 val2) + ... + ) + body) +</verb></tscreen> + +(It's considered bad style to leave a single ``)'' on a line) + +Let binds <tt/var1/ to <tt/val1/, <tt/var2/ to <tt/val2/, and so +forth; then it executes +the statements in its body. The body of a let follows exactly the same +rules that a function body does. Some examples: + +<tscreen><verb> +> (let ((a 3)) (+ a 1)) +4 +> (let ((a 2) + (b 3) + (c 0)) + (setq c (+ a b)) + c) +5 +> (setq c 4) +4 ;and a warning from CMUCL, ignore it +> (let ((c 5)) c) +5 +> c +4 +</verb></tscreen> + +Instead of <tt/(let ((a nil) (b nil)) ...)/, you can write <tt/(let (a b) ...)/. + +The <tt/val1/, <tt/val2/, etc. inside a let cannot reference the +variables <tt/var1/, +<tt/var2/, etc. that the let is binding. For example, + +<tscreen><verb> +> (let ((x 1) + (y (+ x 1))) + y) +Error: Attempt to take the value of the unbound symbol X + ;in CMUCL: + +In: LET ((X 1) (Y (+ X 1))) + (LET ((X 1) (Y #)) + Y) +Warning: Variable X defined but never used. + + +Warning: This variable is undefined: + X + +Error in KERNEL::UNBOUND-SYMBOL-ERROR-HANDLER: the variable X is +unbound. + +Restarts: + 0: [ABORT] Return to Top-Level. + +Debug (type H for help) + +(EVAL::LEAF-VALUE + #<C::REF #x9009B15 LEAF= #<C::GLOBAL-VAR #x9009AD5 NAME= X KIND= + :GLOBAL>> + 0 + #()) +0] +</verb></tscreen> + +If the symbol <tt/x/ already has a global value, stranger happenings will +result: + +<tscreen><verb> +> (setq x 7) +7 ;again a warning in CMUCL: +Warning: Declaring X special. + ;x is automaticly declared special +> (let ((x 1) + (y (+ x 1))) + y + ) +8 +</verb></tscreen> + +The <tt/let*/ special form is just like <tt/let/ except that it allows +values to +reference variables defined earlier in the <tt/let*/. For example, + +<tscreen><verb> +> (setq x 7) +7 +> (let* ((x 1) + (y (+ x 1))) + y + ) +2 +</verb></tscreen> + +The form + +<tscreen><verb> +(let* ((x a) + (y b)) + ... +) +</verb></tscreen> + +is equivalent to + +<tscreen><verb> +(let ((x a)) + (let ((y b)) + ... +) ) +</verb></tscreen> + +<sect>Dynamic Scoping + +<p> +The <tt/let/ and <tt/let*/ forms provide lexical scoping, which is what you +expect if you're used to programming in C or Pascal. Dynamic scoping is +what you get in BASIC: if you assign a value to a dynamically scoped +variable, every mention of that variable returns that value until you +assign another value to the same variable. + +In LISP, dynamically scoped variables are called <em/special variables/. You +can declare a special variable with the defvar special form. Here are +some examples of lexically and dynamically scoped variables. + +In this example, the function <tt/check-regular/ references a regular (ie, +lexically scoped) variable. Since <tt/check-regular/ is lexically outside of +the <tt/let/ which binds <tt/regular/, <tt/check-regular/ returns the +variable's global value. + +<tscreen><verb> +> (set 'regular 5) ;setq would make it special in CMUCL! +5 +> (defun check-regular () regular) +CHECK-REGULAR +> (check-regular) +5 +> (let ((regular 6)) (check-regular)) +5 +</verb></tscreen> + +In this example, the function <tt/check-special/ references a special (ie, +dynamically scoped) variable. Since the call to <tt/check-special/ is +temporally inside of the <tt/let/ which binds special, +<tt/check-special/ returns +the variable's local value. + +<tscreen><verb> +> (defvar *special* 5) +*SPECIAL* +> (defun check-special () *special*) +CHECK-SPECIAL +> (check-special) +5 +> (let ((*special* 6)) (check-special)) +6 +</verb></tscreen> + +By convention, the name of a special variable begins and ends with a *. +Special variables are chiefly used as global variables, since +programmers usually expect lexical scoping for local variables and +dynamic scoping for global variables. + +For more information on the difference between lexical and dynamic +scoping, see <em/Common LISP: the Language/. + + +<sect>Arrays + +<p> +The function <tt/make-array/ makes an array. The <tt/aref/ function +accesses its +elements. All elements of an array are initially set to <tt/nil/. For +example: + +<tscreen><verb> +> (make-array '(3 3)) +#2a((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL)) +> (aref * 1 1) +NIL +> (make-array 4) ;1D arrays don't need the extra parens +#(NIL NIL NIL NIL) +</verb></tscreen> + +Array indices always start at 0. + +See below for how to set the elements of an array. + + + +<sect>Strings + +<p> +A string is a sequence of characters between double quotes. LISP +represents a string as a variable-length array of characters. You can +write a string which contains a double quote by preceding the quote +with a backslash; a double backslash stands for a single backslash. For +example: + +<tscreen><verb> +"abcd" has 4 characters +"\"" has 1 character +"\\" has 1 character +</verb></tscreen> + +Here are some functions for dealing with strings: + +<tscreen><verb> +> (concatenate 'string "abcd" "efg") +"abcdefg" +> (char "abc" 1) +#\b ;LISP writes characters preceded by #\ +> (aref "abc" 1) +#\b ;remember, strings are really arrays +</verb></tscreen> + +The <tt/concatenate/ function can actually work with any type of sequence: + +<tscreen><verb> +> (concatenate 'string '(#\a #\b) '(#\c)) +"abc" +> (concatenate 'list "abc" "de") +(#\a #\b #\c #\d #\e) +> (concatenate 'vector '#(3 3 3) '#(3 3 3)) +#(3 3 3 3 3 3) +</verb></tscreen> + + +<sect>Structures + +<p> +LISP structures are analogous to C structs or Pascal records. Here is +an example: + +<tscreen><verb> +> (defstruct foo + bar + baaz + quux) +FOO +</verb></tscreen> + +This example defines a data type called <tt/foo/ which is a structure +containing 3 fields. It also defines 4 functions which operate on this +data type: <tt/make-foo/, <tt/foo-bar/, <tt/foo-baaz/, and +<tt/foo-quux/. The first one +makes a new object of type <tt/foo/; the others access the fields of an +object of type <tt/foo/. Here is how to use these functions: + +<tscreen><verb> +> (make-foo) +#s(FOO :BAR NIL :BAAZ NIL :QUUX NIL) +> (make-foo :baaz 3) +#s(FOO :BAR NIL :BAAZ 3 :QUUX NIL) +> (foo-bar *) +NIL +> (foo-baaz **) +3 +</verb></tscreen> + +The <tt/make-foo/ function can take a keyword argument for each of the +fields a structure of type <tt/foo/ can have. The field access functions +each take one argument, a structure of type <tt/foo/, and return the +appropriate field. + +See below for how to set the fields of a structure. + + + +<sect>Setf + +<p> +Certain forms in LISP naturally define a memory location. For example, +if the value of <tt/x/ is a structure of type <tt/foo/, then +<tt/(foo-bar x)/ defines +the <tt/bar/ field of the value of <tt/x/. Or, if the value of <tt/y/ +is a one-dimensional array, <tt/(aref y 2)/ defines the third element +of <tt/y/. + +The <tt/setf/ special form uses its first argument to define a place in +memory, evaluates its second argument, and stores the resulting value +in the resulting memory location. For example, + +<tscreen><verb> +> (setq a (make-array 3)) +#(NIL NIL NIL) +> (aref a 1) +NIL +> (setf (aref a 1) 3) +3 +> a +#(NIL 3 NIL) +> (aref a 1) +3 +> (defstruct foo bar) +FOO +> (setq a (make-foo)) +#s(FOO :BAR NIL) +> (foo-bar a) +NIL +> (setf (foo-bar a) 3) +3 +> a +#s(FOO :BAR 3) +> (foo-bar a) +3 +</verb></tscreen> + +<tt/Setf/ is the only way to set the fields of a structure or the elements +of an array. + +Here are some more examples of <tt/setf/ and related functions. + +<tscreen><verb> +> (setf a (make-array 1)) ;setf on a variable is equivalent to setq +#(NIL) +> (push 5 (aref a 1)) ;push can act like setf +(5) +> (pop (aref a 1)) ;so can pop +5 +> (setf (aref a 1) 5) +5 +> (incf (aref a 1)) ;incf reads from a place, increments, +6 ;and writes back +> (aref a 1) +6 +</verb></tscreen> + + +<sect>Booleans and Conditionals + +<p> +LISP uses the self-evaluating symbol <tt/nil/ to mean false. Anything other +than <tt/nil/ means true. Unless we have a reason not to, we usually use the +self-evaluating symbol <tt/t/ to stand for true. + +LISP provides a standard set of logical functions, for example +<tt/and/, <tt/or/, +and <tt/not/. The <tt/and/ and <tt/or/ connectives are +short-circuiting: and will not +evaluate any arguments to the right of the first one which evaluates to +<tt/nil/, while <tt/or/ will not evaluate any arguments to the right +of the first +one which evaluates to <tt/t/ (with <tt/t/ we mean here ``non-<tt/nil/''). + +LISP also provides several special forms for conditional execution. The +simplest of these is <tt/if/. The first argument of <tt/if/ determines whether +the second or third argument will be executed: + +<tscreen><verb> +> (if t 5 6) +5 +> (if nil 5 6) +6 +> (if 4 5 6) +5 +</verb></tscreen> + +If you need to put more than one statement in the then or else clause +of an if statement, you can use the <tt/progn/ special +form. <tt/Progn/ executes +each statement in its body, then returns the value of the final one. + +<tscreen><verb> +> (setq a 7) +7 +> (setq b 0) +0 +> (setq c 5) +5 +> (if (> a 5) + (progn + (setq a (+ b 7)) + (setq b (+ c 8))) + (setq b 4)) +13 +</verb></tscreen> + +An <tt/if/ statement which lacks either a then or an else clause can be +written using the <tt/when/ or <tt/unless/ special form: + +<tscreen><verb> +> (when t 3) +3 +> (when nil 3) +NIL +> (unless t 3) +NIL +> (unless nil 3) +3 +</verb></tscreen> + +<tt/When/ and <tt/unless/, unlike <tt/if/, allow any number of +statements in their +bodies. (Eg, <tt/(when x a b c)/ is equivalent to +<tt/(if x (progn a b c))/.) + +<tscreen><verb> +> (when t + (setq a 5) + (+ a 6)) +11 +</verb></tscreen> + +More complicated conditionals can be defined using the <tt/cond/ special +form, which is equivalent to an if ... else if ... fi construction. + +A <tt/cond/ consists of the symbol <tt/cond/ followed by a number of cond +clauses, each of which is a list. The first element of a cond clause is +the condition; the remaining elements (if any) are the action. The cond +form finds the first clause whose condition evaluates to true (ie, +doesn't evaluate to nil); it then executes the corresponding action and +returns the resulting value. None of the remaining conditions are +evaluated; nor are any actions except the one corresponding to the +selected condition. For example: + +<tscreen><verb> +> (setq a 3) +3 +> (cond + ((evenp a) a) ;if a is even return a + ((> a 7) (/ a 2)) ;else if a is bigger than 7 return a/2 + ((< a 5) (- a 1)) ;else if a is smaller than 5 return a-1 + (t 17)) ;else return 17 +2 +</verb></tscreen> + +If the action in the selected cond clause is missing, <tt/cond/ returns what +the condition evaluated to: + +<tscreen><verb> +> (cond ((+ 3 4))) +7 +</verb></tscreen> + +Here's a clever little recursive function which uses <tt/cond/. You might be +interested in trying to prove that it terminates for all integers <tt/x/ at +least 1. (If you succeed, please publish the result.) + +<tscreen><verb> +> (defun hotpo (x steps) ;hotpo stands for Half Or Triple Plus One + (cond + ((= x 1) steps) + ((oddp x) (hotpo (+ 1 (* x 3)) (+ 1 steps))) + (t (hotpo (/ x 2) (+ 1 steps))))) +A +> (hotpo 7 0) +16 +</verb></tscreen> + +The LISP case statement is like a C switch statement: + +<tscreen><verb> +> (setq x 'b) +B +> (case x + (a 5) + ((d e) 7) + ((b f) 3) + (otherwise 9)) +3 +</verb></tscreen> + +The otherwise clause at the end means that if <tt/x/ is not <tt/a/, +<tt/b/, <tt/d/, <tt/e/, or <tt/f/, the case statement will return 9. + + + +<sect>Iteration + +<p> +The simplest iteration construct in LISP is <tt/loop/: a <tt/loop/ construct +repeatedly executes its body until it hits a <tt/return/ special form. For +example, + +<tscreen><verb> +> (setq a 4) +4 +> (loop + (setq a (+ a 1)) + (when (> a 7) (return a))) +8 +> (loop + (setq a (- a 1)) + (when (< a 3) (return))) +NIL +</verb></tscreen> + +The next simplest is <tt/dolist/: <tt/dolist/ binds a variable to the +elements of +a list in order and stops when it hits the end of the list. + +<tscreen><verb> +> (dolist (x '(a b c)) (print x)) +A +B +C +NIL +</verb></tscreen> + +<tt/Dolist/ always returns <tt/nil/. Note that the value of <tt/x/ in the above +example was never <tt/nil/: the<tt/ NIL/ below the C was the value +that <tt/dolist/ +returned, printed by the read-eval-print loop. + +The most complicated iteration primitive is called <tt/do/. A <tt/do/ statement +looks like this: + +<tscreen><verb> +> (do ((x 1 (+ x 1)) + (y 1 (* y 2))) + ((> x 5) y) + (print y) + (print 'working) + ) +1 +WORKING +2 +WORKING +4 +WORKING +8 +WORKING +16 +WORKING +32 +</verb></tscreen> + +The first part of a <tt/do/ specifies what variables to bind, what their +initial values are, and how to update them. The second part specifies a +termination condition and a return value. The last part is the body. A +do form binds its variables to their initial values like a <tt/let/, then +checks the termination condition. As long as the condition is false, it +executes the body repeatedly; when the condition becomes true, it +returns the value of the return-value form. + +The <tt/do/* form is to <tt/do/ as <tt/let/* is to <tt/let/. + + + +<sect>Non-local Exits + +<p> +The <tt/return/ special form mentioned in the section on iteration is an +example of a nonlocal return. Another example is the <tt/return/-from form, +which returns a value from the surrounding function: + +<tscreen><verb> +> (defun foo (x) + (return-from foo 3) + x) +FOO +> (foo 17) +3 +</verb></tscreen> + +Actually, the <tt/return-from/ form can return from any named block -- it's +just that functions are the only blocks which are named by default. You +can create a named block with the block special form: + +<tscreen><verb> +> (block foo + (return-from foo 7) + 3) +7 +</verb></tscreen> + +The <tt/return/ special form can return from any block named +<tt/nil/. Loops are +by default labelled <tt/nil/, but you can make your own nil-labelled blocks: + +<tscreen><verb> +> (block nil + (return 7) + 3) +7 +</verb></tscreen> + +Another form which causes a nonlocal exit is the <tt/error/ form: + +<tscreen><verb> +> (error "This is an error") +Error: This is an error +</verb></tscreen> + +The <tt/error/ form applies format to its arguments, then places you in the +debugger. + + + +<sect>Funcall, Apply, and Mapcar + +<p> +Earlier I promised to give some functions which take functions as +arguments. Here they are: + +<tscreen><verb> +> (funcall #'+ 3 4) +7 +> (apply #'+ 3 4 '(3 4)) +14 +> (mapcar #'not '(t nil t nil t nil)) +(NIL T NIL T NIL T) +</verb></tscreen> + +<tt/Funcall/ calls its first argument on its remaining arguments. + +<tt/Apply/ is just like <tt/funcall/, except that its final argument +should be a +list; the elements of that list are treated as if they were additional +arguments to a <tt/funcall/. + +The first argument to <tt/mapcar/ must be a function of one argument; +<tt/mapcar/ +applies this function to each element of a list and collects the +results in another list. + +<tt/Funcall/ and <tt/apply/ are chiefly useful when their first argument is a +variable. For instance, a search engine could take a heuristic function +as a parameter and use <tt/funcall/ or <tt/apply/ to call that function on a +state description. The sorting functions described later use <tt/funcall/ +to call their comparison functions. + +<tt/Mapcar/, along with nameless functions (see below), can replace many +loops. + + + +<sect>Lambda + +<p> +If you just want to create a temporary function and don't want to +bother giving it a name, <tt/lambda/ is what you need. + +<tscreen><verb> +> #'(lambda (x) (+ x 3)) +(LAMBDA (X) (+ X 3)) +> (funcall * 5) ;* is the last result,remember? +8 +<tscreen><verb> + +The combination of <tt/lambda/ and <tt/mapcar/ can replace many loops. For +example, the following two forms are equivalent: + +<tscreen><verb> +> (do ((x '(1 2 3 4 5) (cdr x)) + (y nil)) + ((null x) (reverse y)) + (push (+ (car x) 2) y)) +(3 4 5 6 7) +> (mapcar #'(lambda (x) (+ x 2)) '(1 2 3 4 5)) +(3 4 5 6 7) +</verb></tscreen> + +However the first version will run significantly faster when compiled +by CMUCL. But speed isn't everything and the second version is a lot +clearer and easier to debug. + +<sect>Sorting + +<p> +LISP provides two primitives for sorting: <tt/sort/ and <tt/stable-sort/. + +<tscreen><verb> +> (sort '(2 1 5 4 6) #'<) +(1 2 4 5 6) +> (sort '(2 1 5 4 6) #'>) +(6 5 4 2 1) +</verb></tscreen> + +The first argument to <tt/sort/ is a list; the second is a comparison +function. The <tt/sort/ function does not guarantee stability: if there are +two elements <tt/a/ and <tt/b/ such that <tt/(and (not (< a b)) (not +(< b a)))/, sort +may arrange them in either order. The <tt/stable-sort/ function is exactly +like <tt/sort/, except that it guarantees that two equivalent elements +appear in the sorted list in the same order that they appeared in the +original list. + +Be careful: <tt/sort/ is allowed to destroy its argument, so if the original +sequence is important to you, make a copy with the <tt/copy-list/ or +<tt/copy/-seq/ function. + + + +<sect>Equality + +<p> +LISP has many different ideas of equality. Numerical equality is +denoted by <tt/=/. Two symbols are <tt/eq/ if and only if they are +identical. Two +copies of the same list are not <tt/eq/, but they are equal. + +<tscreen><verb> +> (eq 'a 'a) +T +> (eq 'a 'b) +NIL +> (= 3 4) +T +> (eq '(a b c) '(a b c)) +NIL +> (equal '(a b c) '(a b c)) +T +> (eql 'a 'a) +T +> (eql 3 3) +T +</verb></tscreen> + +The <tt/eql/ predicate is equivalent to <tt/eq/ for symbols and to +<tt/=/ for numbers. + +The <tt/equal/ predicate is equivalent to <tt/eql/ for symbols and +numbers. It is +true for two conses if and only if their cars are equal and their cdrs +are equal. It is true for two structures if and only if the structures +are the same type and their corresponding fields are equal. + + + +<sect>Some Useful List Functions + +<p> +These functions all manipulate lists. + +<tscreen><verb> +> (append '(1 2 3) '(4 5 6)) ;concatenate lists +(1 2 3 4 5 6) +> (reverse '(1 2 3)) ;reverse the elements of a list +(3 2 1) +> (member 'a '(b d a c)) ;set membership -- returns the first tail +(A C) ;whose car is the desired element +> (find 'a '(b d a c)) ;another way to do set membership +A +> (find '(a b) '((a d) (a d e) (a b d e) ()) :test #'subsetp) +(A B D E) ;find is more flexible though +> (subsetp '(a b) '(a d e)) ;set containment +NIL +> (intersection '(a b c) '(b)) ;set intersection +(B) +> (union '(a) '(b)) ;set union +(A B) +> (set-difference '(a b) '(a)) ;set difference +(B) +</verb></tscreen> + +<tt/Subsetp/, <tt/intersection/, <tt/union/, and <tt/set-difference/ +all assume that each +argument contains no duplicate elements -- <tt/(subsetp '(a a) '(a b b))/ is +allowed to fail, for example. + +<tt/Find/, <tt/subsetp/, <tt/intersection/, <tt/union/, and +<tt/set-difference/ can all take a +<tt/:test/ keyword argument; by default, they all use <tt/eql/. + + + +<sect>Getting Started with Emacs + +<p> +You can use Emacs to edit LISP code: most Emacses are set up to enter +LISP mode automatically when they find a file which ends in .lisp, but +if yours isn't, you can type <tt/M-x lisp-mode/. M-x means: meta-key +plus x. If there is a meta (or ALT) key try it. If this fails M-x can +be typed by typing ESC followed by x. If your keyboard lacks an ESC +key, curse DEC, and type control-[ followed by x. + +You can run LISP under Emacs, too: make sure that there is a command in +your path called "lisp" which runs your favorite LISP. For example, you +could type + +<tscreen><verb> +ln -s /usr/local/bin/clisp ˜/bin/lisp +</verb></tscreen> + +This isn't needed in CMUCL. Lisp is called lisp there. + +Then in Emacs type <tt/M-x run-lisp/. You can send LISP code to the LISP you +just started, and do all sorts of other cool things; for more +information, type <tt/C-h m/ from any buffer which is in LISP +mode. This means: press control <em/and/ h, release both and press m. + +Actually, you don't even need to make a link. Emacs has a variable +called inferior-lisp-program; so if you add the line + +<tscreen><verb> +(setq inferior-lisp-program "/usr/local/bin/clisp") +</verb></tscreen> + +to your .emacs file, Emacs will know where to find CLISP when +you type <tt/M-x run-lisp/. + + +</article> + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-15.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-15.html @@ -0,0 +1,58 @@ +<HTML> +<HEAD> +<TITLE>Common LISP Hints: Structures + + +Previous +Next +Contents +
    +

    15. Structures

    + +

    LISP structures are analogous to C structs or Pascal records. Here is +an example:

    +

    +

    +
    +> (defstruct foo
    +    bar
    +    baaz
    +    quux)
    +FOO
    +
    +
    +

    +

    This example defines a data type called foo which is a structure +containing 3 fields. It also defines 4 functions which operate on this +data type: make-foo, foo-bar, foo-baaz, and +foo-quux. The first one +makes a new object of type foo; the others access the fields of an +object of type foo. Here is how to use these functions:

    +

    +

    +
    +> (make-foo)
    +#s(FOO :BAR NIL :BAAZ NIL :QUUX NIL) 
    +> (make-foo :baaz 3)
    +#s(FOO :BAR NIL :BAAZ 3 :QUUX NIL) 
    +> (foo-bar *)
    +NIL
    +> (foo-baaz **)
    +3
    +
    +
    +

    +

    The make-foo function can take a keyword argument for each of the +fields a structure of type foo can have. The field access functions +each take one argument, a structure of type foo, and return the +appropriate field.

    +

    See below for how to set the fields of a structure.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-13.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-13.html @@ -0,0 +1,38 @@ + + +Common LISP Hints: Arrays + + +Previous +Next +Contents +
    +

    13. Arrays

    + +

    The function make-array makes an array. The aref function +accesses its +elements. All elements of an array are initially set to nil. For +example:

    +

    +

    +
    +> (make-array '(3 3))
    +#2a((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL))
    +> (aref * 1 1)
    +NIL
    +> (make-array 4)        ;1D arrays don't need the extra parens
    +#(NIL NIL NIL NIL)
    +
    +
    +

    +

    Array indices always start at 0.

    +

    See below for how to set the elements of an array.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-7.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-7.html @@ -0,0 +1,147 @@ + + +Common LISP Hints: Functions + + +Previous +Next +Contents +
    +

    7. Functions

    + +

    You saw one example of a function above. Here are some more:

    +

    +

    +
    +> (+ 3 4 5 6)                   ;this function takes any number of arguments
    +18
    +> (+ (+ 3 4) (+ (+ 4 5) 6))     ;isn't prefix notation fun?
    +22
    +> (defun foo (x y) (+ x y 5))   ;defining a function
    +FOO
    +> (foo 5 0)                     ;calling a function
    +10
    +> (defun fact (x)               ;a recursive function
    +    (if (> x 0) 
    +      (* x (fact (- x 1)))
    +      1
    +  ) )
    +FACT
    +> (fact 5)
    +120
    +> (defun a (x) (if (= x 0) t (b (- x))))        ;mutually recursive functions
    +A
    +> (defun b (x) (if (> x 0) (a (- x 1)) (a (+ x 1))))
    +B
    +> (a 5)
    +T
    +> (defun bar (x)                ;a function with multiple statements in
    +    (setq x (* x 3))            ;its body -- it will return the value
    +    (setq x (/ x 2))            ;returned by its final statement
    +    (+ x 4))
    +BAR
    +> (bar 6)
    +13
    +
    +
    +

    +

    When we defined foo, we gave it two arguments, x and +y. Now when we +call foo, we are required to provide exactly two arguments: the first +will become the value of x for the duration of the call to +foo, and the +second will become the value of y for the duration of the call. In +LISP, most variables are lexically scoped; that is, if foo calls bar +and bar tries to reference x, bar will not get +foo's value for x.

    +

    The process of assigning a symbol a value for the duration of some +lexical scope is called binding.

    +

    You can specify optional arguments for your functions. Any argument +after the symbol &optional is optional:

    +

    +

    +
    +> (defun bar (x &optional y) (if y x 0))
    +BAR
    +> (defun baaz (&optional (x 3) (z 10)) (+ x z))
    +BAAZ
    +> (bar 5)
    +0
    +> (bar 5 t)
    +5
    +> (baaz 5)
    +15
    +> (baaz 5 6)
    +11
    +> (baaz)
    +13
    +
    +
    +

    +

    It is legal to call the function bar with either one or two arguments. +If it is called with one argument, x will be bound to the value of that +argument and y will be bound to nil; if it is called with two +arguments, x and y will be bound to the values of the first +and second +argument, respectively.

    +

    The function baaz has two optional arguments. It specifies a default +value for each of them: if the caller specifies only one argument, z +will be bound to 10 instead of to nil, and if the caller specifies no +arguments, x will be bound to 3 and z to 10.

    +

    You can make your function accept any number of arguments by ending its +argument list with an &rest parameter. LISP will collect all arguments +not otherwise accounted for into a list and bind the &rest +parameter to +that list. So:

    +

    +

    +
    +> (defun foo (x &rest y) y)
    +FOO
    +> (foo 3)
    +NIL
    +> (foo 4 5 6)
    +(5 6)
    +
    +
    +

    +

    Finally, you can give your function another kind of optional argument +called a keyword argument. The caller can give these arguments in any +order, because they're labelled with keywords.

    +

    +

    +
    +> (defun foo (&key x y) (cons x y))
    +FOO
    +> (foo :x 5 :y 3)
    +(5 . 3)
    +> (foo :y 3 :x 5)
    +(5 . 3)
    +> (foo :y 3)
    +(NIL . 3)
    +> (foo)
    +(NIL)
    +
    +
    +

    +

    An &key parameter can have a default value too:

    +

    +

    +
    +> (defun foo (&key (x 5)) x)
    +FOO
    +> (foo :x 7)
    +7
    +> (foo)
    +5
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-18.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-18.html @@ -0,0 +1,90 @@ + + +Common LISP Hints: Iteration + + +Previous +Next +Contents +
    +

    18. Iteration

    + +

    The simplest iteration construct in LISP is loop: a loop construct +repeatedly executes its body until it hits a return special form. For +example,

    +

    +

    +
    +> (setq a 4)
    +4
    +> (loop 
    +   (setq a (+ a 1))
    +   (when (> a 7) (return a)))
    +8
    +> (loop
    +   (setq a (- a 1))
    +   (when (< a 3) (return)))
    +NIL
    +
    +
    +

    +

    The next simplest is dolist: dolist binds a variable to the +elements of +a list in order and stops when it hits the end of the list.

    +

    +

    +
    +> (dolist (x '(a b c)) (print x))
    +A 
    +B 
    +C 
    +NIL 
    +
    +
    +

    +

    Dolist always returns nil. Note that the value of x in the above +example was never nil: the NIL below the C was the value +that dolist +returned, printed by the read-eval-print loop.

    +

    The most complicated iteration primitive is called do. A do statement +looks like this:

    +

    +

    +
    +> (do ((x 1 (+ x 1))
    +       (y 1 (* y 2)))
    +      ((> x 5) y)
    +    (print y)
    +    (print 'working)
    +  )
    +1 
    +WORKING 
    +2 
    +WORKING 
    +4 
    +WORKING 
    +8 
    +WORKING 
    +16 
    +WORKING 
    +32 
    +
    +
    +

    +

    The first part of a do specifies what variables to bind, what their +initial values are, and how to update them. The second part specifies a +termination condition and a return value. The last part is the body. A +do form binds its variables to their initial values like a let, then +checks the termination condition. As long as the condition is false, it +executes the body repeatedly; when the condition becomes true, it +returns the value of the return-value form.

    +

    The do* form is to do as let* is to let.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-17.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-17.html @@ -0,0 +1,166 @@ + + +Common LISP Hints: Booleans and Conditionals + + +Previous +Next +Contents +
    +

    17. Booleans and Conditionals

    + +

    LISP uses the self-evaluating symbol nil to mean false. Anything other +than nil means true. Unless we have a reason not to, we usually use the +self-evaluating symbol t to stand for true.

    +

    LISP provides a standard set of logical functions, for example +and, or, +and not. The and and or connectives are +short-circuiting: and will not +evaluate any arguments to the right of the first one which evaluates to +nil, while or will not evaluate any arguments to the right +of the first +one which evaluates to t (with t we mean here ``non-nil'').

    +

    LISP also provides several special forms for conditional execution. The +simplest of these is if. The first argument of if determines whether +the second or third argument will be executed:

    +

    +

    +
    +> (if t 5 6)
    +5
    +> (if nil 5 6)
    +6
    +> (if 4 5 6)
    +5
    +
    +
    +

    +

    If you need to put more than one statement in the then or else clause +of an if statement, you can use the progn special +form. Progn executes +each statement in its body, then returns the value of the final one.

    +

    +

    +
    +> (setq a 7)
    +7
    +> (setq b 0)
    +0
    +> (setq c 5)
    +5
    +> (if (> a 5)
    +    (progn
    +      (setq a (+ b 7))
    +      (setq b (+ c 8)))
    +    (setq b 4))
    +13
    +
    +
    +

    +

    An if statement which lacks either a then or an else clause can be +written using the when or unless special form:

    +

    +

    +
    +> (when t 3)
    +3
    +> (when nil 3)
    +NIL
    +> (unless t 3)
    +NIL
    +> (unless nil 3)
    +3
    +
    +
    +

    +

    When and unless, unlike if, allow any number of +statements in their +bodies. (Eg, (when x a b c) is equivalent to +(if x (progn a b c)).)

    +

    +

    +
    +> (when t
    +    (setq a 5)
    +    (+ a 6))
    +11
    +
    +
    +

    +

    More complicated conditionals can be defined using the cond special +form, which is equivalent to an if ... else if ... fi construction.

    +

    A cond consists of the symbol cond followed by a number of cond +clauses, each of which is a list. The first element of a cond clause is +the condition; the remaining elements (if any) are the action. The cond +form finds the first clause whose condition evaluates to true (ie, +doesn't evaluate to nil); it then executes the corresponding action and +returns the resulting value. None of the remaining conditions are +evaluated; nor are any actions except the one corresponding to the +selected condition. For example:

    +

    +

    +
    +> (setq a 3)
    +3
    +> (cond
    +   ((evenp a) a)        ;if a is even return a
    +   ((> a 7) (/ a 2))    ;else if a is bigger than 7 return a/2
    +   ((< a 5) (- a 1))    ;else if a is smaller than 5 return a-1
    +   (t 17))              ;else return 17
    +2
    +
    +
    +

    +

    If the action in the selected cond clause is missing, cond returns what +the condition evaluated to:

    +

    +

    +
    +> (cond ((+ 3 4)))
    +7
    +
    +
    +

    +

    Here's a clever little recursive function which uses cond. You might be +interested in trying to prove that it terminates for all integers x at +least 1. (If you succeed, please publish the result.)

    +

    +

    +
    +> (defun hotpo (x steps)        ;hotpo stands for Half Or Triple Plus One
    +    (cond
    +     ((= x 1) steps)
    +     ((oddp x) (hotpo (+ 1 (* x 3)) (+ 1 steps)))
    +     (t (hotpo (/ x 2) (+ 1 steps)))))
    +A
    +> (hotpo 7 0)
    +16
    +
    +
    +

    +

    The LISP case statement is like a C switch statement:

    +

    +

    +
    +> (setq x 'b)
    +B
    +> (case x
    +   (a 5)
    +   ((d e) 7)
    +   ((b f) 3)
    +   (otherwise 9))
    +3
    +
    +
    +

    +

    The otherwise clause at the end means that if x is not a, +b, d, e, or f, the case statement will return 9.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-20.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-20.html @@ -0,0 +1,50 @@ + + +Common LISP Hints: Funcall, Apply, and Mapcar + + +Previous +Next +Contents +
    +

    20. Funcall, Apply, and Mapcar

    + +

    Earlier I promised to give some functions which take functions as +arguments. Here they are:

    +

    +

    +
    +> (funcall #'+ 3 4)
    +7
    +> (apply #'+ 3 4 '(3 4))
    +14
    +> (mapcar #'not '(t nil t nil t nil))
    +(NIL T NIL T NIL T)
    +
    +
    +

    +

    Funcall calls its first argument on its remaining arguments.

    +

    Apply is just like funcall, except that its final argument +should be a +list; the elements of that list are treated as if they were additional +arguments to a funcall.

    +

    The first argument to mapcar must be a function of one argument; +mapcar +applies this function to each element of a list and collects the +results in another list.

    +

    Funcall and apply are chiefly useful when their first argument is a +variable. For instance, a search engine could take a heuristic function +as a parameter and use funcall or apply to call that function on a +state description. The sorting functions described later use funcall +to call their comparison functions.

    +

    Mapcar, along with nameless functions (see below), can replace many +loops.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-23.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-23.html @@ -0,0 +1,51 @@ + + +Common LISP Hints: Equality + + +Previous +Next +Contents +
    +

    23. Equality

    + +

    LISP has many different ideas of equality. Numerical equality is +denoted by =. Two symbols are eq if and only if they are +identical. Two +copies of the same list are not eq, but they are equal.

    +

    +

    +
    +> (eq 'a 'a)
    +T
    +> (eq 'a 'b)
    +NIL
    +> (= 3 4)
    +T
    +> (eq '(a b c) '(a b c))
    +NIL
    +> (equal '(a b c) '(a b c))
    +T
    +> (eql 'a 'a)
    +T
    +> (eql 3 3)
    +T
    +
    +
    +

    +

    The eql predicate is equivalent to eq for symbols and to += for numbers.

    +

    The equal predicate is equivalent to eql for symbols and +numbers. It is +true for two conses if and only if their cars are equal and their cdrs +are equal. It is true for two structures if and only if the structures +are the same type and their corresponding fields are equal.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-6.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-6.html @@ -0,0 +1,79 @@ + + +Common LISP Hints: Lists + + +Previous +Next +Contents +
    +

    6. Lists

    + +

    You can build many structures out of conses. Perhaps the simplest is a +linked list: the car of each cons points to one of the elements of the +list, and the cdr points either to another cons or to nil. You can +create such a linked list with the list fuction:

    +

    +

    +
    +> (list 4 5 6)
    +(4 5 6)
    +
    +
    +

    +

    Notice that LISP prints linked lists a special way: it omits some of +the periods and parentheses. The rule is: if the cdr of a cons is +nil, +LISP doesn't bother to print the period or the nil; and if the +cdr of +cons A is cons B, then LISP doesn't bother to print the period for cons +A or the parentheses for cons B. So:

    +

    +

    +
    +> (cons 4 nil)
    +(4)
    +> (cons 4 (cons 5 6))
    +(4 5 . 6)
    +> (cons 4 (cons 5 (cons 6 nil)))
    +(4 5 6)
    +
    +
    +

    +

    The last example is exactly equivalent to the call (list 4 5 6). Note +that nil now means the list with no elements: the cdr of (a b), a list +with 2 elements, is (b), a list with 1 element; and the cdr of (b), a +list with 1 element, is nil, which therefore must be a list with no +elements.

    +

    The car and cdr of nil are defined to be nil.

    +

    If you store your list in a variable, you can make it act like a stack:

    +

    +

    +
    +> (setq a nil)
    +NIL
    +> (push 4 a)
    +(4)
    +> (push 5 a)
    +(5 4)
    +> (pop a)
    +5
    +> a
    +(4)
    +> (pop a)
    +4
    +> (pop a)
    +NIL
    +> a
    +NIL
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-1.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-1.html @@ -0,0 +1,22 @@ + + +Common LISP Hints: Note for other lisp's. + + +Previous +Next +Contents +
    +

    1. Note for other lisp's.

    + +

    Note: This tutorial introduction to Common Lisp was written for the +CMU environment, so some of the details of running lisp toward the end +may differ from site to site.

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial.html @@ -0,0 +1,97 @@ + + + +Common LISP Hints + + +Previous +Next +Contents +
    +

    Common LISP Hints

    + +

    Geoffrey J. Gordon <ggordon@cs.cmu.edu> + Modified by Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> + and Peter Van Eynde <s950045@uia.ua.ac.be>

    Friday, February 5, 1993 +

    +

    1. Note for other lisp's.

    + +

    +

    2. Further Information

    + +

    +

    3. Symbols

    + +

    +

    4. Numbers

    + +

    +

    5. Conses

    + +

    +

    6. Lists

    + +

    +

    7. Functions

    + +

    +

    8. Printing

    + +

    +

    9. Forms and the Top-Level Loop

    + +

    +

    10. Special forms

    + +

    +

    11. Binding

    + +

    +

    12. Dynamic Scoping

    + +

    +

    13. Arrays

    + +

    +

    14. Strings

    + +

    +

    15. Structures

    + +

    +

    16. Setf

    + +

    +

    17. Booleans and Conditionals

    + +

    +

    18. Iteration

    + +

    +

    19. Non-local Exits

    + +

    +

    20. Funcall, Apply, and Mapcar

    + +

    +

    21. Lambda

    + +

    +

    22. Sorting

    + +

    +

    23. Equality

    + +

    +

    24. Some Useful List Functions

    + +

    +

    25. Getting Started with Emacs

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-19.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-19.html @@ -0,0 +1,72 @@ + + +Common LISP Hints: Non-local Exits + + +Previous +Next +Contents +
    +

    19. Non-local Exits

    + +

    The return special form mentioned in the section on iteration is an +example of a nonlocal return. Another example is the return-from form, +which returns a value from the surrounding function:

    +

    +

    +
    +> (defun foo (x)
    +    (return-from foo 3)
    +    x)
    +FOO
    +> (foo 17)
    +3
    +
    +
    +

    +

    Actually, the return-from form can return from any named block -- it's +just that functions are the only blocks which are named by default. You +can create a named block with the block special form:

    +

    +

    +
    +> (block foo
    +    (return-from foo 7)
    +    3)
    +7
    +
    +
    +

    +

    The return special form can return from any block named +nil. Loops are +by default labelled nil, but you can make your own nil-labelled blocks:

    +

    +

    +
    +> (block nil
    +    (return 7)
    +    3)
    +7
    +
    +
    +

    +

    Another form which causes a nonlocal exit is the error form:

    +

    +

    +
    +> (error "This is an error")
    +Error: This is an error
    +
    +
    +

    +

    The error form applies format to its arguments, then places you in the +debugger.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-22.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-22.html @@ -0,0 +1,42 @@ + + +Common LISP Hints: Sorting + + +Previous +Next +Contents +
    +

    22. Sorting

    + +

    LISP provides two primitives for sorting: sort and stable-sort.

    +

    +

    +
    +> (sort '(2 1 5 4 6) #'<)
    +(1 2 4 5 6)
    +> (sort '(2 1 5 4 6) #'>)
    +(6 5 4 2 1)
    +
    +
    +

    +

    The first argument to sort is a list; the second is a comparison +function. The sort function does not guarantee stability: if there are +two elements a and b such that (and (not (< a b)) (not +(< b a))), sort +may arrange them in either order. The stable-sort function is exactly +like sort, except that it guarantees that two equivalent elements +appear in the sorted list in the same order that they appeared in the +original list.

    +

    Be careful: sort is allowed to destroy its argument, so if the original +sequence is important to you, make a copy with the copy-list or +copy-seq/ function.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-14.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-14.html @@ -0,0 +1,59 @@ + + +Common LISP Hints: Strings + + +Previous +Next +Contents +
    +

    14. Strings

    + +

    A string is a sequence of characters between double quotes. LISP +represents a string as a variable-length array of characters. You can +write a string which contains a double quote by preceding the quote +with a backslash; a double backslash stands for a single backslash. For +example:

    +

    +

    +
    +"abcd" has 4 characters
    +"\"" has 1 character
    +"\\" has 1 character
    +
    +
    +

    +

    Here are some functions for dealing with strings:

    +

    +

    +
    +> (concatenate 'string "abcd" "efg")
    +"abcdefg"
    +> (char "abc" 1)
    +#\b                     ;LISP writes characters preceded by #\
    +> (aref "abc" 1)
    +#\b                     ;remember, strings are really arrays
    +
    +
    +

    +

    The concatenate function can actually work with any type of sequence:

    +

    +

    +
    +> (concatenate 'string '(#\a #\b) '(#\c))
    +"abc"
    +> (concatenate 'list "abc" "de")
    +(#\a #\b #\c #\d #\e)
    +> (concatenate 'vector '#(3 3 3) '#(3 3 3))
    +#(3 3 3 3 3 3)
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-3.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-3.html @@ -0,0 +1,104 @@ + + +Common LISP Hints: Symbols + + +Previous +Next +Contents +
    +

    3. Symbols

    + +

    A symbol is just a string of characters. There are restrictions on what +you can include in a symbol and what the first character can be, but as +long as you stick to letters, digits, and hyphens, you'll be safe. +(Except that if you use only digits and possibly an initial hyphen, +LISP will think you typed an integer rather than a symbol.) Some +examples of symbols:

    +

    +

      +
    1. a
    2. +
    3. b
    4. +
    5. c1
    6. +
    7. foo
    8. +
    9. bar
    10. +
    11. baaz-quux-garply
    12. +
    +

    +

    Some things you can do with symbols follow. (Things after a ``>'' prompt +are what you type to the LISP interpreter, while other things are what +the LISP interpreter prints back to you. The ``;'' is LISP's comment +character: everything from a ``;'' to the end of line is ignored.)

    +

    +

    +
    +> (setq a 5)            ;store a number as the value of a symbol
    +                        ;cmucl will print a warning, ignore it.
    +5
    +> a                     ;take the value of a symbol
    +5
    +> (let ((a 6)) a)       ;bind the value of a symbol temporarily to 6
    +6
    +> a                     ;the value returns to 5 once the let is finished
    +5
    +> (+ a 6)               ;use the value of a symbol as an argument to a function
    +11
    +> b                     ;try to take the value of a symbol which has no value
    +Error: Attempt to take the value of the unbound symbol B
    +                        ;or in CMUCL:
    +Error in KERNEL::UNBOUND-SYMBOL-ERROR-HANDLER:  the variable B is unbound.
    +
    +Restarts:
    +  0: [ABORT] Return to Top-Level.
    +
    +Debug  (type H for help)
    +
    +(EVAL B)
    +0]
    +                        ; return to top-level by typing "0" or
    +                        ; "restart 0"               
    +
    +
    +

    +

    There are two special symbols, t and nil. The value of t is defined +always to be t, and the value of nil is defined always to be nil. LISP +uses t and nil to represent true and false. An example of this use is +in the if statement, described more fully later:

    +

    +

    +
    +> (if t 5 6)
    +5
    +> (if nil 5 6)
    +6
    +> (if 4 5 6)
    +5
    +
    +
    +

    +

    The last example is odd but correct: nil means false, and anything else +means true. (Unless we have a reason to do otherwise, we use t to mean +true, just for the sake of clarity.)

    +

    Symbols like t and nil are called self-evaluating symbols, because +they evaluate to themselves. There is a whole class of self-evaluating +symbols called keywords; any symbol whose name starts with a colon is a +keyword. (See below for some uses for keywords.) Some examples:

    +

    +

    +
    +> :this-is-a-keyword
    +:THIS-IS-A-KEYWORD
    +> :so-is-this
    +:SO-IS-THIS
    +> :me-too
    +:ME-TOO
    +
    +
    +

    + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-10.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-10.html @@ -0,0 +1,67 @@ + + +Common LISP Hints: Special forms + + +Previous +Next +Contents +
    +

    10. Special forms

    + +

    There are a number of special forms which look like function calls but +aren't. These include control constructs such as if statements and do +loops; assignments like setq, setf, push, and pop; +definitions such as +defun and defstruct; and binding constructs such as +let. (Not all of +these special forms have been mentioned yet. See below.)

    +

    One useful special form is the quote form: quote prevents +its argument +from being evaluated. For example:

    +

    +

    +
    +> (setq a 3)
    +3
    +> a
    +3
    +> (quote a)
    +A
    +> 'a                    ;'a is an abbreviation for (quote a)
    +                        ;it's the quote next to the enter key
    +                        ;on a qwerty keyboard
    +A
    +
    +
    +

    +

    Another similar special form is the function form: function +causes its +argument to be interpreted as a function rather than being evaluated. +For example:

    +

    +

    +
    +> (setq + 3)
    +3
    +> +
    +3
    +> '+
    ++
    +> (function +)
    +#<Function + @ #x-fbef9de>
    +> #'+                   ;#'+ is an abbreviation for (function +)
    +#<Function + @ #x-fbef9de>
    +
    +
    +

    +

    The function special form is useful when you want to pass a function as +an argument to another function. See below for some examples of +functions which take functions as arguments.

    + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-2.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-2.html @@ -0,0 +1,27 @@ + + +Common LISP Hints: Further Information + + +Previous +Next +Contents +
    +

    2. Further Information

    + +

    The best LISP textbook I know of is

    +

    Guy L. Steele Jr. Common LISP: the Language , The second edition. Digital Press. 1990. Also called Cltl2.

    +

    The first edition is easier to read; the second describes a more recent +standard. (The differences between the two standards shouldn't affect +casual programmers.)

    +

    A book by Dave Touretsky has also been recommended to me, although I +haven't read it, so I can't say anything about it.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-9.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-9.html @@ -0,0 +1,67 @@ + + +Common LISP Hints: Forms and the Top-Level Loop + + +Previous +Next +Contents +
    +

    9. Forms and the Top-Level Loop

    + +

    The things which you type to the LISP interpreter are called forms; the +LISP interpreter repeatedly reads a form, evaluates it, and prints the +result. This procedure is called the read-eval-print loop.

    +

    Some forms will cause errors. After an error, LISP will put you into +the debugger so you can try to figure out what caused the error. LISP +debuggers are all different; but most will respond to the command +"help" or ":help" by giving some form of help.

    +

    In general, a form is either an atom (for example, a symbol, an +integer, or a string) or a list. If the form is an atom, LISP evaluates +it immediately. Symbols evaluate to their value; integers and strings +evaluate to themselves. If the form is a list, LISP treats its first +element as the name of a function; it evaluates the remaining elements +recursively, and then calls the function with the values of the +remaining elements as arguments.

    +

    For example, if LISP sees the form (+ 3 4), it treats + as +the name of +a function. It then evaluates 3 to get 3 and 4 to get 4; finally it +calls + with 3 and 4 as the arguments. The + function +returns 7, which +LISP prints.

    +

    The top-level loop provides some other conveniences; one particularly +convenient convenience is the ability to talk about the results of +previously typed forms. LISP always saves its most recent three +results; it stores them as the values of the symbols *, **, +and ***. +For example:

    +

    +

    +
    +> 3
    +3
    +> 4
    +4
    +> 5
    +5
    +> ***
    +3
    +> ***
    +4
    +> ***
    +5
    +> **
    +4
    +> *
    +4
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-11.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-11.html @@ -0,0 +1,153 @@ + + +Common LISP Hints: Binding + + +Previous +Next +Contents +
    +

    11. Binding

    + +

    Binding is lexically scoped assignment. It happens to the variables in +a function's parameter list whenever the function is called: the formal +parameters are bound to the actual parameters for the duration of the +function call. You can bind variables anywhere in a program with the +let special form, which looks like this:

    +

    +

    +
    +(let ((var1 val1)
    +      (var2 val2)
    +      ...
    +     )
    +    body)
    +
    +
    +

    +

    (It's considered bad style to leave a single ``)'' on a line)

    +

    Let binds var1 to val1, var2 to val2, and so +forth; then it executes +the statements in its body. The body of a let follows exactly the same +rules that a function body does. Some examples:

    +

    +

    +
    +> (let ((a 3)) (+ a 1))
    +4
    +> (let ((a 2) 
    +        (b 3)
    +        (c 0))
    +    (setq c (+ a b))
    +    c)
    +5
    +> (setq c 4)
    +4                     ;and a warning from CMUCL, ignore it    
    +> (let ((c 5)) c)
    +5
    +> c
    +4
    +
    +
    +

    +

    Instead of (let ((a nil) (b nil)) ...), you can write (let (a b) ...).

    +

    The val1, val2, etc. inside a let cannot reference the +variables var1, +var2, etc. that the let is binding. For example,

    +

    +

    +
    +> (let ((x 1)
    +        (y (+ x 1)))
    +    y)
    +Error: Attempt to take the value of the unbound symbol X
    +                      ;in CMUCL:
    +
    +In: LET ((X 1) (Y (+ X 1)))
    +  (LET ((X 1) (Y #))
    +    Y)
    +Warning: Variable X defined but never used.
    +
    +
    +Warning: This variable is undefined:
    +  X
    +
    +Error in KERNEL::UNBOUND-SYMBOL-ERROR-HANDLER:  the variable X is
    +unbound.
    +
    +Restarts:
    +  0: [ABORT] Return to Top-Level.
    +
    +Debug  (type H for help)
    +
    +(EVAL::LEAF-VALUE
    + #<C::REF #x9009B15  LEAF= #<C::GLOBAL-VAR #x9009AD5  NAME= X  KIND=
    + :GLOBAL>>
    + 0
    + #())
    +0]
    +
    +
    +

    +

    If the symbol x already has a global value, stranger happenings will +result:

    +

    +

    +
    +> (setq x 7)
    +7                     ;again a warning in CMUCL:
    +Warning:  Declaring X special.
    +                      ;x is automaticly declared special
    +> (let ((x 1)
    +        (y (+ x 1)))
    +    y
    +  )
    +8
    +
    +
    +

    +

    The let* special form is just like let except that it allows +values to +reference variables defined earlier in the let*. For example,

    +

    +

    +
    +> (setq x 7)
    +7
    +> (let* ((x 1)
    +         (y (+ x 1)))
    +    y
    +  )
    +2
    +
    +
    +

    +

    The form

    +

    +

    +
    +(let* ((x a)
    +       (y b))
    +       ...
    +) 
    +
    +
    +

    +

    is equivalent to

    +

    +

    +
    +(let ((x a))
    +     (let ((y b))
    +          ...
    +) )
    +
    +
    +

    + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-16.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-16.html @@ -0,0 +1,77 @@ + + +Common LISP Hints: Setf + + +Previous +Next +Contents +
    +

    16. Setf

    + +

    Certain forms in LISP naturally define a memory location. For example, +if the value of x is a structure of type foo, then +(foo-bar x) defines +the bar field of the value of x. Or, if the value of y +is a one-dimensional array, (aref y 2) defines the third element +of y.

    +

    The setf special form uses its first argument to define a place in +memory, evaluates its second argument, and stores the resulting value +in the resulting memory location. For example,

    +

    +

    +
    +> (setq a (make-array 3))
    +#(NIL NIL NIL)
    +> (aref a 1)
    +NIL
    +> (setf (aref a 1) 3)
    +3
    +> a
    +#(NIL 3 NIL)
    +> (aref a 1)
    +3
    +> (defstruct foo bar)
    +FOO
    +> (setq a (make-foo))
    +#s(FOO :BAR NIL)
    +> (foo-bar a)
    +NIL
    +> (setf (foo-bar a) 3)
    +3
    +> a
    +#s(FOO :BAR 3)
    +> (foo-bar a)
    +3
    +
    +
    +

    +

    Setf is the only way to set the fields of a structure or the elements +of an array.

    +

    Here are some more examples of setf and related functions.

    +

    +

    +
    +> (setf a (make-array 1))       ;setf on a variable is equivalent to setq
    +#(NIL)
    +> (push 5 (aref a 1))           ;push can act like setf
    +(5)
    +> (pop (aref a 1))              ;so can pop
    +5
    +> (setf (aref a 1) 5)
    +5
    +> (incf (aref a 1))             ;incf reads from a place, increments,
    +6                               ;and writes back
    +> (aref a 1)
    +6
    +
    +
    +

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-24.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-24.html @@ -0,0 +1,52 @@ + + +Common LISP Hints: Some Useful List Functions + + +Previous +Next +Contents +
    +

    24. Some Useful List Functions

    + +

    These functions all manipulate lists.

    +

    +

    +
    +> (append '(1 2 3) '(4 5 6))    ;concatenate lists
    +(1 2 3 4 5 6)
    +> (reverse '(1 2 3))            ;reverse the elements of a list
    +(3 2 1)
    +> (member 'a '(b d a c))        ;set membership -- returns the first tail
    +(A C)                           ;whose car is the desired element
    +> (find 'a '(b d a c))          ;another way to do set membership
    +A
    +> (find '(a b) '((a d) (a d e) (a b d e) ()) :test #'subsetp)
    +(A B D E)                       ;find is more flexible though
    +> (subsetp '(a b) '(a d e))     ;set containment
    +NIL
    +> (intersection '(a b c) '(b))  ;set intersection
    +(B)
    +> (union '(a) '(b))             ;set union
    +(A B)
    +> (set-difference '(a b) '(a))  ;set difference
    +(B)
    +
    +
    +

    +

    Subsetp, intersection, union, and set-difference +all assume that each +argument contains no duplicate elements -- (subsetp '(a a) '(a b b)) is +allowed to fail, for example.

    +

    Find, subsetp, intersection, union, and +set-difference can all take a +:test keyword argument; by default, they all use eql.

    + + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-25.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-25.html @@ -0,0 +1,51 @@ + + +Common LISP Hints: Getting Started with Emacs + + +Previous +Next +Contents +
    +

    25. Getting Started with Emacs

    + +

    You can use Emacs to edit LISP code: most Emacses are set up to enter +LISP mode automatically when they find a file which ends in .lisp, but +if yours isn't, you can type M-x lisp-mode. M-x means: meta-key +plus x. If there is a meta (or ALT) key try it. If this fails M-x can +be typed by typing ESC followed by x. If your keyboard lacks an ESC +key, curse DEC, and type control-[ followed by x.

    +

    You can run LISP under Emacs, too: make sure that there is a command in +your path called "lisp" which runs your favorite LISP. For example, you +could type

    +

    +

    +
    +ln -s /usr/local/bin/clisp ~/bin/lisp
    +
    +
    +

    +

    This isn't needed in CMUCL. Lisp is called lisp there.

    +

    Then in Emacs type M-x run-lisp. You can send LISP code to the LISP you +just started, and do all sorts of other cool things; for more +information, type C-h m from any buffer which is in LISP +mode. This means: press control and h, release both and press m.

    +

    Actually, you don't even need to make a link. Emacs has a variable +called inferior-lisp-program; so if you add the line

    +

    +

    +
    +(setq inferior-lisp-program "/usr/local/bin/clisp")
    +
    +
    +

    +

    to your .emacs file, Emacs will know where to find CLISP when +you type M-x run-lisp.

    + + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/Basic-tutorial/LISP-tutorial-4.html +++ cmucl-20a-20090928/own-work/tutorials/Basic-tutorial/LISP-tutorial-4.html @@ -0,0 +1,64 @@ + + +Common LISP Hints: Numbers + + +Previous +Next +Contents +
    +

    4. Numbers

    + +

    An integer is a string of digits optionally preceded by + or -. A real +number looks like an integer, except that it has a decimal point and +optionally can be written in scientific notation. A rational looks like +two integers with a / between them. LISP supports complex numbers, +which are written #c(r i) (where r is the real part and i is the +imaginary part). A number is any of the above. Here are some numbers:

    +

    +

      +
    1. 5
    2. +
    3. 17
    4. +
    5. -34
    6. +
    7. +6
    8. +
    9. 3.1415
    10. +
    11. 1.722e-15
    12. +
    13. #c(1.722e-15 0.75)
    14. +
    +

    +

    The standard arithmetic functions are all available: +, -, +*, /, floor, +ceiling, mod, sin, cos, tan, sqrt, +exp, expt, and so forth. All of them +accept any kind of number as an argument. +, -, *, and +/ return a +number according to type contagion: an integer plus a rational is a +rational, a rational plus a real is a real, and a real plus a complex +is a complex. Here are some examples:

    +

    +

    +
    +> (+ 3 3/4)             ;type contagion
    +15/4 
    +> (exp 1)               ;e
    +2.7182817 
    +> (exp 3)               ;e*e*e
    +20.085537 
    +> (expt 3 4.2)          ;exponent with a base other than e
    +100.90418
    +> (+ 5 6 7 (* 8 9 10))  ;the fns +-*/ all accept multiple arguments
    +
    +
    +

    +

    There is no limit to the absolute value of an integer except the memory +size of your computer. Be warned that computations with bignums (as +large integers are called) can be slow. (So can computations with +rationals, especially compared to the corresponding computations with +small integers or floats.)

    + +
    +Previous +Next +Contents + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/mirror.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/mirror.txt @@ -0,0 +1,84 @@ +Article 3998 of comp.lang.lisp: +Path: pt.cs.cmu.edu!rochester!rutgers!usc!wuarchive!decwrl!shelby!neon!news +From: iam@Gang-of-Four.Stanford.EDU (Ian Mason) +Newsgroups: comp.lang.lisp +Subject: deriving mirror +Message-ID: <1990Oct13.205439.7240@Neon.Stanford.EDU> +Date: 13 Oct 90 20:54:39 GMT +Sender: news@Neon.Stanford.EDU (USENET News System) +Organization: Computer Science Department, Stanford University +Lines: 73 + +Using the very elegant version of mirror by Noritake Yonezawa as +a specification of the desired algorithm: + +(defun mirror (x) + (if (atom x) + x + (reverse (mapcar #'mirror x)))) + +We derive an efficient implementation of the algorithm. +We first observe that since mapcar conses up a new list, +the spine of this list maybe safely reused. hence +an operationally equivalent version is + +(defun mirror (x) + (if (atom x) + x + (nreverse (mapcar #'mirror x)))) + +This new version should now only need half the cons cells +of the origonal specification. +Now one possible definition of nreverse is the following + +(defun nreverse (x) (nrev x nil)) + +(defun nrev (x y) (if x (nrev (cdr x) (rplacd x y)) y)) + +So unfolding the call to nreverse in the body of mirror results +in + +(defun mirror (x) + (if (atom x) + x + (nrev (mapcar #'mirror x) nil))) + +Now in the spirit of Scherlis we concentrate on simplifying +the expression (nrev (mapcar #'mirror x) nil). To do this we +define the function f + +(defun f (x y) (nrev (mapcar #'mirror x) y)) + +the aim now is to find a tail-recursive version of f. +Unfolding the call to mapcar and simplifying yields + + +(defun f (x y) + (if x + (nrev (cons (mirror (car x)) (mapcar #'mirror (cdr x))) y) + y)) + +Unfolding the call to nrev and simplifying yields + +(defun f (x y) + (if x + (nrev (mapcar #'mirror (cdr x)) (cons (mirror (car x)) y)) + y)) + +and now folding yields + +(defun f (x y) (if x (f (cdr x) (cons (mirror (car x)) y)) y)) + +Thus the final result is the program + +(defun mirror (x) + (labels ((f (x y) (if x (f (cdr x) (cons (mirror (car x)) y)) y))) + (if (atom x) x (f x nil)))) + + +Of course to fairly compare these programs, as well as the other solutions +presented, one should time the compiled versions rather than the +interpreted ones. + +-- + -iam- --- cmucl-20a-20090928.orig/own-work/tutorials/notes/set_part.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/set_part.txt @@ -0,0 +1,997 @@ +Article 12149 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12149 +Newsgroups: comp.lang.lisp +Path: honeydew.srv.cs.cmu.edu!fs7.ece.cmu.edu!europa.eng.gtefsd.com!howland.reston.ans.net!EU.net!Germany.EU.net!eso!st53.hq.eso.org!user +From: adorf@eso.org (Hans-Martin Adorf) +Subject: challenge: set partitions and power set +Message-ID: +Followup-To: comp.lang.lisp +Sender: news@eso.org +Organization: ST-ECF/ESO +Date: Mon, 28 Feb 1994 13:27:19 +0100 +Lines: 288 + +Dear LISPers, + +I need to compute all the partitions of a given set (i.e. all subdivisions +of a given set into non-empty sets which cover the original set). Below I +append my quick hack. It does the job; however, it is not very Lispish in +style. + +The challenge consists in implementing the partitions function more +elegantly, preferrably using recursion. As you see my code uses a function +which generates the power set of a given set, a subproblem, for which an +elegant (and efficient) solution is also seeked. + +I will summarize the solutions for partition and power-set offered to me. + +In case you are interested in the original problem that stimulated the +partitions/power-set problem above: I am engaged in calculations for a +planned astronomical hybrid interferometer within ESO's Very Large +Telescope project on Mt. Paranal, Chile. + +If we will make use of any code forwarded to me, the author will be +properly acknowledged in the planned scientific paper. + +Happy LISPing. + +Hans-Martin Adorf + +PS: Similar posting on comp.lang.lisp.mcl + +----------------- +Hans-Martin Adorf +ST-ECF/ESO +Karl-Schwarzschild-Str. 2 +D-85748 Garching b. Muenchen +Germany +Tel: +49-89-32006-261 +Fax: +49-89-32006-480 +Internet: adorf@eso.org + + +================================================================================ +;;;; +;;;; partitions.lisp +;;;; +;;;; Compute the power-set and all partitions of an arbitrary set +;;;; +;;;; Hans-Martin Adorf, ST-ECF, 26-02-94 +;;;; + +(defvar *offset* 0 "offset value for generation of sets") +(defvar *unique* nil "flag indicating whether only unique partitions should +be returned") + +;;;----------------------------------------------------------------------------- +;;; The following code is an application of partitions to the computation +of +;;; the triple correlation function of an astronomical hybrid +interferometer. +;;; The idea is to generate Mathematica code which can further be evaluated + +;;; in Mathematica. +;;;----------------------------------------------------------------------------- +(defun to-file (file-name expr) + (with-open-file (stream file-name :direction :output :if-exists +:supersede) + (princ expr stream))) +#| +(to-file #P"HMA_PB_i80:test.math" + (format-partitions (partitions '(\u \v \w \x \y \z)))) +|# + +(defun format-partitions (partitions) + "Format partitions for Lisp or Mathematica evaluation" + (plus (mapcar #'format-partition partitions))) +;; (format-partitions (partitions '(\u \v \w))) +;; (format-partitions (partitions '(\u \v \w \x \y \z))) + +(defun format-partition (partition) + (times (mapcar #'(lambda (set) (f (plus set))) partition))) +;; (format-partition '((a) (b c))) + +#| +;;; for Lisp evaluation +(defun f (set) + (list 'f set)) + +(defun plus (set) + (if (< (length set) 2) + set + (cons '+ set))) + +(defun times (set) + (if (< (length set) 2) + set + (cons '* set))) +|# + +;;; for Mathematica evaluation +(defun f (set) + (format nil "f[~a]" set)) +;; (f '(a b c)) +;; (f (plus '(a b c))) + +(defun plus (set) + (if (< (length set) 2) + (format nil "~{~a~}" set) + (format nil "Plus[~{~a~^, ~}]" set))) +;; (plus '(u v)) + +(defun times (set) + (if (< (length set) 2) + (format nil "~{~a~}" set) + (format nil "Times[~{~a~^, ~}]" set))) +;; (times '(u v w)) + +;;;----------------------------------------------------------------------------- +;;; Compute partitions +;;;----------------------------------------------------------------------------- +(defun partitions (set) + "Compute all partitions of a general n-element set" + (let ((result + (cond ((null set) nil) + ((= (length set) 1) (list (list set))) + (t (partitions-aux (base-set set))) + ))) + (values result (length result)))) +;; (partitions '()) +;; (partitions '(u)) +;; (partitions '(u v)) +;; (partitions '(u v w)) +;; (partitions '(u v w x)) +;; (partitions '(u v w x y)) +;; (partitions '(u v w x y z)) + +(defun base-set (set) + "Auxiliary function for partitions" + (let* ((head (first set)) + (tail (rest set)) + (power-set (power-set tail)) + (base-set (mapcar #'(lambda (x) (cons head x)) power-set))) + (mapcar #'(lambda (x) (list x (set-complement x set))) base-set))) +;; (base-set '(a b c)) + +(defun partitions-aux (base-set) + (mapcan #'(lambda (pair) + (new-partitions (first pair) (partitions (second pair)))) + base-set)) +;; (partitions '(a b c)) + +(defun new-partitions (head partitions) + (if (null partitions) + (list (list head)) + (mapcar #'(lambda (x) (append (list head) x)) partitions))) + +#| +;;;----------------------------------------------------------------------------- +;; dead code; works, but unused +;;;----------------------------------------------------------------------------- +(defun 2-set-partitions (n) + "Generate all partitions of an n-element set (of intergers) into 2 +subsets" + (let ((result + (mapcan #'(lambda (k) (k-partitions k n)) + (if *unique* + (integers 0 (ceiling (/ (1+ n) 2))) ; don't compute +duplicates + (integers 0 (1+ n)) + )))) + (values result (length result)))) +;; (2-set-partitions 2) +;; (setf *unique* nil) +;; (2-set-partitions 3) +;; (2-set-partitions 4) + +(defun k-partitions (k n) + "Generate all partitions of an n-element set (of integers) into 2 subsets + + with k elements and n-k elements, respectively" + (let* ((set (make-set n)) + (result + (if (zerop k) + (list (list nil set)) + (mapcar #'(lambda (subset) + (list subset + (set-complement subset set))) + (k-subsets k n))))) + ;; for a proper partion one must remove duplicates from the result + (when (and *unique* (= n (* 2 k))) + (setf result (half-seq result))) ; cut half + (values result (length result)))) +;; (k-partitions 1 2) +;; (k-partitions 2 4) +;; (k-partitions 3 5) +;; (k-partitions 0 3) +;; (k-partitions 3 3) +|# + +;;;----------------------------------------------------------------------------- +;;; Compute power set +;;;----------------------------------------------------------------------------- +(defun power-set (set) + "Generate the power-set (i.e. the set of all subsets) for an arbitrary +n-element set" + (let* ((n (length set)) + (*offset* 0) + (power-set (power-set-n n)) ; generate power-set for integers + (result (dotimes (i n power-set) + (nsubst (elt set i) i power-set)))) ; replace integers +by set-elements + (values result (length result)))) +;; (power-set '(a b c d)) + +(defun power-set-n (n) + "Generate the power-set (i.e. the set of all subsets) for an n-element +set of integers" + (let ((result (mapcan #'(lambda (k) (k-subsets k n)) + (integers 0 (1+ n))))) + (push nil result) ; the empty set is missing + (values result (length result)))) +;; (power-set-n 2) +;; (setf *offset* 0) +;; (power-set-n 3) +;; (power-set-n 4) + +(defun k-subsets (k n &optional (subsets-so-far (append-elements nil n))) + "Generate all k-element subsets for a set of n elements" + (let ((result + (if (= (length (first subsets-so-far)) k) + subsets-so-far + (k-subsets k n + (mapcan #'(lambda (subset) (append-elements subset +n)) + subsets-so-far))))) + (values result (length result)))) +;; (setf *offset* 1) +;; (k-subsets 0 3) +;; (k-subsets 1 3) +;; (k-subsets 2 3) +;; (k-subsets 3 3) +;; (k-subsets 4 7) +;; (k-subsets 2 3 '((0) (1) (2))) +;; (k-subsets 5 7 '((0 3 4) (0 3 5) (0 3 6))) + +(defun append-elements (subset n) + "Append indices up to n + *offset* (exclusively) to a given subset of +indices, + e.g. for n + *offset* = 6: (1 3) -> ((1 3 4) (1 3 5))" + (if (null subset) + (mapcar #'list (make-set n)) ; return list of parenthesized +integers + (do ((i (1+ (last-elt subset)) (1+ i)) + (nn (+ n *offset*)) + (result)) + ((= i nn) (reverse result)) + (push (append subset (list i)) result)))) +;; (append-elements nil 5) +;; (append-elements '(1 3) 6) +;; (append-elements '(1 4) 4) + +;;;----------------------------------------------------------------------------- +;;; Auxiliary functions +;;;----------------------------------------------------------------------------- +(defun half-seq (seq) + "Return the first half of a sequence, middle element inclusive" + (subseq seq 0 (ceiling (/ (length seq) 2)))) +;; (half-seq '(1 2 3 4)) +;; (half-seq '(1 2 3 4 5)) + +(defun make-set (n) + "Generate a set of integers" + (integers *offset* (+ *offset* n))) + +(defun integers (m n) + "Generate a list of integers in the range of m (inclusively) to n +(exclusively)" + (do ((i m (1+ i)) + result) + ((= i n) (reverse result)) + (push i result))) +;; (integers 3 7) + +(defun set-complement (subset set) + "MCL returns the reverse of the set-difference" + (reverse (set-difference set subset))) ; revert result for +aesthetical reasons +;; (set-complement '(a) '(a b c)) + +(defun last-elt (seq) + (first (last seq))) + + + + +Article 12152 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12152 +Newsgroups: comp.lang.lisp +Path: honeydew.srv.cs.cmu.edu!CARMEN.KBS.CS.CMU.EDU!valdes +From: valdes+@CS.CMU.EDU (Raul Valdes-Perez) +Subject: Re: challenge: set partitions and power set +Message-ID: +Sender: news@cs.cmu.edu (Usenet News System) +Nntp-Posting-Host: carmen.kbs.cs.cmu.edu +Organization: Carnegie Mellon University +References: +Date: Mon, 28 Feb 1994 15:09:02 GMT +Lines: 47 + +In article , adorf@eso.org (Hans-Martin Adorf) writes: +|> Dear LISPers, +|> +|> I need to compute all the partitions of a given set (i.e. all subdivisions +|> of a given set into non-empty sets which cover the original set). Below I +|> append my quick hack. It does the job; however, it is not very Lispish in +|> style. +|> +|> The challenge consists in implementing the partitions function more +|> elegantly, preferrably using recursion. As you see my code uses a function +|> which generates the power set of a given set, a subproblem, for which an +|> elegant (and efficient) solution is also seeked. [...] + +The two functions below do what you want. I've used power-set for a while +myself, but I wrote the function for partitioning in reply to your post, +so it could have an error not caught by my brief testing (I doubt it). +Both make use of the (non-null) LOOP macro. + +;;; finds all the partitions of the input , returning them +;;; in the obvious canonical format +;;; +(defun part (set) + (if (null set) (list nil) + (loop for partition in (part (cdr set)) + nconc + (cons `((,(car set)) ,@partition) + (loop for piece in partition + for i from 0 + collect + (nconc `(,(cons (car set) piece)) + (subseq partition 0 i) + (subseq partition (1+ i))))))))) + + +;;; allow an optional stipulation of the maximum size of a resulting +;;; set in the power-set +;;; +(defun power-set (set &optional (maxsize 10)) + (if (null set) (list nil) + (loop for entry in (power-set (cdr set) maxsize) + collect entry + when (< (length entry) maxsize) + collect (cons (car set) entry)))) + + +-- Raul Valdes-Perez (valdes@cs.cmu.edu) +-- Carnegie Mellon University + + + +Article 12159 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12159 +Path: honeydew.srv.cs.cmu.edu!das-news.harvard.edu!noc.near.net!MathWorks.Com!europa.eng.gtefsd.com!howland.reston.ans.net!torn!utnut!utcsri!newsServ.csri!qobi +Newsgroups: comp.lang.lisp +From: qobi@qobi.ai.toronto.edu (Jeffrey Mark Siskind) +Subject: Re: challenge: set partitions and power set +Message-ID: +Reply-To: Qobi@CS.Toronto.EDU +Followup-To: comp.lang.lisp +In-reply-to: adorf@eso.org's message of Mon, 28 Feb 1994 13:27:19 +0100 +Organization: Department of Computer Science, University of Toronto +References: +Date: 28 Feb 94 21:33:55 GMT +Lines: 19 + +If you use Screamer (available by anonymous FTP from +ftp.ai.mit.edu:/pub/screamer.tar.Z) you can write: + +(defun a-subset-of (x) + (if (null x) + nil + (let ((y (a-subset-of (rest x)))) (either (cons (first x) y) y)))) + +(defun power-set (x) (all-values (a-subset-of x))) + +(defun a-partition-of (x) + (if (null x) + x + (let ((y (a-partition-of (rest x)))) + (either (cons (list (first x)) y) + (let ((z (a-member-of y))) + (cons (cons (first x) z) (remove z y :test #'eq :count 1))))))) + +(defun set-of-all-partitions (x) (all-values (a-partition-of x))) + + + +Article 12172 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12172 +Newsgroups: comp.lang.lisp +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!birdie-blue.cis.pitt.edu!gatech!howland.reston.ans.net!cs.utexas.edu!convex!convex!constellation!hardy.math.okstate.edu!mmcconn +From: mmcconn@math.okstate.edu (Mark McConnell) +Subject: Re: challenge: set partitions and power set +Message-ID: +Organization: /etc/organization +References: +Date: Thu, 3 Mar 1994 17:57:38 GMT +Lines: 33 + +In article adorf@eso.org (Hans-Martin Adorf) writes: +>Dear LISPers, +> +>I need to compute all the partitions of a given set (i.e. all subdivisions +>of a given set into non-empty sets which cover the original set). +>...As you see my code uses a function +>which generates the power set of a given set, a subproblem, for which an +>elegant (and efficient) solution is also seeked. + +To find the partitions, it is not necessary to find the whole power +set. The partition problem has a very elegant recursive solution by +itself. I see that another poster has given this solution, using the +loop macro. + +The number of partitions of {1,...,n} is called Bell's number B_n. +The B_n 's have many beautiful properties: + +B_{n+1} = sum( binomial(n,i) * B_i , i=0..n ) for n>0 + +The Taylor series for exp(exp(x)-1) is the sum for n=0..infinity of +( B_n / n! ) * x^n. (Set B_0 = 1.) + +If B_{n,k} is the number of partitions of {1,...,n} into exactly k +pieces, then B_{n,k} is defined recursively by + B_{n,k} = B_{n-1,k-1} + k*B_{n-1,k}. +(Note that B_{n,1} = B_{n,n} = 1 for all n.) This is proved by the +method underlying the solution mentioned in my first paragraph. + +Also, B_n is the number of rhyming schemes in a stanza of n lines. + +For more information, see the help file on bell in Maple (the source +for much of what I've said), or a math encyclopedia. + + + +Article 12176 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12176 +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!birdie-blue.cis.pitt.edu!gatech!howland.reston.ans.net!math.ohio-state.edu!jussieu.fr!univ-lyon1.fr!swidir.switch.ch!scsing.switch.ch!news.dfn.de!news.coli.uni-sb.de!sbusol.rz.uni-sb.de!news.dfki.uni-sb.de!mod-serv!trenz +From: trenz@mod-serv.NoSubdomain.NoDomain (Thomas Trenz) +Newsgroups: comp.lang.lisp +Subject: Re: challenge: set partitions and power set +Date: 4 Mar 1994 09:18:59 GMT +Organization: DFKI - German Research Center for AI +Lines: 61 +Sender: trenz@mod-serv (Thomas Trenz) +Distribution: world +Message-ID: <2l6ue3$lmq@hitchcock.dfki.uni-sb.de> +NNTP-Posting-Host: mod-serv.dfki.uni-sb.de + +K-PARTITIONS: + +The function k-partition enumerates k-partitions of a given set and +calls for every partition a user defined function. +The enumeration stops when the user defined function returns a non-nil value. + +The user defined function gets two parameters: + +1. The partition as a list of lists (e.g. ((a b) (c) (d e f)) for a 3-partition + of the set (a b c d e f)). +2. A list of additional arguments (optional). + + + +(Defun User-Defined (Partition Optional-Args) + (Print Partition) + nil) ; return value nil to continue enumeration + + + +(Defun K-Partition-Help (K Stack Partition Function Args) + (If (And (>= (+ (Length Stack) (Length Partition)) K) + (<= (Length Partition) K)) + (If (Null Stack) + (Progn + (If (= (Length Partition) K) + (Progn + (Funcall Function Partition Args)))) + + (Let ((Element (Pop Stack)) + (Temp-Partition Partition)) + + (Or (Progn + (Push (List Element) Temp-Partition) + (K-Partition-Help K Stack Temp-Partition Function Args)) + + (Some #'(Lambda (Set) + (Setq Temp-Partition Partition) + (Setq Temp-Partition (Remove Set Temp-Partition :Test #'Equal)) + (Push (Union (List Element) Set) Temp-Partition) + (K-Partition-Help K Stack Temp-Partition Function Args)) + Partition)))))) + + +; Computes all k-partitions of a given set and +; calls for every k-partition a Function given by the parameter FUNCTION. +; The enumeration of partitions stops, when FUNCTION return a non-nil value. + +(Defun k-partition (Set K Function &Optional (ArgForFunction nil)) + (K-Partition-Help K (Rest Set) (List (List (First Set))) Function ArgForFunction)) + + + +; Demo call: + +(k-partition '(a b c d e f) 3 (function User-Defined)) + + + +Thomas Trenz +mail: trenz@dfki.uni-sb.de + + +From adorf@eso.org Fri Mar 4 13:10:14 EST 1994 +Article: 12181 of comp.lang.lisp +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12181 +Newsgroups: comp.lang.lisp +Path: honeydew.srv.cs.cmu.edu!rochester!udel!MathWorks.Com!europa.eng.gtefsd.com!howland.reston.ans.net!cs.utexas.edu!uunet!Germany.EU.net!eso!st53.hq.eso.org!user +From: adorf@eso.org (Hans-Martin Adorf) +Subject: Re: challenge: set partitions and power set +Message-ID: +Followup-To: comp.lang.lisp +Sender: news@eso.org +Organization: ST-ECF/ESO +Date: Fri, 04 Mar 1994 15:01:57 +0100 +Lines: 453 + +Dear Lispers, + +below is the promised collection of submissions to the power-set and +set-partition problem. The file contains those submissions which I received +in my personal mail account. + +Enjoy. + +Hans-Martin Adorf +ST-ECF/ESO +Karl-Schwarzschild-Str. 2 +D-85748 Garching b. Muenchen +Germany +Tel: +49-89-32006-261 +Fax: +49-89-32006-480 +Internet: adorf@eso.org + +;;;;---------------------------------------------------------------------- +;;;; set partition and power set - submissions to a request for Lisp code +;;;; +;;;; collected by +;;;; Hans-Martin Adorf +;;;; ST-ECF/ESO +;;;; Karl-Schwarzschild-Str. 2 +;;;; D-85748 Garching b. Muenchen +;;;; adorf@eso.org +;;;; +;;;; submissions ordered according to their local submission dates/times +;;;; +;;;;---------------------------------------------------------------------- + +;;;----------------------------------------------------------------------- +;;; Andrew Houghton +;;; (ah0i@andrew.cmu.edu) +;;; 28-02-94 13:07 +;;;----------------------------------------------------------------------- +;; POWER-SET +;; +;; Returns the power set of a list. +;; Arguments: +;; lst : a list +;; Result: +;; the power set of the passed list. This does not check sub-lists, so +;; lists within the top-level list will be treated as atomic elements +;; of the set. +;; +;; Method: Imagine a list, set, which +;; contains the symbols A and B. The power-set of set can be defined as +;; appending (first set) to each element of the power-set of (rest set), +;; then appending the resultant set to the power-set of (rest set). +;; So we call (power-set '(a b)).. which calls (power-set '(b)).. which +;; calls (power-set '()).. which returns (NIL). Now, b is appended to NIL +;; giving us (b), and (NIL) is appended, so it returns ((b) NIL). Now a +is +;; appended to each element, giving us ((a b) (a)), which is appended to +the +;; originally returned list, giving us ((a b) (a) (b) NIL). + +;; original +(defun ps (lst) + (cond + ((endp lst) '(nil)) + (t (append + (mapcar #'(lambda (x) (cons (first lst) x)) (ps (rest lst))) + (ps (rest lst)))))) + +;; slightly reworked syntactically +(defun power-set (lst) + (if (endp lst) + '(nil) + (let ((head (first lst)) + (ps (power-set (rest lst)))) + (append (mapcar #'(lambda (x) (cons head x)) + ps) + ps)))) +#| +(with-count (power-set '(a b c d e f))) +|# + +;;;----------------------------------------------------------------------- +;;; Espen J. Vestre, espen@coli.uni-sb.de +;;; Universitt des Saarlandes, +;;; Computerlinguistik, Gebude 17.2 +;;; Postfach 1150, tel. +49 (681) 302 4501 +;;; D-66041 SAARBRCKEN, Germany fax. +49 (681) 302 4351 +;;; 28-02-94 14:26; modification 01-03-94 16:14; power-set 02-03-94 +;;;----------------------------------------------------------------------- +;; elegant, brief implementation +(defun partitions (set) + "Compute all partitions of a general n-element set" + (if (= (length set) 1) + (list (list set)) + (let ((first-elem (first set)) + (partitions-rest (partitions (rest set)))) + (append + (mapcar #'(lambda (partition) + (cons (list first-elem) partition)) + partitions-rest) + (mapcan #'(lambda (partition) + (mapcar #'(lambda (set) + (subst (cons first-elem set) + set + partition)) + partition)) + partitions-rest))))) + +;; faster, but less elegant implementation +(defun partitions (set) + "Compute all partitions of a general n-element set" + (if (= (length set) 1) + (list (list set)) + (let ((first-elem (first set)) + (partitions-rest (partitions (rest set)))) + (append + (mapcar #'(lambda (partition) + (cons (list first-elem) partition)) + partitions-rest) + (mapcan #'(lambda (partition) + (let ((before nil) + (after (rest partition)) + (new-partitions nil)) + (mapc #'(lambda(set) + (push (cons (cons first-elem set) + (append before after)) + new-partitions) + (push set before) + (setf after (rest after))) + partition) + new-partitions)) + partitions-rest))))) +#| +(with-count (partitions '(a b c d e f))) +|# + +(defun power-set (set) + (sort (2^set (reverse set)) + #'(lambda (x y) (< (length x) (length y))))) + +(defun 2^set (set) + (let ((ps nil) + (n (length set))) + (dotimes (i (expt 2 n)) + (let ((subset nil)) + (dotimes (j n) + (when (logbitp j i) + (push (nth j set) subset))) + (push subset ps))) + ps)) +|# +(with-count (power-set '(a b c d e f))) +(with-count (power-set '(a b c d e f g h i j k l))) +(with-count (2^set '(a b c d e f))) +|# + +;;;----------------------------------------------------------------------- +;;; Dominique Bernardi +;;; Theorie des nombres, Mathematiques +;;; Universite P. et M Curie 4 place Jussieu P-75005 Paris France +;;; bernardi@mathp7.jussieu.fr +;;; 28-02-94 16:07; addition 03-03-94 15:50 +;;;----------------------------------------------------------------------- +(defun power-set (s) + (if s + (let ((a (car s)) + (b (power-set (cdr s)))) + (append (mapcar #'(lambda (x) (cons a x)) b) + b)) + '(()))) +#| +(with-count (power-set '(a b c d e f))) +|# + +(defun part (s) + (if s + (let ((a (car s)) (b (part (cdr s)))) + (append (mapcar #'(lambda (x) (cons (list a) x)) b) + (mapcan #'(lambda (x) (amplify a x)) b))) + '(()))) + +(defun amplify (x s) + (if s + (let ((a (car s)) (b (amplify x (cdr s)))) + (cons (cons (cons x a) (cdr s)) + (mapcar #'(lambda (y) (cons a y)) b))))) + +#| +(with-count (part '(a b c d e f))) +|# + +;;;----------------------------------------------------------------------- +;;; Tom Kramer +;;; kramer@cme.nist.gov +;;; 28-02-94 18:19 +;;;----------------------------------------------------------------------- +;; original +(defun powerset (liz) + (cond ((null liz) + (list nil)) + (t + (let ((bottom (powerset (cdr liz)))) + (merge 'list + (mapcar #'(lambda (subset) (cons (first liz) subset)) + bottom) + bottom + #'(lambda (set1 set2) (> (length set1) (length +set2)))))))) + +;; slightly reworked syntactically +(defun power-set (set) + (if (null set) + (list nil) + (let ((bottom (power-set (cdr set)))) + (merge 'list + (mapcar #'(lambda (subset) (cons (first set) subset)) + bottom) + bottom + #'(lambda (set1 set2) (> (length set1) (length set2))))))) +#| +(with-count (power-set '(a b c d e f))) +|# + +;;;----------------------------------------------------------------------- +;;; Geert-Jan van Opdorp +;;; Computer/Law Institute +;;; Vrije Universiteit +;;; Amsterdam, The Netherlands +;;; geertjan@cca.vu.nl +;;; 01-03-94 15:45 +;;; +;;; I think for efficiency it is safe to change the append into +;;; nconc, provided that you change the initial-value from +;;; '(()) into (list nil). +;;;----------------------------------------------------------------------- +(defun power-set (set) + (reduce #'(lambda (result new-el) + (append (mapcar #'(lambda (result-elem) + (cons new-el result-elem)) + result) + result)) + set + :initial-value '(()) )) +;; (with-count (power-set '(a b c d e f))) + +;;;----------------------------------------------------------------------- +;;; Phil Chu +;;; Internet: pchu@bbn.com +;;;----------------------------------------------------------------------- +(defun pset (new pset) + "Adjust list of partitions to take into account new element." + (if (null pset) + (list (list (list new))) + (let ((new-pset nil)) + (dolist (set pset) + (push (cons (list new) ;case 1: new element is singleton set + set) + new-pset) + (dolist (s set) ;case 2: new element is member of some +subset in a partition + (push (subst (cons new s) s set) new-pset))) + new-pset))) + +(defun make-pset (set) + "Given a list of items, return all possible partitions, i.e. a list of +list of lists." + (let ((result nil)) + (dolist (item set) + (setq result (pset item result))) + result)) + +(defun print-pset (set) + "Given a list of items, print all the possible partitions" + (dolist (item (make-pset set)) + (print item))) + +;;; e.g. (print-pset '(a b c d)) + +;;;----------------------------------------------------------------------- +;;; Pete Steggles +;;; pjs@upper.ist.co.uk +;;; 02-03-94 14:29 +;;; +;;; partition below does not compute all partitions of a set - hma +;;;----------------------------------------------------------------------- +;;; Here is an implementation of powerset and partition which uses an +;;; `abstract data type' to represent sets. Is the order in which +;;; elements are produced important? If so, there probably aren't any +;;; good recursive definitions. If not, this is the easiest recursive +;;; definition I know. + +;;; `Abstract Data Type' definition for sets + +;;; We use a binary tree representation of sets so that the union +;;; operation is complexity O(1). Note that with this specific +;;; representation there is no empty set -- in general this would +;;; be another constructor. + +;;; Number of cons cells required is 2*O(n) where n is the number +;;; of elements in the set. + +;;; Constructor functions + +(defmacro set-elem (x) `(list 'set-elem ,x)) +(defmacro set-union (x y) `(list 'set-union ,x ,y)) + +;;; Predicate on sets -- does it have more than one element? + +(defmacro set-unionp (x) `(eq (car ,x) 'set-union)) + +;;; Selector functions + +(defmacro get-lhs (x) `(cadr ,x)) +(defmacro get-rhs (x) `(caddr ,x)) +(defmacro get-set-elem (x) `(cadr ,x)) + +;;; Set counterpart of `mapcar' + +(defun mapset (f x) + (if (set-unionp x) + (set-union (mapset f (get-lhs x)) (mapset f (get-rhs x))) + (set-elem (funcall f (get-set-elem x))))) + +;;; List the elements of a set from left to right + +(defun set2list (x xs) + (if (set-unionp x) + (set2list (get-lhs x) (set2list (get-rhs x) xs)) + (cons (get-set-elem x) xs))) + +;;; Make powerset, ensuring that the null set is the leftmost element +;;; of the powerset. +;;; +;;; Asymptotic Complexity (n is number of elements in argument): +;;; Time: O(2^n) (you can't do better than this) +;;; Space: O(n*(2^n)) (hard to do better and keep nil on the lhs) +;;; +;;; If space becomes a problem, a better approach is to lazily evaluate +;;; the powerset; but that is more work in Lisp. + +(defun powerset (xs) + (if (null xs) + (set-elem nil) + (let ((ps (powerset (cdr xs)))) + (set-union ps (mapset #'(lambda (x) (cons (car xs) x)) ps))))) + +;;; Make powerset and convert it to a list -- the first element will +;;; be NIL + +(defun powerlist (xs) + (set2list (powerset xs) nil)) + +;;; Make the list of all partitions (partitions x = set2list(powerset x - +{})) + +(defun partition (xs) + (cdr (powerlist xs))) + +;;; Alternatively, throw away your lisp system and use the lazy +;;; functional language Haskell, where +;;; +;;; powerset [] = [[]] +;;; powerset (x:xs) = ps ++ map (x :) ps where ps = powerset xs +;;; +;;; partition = tail . powerset +;;; +;;; Will do exactly the same job with lazy evaluation thrown in ! +;;; You might be interested to know that you can get public-domain +;;; (ie free) implementations of Haskell. + +#| +(with-count (powerset '(a b c d e f))) +(with-count (powerlist '(a b c d e f))) +(with-count (partition '(a b c c d e f))) +|# + +;;;----------------------------------------------------------------------- +;;; Tom Kramer +;;; kramer@cme.nist.gov +;;; 03-03-94 11:19 +;;;----------------------------------------------------------------------- +; all_partitions returns all partitions of a set liz into subsets. +; It concatenates all the partitions of liz with n subsets. + +(defun all_partitions (liz) + (do* ((how_long (length liz)) + (how_many how_long (1- how_many)) + (answer (list (list liz)))) + ((eq how_many 1) answer) + (nconc answer (partition_into_n liz how_long how_many)))) + + +; partition_into_n returns all partitions of a set liz into how_many +; subsets. The length of liz must be equal to how_long. +; Let A be the first element of liz. +; Observe that all partitions of liz into how_many subsets may be +; divided into two groups: those partitions in which A appears by itself +; in a subset, and those partitions of in which A does not appear +; by itself. The function finds those two groups and concatenates them. + +; The first group is formed by finding all the partitions of the rest +; of liz into (how_many minus 1) subsets and adding (A) to each such +; partition. + +; The second group is formed by finding all the partitions of the rest +; of liz in how_many subsets and, for each partition P, creating how_many +; new partitions by sticking A into each subset of P, one at a time +; and concatenating the resulting partitions together. + +(defun partition_into_n (liz how_long how_many) + (cond ((eq how_many 1) + (list (list liz))) + ((eq how_many how_long) + (list (mapcar #'list liz))) + (t + (nconc (mapcar #'(lambda (partition) + (cons (list (first liz)) partition)) + (partition_into_n (rest liz) + (1- how_long) (1- how_many))) + (mapcan #'(lambda (partition) + (fill_each_one partition (first liz))) + (partition_into_n (rest liz) + (1- how_long) how_many)))))) + +; fill_each_one takes a partition and an item and returns a list of +; partitions. If the input partition has m sublists, a list of m partitions +; is returned. Each partition in the returned list is the same as the +; input partition, except that the item has been added to one of the +; sublists. + +; example: (fill_each_one '((B C) (D)) 'A) => (((A B C) (D)) ((B C) (A D))) + +(defun fill_each_one (partition item) + (do ((partition_list (mapcar #'(lambda (subset) (copy-tree partition)) + partition)) + (k (1- (length partition)) (1- k)) + focus) + ((minusp k) partition_list) + (setq focus (nth k (nth k partition_list))) + (rplacd focus (cons (first focus) (rest focus))) + (rplaca focus item))) +#| +(with-count (all_partitions '(a b c d e f))) +|# + +;;;----------------------------------------------------------------------- +;;; An auxiliary output function +;;;----------------------------------------------------------------------- +(defmacro with-count (expr) + `(let ((result (time ,expr))) + (values result (length result)))) + +(defmacro with-count (expr) + `(let ((result (time ,expr))) + (length result))) --- cmucl-20a-20090928.orig/own-work/tutorials/notes/permute.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/permute.txt @@ -0,0 +1,292 @@ +From kris.wbst129@xerox.com Thu May 19 13:22:54 EDT 1994 +Article: 12774 of comp.lang.lisp +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12774 +Newsgroups: comp.lang.lisp +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!newsfeed.pitt.edu!gatech!howland.reston.ans.net!usc!nic-nac.CSU.net!charnel.ecst.csuchico.edu!olivea!decwrl!parc!rocksanne!kris +From: kris%.wbst129@xerox.com (Kris A. Schneider) +Subject: Efficient way to generate permutations? +Message-ID: <1994May11.205732.19694@news.wrc.xerox.com> +Sender: news@news.wrc.xerox.com +Reply-To: kris.wbst129@xerox.com +Organization: Xerox +X-Newsreader: TIN [version 1.2 PL1] +Date: Wed, 11 May 1994 20:57:32 GMT +Lines: 33 + +Hi all, + +I'm currently using something like the following code to generate a +permutation of *N* integers (1 through *N* inclusive) in an *N*-length array: + +(defconstant *N* 100) +(defvar *PERM* (make-array *N* :initial-element 0) + "Array to hold permutation") +(defvar *CHECK* (make-array *N* :initial-element 0) + "Flags to check if a number has already been generated") + +(defun permute () + (dotimes (i *N*) + (let ((j (do ((r (1+ (random *N*)) (1+ (random *N*)))) + ((zerop (aref *CHECK* (1- r))) r)))) + (setf (aref *CHECK* (1- j)) 1) + (setf (aref *PERM* i) j)))) + +The do loop that eventually returns a value to bind to "j" keeps generating +random numbers until it finds one that hasn't been generated yet. The +appropriate "flag" is then set in the *CHECK* array and the number is added to +the permutation (the array *PERM*). The whole do loop construct strikes me as +overkill, so I'm curious if anyone has a more effecient approach? Thanks for +any suggestions. + + +Kris A. Schneider +--------------------------------------------------------------------- +Net Xerox 800 Phillips Rd. + kris.wbst129@xerox.com Kris:Wbst129:Xerox Xerox Corp. + 716.422.5013 8*222-5013 (x25013) Mail Stop: 129-39A + Webster, NY 14580 +--------------------------------------------------------------------- + + +Article 12779 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12779 +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!newsfeed.pitt.edu!gatech!swrinde!cs.utexas.edu!usc!nic-nac.CSU.net!charnel.ecst.csuchico.edu!olivea!koriel!news2me.EBay.Sun.COM!cronkite.Central.Sun.COM!sixgun.East.Sun.COM!brinkley.East.Sun.COM!dr-pepper.East.Sun.COM!eastnews!pnorvig +From: pnorvig@norvig.eastnews (Peter Norvig) +Newsgroups: comp.lang.lisp +Subject: Re: Efficient way to generate permutations? +Date: 12 May 1994 13:53:49 GMT +Organization: Sun Microsystems Laboratories Inc. +Lines: 5 +Message-ID: +References: <1994May11.205732.19694@news.wrc.xerox.com> +NNTP-Posting-Host: norvig.east.sun.com +In-reply-to: kris%.wbst129@xerox.com's message of Wed, 11 May 1994 20:57:32 GMT + + +(defun permute (vector) + (loop for i from (length vector) downto 1 do + (rotatef (aref vector (- i 1)) (aref vector (random i)))) + vector) + + +Article 12780 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12780 +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!newsfeed.pitt.edu!gatech!howland.reston.ans.net!xlink.net!sbusol.rz.uni-sb.de!sbusol.rz.uni-sb.de!usenet +From: nesmith@cs.uni-sb.de (Daniel Nesmith) +Newsgroups: comp.lang.lisp +Subject: Re: Efficient way to generate permutations? +Date: 12 May 1994 21:14:18 GMT +Organization: CS Department, University of the Saarland +Lines: 44 +Distribution: world +Message-ID: <2qu67aINNc6t@sbusol.rz.uni-sb.de> +References: <1994May11.205732.19694@news.wrc.xerox.com> +Reply-To: nesmith@cs.uni-sb.de +NNTP-Posting-Host: js-sfbslc10.cs.uni-sb.de + +I would be inclined to do something like the following. ALL-PERMUTATIONS will +compute all permutations (here represented as lists), while RANDOM-PERMUTATION +will return a single random permutation. + + +(defun all-permutations (n) + "Returns a list of all permutations of the integers 1 .. N. Each +permutation is represented as a list. N must be an integer greater than 0." + (if (= n 1) + (list (list 1)) + (let ((other-permutes + (all-permutations (1- n)))) + ;; for each permutation of 1 .. n-1, stick n in at all possible + ;; places + (mapcan + #'(lambda (seq) + (let ((res-list nil)) + (dotimes (i n res-list) + (push + (nconc (subseq seq 0 i) + (cons n + (subseq seq i))) + res-list)))) + other-permutes)))) + +(defun random-permutation (n) + "Returns a list of the integers 1 .. N in some random permutation. +N must be an integer greater than 0." + (if (= n 1) + (list 1) + (let ((other-permute + (random-permutation (1- n))) + (i (random n))) + ;; stick N in just before the I'th elt of OTHER-PERMUTE + (if (zerop i) + (cons n other-permute) + (let ((spot (nthcdr (1- i) other-permute))) + (setf (cdr spot) (cons n (cdr spot))) + other-permute))))) + +Dan + + + + + +Article 12836 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12836 +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!godot.cc.duq.edu!news.duke.edu!convex!cs.utexas.edu!swrinde!ihnp4.ucsd.edu!library.ucla.edu!galaxy.ucr.edu!valiant!wilbur +From: wilbur@valiant.ucr.edu (Wilhelm Burger) +Newsgroups: comp.lang.lisp +Subject: Re: Efficient way to generate permutations? +Date: 17 May 1994 22:01:38 GMT +Organization: University of California, Riverside (Visualization and Intelligent Systems Laboratory) +Lines: 98 +Message-ID: <2rbes2$6hn@galaxy.ucr.edu> +References: <1994May11.205732.19694@news.wrc.xerox.com> <2qu67aINNc6t@sbusol.rz.uni-sb.de> +NNTP-Posting-Host: valiant.ucr.edu + + +Hi, + Here is what I did some time back to go through *all* permutations +efficiently. Please keep me updated on other solutions. + +Good luck and best regards, +Wilhelm. + + + +;;;----------------------------------------------------------------------------- +;;; Author: Wilhelm Burger (wilbur@constitution.ucr.edu) +;;;----------------------------------------------------------------------------- + +(in-package 'user) + +(defun make-permutation-vector (n) + (let ((perm (make-array n :element-type 'fixnum + :initial-contents + (loop for i from 0 to (1- n) collect i)))) + perm)) + +(defmacro swap-elements (vector i j) + `(setf (aref ,vector ,i) + (prog1 + (aref ,vector ,j) + (setf (aref ,vector ,j) (aref ,vector ,i)))) +) + +(defun next-permutation (in-perm &optional data-vector) + (declare (type (simple-array fixnum (*)) in-perm)) + ;in-perm is an integer vector + (let* ((n (1- (length in-perm))) ;n ... max.index + (i (1- n)) (first nil)) + (declare (fixnum i n)) + (setq i + (do ((ii (1- n) (1- ii))) + ((or (< ii 0) (<= (aref in-perm ii) (aref in-perm (1+ ii)))) ii) + (declare (fixnum ii)))) + + (setq first (< i 0)) + + (do ((j (1+ i) (1+ j)) + (k n (1- k))) + ((>= j k) j) + (declare (fixnum j k)) + (swap-elements in-perm j k) + (when data-vector (swap-elements data-vector j k))) + + (unless first + (let ((j + (do ((jj (1+ i) (1+ jj))) + ((>= (aref in-perm jj) (aref in-perm i)) jj) + (declare (fixnum jj))))) + (declare (fixnum j)) + (swap-elements in-perm i j) + (when data-vector (swap-elements data-vector i j)))) + (values in-perm first)) +) + + +;;;----------------------------------------------------------------------------- + +(defmacro with-permutations ((data-vector &optional permutation-var iteration-var) + &rest body) + ;; data-vector is the vector to be permuted - it is destructively used + ;; but returned in the original order + ;; permutation-var can be used to access the current permutation vector + ;; iteration-var can be used to access the current permutation number + (let ((permv (or permutation-var (gensym "permv"))) + (iterv (or iteration-var (gensym "iterv"))) + (dvsym (gensym "dv")) + (nsym (gensym "n"))) + `(let* + ((,dvsym ,data-vector) + (,nsym (length ,dvsym)) + (,permv (make-array ,nsym :element-type 'fixnum + :initial-contents + (loop for i from 0 to (1- ,nsym) collect i)))) + (do ((_done nil) (,iterv 0 (1+ ,iterv))) (_done ,iterv) + + ,@body + (multiple-value-setq (,permv _done) + (next-permutation ,permv ,dvsym)) + ))) +) + + + +#| +(let ((pv (make-permutation-vector 4)) + (*print-array* t)) + (with-permutations (pv) + (print pv))) +|# +-- +W. Burger, College of Engineering, Univ. of California, Riverside +Email: wilbur@constitution.ucr.edu Tel: (909) 787-2299 or 6383 + + +Article 12866 of comp.lang.lisp: +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12866 +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!godot.cc.duq.edu!news.duke.edu!MathWorks.Com!news2.near.net!info-server.bbn.com!news +From: chyde@bbn.com +Newsgroups: comp.lang.lisp +Subject: RE: Efficient way to generate permutations? +Date: 20 May 1994 19:27:05 GMT +Organization: Bolt, Beranek and Newman Inc. +Lines: 31 +Message-ID: <2rj2u9$59s@info-server.bbn.com> +Reply-To: chyde@bbn.com +NNTP-Posting-Host: exploder.bbn.com +In-reply-to: <2qu67aINNc6t@sbusol.rz.uni-sb.de> + +of course, Peter N's way was interestingly elegant...here's a different +way: make a list of N integers (or an array and just use the indices) + +randomly select an element of the list and push it onto a new list, +removing it from the old list. loop until original list is empty. + +I suspect that there's something wrong with this as you get close to the +end, having to do with the randomness decreasing, but maybe not... + +(let ((n 10) + (start) + j + (result ())) + (dotimes (i N) + (push i start)) + (dotimes (i N) + (setq j (random (- N i))) + (push (elt start j) result) + (setq start (remove (elt start j) start)) + ) + (print result) + ) + +the effect you want to get is sort of the opposite of a SORT, so it +might be that an UNSORT mechanism is the right thing, which seems to +feel like Peter's example... + + -- clint + + + + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/restarts.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/restarts.txt @@ -0,0 +1,82 @@ +From crabapple.srv.cs.cmu.edu!bb3.andrew.cmu.edu!news.sei.cmu.edu!cis.ohio-state.edu!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!news.crd.ge.com!procyon!halvers Thu Mar 4 15:33:26 EST 1993 +Article: 9530 of comp.lang.lisp +Newsgroups: comp.lang.lisp +Path: crabapple.srv.cs.cmu.edu!bb3.andrew.cmu.edu!news.sei.cmu.edu!cis.ohio-state.edu!zaphod.mps.ohio-state.edu!cs.utexas.edu!uunet!news.crd.ge.com!procyon!halvers +From: halvers@procyon.crd.ge.com (Pete Halverson) +Subject: Re: Automatically continuing from errors +Message-ID: +Sender: usenet@crdnns.crd.ge.com (USENET News System) +Nntp-Posting-Host: procyon.crd.ge.com +Reply-To: halverson@crd.ge.com (Pete Halverson) +Organization: GE Corp. Research & Development, Schenectady, NY +References: <1n03ddINNb05@FRIDGE.AI.CS.YALE.EDU> +Date: Tue, 2 Mar 1993 17:52:44 GMT +Lines: 65 + +In article <1n03ddINNb05@FRIDGE.AI.CS.YALE.EDU> engelson-sean@cs.yale.edu writes: +> +>I'm having some trouble figuring out the CL condition system. My +>problem is that I'm using someone else's code which, for some reason +>unknown to me, tries to add bignums using fixnum arithmetic. I'm +>using Lucid, and the debugger gives me a continuation which will +>return the proper (bignum) result anyway. What I'd like to do is put +>in a condition handler which will do that for me. The problem is +>getting control back to the caller. + +The appropriate way to have a "continuation" (more properly called a +"restart", since a continuation is really something different in Lisp) +automatically invoked by a condition handler, as if the user had explicitly +called it from the debugger, is by using INVOKE-RESTART inside a +HANDLER-BIND clause, e.g. + + (defun robust-adder (x y) + (handler-bind ((simple-error + #'(lambda (err) + (declare (ignore err)) + (when (find-restart 'use-bignum) + (invoke-restart 'use-bignum))))) + (fragile-adder x y))) + +Note that this depends on the restart having a name and you knowing what +that name is (here, I used USE-BIGNUM as an example). To find the name of +the restart you want, the easiest way is to run the problematic code until +you drop into the debugger, get the list of all possible restarts using +COMPUTE-RESTARTS, and look for the restart you need using RESTART-NAME: + + > (fragile-adder most-positive-fixnum most-positive-fixnum) + >>Error: The result 1073741822 is not a fixnum. + + FRAGILE-ADDER: + Required arg 0 (X): 536870911 + Required arg 1 (Y): 536870911 + 0: Return the bignum anyway. + :A 1: Abort to Lisp Top Level + + -> (mapcar #'restart-name (compute-restarts)) + (ABORT USE-BIGNUM ABORT) + +If the restart in question is anonymous (RESTART-NAME returns NIL), things +are a bit uglier. Instead of using FIND-RESTART, your handler will need to +search the restart list by hand, usually looking inside the restart objects +using system internals for some documentation string or such. + + (defun robust-adder (x y) + (handler-bind ((simple-error + #'(lambda (err) + (let ((restart + (find-if + #'(lambda (restart) + ) + (compute-restarts err)))) + (when restart + (invoke-restart restart)))))) + (fragile-adder x y))) + +Hope this is useful. + +Pete Halverson INET: halverson@crd.ge.com +GE Corporate R&D Center UUCP: uunet!crd.ge.com!halverson +Schenectady, NY + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/read_seq.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/read_seq.txt @@ -0,0 +1,42 @@ +From siponen@amadeus.cs.hut.fi Thu May 19 13:29:19 EDT 1994 +Article: 12818 of comp.lang.lisp +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12818 +Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!godot.cc.duq.edu!news.duke.edu!convex!cs.utexas.edu!howland.reston.ans.net!EU.net!sunic!news.funet.fi!sauna.cs.hut.fi!freenet.hut.fi!freenet.hut.fi!siponen +From: siponen@amadeus.cs.hut.fi (Lauri Siponen) +Newsgroups: comp.lang.lisp +Subject: Re: copy-file +Date: 16 May 1994 11:35:07 GMT +Organization: Freenet finland +Lines: 24 +Message-ID: +References: <2r12bo$bim@underdog.jpl.nasa.gov> + +NNTP-Posting-Host: amadeus.cs.hut.fi +In-reply-to: ch+@cs.cmu.edu's message of Mon, 16 May 1994 02:15:58 GMT + +dpANS introduces some new operations on streams. READ-SEQUENCE and +WRITE-SEQUENCE allow efficient I/O on files. This version of +copy-file copies multiple megabyte files easily. I ran it +on Allegro CL 4.2, SunOS 4.1.3. + +(defun copy-file (source target) + ;; Just an example! + (with-open-file (in source + :direction :input) + (with-open-file (out target + :direction :output + :if-exists :supersede) + (loop + with buffer = (make-string (* 64 512)) + for n = (read-sequence buffer in) + until (= n 0) + do (write-sequence buffer out :end n))))) + +READ-SEQUENCE and WRITE-SEQUENCE are not yet supported on every +Lisp implementation, but if they will be included in Lisp standard, +their availability should increase. + +-- +Lauri Siponen, Helsinki University of Technology + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/precednc.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/precednc.txt @@ -0,0 +1,178 @@ +From crabapple.srv.cs.cmu.edu!fs7.ece.cmu.edu!europa.eng.gtefsd.com!howland.reston.ans.net!usc!elroy.jpl.nasa.gov!decwrl!waikato.ac.nz!canterbury.ac.nz!news!otago.ac.nz!roy Mon May 24 15:53:22 EDT 1993 +Article: 1862 of comp.lang.clos +Path: crabapple.srv.cs.cmu.edu!fs7.ece.cmu.edu!europa.eng.gtefsd.com!howland.reston.ans.net!usc!elroy.jpl.nasa.gov!decwrl!waikato.ac.nz!canterbury.ac.nz!news!otago.ac.nz!roy +Newsgroups: comp.lang.clos +Subject: Approximating class precedence list walk +Message-ID: <1993May24.110927.1@otago.ac.nz> +From: roy@otago.ac.nz +Date: Sun, 23 May 1993 22:09:27 GMT +Sender: usenet@news.otago.ac.nz (News stuff) +Organization: University of Otago, Dunedin, New Zealand +Nntp-Posting-Host: thorin.otago.ac.nz +Lines: 114 + +#| + +Approximating the Class Precedence Algorithm + +Winston & Horn, "Lisp, Third Edition", (1989), give some simple rules for +approximating the complicated (and computationally expensive) algorithm +(Winston & Horn, Appendix, p509), for determining the CLOS class +precedence list (CLtL2, 28.1.5). The simple rules are: + 1. depth first, + 2. left to right, + 3. up-to-join. +An implementation of these rules is not given in Winstorn & Horn, +however a complete algorithm for computation of the CLOS class precedence +list is provided in the appendix as referenced above. + +I have developed the following algorithm as a (better) approximation +to the CLOS class precedence list computation for my particular +purposes (which include frequent partial traversals of the class +precedence list). I have yet to prove whether or not it is equivalent +to traversal of actual the CLOS list but so far have not found a counter +example. The algorithm is based on the progressive expansion of multiple +walks through direct superclasses towards the standard-object. At each step +along the walk the next step is computed from the current step by +reference to the remainder of the walk. This may result in zero or more +new steps being added to the front of the remainder of the walk. +Specifically new steps (superclasses) are added to the walk only if the +newly exposed head (superclass) is not a subtype of any such new steps +(superclasses). This condition captures the ordering imposed upon +the class precedence list as defined in CLOS. + +I have included two functions which use this algorithm, one that gives +the list of class precedence names: + + (class-precedence-names object) + +should be equivalent to: + + (mapcar #'class-name (clos:class-precedence-list (class-of object))) + +and a second intended to achieve the same result as a version of the least +common superclass problem given below: +|# + + +(defun walk-function (step-func walk next-step-func &aux this value) + ;; traverse WALK until STEP-FUNC applied to first item in walk returns any + ;; non-nil value or walk is null + (loop + (if (or (null walk) + (setf this (first walk) + walk (funcall next-step-func walk) + value (funcall step-func this))) + (return))) + (values value walk this)) + +(defun extend-clos-walk (walk) + ;; WALK is a list of class objects, extend WALK by replacing head + ;; with the class objects of any of its direct superclasses which + ;; are not superclasses of next class in WALK (if such an element + ;; exists). + (let* ((this-class (pop walk)) + (that-class (first walk))) + (nconc + (mapcan + #'(lambda(new-class) + (if (or (null walk) + (not (subtypep that-class new-class))) + (list new-class))) + (clos:class-direct-superclasses this-class)) + walk))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun class-precedence-names (object &aux names) + ;; Return a list of the names of the superclasses of object + (walk-function + #'(lambda(x) + (push (class-name x) names) + 'nil) ; exhaust walk + (list (class-of object)) ; begin walk with class of object + #'extend-clos-walk) + + (nreverse names))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Given a set of objects, what is the most specialized superclass of them all? + +(defun class-list (object) + ;; Return the list of classes of which OBJECT is an instance + (clos:class-precedence-list (class-of object))) + +(defun common-superclasses (objects) + ;; Return the list of classes of which all of OBJECTS are instances + (reduce #'intersection objects :key #'class-list)) + +(defun least-common-superclass1 (objects) + ;; Return the most specific class of which all of OBJECTS are instances + (first (sort (common-superclasses objects) #'subtypep))) + +(defun least-common-superclass (objects) + (let ((classes (mapcar #'class-of objects))) + (walk-function + #'(lambda(x)(if (every #'(lambda(y)(subtypep y x)) classes) x)) + (list (pop classes)) + #'extend-clos-walk))) + + +#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +Roy Anderson +Aritificial Intelligence Group +Department of Computer Science +University of Otago +New Zealand +||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||# + + +From crabapple.srv.cs.cmu.edu!fs7.ece.cmu.edu!europa.eng.gtefsd.com!gatech!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!aiai.edinburgh.ac.uk!jeff Mon May 24 15:53:40 EDT 1993 +Article: 1864 of comp.lang.clos +Path: crabapple.srv.cs.cmu.edu!fs7.ece.cmu.edu!europa.eng.gtefsd.com!gatech!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!aiai.edinburgh.ac.uk!jeff +From: jeff@aiai.edinburgh.ac.uk (Jeff Dalton) +Newsgroups: comp.lang.clos +Subject: Re: Approximating class precedence list walk +Message-ID: <3116.9305241205@subnode.aiai.ed.ac.uk> +Date: 24 May 93 12:05:45 GMT +Organization: The Ohio State University Department of Computer and Information Science +Lines: 36 + +> Winston & Horn, "Lisp, Third Edition", (1989), give some simple rules for +> approximating the complicated (and computationally expensive) algorithm +> (Winston & Horn, Appendix, p509), for determining the CLOS class +> precedence list (CLtL2, 28.1.5). The simple rules are: +> 1. depth first, +> 2. left to right, +> 3. up-to-join. +> An implementation of these rules is not given in Winstorn & Horn, +> however a complete algorithm for computation of the CLOS class precedence +> list is provided in the appendix as referenced above. + +There's another way of explaining the algorithm is that often +more useful. Precedence lists must satisfy the following +constraints: + + 1. Classes precedes their superclasses. + 2. Superclasses have the order given in class definitions. + +It's easy to write an algorithm that uses these rules to create a +precedence list. Unfortunately, several different algorithms might be +written, and the two rules above aren't sufficient to define a unique +total order. Consequently, a third, rather complex, rule was added; +and this rule was defined in terms of a particular CPL algorithm. +The rule can be added as a "tie breaker" to a standard topological +sort, but it's difficult to figure out an equivalent rule for a +different algorithm. Fortunately, programmers can pretty much +ignore the third rule. + +The two rules above have the immense advantage of being easy to +understand. You don't have to understand a complex algorithm, +just two simple rules. So the recommended attitude is to rely +on the two rules and treat the third only as a way to ensure +that all implementations produce the same result. + +-- jd + + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/database.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/database.txt @@ -0,0 +1,573 @@ +Return-Path: <@cs.cmu.edu:rodney%hsvaic.boeing.com@mcc.com> +Received: from cs.cmu.edu by A.GP.CS.CMU.EDU id aa13832; 28 Jun 91 17:04:34 EDT +Received: from mcc.com by CS.CMU.EDU id aa22630; 28 Jun 91 17:02:41 EDT +Received: from atc.boeing.com by MCC.COM with TCP; Fri 28 Jun 91 14:58:59-CDT +Received: by atc.boeing.com on Fri, 28 Jun 91 12:59:15 PDT +Received: by hsvaic.boeing.com (4.1/SMI-4.1-hsvaic-s.2) + id AA14751; Fri, 28 Jun 91 14:56:59 CDT +Date: Fri, 28 Jun 91 14:56:59 CDT +From: rodney@hsvaic.boeing.com (Rodney Daughtrey) +Message-Id: <9106281956.AA14751@hsvaic.boeing.com> +To: Common-Lisp@mcc.com +Subject: Summary: LISP and Databases + + +Following is a summary of responses to an information request +I posted to this list about two weeks ago concerning interfacing +LISP applications to databases. There seemed to be enough interest to +warrant posting this (rather large) summary. + +The first message is the original request that I posted. +Thanks again to all who responded. + + +Rodney Daughtrey E-mail: rodney@hsvaic.boeing.com +Huntsville AI Center {major site}!uw-beaver!bcsaic!hsvaic!rodney +Boeing Computer Services Voice: (205)-464-4931 Fax: (205)-464-4930 + + +********** + +> Date: Mon, 10 Jun 91 11:03:14 CDT +> From: rodney@hsvaic (Rodney Daughtrey) +> Message-Id: <9106101603.AA13057@hsvaic.boeing.com> +> To: Common-Lisp@mcc.com +> Subject: LISP and Databases +> Status: RO +> +> I would very much like to hear from anyone with experience in +> interfacing a LISP application with an off-the-shelf database +> (specifically ORACLE on a mainframe, but other experiences are +> welcomed), in which the LISP application can read/write data from/to +> the database, especially over a network. What were the seminal +> issues/problems that needed to be solved? Specifically: +> +> 1) How was the communication managed between the LISP application and +> the database? +> +> 2) Real world recommendations, success stories and/or horror stories +> are of special interest. +> +> You may reply privately via e-mail unless you consider it appropriate +> for the list, and if there is interest, I will summarize. +> +> Thanks to all who reply. +> +> +> Rodney Daughtrey E-mail: rodney@hsvaic.boeing.com +> Huntsville AI Center {major site}!uw-beaver!bcsaic!hsvaic!rodney +> Boeing Computer Services Voice: (205)-464-4931 Fax: (205)-464-4930 +> + +***** + +> Date: Mon, 10 Jun 91 10:50:32 PDT +> From: jaf@inference.com (Jose A. Fernandez) +> Message-Id: <9106101750.AA00360@utah.inference> +> Organization: Inference Corporation +> Address: 550 N. Continental Blvd., El Segundo, CA 90245 +> Phone: (213) 322-0200 x205 +> To: rodney@hsvaic +> In-Reply-To: Rodney Daughtrey's message of Mon, 10 Jun 91 11:03:14 CDT <9106101603.AA13057@hsvaic.boeing.com> +> Subject: LISP and Databases +> Status: RO +> +> Hello Rodney, +> +> We implemented an Oracle interface for our ART product using Sun Common Lisp. +> We used SCL's foreign function interface to call from Lisp into Oracle's Pro*C +> function library. This strategy let us leverage off Pro*C's automagical +> networking capability (such has running the Lisp application on a Sun-4 that +> talked to an Oracle SQL server installed on a Sun-3). +> +> The most difficult part of the exercise was controlling signal handling +> behavior. SCL (really Lucid's Common Lisp implementation for the Sun) uses an +> internal stack architecture (separate and apart from SunOS's default stack +> architecture as seen in a.out) that one must be careful not to corrupt. The +> corruption problem we had was that Oracle's Pro*C code was installing SIGCONT +> and SIGIO signal handlers that were conflicting with Lisp's memory model, +> resulting in the occasional and egregious "Bus trap" error. +> +> I hope this helps a little bit. Good luck. +> + +***** + +> Date: Mon, 10 Jun 91 16:49:57 PDT +> From: yonkman@hawk.css.gov (Tom Yonkman) +> Message-Id: <9106102349.AA02880@hawk.css.gov> +> To: rodney@hsvaic +> In-Reply-To: Rodney Daughtrey's message of Mon, 10 Jun 91 11:03:14 CDT <9106101603.AA13057@hsvaic.boeing.com> +> Subject: LISP and Databases +> Status: RO +> +> Harlequin Limited of Cambridge England has a Common Lisp which provides +> several levels of access to SQL Databases (Oracle and Informix). They can +> be contacted at: +> +> LispWorks Request +> Harlequin Limited +> Barington Hall +> Barrington +> Cambridge CB25RG +> England +> +> Tel: +44-223-872522 +> FAX: +44-223-872519 +> +> email: lispworks-request@harlqn.co.uk or +> mcvax!ukc!lispworks-request +> + +***** + +> Date: Tue, 11 Jun 91 13:44-0000 +> From: Peter Paine +> Subject: LISP and Databases +> To: rodney@hsvaic, Common-Lisp@mcc.com +> In-Reply-To: <9106101603.AA13057@hsvaic.boeing.com> +> Message-Id: <19910611134453.0.P2@porter.asl.dialnet.symbolics.com> +> Status: RO +> +> Date: Mon, 10 Jun 91 11:03:14 CDT +> From: rodney@hsvaic.boeing.com (Rodney Daughtrey) +> +> I would very much like to hear from anyone with experience in +> interfacing a LISP application with an off-the-shelf database +> (specifically ORACLE on a mainframe, ... +> +> I have seen a Lisp ORACLE interface advertised commercially. +> +> Perhaps you would get some pointers by approaching ORACLE themselves. +> + +***** + +> Date: Tue, 11 Jun 91 10:02:42 PDT +> From: Siavash Hashemi (See Ya) +> Subject: LISP and Databases +> To: rodney@hsvaic +> Status: RO +> +> Dear Rodney: +> +> We at IntelliCorp have several off-the-shelf products that can enable you +> connect to a large number of databases. The product names are KEELINK and +> KEECONNECTION with add on modules for different databases. +> +> As the names point out, you will have to use KEE with that for the off-the- +> shelf state of the product. With KEELINK we do supply the source code and +> you can strip off parts of the code that you don't need. +> +> If you are interested, I can send you literature or can arrange for a demo +> for you. I know that Boing is one of our big KEE customers and I can +> arrange for favorable terms for you. +> +> My no. is 415-965-5808, if you want to contact me for more info. +> +> Take care and good luck. +> Sia Hashemi +> KEE product manager. +> ------- +> + +***** + +> Date: Wed, 12 Jun 91 06:34:14 PDT +> From: jmg@inference.com (Jeff Greif) +> Message-Id: <9106121334.AA15271@quaestor.Inference.COM> +> Sender: jmg@inference.com +> Organization: Inference Corporation +> Address: 550 N. Continental Blvd., El Segundo, CA 90245 +> Phone: (213) 322-0200 +> To: rodney@hsvaic +> Cc: jaf@inference.com +> In-Reply-To: Rodney Daughtrey's message of Mon, 10 Jun 91 11:03:14 CDT <9106101603.AA13057@hsvaic.boeing.com> +> Subject: LISP and Databases +> Status: RO +> +> Inference has written a generic (pre-CLOS) CL -> SQL interface with one +> complete instantiation for ORACLE and Lucid Lisp 3.0 and 4.0. This has been +> used in one large application with essentially complete success. Various +> generic and application-specific facilities have been provided on top for +> automatically generating and executing queries to collect restricted sets of +> data from the database, display menus of valid options for user input to +> fields of forms, for browsing the database, etc. Currently there are no plans +> to support these interfaces in our Lisp-based products, although there is a +> possibility some or all of them may be issued as unsupported software as part +> of a future product release. Likely the extent to which this happens will +> depend upon the interest of our customers. There are no plans currently to +> make the software available any other way. +> +> The ORACLE instantiation (the bottom layer) of the CL -> SQL interface uses +> ORACLE's OCI interface functions through Lucid Lisp's foreign-function +> interface to implement what is expected to be a common set of operations. +> These OCI functions handle all the network communications with the ORACLE +> server on the network. The foreign-function definitions are the only +> Lucid-specific parts of the code. +> +> So far it has only been used on Suns (with database accessible via TCP) but +> is fully portable to other platforms where Lucid Lisp and the ORACLE OCI are +> present. It is intended to be able to support other relational databases that +> accept dynamic SQL, e.g. Ingres, Sybase, but no implementation work has been +> done on these. +> +> The problems: +> +> 1) Storage management. The temporal extent of the data structures created in +> Lisp and passed to the database is variable. Many of these must be allocated +> in static storage to prevent them from being moved by the garbage collector +> while ORACLE holds their address. There are vastly different extents of the +> various structures required which implies facilities are needed for handling +> different varieties differently. For example, you can tell ORACLE where the +> buffers are that will get the fields of a retrieved record on each record +> fetch (so GC can't be called while ORACLE needs to know.) Or you can allocate +> them in static space and save this not inconsiderable overhead on the +> fetching. Owing to this and a general proclivity to avoid garbage +> (particularly garbage in static space!), the CL -> SQL interface is +> garbage-free using a simple memory-management layer. +> +> 2) Interrupt handling. The OCI sets up handlers for certain UNIX signals when +> you first connect to it. Each time one of the OCI routines is called from +> Lisp, Lisp's interrupt handlers must be swapped with the ORACLE handlers, and +> swapped back on return. The set of signals whose handlers must be swapped +> depend upon whether the server is on the local machine and what communications +> protocol (TCP, pipes, ...) is used. There is bug-prone stuff here -- suppose +> you take an interrupt or the Lisp scheduler switches tasks while the ORACLE +> C handlers are in place! +> +> 3) ORACLE OCI documentation. This is incredibly poor -- incomplete and +> riddled with errors, particularly with regard to which arguments must be +> passed as arrays when the "array-processing" features of the OCI are used. +> +> 4) Small bugs in ORACLE OCI. There were several, including some that required +> code be written to translate between Lisp floats and ORACLE internal numeric +> formats, when that shouldn't have been necessary. +> +> 5) The generic CL -> SQL interface hands all SQL statements to the DBMS to +> parse and process, and knows no SQL itself. In order to know what types will +> be returned by ORACLE in the various buffers holding the values in the columns +> of the retrieved records, it must make OCI calls. However, ORACLE can only +> distinguish two types of data returned: numeric or character, and cannot +> distinguish between floats or integers at parse time (even by consulting the +> data dictionary -- consider the query +> +> "SELECT (CONSTANT.VALUE * CIRCLE.DIAMETER) FROM CIRCLE,CONSTANT +> WHERE CONSTANT.NAME ='PI'" +> +> where DIAMETER contains integers). This eventually required that numeric data +> be returned in ORACLE internal format, to be analyzed and converted to floats +> or integers as appropriate. +> + +***** + +> Date: Fri, 14 Jun 91 16:34:37 -0500 +> From: ford@m2.csc.ti.com (Steve Ford) +> Message-Id: <9106142134.AA25011@m2.csc.ti.com> +> To: rodney@hsvaic +> Subject: Re: LISP and Databases +> In-Reply-To: <1991Jun10.174702.25025@csc.ti.com> +> Organization: TI Computer Science Center, Dallas +> Cc: ford@csc.ti.com +> Status: RO +> +> In article <1991Jun10.174702.25025@csc.ti.com> you write: +> >I would very much like to hear from anyone with experience in +> >interfacing a LISP application with an off-the-shelf database +> >(specifically ORACLE on a mainframe, but other experiences are +> >welcomed), in which the LISP application can read/write data from/to +> >the database, especially over a network. What were the seminal +> >issues/problems that needed to be solved? Specifically: +> > +> >1) How was the communication managed between the LISP application and +> > the database? +> > +> >2) Real world recommendations, success stories and/or horror stories +> > are of special interest. +> +> For the past three years, I've been doing persistence-related stuff (OODB), +> mostly in Lisp, somewhat in C, and C++, in support of a large +> Lisp-based VLSI CAD system with very high performance requirements. +> Most of the work was on Lisp Machines, but lately I've been on a +> SparcStation, mostly using Harlequin Lispworks, C and C++, RFP/XDR, +> Oracle, and Informix. Some random observations: +> +> 1) LispWorks provides two things you might be interested in. +> +> a) a Lisp interface to SQL databases. I've used it to interface to +> Informix. Since it basically interprets all SQL queries, its not +> the fastest method we've used. +> +> b) a CLOS interface to the above, basically mapping a class to a relation, +> an instance to a tuple, a slot to an attribute, and providing a +> LISPy Object-oriented interface to data in Informix or Oracle. +> Not a real smooth integration, and not too fast, but useful. +> +> We tried each of these out, but didn't end up using either, mostly for +> performance reasons. If performance hadn't been a problem, I'd have +> probably worked a little on the interface to make it more seamless with +> Common Lisp. +> +> We didn't try using this stuff across the network, but they claimed it +> worked. Basically, LispWorks loads Informix's C interface into your Lisp +> image using the foreign function interface (all Lisps have these). If +> you are using a networked RDB, then the RDB takes care of the network +> communications, else you can just talk to a local RDB. In other words, +> LispWorks is not doing any network communications itself. +> +> 2) After that, we built a Persistent Object Server in C/C++ which used Oracle +> as a back-end, to get all the database amenities (backup, recovery, +> atomicity) for free, and built our own communications facility in C, using +> RPC/XDR, and building a Lisp interface to it using the Foreign Function +> Interface. We also built the same thing with the Unix file system as the +> backend. Our biggest problems these days are all performance related. +> +> a) Mapping complex OO data to a RDB results in a large storage overhead +> that we hadn't experienced with earlier work on Lisp Machines, where we +> had built a custom POS. For instance, a complex cyclic object graph that +> required about 150K of memory required about 50 times that much space +> be available in Oracle at commit time. Some of that overhead was +> the result of representing objects in a RDB, the management of +> interobject references, the lack of support for repeating segments in +> RDBs (you need to repeat the key all over the place); some was overhead +> that Oracle tacked on, and other was the result of Oracle's rollback +> mechanism (everything you do during a transaction is written into the +> database AND written into the rollback segment, so, in the case of abort, +> the operations recorded in the rollback segment can be undone, so you +> need more than twice the disk space available at commit time than you +> eventually need; a shadow pages mechamism would have been much more +> efficient). Since our transactions our very long, and very large +> (100MB - 1GB), the space requirement is unacceptable, and we are +> looking at other options, like making our file-based system more robust, +> or trying out some other backends. +> +> b) Speed is the other problem. Since Unix Lisps are not complete (they rely +> of rather clumsy (not seamless - I can't use aref on a C string) +> interfaces to Unix/C to provide much of their services (network +> interfaces), we've found it difficult to implement our system in +> nice clean modular portable code, isolating the implementation-dependent +> C-interface stuff, without introducing too much copying. Stuff gets +> copied from memory into a lisp string, which is then copied into a C +> string, which then gets copied across the network by RPC, where it +> gets copied into another C string, and then Oracle eventually gets it +> and does who knows what, but it, at least, copies across process +> boundaries. This is all so much worse than Lisp Machines, where +> everything is in the same address space, and I just copied from memory +> into a disk buffer, which was then written to disk. +> +> Overall, I'm rather disappointed that the shortcut I thought I was taking +> was a deadend. However, not too many people I know have my kind of +> performance requirements. LispWorks stuff might work for you, or you might +> check with Andreas Paepke at HP Labs, who has implemented persistence for +> CLOS and interfaced that to a number of databases. +> +> Have fun, +> +> Steve Ford +> Computer Science Center +> Texas Instruments +> Net: ford@csc.ti.com +> Tel: (214) 917-7432 +> + +***** + +> From: Cris Kobryn +> Date: Mon, 17 Jun 91 14:58:28 BST +> Message-Id: <2992.9106171358@watson.harlqn.co.uk> +> To: rodney@hsvaic +> Cc: Common-Lisp@mcc.com +> In-Reply-To: Rodney Daughtrey's message of Mon, 10 Jun 91 11:03:14 CDT <9106101603.AA13057@hsvaic.boeing.com> +> Subject: LISP and Databases +> Status: RO +> +> +> +> I would very much like to hear from anyone with experience in +> interfacing a LISP application with an off-the-shelf database +> (specifically ORACLE on a mainframe, but other experiences are +> welcomed), in which the LISP application can read/write data from/to +> the database, especially over a network. +> . . . +> +> You may be interested to know that Harlequin Limited has two +> Lisp-based software packages which address the problems you +> describe: +> +> o LispWorks SQL interface +> -- provides functional Lisp and a CLOS SQL interfaces +> to RDBMS's for data retrieval and update. Remote +> networked RDBMS's are supported. +> o DataWorks +> -- provides a GUI toolkit for the LispWorks SQL interface. +> Data may be displayed using icons, images and graphic +> layouts. +> +> The LispWorks SQL interface is part of Harlequin's LispWorks, a +> comprehensive Common Lisp programming environment for UNIX +> platforms. The LispWorks SQL interface and DataWorks currently +> support the following RDBMS products: Oracle, Ingres, and Informix. +> Interfaces to Sybase and Unify are planned. +> +> If you require further technical information re these products, or +> would like to communicate with end users, you should contact +> Helen Goddard in our marketing department: +> +> Helen Goddard Email: helen@uk.co.harlqn +> Symbolic Processing Marketing Phone: +44 223 872522 +> Harlequin Limited Fax: +44 223 872519 +> Barrington Hall +> Barrington +> Cambridge CB2 5RG +> +> I hope this helps. +> +> -- Cris Kobryn +> + +***** + +> Date: 14 Jun 91 16:36 -0700 +> To: steve@hsvaic +> In-Reply-To: <320@hsvaic.boeing.com> +> Message-Id: <9106142336.AA14696@acrab.cs.sfu.ca> +> Subject: Re: LISP and Databases +> Status: RO +> +> +> Below is the top level function that interfaces between our NLI "SystemX" +> and a Pro*C executable "SOI" that accepts dynamic SQL (See appendix E +> in Version 1.1 Pro*C manual). +> +> +> ;;; -*- Mode:LISP; Readtable:CL -*- +> +> ;;;; This file contains the LISP functions which communicate with SystemX-Oracle-Interface +> ;;;; (SOI) SQL Executor. The function CONSULT is called at the highest level, starts up +> ;;;; SOI, solicits (SQL) input for SOI via SystemX, and prints the results. +> +> ;;;; CONSULT +> ;;;; / \ sql +> ;;;; LISP sql / +---------------------- +> ;;;; / | \ +> ;;;; SYSX | SOI +> ;;;; english / | \ UNIX/C +> ;;;; ++++++++++++++++++++++ \ sql +> ;;;; / + \ +> ;;;; REALITY USER + ORACLE +> +> (defvar *sx-ora-interface* ") +> +> +> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CONSULT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +> +> ;;; INPUT: nil +> ;;; OUTPUT: irrelevent +> +> (defun consult (&aux err-exit?) +> "Interactively query the Oracle database in English." +> (multiple-value-bind (stream err-stream arg3 pid) +> (run-program *sx-ora-interface* +> :input :stream +> :output :stream +> :error-output :stream +> :wait nil) +> (declare (ignore arg3 pid)) +> (sysx-condition consult +> (with-open-stream (unix stream) +> (when (login-oracle unix) +> (unwind-protect +> (do ((sql nil) +> (more? t)) ; do until +> ((or (null more?) ; no more queries, or +> err-exit?)) ; SOI killed due to Oracle error +> (if (oracle-err err-stream) +> (setq err-exit? (seek-continuation unix)) +> (multiple-value-setq (more? sql) (query-oracle unix))) +> (when more? (display-results unix more?))) +> (if (not err-exit?) ; ie. if SOI still running +> (send-input unix "/exit;"))))) +> (quit (format t "~%Exiting SystemX"))))) +> +> +> -- +> Gary Hall | Voice (604) 291-3208 | INTERNET: hall@cs.sfu.ca +> Centre for Systems Science | Fax (604) 291-4951 | BITNET: hall%cs.sfu.ca@ +> Simon Fraser University | | relay.cdnnet.ca +> Burnaby, B.C. V5A 1S6 | +> +> + +***** + +> Date: Mon, 17 Jun 91 10:39:37 -0500 +> From: dcmartin@cs.wisc.edu (David C. Martin) +> Message-Id: <9106171539.AA24685@wilma.cs.wisc.edu> +> Received: by wilma.cs.wisc.edu; Mon, 17 Jun 91 10:39:37 -0500 +> To: steve@hsvaic +> Subject: Re: LISP and Databases +> Newsgroups: comp.databases +> In-Reply-To: <320@hsvaic.boeing.com> +> Organization: University of Wisconsin - Madison +> Cc: +> Status: RO +> +> You probably want to talk to either John Irwin @ Franz Inc (jdi@franz.com) +> or Larry Rowe (rowe@postgres.berkeley.edu) about CLING (Common LISP Interface +> to Ingres). +> +> dcm +> -- +> ----- +> David C. Martin arpa: dcmartin@cs.wisc.edu +> University of Wisconsin - Madison uucp: uunet!ucbarpa!dcmartin +> Computer Sciences Department at&t: 608/262-6624 (O) +> +> + +***** + +> Date: Fri, 14 Jun 91 13:56:10 CDT +> From: us267384@serc.3m.com (Steven M. Anastasi) +> Message-Id: <9106141856.AA14921@mmm.serc.3m.com> +> To: steve@hsvaic +> Subject: Re: LISP and Databases +> Status: RO +> +> > I would very much like to hear from anyone with experience in +> > interfacing a LISP application with an off-the-shelf database +> > (specifically ORACLE on a mainframe, but other experiences are +> > welcomed), in which the LISP application can read/write data from/to +> > the database, especially over a network. What were the seminal +> > issues/problems that needed to be solved? Specifically: +> > +> If you're seroius about lisp applications and persistiency, look into +> Itasca Systems. They have a good, truely distributed database system +> that sits on top of the lisp engine. The data representation scheme +> they use is CLOS-like. +> + +***** + +> Date: Thu, 20 Jun 91 22:29:21 +0200 +> From: thomas%INFORMATIK.MATHEMATIK.UNI-MAINZ.DE@CUNYVM.CUNY.EDU (Thomas Schueler) +> Subject: Re: LISP and ORACLE +> To: steve@HSVAIC +> Message-Id: <9106202029.AA03946@Informatik.Mathematik.Uni-Mainz.DE> +> X-Envelope-To: steve@HSVAIC.BOEING.COM +> Status: RO +> +> May be you can specify what LISP and what OS you are using. In general I +> would say that whenever you are able to call C ,or an other language wich +> is able to use the OCI, from LISP there should be no problem. +> (If you want to hear horror stories ask me about PROLOG and ORACLE ). +> +> regards, +> thomas +> + + + + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/lispm.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/lispm.txt @@ -0,0 +1,165 @@ +From bosullvn@maths.tcd.ie Thu Feb 3 17:42:41 EST 1994 +Article: 11918 of comp.lang.lisp +Xref: glinda.oz.cs.cmu.edu comp.arch:47612 comp.lang.lisp:11918 +Path: honeydew.srv.cs.cmu.edu!fs7.ece.cmu.edu!europa.eng.gtefsd.com!howland.reston.ans.net!EU.net!ieunet!tcdcs!maths.tcd.ie!not-for-mail +From: bosullvn@maths.tcd.ie (Bryan O'Sullivan) +Newsgroups: comp.arch,comp.lang.lisp +Subject: Summary of responses: Lisp Machine architecture and other h/w support +Date: 3 Feb 1994 15:09:45 -0000 +Organization: SCRG, Computer Science Department, Trinity College, Dublin +Lines: 150 +Message-ID: <2ir43p$3cv@walton.maths.tcd.ie> +NNTP-Posting-Host: walton.maths.tcd.ie + +About a fortnight ago, I posted a request for information on the +architecture of the Lisp Machine, and any other hardware support for +Lisp that people might be aware of. This posting consists of a +summary of the responses I received. I'd like to thank the following +people for responding: + + Martin Cracauer + Jeff Francis + Carl L. Gay + Guy Harris + Simon Leinen + John McClain + Ralf Moeller + thi + +I found the article by Greenblatt et al. in "Interactive Programming +Environments" (see the bibliography below) to be quite a good overview +of the original MIT Lisp Machine. Some other entries below also give +details of the Symbolics and Texas Instruments Lisp Machine efforts, +but I have not been able to find copies to read. + +As far as support for Lisp in modern hardware architectures goes, +there is precious little to be found, since modern unspecialised RISC +machines are "fast enough", depending on your point of view. More or +less alone among mainstream processors, the SPARC provides two +potentially useful features: + +- Tagged arithmetic add and subtract instructions. These instructions + are called: + TADDcc (tagged add and modify icc) + TSUBcc (tagged subtract and modify icc) + TADDccTV (tagged add and modify icc and trap on overflow) + TSUBccTV (tagged subtract and modify icc and trap on overflow) + These are used for adding and subtracting 30-bit fixnums, and check + the operand types. The trapping variants cause a TAG_OVERFLOW trap + to occur on overflow. These instructions are produced by (at least) + the Carnegie Mellon and Lucid implementations of Common Lisp; CMU CL + most often uses these instructions purely to do type checking. + +- Register windows. These are conceptually a Good Thing for a + call-intensive dynamically-linked language. However, since managing + the register window pointer is privileged and register window + overflows are handled in software (via a kernel trap) in versions of + the SPARC architecture prior to V9, and are expensive as a result, + they seem to be something of a loss. However, SPARC V9 speeds + register window overflow handling up considerably (by about an order + of magnitude, I think). + +Note that in a comparison between SPARC and MIPS implementations of +CMU CL, the SPARC's win in providing tagged arithmetic instructions +was more or less negated by MIPS' provision of a branch-on-equal +instruction. + +Here is a brief BiBTeX bibliography, put together from the responses I +received. + +@article{white:86, + author = "John L. White and S. Kaplan", + title = "Implementing Lisp on Standard Hardware", + journal = "Sun Technology", + number = 5, + pages = "63--69" +} + +@incollection{Greenblatt:84, + AUTHOR = {R. D. Greenblatt and T. F. Knight and J. Holloway and D. + A. Moon and D. L. Weinreb}, + TITLE = {The LISP Machine}, + YEAR = 1984, + BOOKTITLE = {Interactive Programming Environments}, + EDITOR = {D. R. Barstow and H. E. Shrobe and E. Sandewall}, + PUBLISHER = {McGraw-Hill}, + ADDRESS = {New York}, + PAGES = {326-352}, + KEYWORDS = {}} + +@Article{Steenkiste:87, + author = "P. Steenkiste and J. Hennessy", + title = "Tags and Type Checking in {LISP}: Hardware and + Software Approaches", + journal = "ACM SIGARCH, Journal Computer Architecture News", + volume = "15", + number = "5", + pages = "50--59", + keywords = "LISP", + month = oct, + year = "1987", +} + +@article{moon:symbolics-architecture, + AUTHOR = {David A. Moon}, + TITLE = {Symbolics Architecture}, + YEAR = {1987}, + JOURNAL = {IEEE Computer}, + PAGES = {43--52}} + +@TechReport{Zippel84?, + author = "R. Zippel", + title = "{LISP} Machines: Texas Instruments and Symbolics", + institution = MITAI, + address = MITad, + type = "Report", + keywords = "LISP", + year = "1984?", +} + +@TechReport{TI84, + author = "Texas Instruments", + title = "Explorer Technical Summary", + institution = "Texas Instruments TI", + address = "Austin, Texas", + type = "Report", + keywords = "LISP", + year = "1984", +} + +@inproceedings{ + author = {Patrick H. Dussud}, + title = {{TICLOS}: An Implementation of {CLOS} for the {Explorer} +Family}, + organization = "OOPSLA-89", + year = "1989", + pages = {215--219}} + +@BOOK{kn:kogge, + AUTHOR = "Kogge, Peter M.", + TITLE = "The Architecture of Symbolic Computers", + PUBLISHER = {McGraw-Hill}, + YEAR = 1991, + SERIES = "McGraw-Hill Series in Supercomputing and Parallel + Processing", + ADDRESS = {New York}, + ISBN = "0-07-035596-7", + LOCCALL = "QA76.9.A73.K64 1991", + MITCALL = "QA76.9.A73.K64 1991", + KEYWORDS = "Computer Architecture, + Electronic digital computers -- Design and construction" } + +@MANUAL{kn:3600tsum, + TITLE = "3600 Technical Summary", + AUTHOR = "Roads, Curtis B.", + ORGANIZATION = "Symbolics, Inc.", + ADDRESS = "Cambridge, MA", + MONTH = "February", + YEAR = 1983} +-- +Bryan O'Sullivan email: bos@scrg.cs.tcd.ie +Student Computing Research Group Life is uncertain. +Department of Computer Science Eat dessert first. +Trinity College, Dublin 2, Ireland -- Jim Blandy + + --- cmucl-20a-20090928.orig/own-work/tutorials/notes/lisp_bnf.txt +++ cmucl-20a-20090928/own-work/tutorials/notes/lisp_bnf.txt @@ -0,0 +1,63 @@ +From barmar@think.com Thu Feb 24 15:51:42 EST 1994 +Article: 12113 of comp.lang.lisp +Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:12113 +Path: honeydew.srv.cs.cmu.edu!das-news.harvard.edu!spdcc!think.com!barmar +From: barmar@think.com (Barry Margolin) +Newsgroups: comp.lang.lisp +Subject: Re: Lisp BNF available? +Date: 24 Feb 1994 18:17:09 GMT +Organization: Thinking Machines Corporation, Cambridge MA, USA +Lines: 47 +Message-ID: <2kiqv6INNboq@early-bird.think.com> +References: +NNTP-Posting-Host: telecaster.think.com + +In article hovig@cs.uiuc.edu writes: +> I would like a BNF grammar for Lisp. It need not be complete; it +>is only for the cursory lexical analysis, but then again it mustn't +>be overly simple, either, like those sometimes in educational sources. + +Here's a grammar for a Lisp subset that we used in a project here; this is +yacc source with the actions omitted. + +start : + | s_exp + ; + +s_exp : atom + | list + | ERROR error + ; + +atom : NUMBER + | SYMBOL + | STRING + ; + +list : '(' ')' + | '(' s_exp_list ')' + | '(' s_exp_list '.' s_exp ')' + | '\'' s_exp + | SHARP_QUOTE s_exp + ; + +s_exp_list : s_exp + | s_exp_list s_exp + ; + +Here are some comments by the author: + +Hope it helps. With yacc, the difficulty typically isn't in coming up +with the grammar, it's in coming up with the actions that accompany it; +and the appropriate actions are very problem dependent. + +For many languages the lexer is very simple; for lisp it's a bit more +compilicated. For my parser much of the "magic" was in the lexer; the +actions were very simple. +-- +Barry Margolin +System Manager, Thinking Machines Corp. + +barmar@think.com {uunet,harvard}!think!barmar + + --- cmucl-20a-20090928.orig/own-work/tutorials/other-clos/Common-Blunders.ps +++ cmucl-20a-20090928/own-work/tutorials/other-clos/Common-Blunders.ps @@ -0,0 +1,2545 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%Creator: Frame 4.0 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 4.0, for use with Frame 4.0 products +% This ps_prolog file is Copyright (c) 1986-1993 Frame Technology +% Corporation. All rights reserved. This ps_prolog file may be +% freely copied and distributed in conjunction with documents created +% using FrameMaker, FrameBuilder and FrameViewer as long as this +% copyright notice is preserved. +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to True, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (4.0) def +/FMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + FMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + dup = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto + show FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Frame product version does not match ps_prolog!) FMFAILURE + } if + } def +/FMBADEPSF { + (PostScript Lang. Ref. Man., 2nd Ed., H.2.4 says EPS must not call X ) + dup dup (X) search pop exch pop exch pop length + 4 -1 roll + putinterval + FMFAILURE + } def +/FMLOCAL { + FrameDict begin + 0 def + end + } def +/concatprocs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/FrameNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 ] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + setrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +FMLevel1 not { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} if +/combineColor { + FrameSepIs FMnone eq + { + graymode FMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + FrameCurGray RealSetgray + } { + FMPColor graymode and { + 0 1 3 { + FrameCurColors exch get + 1 FrameCurGray sub mul + } for + RealSetcmykcolor + } { + 4 1 6 { + FrameCurColors exch get + graymode { + 1 exch sub 1 FrameCurGray sub mul 1 exch sub + } { + 1.0 lt {FrameCurGray} {1} ifelse + } ifelse + } for + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { FrameCurGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode FMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not FMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/dmatrix matrix def +/dpi 72 0 dmatrix defaultmatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + FMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + /gstring FMLOCAL + /gfile FMLOCAL + /gindex FMLOCAL + /orgrxfer FMLOCAL + /orggxfer FMLOCAL + /orgbxfer FMLOCAL + /orgxfer FMLOCAL + /orgproc FMLOCAL + /orgrproc FMLOCAL + /orggproc FMLOCAL + /orgbproc FMLOCAL + /organgle FMLOCAL + /orgrangle FMLOCAL + /orggangle FMLOCAL + /orgbangle FMLOCAL + /orgfreq FMLOCAL + /orgrfreq FMLOCAL + /orggfreq FMLOCAL + /orgbfreq FMLOCAL + /yscale FMLOCAL + /xscale FMLOCAL + /edown FMLOCAL + /manualfeed FMLOCAL + /paperheight FMLOCAL + /paperwidth FMLOCAL +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /FrameNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + FMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + { (Can't select requested paper size for Frame print job!) FMFAILURE } if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {{1 dict dup /PageSize [paperwidth paperheight]put setpagedevice}stopped + { (Can't select requested paper size for Frame print job!) FMFAILURE } if + {1 dict dup /ManualFeed manualfeed put setpagedevice } stopped pop } + ifelse + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + FrameNegative { + 1 1 4 { + pop { 1 exch sub } concatprocs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + FrameNegative { + { 1 exch sub } concatprocs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/pagesave FMLOCAL +/orgmatrix FMLOCAL +/landscape FMLOCAL +/pwid FMLOCAL +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 0.0 0.0 moveto + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def + /fx FMLOCAL + /fy FMLOCAL + /fh FMLOCAL + /fw FMLOCAL + /llx FMLOCAL + /lly FMLOCAL + /urx FMLOCAL + /ury FMLOCAL +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def +% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. +% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) + /banddevice {(banddevice) FMBADEPSF} def + /clear {(clear) FMBADEPSF} def + /cleardictstack {(cleardictstack) FMBADEPSF} def + /copypage {(copypage) FMBADEPSF} def + /erasepage {(erasepage) FMBADEPSF} def + /exitserver {(exitserver) FMBADEPSF} def + /framedevice {(framedevice) FMBADEPSF} def + /grestoreall {(grestoreall) FMBADEPSF} def + /initclip {(initclip) FMBADEPSF} def + /initgraphics {(initgraphics) FMBADEPSF} def + /initmatrix {(initmatrix) FMBADEPSF} def + /quit {(quit) FMBADEPSF} def + /renderbands {(renderbands) FMBADEPSF} def + /setglobal {(setglobal) FMBADEPSF} def + /setpagedevice {(setpagedevice) FMBADEPSF} def + /setshared {(setshared) FMBADEPSF} def + /startjob {(startjob) FMBADEPSF} def + /lettertray {(lettertray) FMBADEPSF} def + /letter {(letter) FMBADEPSF} def + /lettersmall {(lettersmall) FMBADEPSF} def + /11x17tray {(11x17tray) FMBADEPSF} def + /11x17 {(11x17) FMBADEPSF} def + /ledgertray {(ledgertray) FMBADEPSF} def + /ledger {(ledger) FMBADEPSF} def + /legaltray {(legaltray) FMBADEPSF} def + /legal {(legal) FMBADEPSF} def + /statementtray {(statementtray) FMBADEPSF} def + /statement {(statement) FMBADEPSF} def + /executivetray {(executivetray) FMBADEPSF} def + /executive {(executive) FMBADEPSF} def + /a3tray {(a3tray) FMBADEPSF} def + /a3 {(a3) FMBADEPSF} def + /a4tray {(a4tray) FMBADEPSF} def + /a4 {(a4) FMBADEPSF} def + /a4small {(a4small) FMBADEPSF} def + /b4tray {(b4tray) FMBADEPSF} def + /b4 {(b4) FMBADEPSF} def + /b5tray {(b5tray) FMBADEPSF} def + /b5 {(b5) FMBADEPSF} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def + /papersizedict FMLOCAL +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped + end + } {true} ifelse + } bind def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def + /bwidth FMLOCAL + /bpside FMLOCAL + /bstring FMLOCAL + /onbits FMLOCAL + /offbits FMLOCAL + /xindex FMLOCAL + /yindex FMLOCAL + /x FMLOCAL + /y FMLOCAL +/setPatternMode { + FMLevel1 { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/y exch def + /x exch def + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne FrameNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add div FrameNegative {1.0 exch sub} if + /FrameCurGray exch def + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + FMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode FMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode FMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def + /fillvals FMLOCAL +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def + /n FMLOCAL +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def + /x1 FMLOCAL + /x2 FMLOCAL + /y1 FMLOCAL + /y2 FMLOCAL +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def + /rad FMLOCAL +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def + /FMpointsize FMLOCAL +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def + /x FMLOCAL + /y FMLOCAL + /w FMLOCAL + /h FMLOCAL + /xx FMLOCAL + /yy FMLOCAL + /ww FMLOCAL + /hh FMLOCAL + /FMsaveobject FMLOCAL + /FMoptop FMLOCAL + /FMdicttop FMLOCAL +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def + /str FMLOCAL +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def + /sl FMLOCAL + /val FMLOCAL + /ws FMLOCAL + /im FMLOCAL + /bs FMLOCAL + /cs FMLOCAL + /len FMLOCAL + /pos FMLOCAL +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def + /h FMLOCAL + /w FMLOCAL + /d FMLOCAL + /lb FMLOCAL + /bitmapsave FMLOCAL + /is FMLOCAL + /cf FMLOCAL +/wbytes { + dup dup + 24 eq { pop pop 3 mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /r exch def + /d exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + r + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /r exch def + /d exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + r + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def + /gryt FMLOCAL + /blut FMLOCAL + /grnt FMLOCAL + /redt FMLOCAL + /indx FMLOCAL + /cynu FMLOCAL + /magu FMLOCAL + /yelu FMLOCAL + /k FMLOCAL + /u FMLOCAL +FMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /k cynu magu min yelu min def + /u k currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 k currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse + /tran FMLOCAL +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch concatprocs settransfer +} bind def +/BITMAPCOLOR { + /d 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + FMLevel1 { + colorsetup + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is w d wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width w def + /Height h def + /ImageMatrix [w 0 0 h neg 0 h] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent d def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /d 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + FMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width w def + /Height h def + /ImageMatrix [w 0 0 h neg 0 h] def + /DataSource {ip} bind def + /BitsPerComponent d def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /d 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 w getinterval def + /gis im w w getinterval def + /bis im w 2 mul w getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {w rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /d 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 w getinterval def + /gis im w w getinterval def + /bis im w 2 mul w getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {w rip pop ris gis bis w gray} image + bitmapsave restore + grestore + } bind def +/ww FMLOCAL +/r FMLOCAL +/g FMLOCAL +/b FMLOCAL +/i FMLOCAL +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop w gray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDsave FMLOCAL + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(4.0) FMVERSION +1 1 0 0 612 792 0 1 8 FMDOCUMENT +0 0 /Times-Roman FMFONTDEFINE +1 1 /ZapfDingbats FMFONTDEFINE +2 0 /Helvetica-Narrow-Bold FMFONTDEFINE +3 0 /Courier-Bold FMFONTDEFINE +4 0 /Times-Italic FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 FMFILL +11 FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 FMFILL +25 FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "11" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +J +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Common Blunders) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/9/94 Marty Hall) 481.97 19.18 T +36 45 576 747 R +7 X +V +22.85 82 589.15 733 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27.35 229 288.35 724 R +7 X +0 0 0 1 0 0 0 K +V +27.35 719.79 288.35 724 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27.35 721.99 567.35 721.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +27.35 720.47 567.35 720.47 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +-0.19 (n) 27.35 710.45 P +2 14 Q +-0.22 (Confusion about doc strings in DEFMETHOD.) 37.74 710.45 P +0 12 Q +(People often do) 27.35 697.79 T +3 10 Q +(\050defmethod Area \050\050Rect Rectangle\051\051) 27.35 685.12 T +("WIDTH times HEIGHT of the rectangle") 39.35 675.12 T +(\050* \050Width Rect\051 \050Height Rect\051\051\051) 39.35 665.12 T +0 12 Q +0.81 (without clearly thinking about what that might mean.) 27.35 643.79 P +0.06 (Some people think it will make a doc string on the) 27.35 631.79 P +4 F +0.06 (ge-) 273.03 631.79 P +7.18 (neric) 27.35 619.79 P +0 F +7.18 ( function that) 52.01 619.79 P +3 11 Q +15.8 (\050documentation 'Area) 140.55 619.79 P +0.87 ('function\051) 27.35 607.79 P +0 12 Q +0.39 ( or the equivalent emacs keystrokes will) 93.35 607.79 P +0.12 (retrieve. Others vaguely expect it to make a doc string) 27.35 595.79 P +-0.49 (on each separate method, and that the emacs doc-string) 27.35 583.79 P +2.81 (retrieving keystroke \050which just calls) 27.35 571.79 P +3 11 Q +6.17 (documenta-) 222.35 571.79 P +2.61 (tion) 27.35 559.79 P +0 12 Q +1.18 (\051 will somehow automagically be able to \336gure) 53.75 559.79 P +-0.43 (out which method it applies to. In fact, Lisp will accept) 27.35 547.79 P +1.92 (this, but put the documentation on the method *ob-) 27.35 535.79 P +0.84 (ject*, which beginners probably know nothing about.) 27.35 523.79 P +1.32 (Use the) 27.35 511.79 P +3 11 Q +2.91 (:documentation) 69.32 511.79 P +0 12 Q +1.32 ( entry in) 161.72 511.79 P +3 11 Q +2.91 (defgeneric) 208.69 511.79 P +0 12 Q +1.32 ( to) 274.69 511.79 P +(put a doc string on the generic function.) 27.35 499.79 T +27.35 489.57 288.35 493.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27.35 491.78 567.35 491.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +27.35 490.25 567.35 490.25 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 27.35 480.24 T +2 14 Q +(Invalid :initargs are accepted by) 37.74 480.24 T +(MAKE-INST) 38.15 466.24 T +(ANCE.) 101.08 466.24 T +0 12 Q +0.11 (On SP) 27.35 453.57 P +0.11 (ARC machines, both Lucid Common Lisp 4.1.1) 57.36 453.57 P +0.51 (\050both the production and development compilers\051 and) 27.35 441.57 P +2.67 (Harlequin LispW) 27.35 429.57 P +2.67 (orks 3.1.0 accept unknown) 112.71 429.57 P +3 11 Q +5.87 (:ini-) 255.35 429.57 P +-0.36 (targ) 27.35 417.57 P +0 12 Q +-0.17 ('s without complaint, even at the highest) 53.75 417.57 P +3 11 Q +-0.36 (safety) 248.75 417.57 P +0 12 Q +(settings.) 27.35 405.57 T +3 10 Q +(\050defclass Foo \050\051) 27.35 382.9 T +-0.5 ( \050\050Slot-1 :accessor Slot-1 :initarg :Slot-1) 27.35 372.9 P +(:initform 5\051\051\051) 27.35 362.9 T +(; typo: SLOT1 instead of SLOT-1) 27.35 342.9 T +(\050setq Test \050make-instance 'Foo :Slot1 10\051\051) 27.35 332.9 T +([No error message]) 27.35 322.9 T +(\050Slot-1 Test\051 ==> 5) 27.35 302.9 T +0 12 Q +1.12 (This is a bug in the implementation; all implementa-) 27.35 277.57 P +(tions are supposed to \337ag this as an error) 27.35 265.57 T +(.) 222.66 265.57 T +306.35 87.59 580.85 724 R +7 X +V +306.35 719.79 580.85 724 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +306.35 721.99 846.35 721.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +306.35 720.47 846.35 720.47 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +3.41 (n) 306.35 710.45 P +2 14 Q +3.92 (Forgetting the class has to exist before any) 316.74 710.45 P +(method that specializes upon it.) 317.15 696.45 T +0 12 Q +0.62 (Lisp programmers are used to being able to de\336ne func-) 306.35 683.79 P +0.34 (tions in any order) 306.35 671.79 P +0.34 (, where even if) 391.23 671.79 P +3 11 Q +0.76 (Foo) 466.9 671.79 P +0 12 Q +0.34 ( calls) 486.7 671.79 P +3 11 Q +0.76 (Bar) 515.39 671.79 P +0 12 Q +0.34 (,) 534.71 671.79 P +3 11 Q +0.76 (Foo) 541.05 671.79 P +0 12 Q +0.34 ( can) 560.85 671.79 P +(be de\336ned \336rst. But) 306.35 659.79 T +3 10 Q +(\050defmethod Area \050\050Rect Rectangle\051\051 ...\051) 306.35 633.12 T +(\050defclass Rectangle \050Polygon\051 ...\051) 306.35 623.12 T +0 12 Q +(is illegal. Y) 306.35 597.79 T +(ou have to de\336ne the class \336rst.) 360.82 597.79 T +306.35 587.57 580.85 591.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +306.35 589.78 846.35 589.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +306.35 588.25 846.35 588.25 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +1.18 (n) 306.35 578.24 P +2 14 Q +1.36 (Changing a method to apply to a more general) 316.74 578.24 P +(class does not supersede previous method.) 317.15 564.24 T +0 12 Q +(E.g. a user writes) 306.35 551.57 T +3 10 Q +-0.5 (\050defmethod Half-Area \050\050Rect Filled-Rectangle\051\051) 306.35 528.9 P +( \050/ \050Area Rect\051 2\051\051) 306.35 518.9 T +0 12 Q +0.17 (Then they notice that this functionality could apply to all) 306.35 497.57 P +-0.64 (Rectangles, not just Filled-Rectangles. So they change the) 306.35 485.57 P +-0.34 (class, with their intuition being that they are) 306.35 473.57 P +4 F +-0.34 (r) 517.97 473.57 P +-0.34 (eplacing) 522.2 473.57 P +0 F +-0.34 ( the) 563.53 473.57 P +0.87 (old de\336nition, when in fact they are) 306.35 461.57 P +4 F +0.87 (adding) 486.38 461.57 P +0 F +0.87 ( a new) 519.72 461.57 P +0.87 (, less-) 551.99 461.57 P +1.05 (speci\336c method. They then later add a call to) 306.35 449.57 P +3 11 Q +2.32 (float) 534.46 449.57 P +0 12 Q +1.05 ( to) 567.46 449.57 P +(avoid getting a ratio back.) 306.35 437.57 T +3 10 Q +(\050defmethod Half-Area \050\050Rect Rectangle\051\051) 306.35 410.9 T +(\050float \050/ \050Area Rect\051 2\051\051\051) 318.35 400.9 T +0 12 Q +0.39 (Then they are puzzled as to why their new de\336nition ap-) 306.35 375.57 P +0.19 (pears not to have taken ef) 306.35 363.57 P +0.19 (fect, since they are testing it on) 430.06 363.57 P +0.9 (an instance of Filled-Rectangle, which still gets the old,) 306.35 351.57 P +(more-speci\336c de\336nition.) 306.35 339.57 T +296.33 724 296.33 85 2 L +0.5 H +2 Z +N +0 -208 1000 792 C +FMENDPAGE +%%EndPage: "11" 1 +%%Page: "10" 2 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Common Blunders) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/9/94 Marty Hall) 481.97 19.18 T +45 45 576 747 R +7 X +V +398.52 728.46 222.48 728.46 2 L +0 X +V +1.75 H +0 Z +N +2 24 Q +(Common Blunders) 222.48 731 T +32.2 72 588.8 723 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 129 297.7 714 R +7 X +0 0 0 1 0 0 0 K +V +36.7 709.79 297.7 714 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 711.99 576.7 711.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 710.47 576.7 710.47 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 36.7 700.45 T +2 14 Q +(Omitting parens in arglist in DEFMETHOD.) 47.09 700.45 T +0 12 Q +(W) 36.7 687.79 T +(riting) 47.55 687.79 T +3 10 Q +(\050defmethod Area \050Sq Square\051 ...\051) 36.7 675.12 T +0 12 Q +(instead of) 36.7 663.79 T +3 10 Q +(\050defmethod Area \050\050Sq Square\051\051 ...\051) 36.7 651.12 T +0 12 Q +1.43 (Lisp will accept the former) 36.7 629.79 P +1.43 (, and think that you have) 171.91 629.79 P +0.58 (two unspecialized ar) 36.7 617.79 P +0.58 (guments instead of one ar) 136.29 617.79 P +0.58 (gument) 261.7 617.79 P +(specialized as a) 36.7 605.79 T +3 11 Q +(Square) 114.34 605.79 T +0 12 Q +(.) 153.94 605.79 T +36.7 595.57 297.7 599.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 597.78 576.7 597.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 596.25 576.7 596.25 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +1.93 (n) 36.7 586.24 P +2 14 Q +2.22 (Missing parens around slot de\336nition list in) 47.09 586.24 P +(DEFCLASS.) 47.5 572.24 T +0 12 Q +(W) 36.7 559.57 T +(riting) 47.55 559.57 T +3 10 Q +(\050defclass Rectangle \050Polygon\051) 36.7 546.9 T +(\050Width ...\051) 48.7 536.9 T +(\050Height ...\051\051) 48.7 526.9 T +0 12 Q +(instead of) 36.7 515.57 T +3 10 Q +(\050defclass Rectangle \050Polygon\051) 36.7 502.9 T +(\050\050Width ...\051) 48.7 492.9 T +(\050Height ...\051\051\051) 54.7 482.9 T +0 12 Q +0.47 (Lisp will not accept the former) 36.7 457.57 P +0.47 (, but the error message) 186.86 457.57 P +(is not necessarily clear) 36.7 445.57 T +(.) 145.01 445.57 T +36.7 435.36 297.7 439.57 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 437.56 576.7 437.56 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 436.04 576.7 436.04 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +3.6 (n) 36.7 426.02 P +2 14 Q +4.13 (Forgetting empty slot de\336nition list if you) 47.09 426.02 P +(don't de\336ne local slots in DEFCLASS.) 47.5 412.02 T +0 12 Q +(W) 36.7 399.36 T +(riting) 47.55 399.36 T +3 10 Q +(\050defclass Square \050Rectangle\051\051) 36.7 386.69 T +0 12 Q +(instead of) 36.7 375.36 T +3 10 Q +(\050defclass Square \050Rectangle\051 \050\051\051) 36.7 362.69 T +0 12 Q +(Lisp will not accept the former) 36.7 337.36 T +(.) 184.35 337.36 T +36.7 327.14 297.7 331.36 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 329.35 576.7 329.35 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 327.82 576.7 327.82 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +1.93 (n) 36.7 317.81 P +2 14 Q +2.21 (Referring to class name instead of instance) 47.09 317.81 P +(variable in DEFMETHOD.) 47.5 303.81 T +0 12 Q +(W) 36.7 291.14 T +(riting) 47.55 291.14 T +3 10 Q +(\050defmethod Area \050\050Sq Square\051\051) 36.7 278.47 T +(\050* \050Width Square\051 \050Width Square\051\051\051) 48.7 268.47 T +0 12 Q +(instead of) 36.7 257.14 T +3 10 Q +(\050defmethod Area \050\050Sq Square\051\051) 36.7 244.47 T +(\050* \050Width Sq\051 \050Width Sq\051\051\051) 48.7 234.47 T +0 12 Q +0.3 (Lisp may give a warning about an unknown free vari-) 36.7 209.14 P +1.05 (able, but probably won't even do that if you type the) 36.7 197.14 P +3 11 Q +7.68 (defmethod) 36.7 185.14 P +0 12 Q +3.49 ( directly into the Lisp Listener \050Lucid) 96.1 185.14 P +(doesn't\051. So you might not get an error until run-time.) 36.7 173.14 T +315.7 77.59 576.7 714 R +7 X +V +315.7 709.79 576.7 714 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315.7 711.99 855.7 711.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +315.7 710.47 855.7 710.47 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +1.43 (n) 315.7 700.45 P +2 14 Q +1.64 (Forgetting accessors are functions and thus) 326.09 700.45 P +(could con\337ict with built-in function names.) 326.5 686.45 T +0 12 Q +(E.g. writing) 315.7 673.79 T +3 10 Q +(\050defclass Graphical-Object \050\051) 315.7 661.12 T +(\050\050Position :accessor Position\051\051\051) 327.7 651.12 T +0 12 Q +0.3 (Lisp will not accept this since you cannot rede\336ne the) 315.7 625.79 P +(built-in) 315.7 613.79 T +3 11 Q +(position) 354.04 613.79 T +0 12 Q +( function.) 406.84 613.79 T +315.7 603.57 576.7 607.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315.7 605.78 855.7 605.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +315.7 604.25 855.7 604.25 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +1.52 (n) 315.7 594.24 P +2 14 Q +1.74 (Putting the new value last instead of \336rst in) 326.09 594.24 P +(the de\336nition of a SETF method.) 326.5 580.24 T +0 12 Q +(W) 315.7 567.57 T +(riting) 326.55 567.57 T +3 10 Q +(\050defmethod \050setf Area\051 \050\050Sq Square\051) 315.7 554.9 T +(\050New-Area number\051\051) 441.7 544.9 T +(\050setf \050Width Sq\051 \050sqrt New-Area\051\051\051) 327.7 534.9 T +0 12 Q +(instead of) 315.7 523.57 T +3 10 Q +(\050defmethod \050setf Area\051 \050\050New-Area number\051) 315.7 510.9 T +(\050Sq Square\051\051) 441.7 500.9 T +(\050setf \050Width Sq\051 \050sqrt New-Area\051\051\051) 327.7 490.9 T +0 12 Q +-0.12 (Lisp will accept the former) 315.7 465.57 P +-0.12 (, and then users are puzzled) 444.7 465.57 P +0.5 (as to why) 315.7 453.57 P +3 11 Q +1.09 (\050setf \050Area Square-1\051 10\051) 366.19 453.57 P +0 12 Q +0.5 (doesn't) 543.21 453.57 P +(work.) 315.7 441.57 T +315.7 431.36 576.7 435.57 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315.7 433.56 855.7 433.56 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +315.7 432.04 855.7 432.04 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +1 10 Q +0 X +0 0 0 1 0 0 0 K +0.42 (n) 315.7 422.02 P +2 14 Q +0.48 (Putting the new value last instead of \336rst in a) 326.09 422.02 P +(call to a :writer method.) 326.5 408.02 T +0 12 Q +(E.g given) 315.7 395.36 T +3 10 Q +(\050defclass Circle \050\051) 315.7 382.69 T +(\050\050Radius :reader Radius) 327.7 372.69 T +(:writer Set-Radius) 381.7 362.69 T +(:initform 5\051\051\051) 381.7 352.69 T +(\050setq Circle-1 \050make-instance 'Circle\051\051) 315.7 342.69 T +0 12 Q +(W) 315.7 331.36 T +(riting) 326.55 331.36 T +3 10 Q +(\050Set-Radius Circle-1 10\051) 315.7 318.69 T +0 12 Q +(Instead of) 315.7 307.36 T +3 10 Q +(\050Set-Radius 10 Circle-1\051) 315.7 294.69 T +305.68 714 305.68 75 2 L +0.5 H +2 Z +N +0 0 612 792 C +FMENDPAGE +%%EndPage: "10" 2 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%PageOrder: Descend +%%Pages: 2 +%%DocumentFonts: Times-Roman +%%+ ZapfDingbats +%%+ Helvetica-Narrow-Bold +%%+ Courier-Bold +%%+ Times-Italic +%%EOF --- cmucl-20a-20090928.orig/own-work/tutorials/other-clos/CLOS-Notes.ps +++ cmucl-20a-20090928/own-work/tutorials/other-clos/CLOS-Notes.ps @@ -0,0 +1,7594 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%Creator: Frame 4.0 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 4.0, for use with Frame 4.0 products +% This ps_prolog file is Copyright (c) 1986-1993 Frame Technology +% Corporation. All rights reserved. This ps_prolog file may be +% freely copied and distributed in conjunction with documents created +% using FrameMaker, FrameBuilder and FrameViewer as long as this +% copyright notice is preserved. +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to True, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (4.0) def +/FMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + FMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + dup = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto + show FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Frame product version does not match ps_prolog!) FMFAILURE + } if + } def +/FMBADEPSF { + (PostScript Lang. Ref. Man., 2nd Ed., H.2.4 says EPS must not call X ) + dup dup (X) search pop exch pop exch pop length + 4 -1 roll + putinterval + FMFAILURE + } def +/FMLOCAL { + FrameDict begin + 0 def + end + } def +/concatprocs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/FrameNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 ] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + setrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +FMLevel1 not { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} if +/combineColor { + FrameSepIs FMnone eq + { + graymode FMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + FrameCurGray RealSetgray + } { + FMPColor graymode and { + 0 1 3 { + FrameCurColors exch get + 1 FrameCurGray sub mul + } for + RealSetcmykcolor + } { + 4 1 6 { + FrameCurColors exch get + graymode { + 1 exch sub 1 FrameCurGray sub mul 1 exch sub + } { + 1.0 lt {FrameCurGray} {1} ifelse + } ifelse + } for + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { FrameCurGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode FMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not FMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/dmatrix matrix def +/dpi 72 0 dmatrix defaultmatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + FMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + /gstring FMLOCAL + /gfile FMLOCAL + /gindex FMLOCAL + /orgrxfer FMLOCAL + /orggxfer FMLOCAL + /orgbxfer FMLOCAL + /orgxfer FMLOCAL + /orgproc FMLOCAL + /orgrproc FMLOCAL + /orggproc FMLOCAL + /orgbproc FMLOCAL + /organgle FMLOCAL + /orgrangle FMLOCAL + /orggangle FMLOCAL + /orgbangle FMLOCAL + /orgfreq FMLOCAL + /orgrfreq FMLOCAL + /orggfreq FMLOCAL + /orgbfreq FMLOCAL + /yscale FMLOCAL + /xscale FMLOCAL + /edown FMLOCAL + /manualfeed FMLOCAL + /paperheight FMLOCAL + /paperwidth FMLOCAL +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /FrameNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + FMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + { (Can't select requested paper size for Frame print job!) FMFAILURE } if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {{1 dict dup /PageSize [paperwidth paperheight]put setpagedevice}stopped + { (Can't select requested paper size for Frame print job!) FMFAILURE } if + {1 dict dup /ManualFeed manualfeed put setpagedevice } stopped pop } + ifelse + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + FrameNegative { + 1 1 4 { + pop { 1 exch sub } concatprocs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + FrameNegative { + { 1 exch sub } concatprocs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/pagesave FMLOCAL +/orgmatrix FMLOCAL +/landscape FMLOCAL +/pwid FMLOCAL +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 0.0 0.0 moveto + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def + /fx FMLOCAL + /fy FMLOCAL + /fh FMLOCAL + /fw FMLOCAL + /llx FMLOCAL + /lly FMLOCAL + /urx FMLOCAL + /ury FMLOCAL +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def +% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. +% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) + /banddevice {(banddevice) FMBADEPSF} def + /clear {(clear) FMBADEPSF} def + /cleardictstack {(cleardictstack) FMBADEPSF} def + /copypage {(copypage) FMBADEPSF} def + /erasepage {(erasepage) FMBADEPSF} def + /exitserver {(exitserver) FMBADEPSF} def + /framedevice {(framedevice) FMBADEPSF} def + /grestoreall {(grestoreall) FMBADEPSF} def + /initclip {(initclip) FMBADEPSF} def + /initgraphics {(initgraphics) FMBADEPSF} def + /initmatrix {(initmatrix) FMBADEPSF} def + /quit {(quit) FMBADEPSF} def + /renderbands {(renderbands) FMBADEPSF} def + /setglobal {(setglobal) FMBADEPSF} def + /setpagedevice {(setpagedevice) FMBADEPSF} def + /setshared {(setshared) FMBADEPSF} def + /startjob {(startjob) FMBADEPSF} def + /lettertray {(lettertray) FMBADEPSF} def + /letter {(letter) FMBADEPSF} def + /lettersmall {(lettersmall) FMBADEPSF} def + /11x17tray {(11x17tray) FMBADEPSF} def + /11x17 {(11x17) FMBADEPSF} def + /ledgertray {(ledgertray) FMBADEPSF} def + /ledger {(ledger) FMBADEPSF} def + /legaltray {(legaltray) FMBADEPSF} def + /legal {(legal) FMBADEPSF} def + /statementtray {(statementtray) FMBADEPSF} def + /statement {(statement) FMBADEPSF} def + /executivetray {(executivetray) FMBADEPSF} def + /executive {(executive) FMBADEPSF} def + /a3tray {(a3tray) FMBADEPSF} def + /a3 {(a3) FMBADEPSF} def + /a4tray {(a4tray) FMBADEPSF} def + /a4 {(a4) FMBADEPSF} def + /a4small {(a4small) FMBADEPSF} def + /b4tray {(b4tray) FMBADEPSF} def + /b4 {(b4) FMBADEPSF} def + /b5tray {(b5tray) FMBADEPSF} def + /b5 {(b5) FMBADEPSF} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def + /papersizedict FMLOCAL +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped + end + } {true} ifelse + } bind def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def + /bwidth FMLOCAL + /bpside FMLOCAL + /bstring FMLOCAL + /onbits FMLOCAL + /offbits FMLOCAL + /xindex FMLOCAL + /yindex FMLOCAL + /x FMLOCAL + /y FMLOCAL +/setPatternMode { + FMLevel1 { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/y exch def + /x exch def + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne FrameNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add div FrameNegative {1.0 exch sub} if + /FrameCurGray exch def + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + FMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode FMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode FMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def + /fillvals FMLOCAL +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def + /n FMLOCAL +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def + /x1 FMLOCAL + /x2 FMLOCAL + /y1 FMLOCAL + /y2 FMLOCAL +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def + /rad FMLOCAL +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def + /FMpointsize FMLOCAL +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def + /x FMLOCAL + /y FMLOCAL + /w FMLOCAL + /h FMLOCAL + /xx FMLOCAL + /yy FMLOCAL + /ww FMLOCAL + /hh FMLOCAL + /FMsaveobject FMLOCAL + /FMoptop FMLOCAL + /FMdicttop FMLOCAL +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def + /str FMLOCAL +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def + /sl FMLOCAL + /val FMLOCAL + /ws FMLOCAL + /im FMLOCAL + /bs FMLOCAL + /cs FMLOCAL + /len FMLOCAL + /pos FMLOCAL +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def + /h FMLOCAL + /w FMLOCAL + /d FMLOCAL + /lb FMLOCAL + /bitmapsave FMLOCAL + /is FMLOCAL + /cf FMLOCAL +/wbytes { + dup dup + 24 eq { pop pop 3 mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /r exch def + /d exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + r + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /r exch def + /d exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + r + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def + /gryt FMLOCAL + /blut FMLOCAL + /grnt FMLOCAL + /redt FMLOCAL + /indx FMLOCAL + /cynu FMLOCAL + /magu FMLOCAL + /yelu FMLOCAL + /k FMLOCAL + /u FMLOCAL +FMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /k cynu magu min yelu min def + /u k currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 k currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse + /tran FMLOCAL +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch concatprocs settransfer +} bind def +/BITMAPCOLOR { + /d 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + FMLevel1 { + colorsetup + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is w d wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width w def + /Height h def + /ImageMatrix [w 0 0 h neg 0 h] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent d def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /d 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + FMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width w def + /Height h def + /ImageMatrix [w 0 0 h neg 0 h] def + /DataSource {ip} bind def + /BitsPerComponent d def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /d 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 w getinterval def + /gis im w w getinterval def + /bis im w 2 mul w getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {w rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /d 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 w getinterval def + /gis im w w getinterval def + /bis im w 2 mul w getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {w rip pop ris gis bis w gray} image + bitmapsave restore + grestore + } bind def +/ww FMLOCAL +/r FMLOCAL +/g FMLOCAL +/b FMLOCAL +/i FMLOCAL +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop w gray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDsave FMLOCAL + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(4.0) FMVERSION +1 1 0 0 612 792 0 1 23 FMDOCUMENT +0 0 /Times-Roman FMFONTDEFINE +1 0 /Helvetica-Narrow-Bold FMFONTDEFINE +2 0 /Courier-Bold FMFONTDEFINE +3 1 /ZapfDingbats FMFONTDEFINE +4 1 /Symbol FMFONTDEFINE +5 0 /Courier-BoldOblique FMFONTDEFINE +6 0 /Helvetica-Bold FMFONTDEFINE +7 0 /Times-Italic FMFONTDEFINE +8 0 /Times-Bold FMFONTDEFINE +9 0 /Courier FMFONTDEFINE +10 0 /Courier-Oblique FMFONTDEFINE +11 0 /Helvetica-Narrow FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 FMFILL +11 FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 FMFILL +25 FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "23" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +J +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Object-Oriented Simulation) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +0 14 Q +0 X +-0.8 (and a :after method that draws the object in its new position. The library I provided supports) 54 728.67 P +0.45 (a \337ag to the drawing operations that automatically erases the old position before drawing) 54 713.67 P +(the new one.) 54 698.67 T +-0.4 (Attached is a copy of the documentation for ~hall/Lisp/Simple-Graphics.lisp \050and .sbin\051. It) 54 668.67 P +-0.19 (provides a simple set of drawing functions that can be used as a simple graphical front end) 54 653.67 P +0.16 (to a CLOS simulation. If you use it, I\325d suggest that you create a unique Object-ID slot in) 54 638.67 P +-0.41 (each object, and then when you draw the object you can pass that Object-ID to the drawing) 54 623.67 P +(functions, resulting in the old drawing being erased before the new one is drawn.) 54 608.67 T +(Here\325) 54 578.67 T +(s a sample interaction.) 85.09 578.67 T +26.16 120 585.84 574 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 X +0 0 0 1 0 0 0 K +%%BeginBinary: 12138 +1280 648 526.63 266.61 0 44.16 298.39 +/red < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000FF4CF2E5D9CCBFB3A68C7F7366594D4033261A0D +0306090C101316191C202326292C303336393C3FCB8254D499FFD9AFD0003ABD +704C986C7F3EC472FFFF000021388F57C13970008F0000FF00FFA000D36600FF +> store +/green < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000D74CF2E5D9CCBFB3A68C7F7366594D4033261A0D +09131D263039434C566069727C869099A2ACB6BF9D8254D489FFC2EE206442C5 +8099FFD9FF57D79FE400FFFF4471FFAEEB737000E365BFFF00002000D3CD00FF +> store +/blue < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004CF2E5D9CCBFB3A68C7F7366594D4033261A0D +C3C6C9CCCFD3D6D9DCDFE3E6E9ECEFF3F6F9FCFF738254D476ECA7EE90004BCC +907FFFB4D48CFFFFC4FFFF00385DEE91DD5FFF70FF87FF00FF00F080D3AA00FF +> store + BEGINBITMAPCOLORc +z +iFF4J"J"J" +9F5h?F59F58z8z8z" +7F6h>F67F6F5 + + +F53F5=z +i9F4>z#z#z#z" +1F6F5F4h+F6F5F41F6F5F41F6F5 +J% +ZFFEFEFEFEJr<#J#J#JrJv +YKFEFEFE:F6F6>FEFECFEZHF4J&8"J#J&8"Jt" +YJFEFEF6F6F6F6O(FEFEO FEFEF6F6F6F6ZIF6F5J$B#J$J#J$ +YIFEFEF6F6F6;FEFEF6#<"8"8"9"8$E'9#8%:#<(9"8&B%<(9#8.9(9"8&J$ +F6F5Y3F6FEFEFEF6F6F6FEFEF6F6F6F6FEFEF6F6FEFEF6F6F6F6F6F6F6F6FEFEFEF6F6FEFEF6FEF6F6FEFEF6FEFEFEFEFEFEF6F6FEFEF6F6FEF6F6FEFEF6FEFEFEF6F6FEFEFEFEFEF6F6FEFEF6FEF6F6FEFEY6F6F6F5J&=$="8"9$8$;$;#>$?$<"@"G&<":"9%8#9"?"@" +YJF6F6FEFEFEFEFEF6F6F6FEFEF6FEFEF6FEFEF6F6F6FEFEF6FEFEF6F6F6F6F6FEFEFEF6F6FEFEF6F6F6F6F6F6F6BtJ%C*J(J$>$8$E%8$9#B"8$:"8$;$8$J# +F5Y7F6F6FEFEFEFEF6FEFEF6FEFEF65FEFEFEFEFEFEF66FEFEF6FEFEF6FEFEF6F6F6FEFEFEFEF6F6F6FEFEFEFEFEFEFEFEFEFEF6FEFEF6Y6F5F5AvJ#A$D$8$;$:&<$?$?$J#I$>':'J% +F6Y2FEFEFEFEF6FEFEF6FEFEF6FEFEF6FEFEF6F6F6FEFEF6FEFEF6FEFEF66FEFEFEFEF6F6F6F6F6F6F6F6F6F6F6F6F6Y@F6F6F6F6J$B*;"D$8$?#F";$8$G$=#H#>#9$8$ +YMFEFEF6FEFEF6FEFEF6FEFEF6FEFEFEF6FEFEF6FEFEFEFEFEF6FEFEF6FEFEF6FEFEFEFEFEFEFEFEF6FEFEF6J"8&9$8&>+8$8*8":(8$8$8(8"8$8"A"8&9(8#8$:(9(8"8$8" +YGFEFEFEFEFEF6FEFEFEFEFEFEF6FEFEF6F6FEFEFEFEF6FEFEFEFEFEFEFEFEF6F6FEFEFEFEFEF6FEFEFEFEFEF6FEFEFEFEFEFEF6FEFEFEFEF6F6FEFEF6FEFEFEFEFEFEFEF6F6FEFEFEFEFEF6FEFEFEFEFEF6FEFEFEFEFEF6F6FEFEFEFEFEF6FEFEF6FEFEJr:z8r8s8r;&9s9%:tAr;&9r;&;&9tJt +YGF63F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6YGF5Jv +i0F6 +>z8z8z8z +1F5h+F51F51F57rH"J"H"I% +F5F5h,F5F5F5F5F5F57(zr +F4F4F4F4F4F4F5i6FEF48&J& +F6F6F6F6F5i9F6F6F6F6F5Hz +i*FCH" +FEI" +FEJ" +4FEJ" +5FEJ" +6FEJ" +7FEJ" +8FE@"D" +FCFEA"D" +FCFEB"D" +FCFEC"D" +FCFED"D" +FCFEE"D" +FCFEF"D" +FCFEG"D" +FCFEH"D" +FCFEI"D" +FCFEJ"D" +4FCFEJ"D" +5FCFEJ"D" +6FCFEJ"D" +7FCFEJ"D" +8FCFEJ"D" +9FCFEJ"D" +:FCFEJ"D" +;FCFEJ"D" +FCFEJ"D" +?FCFEJ"D" +@FCFEJ"D" +AFCFEJ"D" +BFCFEJ"D" +CFCFEJ"D" +DFCFEJ"D" +EFCFEJ"D" +FFCFEJ"D" +GFCFEJ"D" +HFCFEJ"D" +IFCFEJ"D" +JFCFEJ"D" +KFCFEJ"D" +LFCFEJ"D" +MFCFEJ"D" +O FCFEJ"D" +O!FCFEJ"D" +O"FCFEJ"D" +O#FCFEJ"D" +O$FCFEJ"D" +O%FCFEJ"D" +O&FCFEJ"D" +O'FCFEJ"D" +O(FCFEJ"D" +O)FCFEJ"D" +O*FCFEJ"D" +O+FCFEJ"D" +O,FCFEJ"D" +O-FCFEJ"D" +O.FCFEJ"D" +O/FCFEJ"D" +O0FCFEJ"D" +O1FCFEJ"D" +O2FCFEJ"D" +O3FCFEJ"D" +O4FCFEJ"D" +O5FCFEJ"D" +O6FCFEJ"D" +O7FCFEJ"D" +O8FCFEJ"D" +O9FCFEJ"D" +O:FCFEJ"D" +O;FCFEJ"D" +OFCFEJ"D" +O?FCFEJ"D" +O@FCFEJ"D" +OAFCFEJ"D" +OBFCFEJ"D" +OCFCFEJ"D" +ODFCFEJ"D" +OEFCFEJ"D" +OFFCFEJ"D" +OGFCFEJ"D" +OHFCFEJ"D" +OIFCFEJ"D" +OJFCFEJ"D" +OKFCFEJ"D" +OLFCFEJ"D" +OMFCFEJ"D" +P FCFEJ"D" +P!FCFEJ"D" +P"FCFEJ"D" +P#FCFEJ"D" +P$FCFEJ"D" +P%FCFEJ"D" +P&FCFEJ"D" +P'FCFEJ"D" +P(FCFEJ"D" +P)FCFEJ"D"Jz +P*FCFET0O$FEJ"D" +P+FCFEJ"D" +P,FCFEJ"D" +P-FCFEJ"D" +P.FCFEJ"D" +P/FCFEJ"D" +P0FCFEJ"D" +P1FCFEJ"D" +P2FCFEJ"D" +P3FCFEJ"D" +P4FCFEJ"D" +P5FCFEJ"D" +P6FCFEJ"D" +P7FCFEJ"D" +P8FCFEJ"D" +P9FCFEJ"D" +P:FCFEJ"D" +P;FCFEJ"D" +PFCFESJO$FCJ"D" +P?FCFEJ"D" +P@FCFEJ"D" +PAFCFEJ"D"J&>%A%J$ +PBFCFEV'FEFEFEFEFEFEFEFEFEFEFEFEFE:FEFEFEJ"D"J*<*9%:&J#A#:#=#:#J$ +PCFCFETCFEFEFEFEFEFEFCFEFEFEFEFEFEFEFEFCFEFEFEFEFEFEFEFEFEFEFE5FEFEFEFEFEFEFEFEFEFE5FEFEFEJ"D"J"<"="<"J"9%;"8%8";"8%8" +PDFCFETAFEFEFEFEFFEFCFCFCFCFEFCFCFCFCFEFEFCFCFCFCFEJ"D"J"8&="8&<"9"9#8"I"8#A":"?":"J% +PEFCFET?FEFCFCFCFCFCFEFCFCFCFCFCFCFEFCFCFCFEFCFCFCFCFCFC6FCFCFCFCJ"D"J";">";"J" +PFFCFET@FCFCFCFCGFCJ"D"J$J" +PGFCFEU/FCFEFE9FEJ"D"J"<#<"<#J'=$:$;$:$ +PHFCFET>FEFCFCFEFCFCDFCFEFEFEFEFEFCFEFEFEFEFCFCFEFEFEFEFCJ"D"J"8$?"8$B$J";"=)=) +PIFCFET;FCFEFEFEFCFEFEFEFCFEFE:FEFEFCFEFEFEFEFEFEFCFCFEFEFEFEFEFEFCJ"D"J":$=":$Jw=%8"<"<"="<";w +PJFCFET;FCFEFEFEFCFEFEFE4FEFCFCFCFCFEFEFEFEFEFEJ"D"J$:"=$:"?$J":"="8%8";"8%8" +PKFCFET;FCFCFCFEFCFCFCFEFCFEFE9FCFCFEFCFCFCFCFEFEFCFCFCFCFEJ"D"J$8"?$8"HwJ":"?":"FEFEFEFCFCFEFEFEFEFCFCFEFEFEFEFC4FEFEFEFEFEFEFEFEJ"D"J"="<"="B"J#;"="<"="<" +Q#FCFET4FCFCFCFCFC7FCFCFCFCFCFCFCJ"D"JsGu;u;&:$J&?'?'Ju +Q$FCFESFFEFCFCFCFCFCFCFCFCFCFC6FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC6FCJ"D"J">" +Q%FCFESDFEFEJ"D" +Q&FCFEJ"D" +Q'FCFEJ"D" +Q(FCFEJ"D" +Q)FCFEJ"D"Jr@zA$ +Q*FCFES8FE8FEFEFEFEJ"D"J$8v8u8u:"?" +Q+FCFES4FEFEFEFCFCFCFEFEJ"D"J#8"J"8#:& +Q,FCFES1FEFEFCGFCFEFEFEFEFEFCFCJ"D"J#8#J"9"8%8" +Q-FCFES.FEFEFCFCIFCFEFEFEFCFCFCJ"D"J"8#J#8"8" +Q.FCFES,FEFCFCLFCFCFEFCJ"D"J#J%;# +Q/FCFES,FCFCO"FCFCFEFEFEFEJ"D"Jr8v8u8u8'9% +Q0FCFES+FEFEFEFEFEFEFEFEFEFEFEFEFEFEJ"D"Jr8v8u8u8'9% +Q1FCFES*FCFCFCFCFCFCFCFCFCFCFCFCFCFCJ"D"J#J#9"9# +Q2FCFES)FEFEO"FEFEFEFCFCJ"D"J"8#J#9% +Q3FCFES'FCFEFELFEFEFCFCFEFEJ"D"J"9#J#9#8$8" +Q4FCFES'FCFEFEHFEFEFCFCFCFEFEFEJ"D"J$8"8v8u8u;#;% +Q5FCFES'FCFCFCFEFEFEFEFCFCFCFCFEFEJ"D"Jz?% +Q6FCFES)MFCFCFCFCFCJ"D" +Q7FCFEJ"D" +Q8FCFEJ"D" +Q9FCFEJ"D" +Q:FCFEJ"D" +Q;FCFEJ"D" +QFCFEJ"D" +Q?FCFEJ"D" +Q@FCFEJ"D" +QAFCFEJ"D" +QBFCFEJ"D" +QCFCFEJ"D" +QDFCFEJ"D" +QEFCFEJ"D" +QFFCFEJ"D" +QGFCFEJ"D" +QHFCFEJ"D" +QIFCFEJ"D" +QJFCFEJ"D" +QKFCFEJ"D" +QLFCFEJ"D" +QMFCFEJ"D" +R FCFEJ"D" +R!FCFEJ"D" +R"FCFEJ"D" +R#FCFEJ"D" +R$FCFEJ"D" +R%FCFEJ"D" +R&FCFEJ"D" +R'FCFEJ"D" +R(FCFEJ"D" +R)FCFEJ"D" +R*FCFEJ"D" +R+FCFEJ"D" +R,FCFEJ"D" +R-FCFEJ"D" +R.FCFEJ"D" +R/FCFEJ"D" +R0FCFEJ"D" +R1FCFEJ"D" +R2FCFEJ"D" +R3FCFEJ"D" +R4FCFEJ"D" +R5FCFEJ"D" +R6FCFEJ"D" +R7FCFEJ"D" +R8FCFEJ"D" +R9FCFEJ"D" +R:FCFEJ"D" +R;FCFEJ"D" +RFCFEJ"D" +R?FCFEJ"D" +R@FCFEJ"D" +RAFCFEJ"D" +RBFCFEJ"D" +RCFCFEJ"D" +RDFCFEJ"D" +REFCFEJ"D" +RFFCFEJ"D" +RGFCFEJ"D" +RHFCFEJ"D" +RIFCFEJ"D" +RJFCFEJ"D" +RKFCFEJ"D" +RLFCFEJ"D" +RMFCFEJ"D" +S FCFEJ"D" +S!FCFEJ"D" +S"FCFEJ"D" +S#FCFEJ"D" +S$FCFEJ"D" +S%FCFEJ"D" +S&FCFEJ"D" +S'FCFEJ"D" +S(FCFEJ"D" +S)FCFEJ"D" +S*FCFEJ"D" +S+FCFEJ"D" +S,FCFEJ"D" +S-FCFEJ"D" +S.FCFEJ"D" +S/FCFEJ"D" +S0FCFEJ"D" +S1FCFEJ"D" +S2FCFEJ"D" +S3FCFEJ"D" +S4FCFEJ"D" +S5FCFEJ"D" +S6FCFEJ"D" +S7FCFEJ"D" +S8FCFEJ"D" +S9FCFEJ"D" +S:FCFEJ"D" +S;FCFEJ"D" +SFCFEJ"D" +S?FCFEJ"D" +S@FCFEJ"D" +SAFCFEJ"D" +SBFCFEJ"D" +SCFCFEJ"D" +SDFCFEJ"D" +SEFCFEJ"D" +SFFCFEJ"D" +SGFCFEJ"D" +SHFCFEJ"D" +SIFCFEJ"D" +SJFCFEJ"D" +SKFCFEJ"D" +SLFCFEJ"D" +SMFCFEJ"D" +T FCFEJ"D" +T!FCFEJ"D" +T"FCFEJ"D" +T#FCFEJ"D" +T$FCFEJ"D" +T%FCFEJ"D" +T&FCFEJ"D" +T'FCFEJ"D" +T(FCFEJ"D" +T)FCFEJ"D" +T*FCFEJ"D" +T+FCFEJ"D" +T,FCFEJ"D" +T-FCFEJ"D" +T.FCFEJ"D" +T/FCFEJ"D" +T0FCFEJ"D" +T1FCFEJ"D" +T2FCFEJ"D" +T3FCFEJ"D" +T4FCFEJ"D" +T5FCFEJ"D" +T6FCFEJ"C" +T7FCFCJ"A" +T8FCFCJ"?" +T9FCFCJ"=" +T:FCFCJ";" +T;FCFCJ"9" +TFC + + + + + + + + + + +J" +[,FEJz +[ 9FEJ'J' +ZHFEFEFEFEFEFE9FEFEFEFEFEFEJ%J% +ZDFEFEFEFEEFEFEFEFEJ"J$J$ +VJFEQDFEFEFEMFEFEFEJzJ$J$ +V>9FEQ5FEFEFEO%FEFEFEJ&J&J$J$ +V9FEFEFEFEFE9FEFEFEFEFEQ-FEFEFEO+FEFEFEJ%J%J#J# +V5FEFEFEFECFEFEFEFEQ'FEFEO1FEFEJ$J$J#J"J# +V2FEFEFEKFEFEFEQ"FEFEAFCAFEFEJ$J$J#JzJ# +V/FEFEFEO#FEFEFEPKFEFE79FC7FEFEJ$J$J#J&J&J# +V,FEFEFEO)FEFEFEPFFEFE4FCFCFCFCFC9FCFCFCFCFC4FEFEJ#J#J#H%J%H# +V*FEFEO/FEFEPBFEFEFCFCFCFCCFCFCFCFCFEFEJ#J#J#G$J$G# +V(FEFEO3FEFEP>FEFEFCFCFCKFCFCFCFEFEJ#J#J"F$J$F" +V&FEFEO7FEFEP;FEFCFCFCO#FCFCFCFEJ#J#J#E#J#E# +V$FEFEO;FEFEP7FEFEFCFCO)FCFCFEFEJ#J#J"E#J#E" +V"FEFEO?FEFEP4FEFCFCO-FCFCFEJ#J#J#D#J#D# +V FEFEOCFEFEP0FEFEFCFCO1FCFCFEFEJ"J"J"D#J#D" +UMFEOGFEP.FEFCFCO5FCFCFEJ#J#J"C#J#C" +UKFEFEOIFEFEP+FEFCFCO9FCFCFEJ"J"J#B#J#B# +UJFEOMFEP(FEFEFCFCO=FCFCFEFEJ#J"J"C"J"C" +UHFEFEP!FEP&FEFCOAFCFEJ"J#J"B#J#B" +UGFEP$FEFEP#FEFCFCOCFCFCFEJ"J"J"B"J"B" +UFFEP'FEP!FEFCOGFCFEJ"J"J"A#J#A" +UEFEP)FEOMFEFCFCOIFCFCFEJ"J"J"A"J"A" +UDFEP+FEOKFEFCOMFCFEJ#J#J"A"J"A" +UBFEFEP-FEFEOHFEFCP!FCFEJ"J"J"@#J#@" +UAFEP1FEOFFEFCFCP#FCFCFEJ"J"J"@"J"@" +U@FEP3FEODFEFCP'FCFEJ"J"J"@"J"@" +U?FEP5FEOBFEFCP)FCFEJ"J"J"@"J"@" +U>FEP7FEO@FEFCP+FCFEJ"J"J"@"J"@" +U=FEP9FEO>FEFCP-FCFEJ"@"J"@" +YGFEFCP/FCFEJ"J"J"J" +U"J">" +Y>FEFCPEFCFEJ"J" +U2FEQ!FEJ">"J">" +Y=FEFCPGFCFEJ"J" +U1FEQ#FEJ">"J">" +Y"J">" +Y;FEFCPKFCFEJ"J" +U/FEQ'FEJ">"J">" +Y:FEFCPMFCFEJ"J" +U.FEQ)FEJ"J" +YBFCQ!FCJ"J" +Y9FEQ3FEJ"J"J"J" +U-FEQ+FEO'FCQ#FC +J"J" +Y8FEQ5FEJ"J"J"J" +U,FEQ-FEO%FCQ%FC +J"J" +Y7FEQ7FEJ"J"J"J" +U+FEQ/FEO#FCQ'FC + +J"J" +Y6FEQ9FEJ"J"J"J" +U*FEQ1FEO!FCQ)FC + + + +J"J"J"="J"=" +U)FEQ3FEEFEFCQ+FCFE + + + + + + + + + + +J"J"=" +U(FER+FEFCJ"J"=" +U(FCR+FCFE + + + + + + + + + + +J"J"J"="J"=" +U)FCQ3FCEFCFEQ+FEFC + + + +J"J"J"J" +U*FCQ1FCO!FEQ)FEJ"J" +Y6FCQ9FC + +J"J"J"J" +U+FCQ/FCO#FEQ'FEJ"J" +Y7FCQ7FC +J"J"J"J" +U,FCQ-FCO%FEQ%FEJ"J" +Y8FCQ5FC +J"J"J"J" +U-FCQ+FCO'FEQ#FEJ"J" +Y9FCQ3FCJ"J" +YBFEQ!FEJ"J" +U.FCQ)FCJ">"J">" +Y:FCFEPMFEFCJ"J" +U/FCQ'FCJ">"J">" +Y;FCFEPKFEFCJ"J" +U0FCQ%FCJ">"J">" +Y"J">" +Y=FCFEPGFEFCJ"J" +U2FCQ!FCJ">"J">" +Y>FCFEPEFEFCJ"J"J"J" +U3FCPMFCO4FEPCFEJ"J" +Y?FCQ'FCJ"J"J"J" +U4FCPKFCO6FEPAFEJ"J"J"?"J"?" +U5FCPIFCO.FCFEP?FEFCJ"J" +YAFCQ#FCJ"J"J"J" +U6FCPGFCO:FEP=FEJ"J"J"?"J"?" +U7FCPEFCO2FCFEP;FEFCJ"J"?"J"?" +X.FCO4FCFEP9FEFCJ" +U8FCJ"J"J"?"J"?" +U9FCPAFCO6FCFEP7FEFCJ"J"J"?"J"?" +U:FCP?FCO8FCFEP5FEFCJ"J"J"?"J"?" +U;FCP=FCO:FCFEP3FEFCJ"J"J"J" +UFCFEP-FEFCJ"J"J"@"J"@" +U>FCP7FCO@FCFEP+FEFCJ"J"J"@"J"@" +U?FCP5FCOBFCFEP)FEFCJ"J"J"@"J"@" +U@FCP3FCODFCFEP'FEFCJ"J"J"@#J#@" +UAFCP1FCOFFCFEFEP#FEFEFCJ#J#J"A"J"A" +UBFCFCP-FCFCOHFCFEP!FEFCJ"J"J"A"J"A" +UDFCP+FCOKFCFEOMFEFCJ"J"J"A#J#A" +UEFCP)FCOMFCFEFEOIFEFEFCJ"J"J"B"J"B" +UFFCP'FCP!FCFEOGFEFCJ"J#J"B#J#B" +UGFCP$FCFCP#FCFEFEOCFEFEFCJ#J"J"C"J"C" +UHFCFCP!FCP&FCFEOAFEFCJ"J"J#B#J#B# +UJFCOMFCP(FCFCFEFEO=FEFEFCFCJ#J#J"C#J#C" +UKFCFCOIFCFCP+FCFEFEO9FEFEFCJ"J"J"D#J#D" +UMFCOGFCP.FCFEFEO5FEFEFCJ#J#J#D#J#D# +V FCFCOCFCFCP0FCFCFEFEO1FEFEFCFCJ#J#J"E#J#E" +V"FCFCO?FCFCP4FCFEFEO-FEFEFCJ#J#J#E#J#E# +V$FCFCO;FCFCP7FCFCFEFEO)FEFEFCFCJ#J#J"F$J$F" +V&FCFCO7FCFCP;FCFEFEFEO#FEFEFEFCJ#J#J#G$J$G# +V(FCFCO3FCFCP>FCFCFEFEFEKFEFEFEFCFCJ#J#J#H%J%H# +V*FCFCO/FCFCPBFCFCFEFEFEFECFEFEFEFEFCFCJ$J$J#J&J&J# +V,FCFCFCO)FCFCFCPFFCFC4FEFEFEFEFE9FEFEFEFEFE4FCFCJ$J$J#JzJ# +V/FCFCFCO#FCFCFCPKFCFC79FE7FCFCJ$J$J#J# +V2FCFCFCKFCFCFCQ"FCFCO5FCFCJ%J%J#J# +V5FCFCFCFCCFCFCFCFCQ'FCFCO1FCFCJ&J&J$J$ +V9FCFCFCFCFC9FCFCFCFCFCQ-FCFCFCO+FCFCFCJzJ$J$ +V>9FCQ5FCFCFCO%FCFCFCJ$J$ +ZAFCFCFCMFCFCFCJ%J% +ZDFCFCFCFCEFCFCFCFCJ'J' +ZHFCFCFCFCFCFC9FCFCFCFCFCFCJz +[ 9FC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +7&J% +F5F5F5F5F5i:F5F5F5F57'J& +F4F4F4F4F4F4i9F4F4F4F4F48&J& +F6F6F6F6F5i9F6F6F6F6F5 + + + + + + + + + + + + + +@z +i2FE +>z +i6F4=" +F4F6F5F43F6 + + +8z8z8z +7F5h>F57F57"J"J" +F58F5h?F5 +ENDBITMAP +%%EndBinary +%%BeginBinary: 37829 +1279 402 526.22 165.39 0 44.39 133.3 +/red < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000FF4CF2E5D9CCBFB3A68C7F7366594D4033261A0D +0306090C101316191C202326292C303336393C3FCB8254D499FFD9AFD0003ABD +704C986C7F3EC472FFFF000021388F57C13970008F0000FF00FFA000D36600FF +> store +/green < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000D74CF2E5D9CCBFB3A68C7F7366594D4033261A0D +09131D263039434C566069727C869099A2ACB6BF9D8254D489FFC2EE206442C5 +8099FFD9FF57D79FE400FFFF4471FFAEEB737000E365BFFF00002000D3CD00FF +> store +/blue < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004CF2E5D9CCBFB3A68C7F7366594D4033261A0D +C3C6C9CCCFD3D6D9DCDFE3E6E9ECEFF3F6F9FCFF738254D476ECA7EE90004BCC +907FFFB4D48CFFFFC4FFFF00385DEE91DD5FFF70FF87FF00FF00F080D3AA00FF +> store + BEGINBITMAPCOLORc +z +iEF4J"J"J" +9F5h>F59F58z8z8z" +7F6h=F67F6F5 + + +z#z#z#z" +1F6F5F4h*F6F5F41F6F5F41F6F5 +J% +ZKFEFEFEFEJ#Jv +ZKF6F6\0F4Jt" +i0F6F5J$ +ZLFEFEF6AvJ%:*9%<':';#J% +F4Z>FEFEFEFEFEFEFEF6FEFEF6FEFEFEFEFEFEFEFEFEFEF6FEFEFEFEFEFEFEFEFEZ@F4F4F4F4Bt"J(9"8"8":'9(:&J$ +F6F5Z#9#9$:# +[(FEFEFEFEF6FEFEF6FEFEF6FEFEF6FEFEF6FEFEFEFEFEFEF6FEFEJ$8$8(8">'8"9(;& +ZGFEFEFEFEFEFEF6FEFEFEFEFEF6FEFEF6FEFEFEFEFEF6FEFEFEFEFEF6FEFEFEFEF6Js9&9z:&:'<#Jt +ZGF6F6F6F6F6F62F6F6F6F6F6F6F6F6F6F6F6F6F6F6[%F5Jv +i/F6 +>z8z8z8z +1F5h*F51F51F57rH"J"H"I% +F5F5h+F5F5F5F5F5F57(zr +F4F4F4F4F4F4F5i5FEF48&8z9& +F6F6F6F6F5i3E2F6F6F6F6F5J" +i;E1Az" +i/E4E1 + + +J#<&J#A#J';'J$<#=#J#J& +>FEFEFEFEFEFEFEO"FEFEFEFEO:FEFEFEFEFEFEFEFEFEFEFEFEO-FEFEFEFEFEFEFE>FEFEb1FEFEFEFEFEEuJ%JrH"@"JuJ'J%8% +FEMFEFEFEFEO@FEFEFEO"FEJFEFEFEFEFEFEb%FEFEFEFEFEFEFEFEJ#<$J#:#J#J"I&<&J">#J#J$ +>E4E4E4E4E4;FEFEFEFE%:);r@#8&8$8%9#8%9#8%;%:%8$:r@#8%;%<&;#8%A#8#<&=r8)J"8"8"8":%E) +E4E4E4E4E4E4FEFEFEFEFEFEFEFEFEE4E4FEFEFEE4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4FEFEFEFEFEE4E4E4E4E4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4E4E4E4E4E4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4E4E4E4FEFEFEFEFEFEFEFEFEE4FEFEFEFEa0E4E4E4E4FEFEFEFEFEFEFEE4FEFEFEFEJ#J#:#@"8"8"8":":"J#:#;":"9"J#:#<#9"8"J#;":"J"B":"J#:#F":" +4FEFE;FEFEFEFEFEE4E4FEFEFE9FEFEFEFEFEFEFEO0FEFEFEFEFEFEFEFE6FEFEFEFEO+FEFEFEa;FEFEFEFEFEFEI"9#8$H"8%8"A":"9"9$8%8%:$="8%8$9$=%F&8":#;#8%9#8%8"8%8%:#<%F"9%8$<$=#8%J$@%:"9$8"J%:"8%8"B"9$8" +FEE4E4E4E4E4FEE4E4E4E4FEE4E4E4E4E4E4FEE4E4E4E4E4E4E4E4E4E4FEE4E4E4E4FEE4E4E4E4E4E4E4E4E4FEFEFEFEE4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4FEE4E4E4E4FEE4E4E4E4E4E4E4E4E4FEE4E4E4FEE4E4E4E4E4E4E4E4E4E4E4E47E4E4E4E4E4E4E4E4E4E4E4FEa1FEFEFEFEFEE4E4E4E4FEE4E4E4E4FEJ":"J"9"J":"<"@#8#H"J":">"8#:#8#J"9"J#8#;"9"J":"G"9" +O$E4E49E4E4;E4E4E4FEFEE4E4FEEE4E4E4E4E4FEFEE4E47E4E4O-FEFEE4E4E4E4a=E4E4E4E4I"J'J"9$E'J'="="9$E"J#C"9$J%<' +E4>FEFEFEFEFEFEO@E4FEFEFEE4E4E4E4FEFEDFEFEFEFEFEFEE4E4FEFEFEE4O)FEFEE4FEFEFEa>E4E4E4E4FEFEFEFEFEFEJ#J":"J#:"J#:"E&J#:" +4E4E4O!FEFEO.E4E4FEO@E4E4FEE4E4E4FEFEO4E4E4FEJr?"8"8"8":"9"A#D":"E'J"JrC'J"9"J#J'="9"JrE"9" +O%E4E4FEFEE4FEFEFEFEFEFEFEFEE4E4E4E4=FE=E4FEFEE4E4E4E49FEFE7FEFE@FEFEE4E4E4E4FEFEa>E4FEFEE#8$;$8$9$8$8"8rC#?$8";%:$8$8"8%8$8"8"8":%B#8':$9"8#8%9#8%8"8r$8%<%B#8%9"8$9"8$8$<%A#8%:$8$;%>$8"J"8"8"8$8r8$8$<$8" +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4FEFEFEFEFEFEE4FEFEFEFEFEFEFEFEFEFEE4FEFEFEFEE4E4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4FEE4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE4a.FEFEFEFEE4E4FEFEFEFEFEFEFEFEFEFEE4J#G#:#;":":";#C#:#J"H"9":"J#J"J":"G";#J";":"J#J":" +O#E4E4E4E4E4E4E4E4E4E4E4E4E4E4E45E4E4E4E4;E4E4;E46E4E4E4E4E4GE4E4E4a;E4E46E4E4Er;s9s;rB%>%<&:s;%:%8%8rAs;s8s9s;z:rAu9s8s;&Au8s9r=%J%8%:r8s<% +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E40E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4a0E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +J"8#J"8#J"8# +O@FEFEFES)FEFEFEb&FEFEFE +J&J&J& +O@E4E4E4E4E4S)E4E4E4E4E4b&E4E4E4E4E4 + + +Az +i/E1@" +E1?z +i3FE>zz +i&E8/DEJ" +i#J"J'J#J#@#H# +O&FBFBFBFBFBFBOHE8E8P3E8FBFB=E8O+FBFBE8E8FBFBMFBFB:E8E8FBFBFBFBJ"8%E#J#J#J#J#J( +O&E8E8E8FBFBFBFBR.FBFBO,FBFB7E8E8P5FBFB_"DFDFE0E0E0DEDEJ$J#J#J#H# +O+E8FBFBR6E8E8Q E8E8FE8E8E8E8E$=$=$J%9#8%8$8$8)8(C%8%9%C$8$;%;'B%8%9%9);%F%;$=%:#8%;%;$H%9$8$8#8%C#8$;%9)D':%:2E%<':%:#8%8%8%J$9$ +FBFBFBFBFBFBFBFBFB;FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBE8FBFBFBFBFBFBE8FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBE8FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBE8FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBE8FBFBE8FBFBE8FBFBFBE8FBFBFBFBFBFBFBFBFBFBFBE8FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB^?DFDFE0E0DEDEJ$:'8#8%8":":#8(8&B"8"8"8"8'B":"<'9&D"8"8"8"8'8#8&9'D'9&<#<#8%:'9&F'8":":#8%C#8$:'8#8&B&<#<"8"8"9"8&D#=';#<#8%8"8"8"8" +O+FBFBE8FBFBE8E8FBFBE8E8E8E8E8E8E8E8E8E8FBE8E8FBFBE8E8FBE8E8FBFBE8E8E8E8FBFBE8E8FBFBE8E8FBFBE8E8FBFBFBFBE8E8E8E8E8E8E8FBFBE8E8FBFBE8E8FBE8E8FBFBFBFBE8E8FBFBFBFBE8E8FBFBFBFBE8E8FBE8E8E8E8E8E8E8E8FBFBE8E8FBFBFBFBE8E8FBFBFBE8E8FBFBE8E8E8E8E8E8E8E8E8E8E8E8E8FBFBE8E8FBFBE8E8FBE8E8FBFBFBFBE8E8E8E8E8E8FBFBE8FBE8E8FBFBE8E8FBFBE8E8FBFBE8E8E8E8E8E8E8E8E8E8E8E8E$=$=$G%:$8$J"8#:"G$8$9#J$8$:"8#F#;$8$;"8#8$8$B$8(8"J$8(8"E$8$J$8$;"8#D"8#E"8"<"8$J$8"J$8$J)8" +E8E8E8E8E8E8E8E8E8FBFBFBE8FBFBE8E8FBFB9E8E8E8E8E8FBFBFBFBE8E8E8;FBFBE8E8FBFBFBE8E8FBFBFBFBE8E8FBFBE8E8E8FBFBE8E8FBFBFBFBE8E8FBFBE8FBFBE8E89FBFBE8E8FBFBE8FBFBE8E8FBFBE8E8FBFBJFBFBE8E8FBFBE8E8E8FBE8E8E8E8E8E8FBFB5FBFBE8E89E8FBFBFBFBE8^?DFDFDEDEDEDEDEDEDEJ%<%J%J%:"8$D"<":%F%F%J%J"8$J#J" +O)E8E8FBFBFBFBFBFBO3FBFBFBFB;FBFBFBFBE8FBFBFBE8E8FBFBFBFBFBFBFBFBFBFBFBFBDFBFBFBFBP,E8FBFBFBO-E8E8_1DEJ$;'J'9&J'9$8"E"8"<'D'D'J'J$8"J'Jv +O+E8FBFBE8E8E8E8E8E8O'E8FBFBFBFBE8FBFBE8E8E8;E8E8E8E8E8E8E8E8E8FBFBFBE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8BE8E8E8E8E8E8P+E8E8E8FBOFE8FBFBFBFBE8^@E8E$=$=$J$9#>#<"J";$9#8#8"H#;$9#B$9#B$9'8"J#8$9'8"E$8$<"A#J$8$J#8"J"8$J$9#I#D$=$=$ +FBFBFBFBFBFBFBFBFB9E8FBFBFBFBFBFBFBO7FBE8FBFBFBFBFBFBE8E8E8E8FBFBFBFBE8FBFBFBFBE8FBFBFBFBE8E8FBFBFB5FBFBE8FBFBFBFBE8E8FBFBFBE8FBFBFBFBE8FBFBFB6E8FBFBFBFBE86FBFBE8;FBFBFBE85E8FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBJ"8#9"9(9(8&8%8$9"8$8"D"8":)8$8$8&8"9(:&J+8$;(C(8&8"8$8$9(9(8&8"C'9&8"9(B#8$:'8#8$F&9$8&>"9&9$8$8$8$8(9$8$9(:"8" +O&FBFBFBFBE8FBFBFBFBFBE8E8FBFBFBFBFBE8E8FBFBFBE8FBE8FBFBFBFBFBFBFBE8FBFBE8E8E8FBFBFBFBE8FBFBFBFBFBFBFBFBE8FBFBFBE8FBE8FBFBFBFBFBE8FBFBFBFBE88E8FBFBFBFBFBE8E8FBFBFBFBFBE8FBFBFBFBFBE8E8FBFBFBFBFBE8E8FBFBFBE8FBFBFBFBFBFBFBE8FBFBFBFBFBE8E8FBFBFBFBFBE8E8FBFBFBE8FBE8FBFBFBFBE8E8FBFBFBE8FBE8FBFBFBFBFBE8FBFBFBFBFBE8FBFBFBFBE8FBFBFBFBFBFBFBFBFBE8FBFBFBFBFBFBE8FBFBE8FBFBFBE8FBFBFBFBFBFBFBFBFBFBFBFBE8FBFBFBFBFBE8FBFBFBFBFBFBE8FBFBFBFBFBE8E8E8E"?"?"Ft:&;&:z9tE##J#;%J$D#8#J%J$J$J#8#:# +P8FEFEFEFE=FEFEFEFEFEFE=FEFEFEFEFEFEFELF9F9F9F9O2F9F9F9O+F9F9F9=FEFEFEFEFEFEE.;s%:$@%8%9'8s(F#>#J$;#J"J';#J#J'J"C#J"C#J$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEFEFE>FEFEE8E8E8?E8;F9F9F9F9E8F9F9F9:E8E8=F9F9F9F9E8F9?E8F9F9LE8F9F9:E8FEFEC(8#8#;$8&>"@"8"8"8"8'9"8$9"8%D$=$<#J'J( +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8FEFEE8FEFEOLF9F9E8E8F9F9O1F9F9F9E8E8F9F9E"8"J"8"J$8"@#<$C#>#?#J$8"=#J"8"J#J# +E8E8:FEFE8FEFEE8E8E8E8E8FEFEE8E8E8E8FEFEOIF9F9E8E8E8E8O+E8E8O!E8E8O,E8E8B$:#J"9#="J#8#G$G%<%;$J"9#9%:2F%C$:,;%9(=$;%<':'D'<$;%:(F$ +FEFEE8E8E8O(FEE8E8FEKE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFE#?$9sJ#8#J':'9&F#8#9"8#<#<"8"8"9"8&D'9sA#8&9'8"8&;&:#=':&E&=&:#<"8&:#8# +O FEFEFEE8FEFEFEFEFEFEE8FE7E8E8FEFEBFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEE8E8E8E8E8F9F9E8E8E8F9F9E8F9E8E8F9F9F9F9E8E8F9F9F9E8E8F9E8E8F9F9F9F9E8E8F9F9E8F9E8E8F9F9F9E8E8F9F9E8E8F9F9E8E8F9F9F9F9E8E8E8F9F9E8E8E8F9E8E8F9F9E8E8E8F9E8E8F9F9E8E8E8E8J"8"J#8#<#=%J#8"J$8$9#<$8"J#8#E"8"<"8$B$8$F&:"8#9#?"8$:"F$8"="8#E"8#;"8$D" +ME8E89E8E8FEFEE8E8FEFEFEE8EE8E8FE@FEFEE8E8FEFEE8E8FEFEE8E8:E8E8F9F9E8E8E8E8F9F9F9F9E8E8F9F9F9F9F9F9F9E8E8E8E8E8E8E8F9F9E8F9F9E8E8F9E8E8F9E8E8E8E8F9F9E8J#JsE#8"="<%:sJ#8"J%J#8"J%:s<#8"B%J#9"8$D"8$ +=FEFE6E8E8E8FEE8E8E8FEFEE89FEFEE8KFEFEFEFEFE8E8F9LF9F9F9F9E8E8E8E8F9F9F9F9HE8E8E8F9F9F9E8F9F9F9B$:#J#J#9"@#<$J#8#J&J#9"J'A$H&J$8"D$8" +E8FEFEFEFE9E8E89FEFEE8FEFEE8FEFEBFEFEE8E8KFEFEE8E8E8CF9F9E8O E8E8E8E8E8E8E8F9F9F9F9E8E8E8O E8E8E8F9E8E8E8F9E"8"J$8$:"8$J#8#G$E$8$A$8"J"8$J"8$B$9#D"J"8$J$9#9#8"=$;#8"="8$J$ +FEFELE8FEFEFEFEE8FEFEFEE8O%FEFEE8E8E8FEFEE8FEFEFEFEE8E8FEFEFE;F9F9F9E88F9F9F9E8E8F9F9F9F9F9=F9F9F9E85E8F9F9F9F9F9F9E8F9F9F9F9F9E8F9F9F9E8BFEFEE8C,8$:$8&8"8"8"B':'9"8$9"8#9"B$8$8$8$9#J$8$9'9)8&8"J'9$8&>"9&9$8$9(B,8$:):&8"8$8"8$8$8(;&E&8"8&9$8&8$8" +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8;FEFEFEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEE8FEFEFEE8FE7E8F9F9F9F9E8F9F9F9F9F9F9E8F9F9E8F9F9F9E8F9F9F9F9F9F9E8F9F9F9F9F9E8E8E8F9F9F9F9F9E8E8F9F9F9F9F9E8F9F9F9F9E8F9F9E8F9F9F9E8F9F9E8F9F9F9F9F9F9F9F9E8F9F9F9F9F9E8F9F9F9F9E8F9F9F9F9E8F9E8F9F9F9E8F9F9F9F9F9F9E8F9F9E8F9F9E%9t8x8%C%:':zBs8vJs:%;r9rJ':z:$:s:&E&8r;r;$9t8s9&:'<$;'9r:z +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8E8E8=E8E8E8E8E8E8E86E8E8E8E8E8E83E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8J$J$ +Q2E8FEFESMFEFEE8J#J"8#J"8#J# +Q3E8E8P!F9F9F9O3F9F9F9P/E8E8J&J& +S6E8E8E8E8E8O3E8E8E8E8E8J#<%J#J%J# +P8FEFEFEFEFEFE=FEFEP-FEFEFEFEP8FEFEE.;s%:$@%8%9'8s(F#='J$<'J';#J#J#JsJ$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEFEFEE8E8FEFE;FEFEE8FEFEFEFEE8FEO(FEFEFEFEE8FEFEFE:E8E8>FEFECFEKE8FEFEC(8#8#;$8&>"@"8"8"8"8'9"8$9"8%D$>"8$8#J':#J#H'J#J"8$ +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8E8E8FEFEFEFE>FEFEE8E8FEFEFEFE"@#J$8"J$8"=#J#J# +E8E8:FEFE8FEFEE8E8E8E8E8FEFEE8E8E8FEFE;FEFEE8E8O(FEFEE8E8E8E8O,E8E8IE8E8B$:#J"9#="J#8#G$="9&8%;%9)8#8%E"9#9%:.8$E%9#8%:%=%9(I"9);%9*:%<$ +FEFEE8E8E8O(FEE8E8FEKE8E8FEFEFEFEE8FEE8E8E8FEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEE8E8FEFEFEFEFEFEFEE8FEFEE8FEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEE8FEFEJ#;sB"8#>#?$9sF$:#8#J"8#:#8%:'8#8)8%9s8"8#<#<"8"8"9":"F'8#8%:#>'8"8&9s;#:#8&9'8"8"8";' +O FEFEFEE8FEFEFEFEFEFEE8FEFEFEE8E8E8FEFE7E8FEFEE8E8E8E8E8E8FEFEE8E8FEFEE8E8FEE8E8FEFEE8E8E8E8E8E8E8FEE8FEFEE8E8E8FEFEE8E8FEFEE8E8FEFEE8E8E8E8E8E8E8E8FEFEE8E8FEFEE8FEE8E8FEFEFEFEFEE8E8FEE8E8FEFEFEFEE8E8FEFEE8FEFEFEFEE8E8FEFEJ"8"J#8#<#=%J$=#8"J#8#D#@"8#J#8#E"8"J#J$8$:"J#>"8#9#?"8":$8$ +ME8E89E8E8FEFEE8E8FEFEFEE8;FEFEE8E8E8FE7E8E8FEFEE8E8E8E8E87E8E8FEFEE8E89E8E8;FEFEE8E8FEFEE84E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEJ#JsE#8"="<%:sD$>#8"J#8"C%Js;#8"J%Js="E%G% +=FEFE6E8E8E8FEE8E8E8FEFEE8FEFEE8FEFEE89E8E8FEFEFEFEFE9E8E8E8FEKFEFEFEFEME8E8FEFEFEFEFEFEFEFEB$:#J#J#9"@#<$J$=#8#J#9"D&J#9"J&J&G' +E8FEFEFEFE9E8E89FEFEE8FEFEE8FEFE8FEFEE8FEFEE8E87FEFEE8FEFEE8E8E8CFEFEE8LFEFEE8E8E8O=FEFEE8E8E8E8E8E8E8E8E8E"8"J$8$:"8$J$8#8#8#G$="8$>#J#D"8$J"J#B$8$J$9#:$ +FEFELE8FEFEFEFEE8FEFEFEE8JFEFEE8FEFEFEFEE8E8E8FEFEFEFEFEE8FEFE(8"8$8$8)9(8$8$9'8"8$8"B"8#:#8$:+>"8( +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8#J'D'C';':'C';':'J'>#Js#C#D"J#>':$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEFEFEE8E8FEFE;FEFEE8FEFEFEFEFEFEO!FEFEFEFEE8FEFEFE8FEFEFEFEFEFEFEFEDFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFE6FEFEFEFEFEFEFEFECFEE8E8FEFEE8O/FEFEFEFEE8E8FEFEE8FEFEC(8#8#;$8&>"@"8"8"8"8'9"8$9"8%D$>"8$8#J"8&J'J#8#J"8$J"8$J#8#J#8#J$ +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8E8E8FEFEFEFE"9$:#J"J$8"=#J#J$8$B$8$B"9$9$8$8$8$B"9$9$8$8$8$J#J#J#>$8$ +E8E8:FEFE8FEFEE8E8E8E8E8FEFEE8E8E8FEFEE8FEFE?E8MFEFEE8E8E8E8FE8E8CFEFEE8E8FEFEFEFEE8E8FEFEE8FEFEE8FEFEE8E8FEFEFEFEE8E8FEFEE8FEFEE8FEFEE8E8FEFEFEFEE8E8FEFECE8E8O,E8E8O=E8E8FEFEE8E8FEFEB$:#J"9#="J%9#8#G$@-;%9%8%C"9#9%:*J%:(<%J%J%J$F%:(<%J$;%<'<.<%;':'J$ +FEFEE8E8E8O(FEE8E8FEDFEFEFEE8E8E8FEFEFEFEE8E8FEFEE8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8FEFEFEFEFEFEFEE8FEFEE8FEFE7FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEO*FEFEFEE8DFEFEFEE8DFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEFEFE;FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFECE8FEFEJ#;sB"8#>#?$9sD%;#8#J#8&9'8"8"8"8#s8"8#<#<"8"8":sC#<"8&:'J%J%J#<"8&:'9s8"<":&:#='="8%8&:'9&;& +O FEFEFEE8FEFEFEFEFEFEE8FEE8E8FEFEE8E8FEFE@E8E8FEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8FEE8FEFEE8E8E8FEFEFEE8E8E8FEE8E8FEFEFEFEE8E8FEFEO)E8E8FEFEDE8E8FEFEO)E8E8E8FEE8E8FEFEFEFEE8E8FEFEFEE8E8FEE8E8FEFEE8E8FEFEE8E8FEFEE8E8E8E8E8FEE8E8FEFEFEFEE8E8FEFEFEFEE8E8E8FEFEE8E8E8J"8"J#8#<#=%J$<#8"J"8#9#@#F#8#E"8"J"=$8$J$J$J$J"=$8$J"F$8">$<"=$8$:"8#;"8# +ME8E89E8E8FEFEE8E8FEFEFEE8#J%J#J%:sJ#;$G%:"8$:"8$ +=FEFE6E8E8E8FEE8E8E8FEFEE89FEFEE8KFEFEFEFEE8E8E8E8E8FE6E8FEFE8FEFEFEFEQ,FEFE8FEFEFEFEE8EE8E8FEFEE8FEFEFEFEE8FEFEFEE8FEFEFEB$:#J#J#9"@#<$J"@#8#J$B&="8"D#9"J'B$8$B$8$B"?$8$8$8$B"?$8$8$8$J'J$G'9$8":$8"J$8$ +E8FEFEFEFE9E8E89FEFEE8FEFEE8FEFE7FEFEFEE8E8"@#8$:$8&8$8"9(C'D'C';':'C';':'J#8$:$8&8$8"9(C#8#8"8$8"8$8$8(8"9"8%8$8"9(:&;&C$8$9' +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8E8E8:FEFEFEFEE8E8FEFEFEFEFEE8FEFEFEFEE8FEFE7E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEE8FEFEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE86FEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEE8FEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEFEFEFEE8FEFEFEFEFEE8FEFEFEFEE8FEFEE8FEFEE8FEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEE8E%9t8x8%C%:':zBs9%:#J':r;r9#8#C':z@t8z:&E%F%E%=%<%E%=%<%F$:t8z:&D'8t8s9&9z:&9':'Ds:% +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8E8E8E8E8E8E8E8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE.;s%:$@%8%9'8s(F#A"J$9'J';#J';#J#J"<':'G"<':'D&;':$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEFE"@"8"8"8"8'9"8$9"8%D$@";#J"8&J'J(J"J"J( +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8FEFEFE#?$9sD">#8#J#8&9'8"8"8"8#s8"8#<#<"8"8":sC#<#8&8'E'E"J"J& +O FEFEFEE8FEFEFEFEFEFEE8FEE8E8E8FEFE@E8E8FEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8FEE8FEFEE8E8E8FEFEFEE8E8E8E8FEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEE8GE8FFEFEE8FEFEJ"8"J#8#<#=%J"B#8"J"8#9#@#F#8#E"8"J"8'8"E$8$B"J"J( +ME8E89E8E8FEFEE8E8FEFEFEE88FEE8E8FECE8E8E8E8E8FEFEE8E8FEFEE8E8EE8E8E8E8FEFEE8E8FEFEE8E8FEFEFEGFEGFEFEE8E8E8FEFEJ#JsE#8"="<%:sD$8";#8"J%;"<"8s;#8"JsJ#E%F$8"J$8" +=FEFE6E8E8E8FEE8E8E8FEFEE8FEFEFEFEFEFEE8KFEFEFEFEE8E8E8E8E8FE6E8EE8E8FEFEFEFEFEFEFEFEBFEFEFEFEB$:#J#J#9"@#<$J&8"9#8#J$B&="8"D#9"J$:#J'B&8"8$8$8$8$B&8"8$8$8$8$J$8$ +E8FEFEFEFE9E8E89FEFEE8FEFEE8FEFE7E8E8E8E8E8E8FEFEE8E8"A)8$8'8$:(9$8$9(E#8"9':'F#8"9':'D&;' +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8:FEFEFEFEE8E8FEFEFEFEFEE8FEFEFEFEE8FEFE7E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEE8E8FEFEFEFEE8E8FEFEFEFEFEFEE8FEFEFEFEFEE8FEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEE8FEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEE8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEE8E8FEFEFEFEE8E%9t8x8%C%:':zBs;sJ':r;r9#8#C':zC%:z;&:s:&F&:%<%G&:%<%F$=% +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8E8E8#J"<&C,s(J#@#J"C#D"J&;$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEE8E8E8E8E8:FEFEE8FEFEFEFEFEFEO!FEFEFEFEE8FEFEFE;FEFEFEFEE8FEFEFE:E8E8"@"8"8"8"8'9"8$9"8%D$F#J"8&J'J(J"J"J(J"8$J(B":#8&8'8#J#J( +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8FEFEFEFEP%FEFEE8E8E8FEFEE"8"J"8"J$8"@#<$C#I#J"J$8"=#J"8"=#J$=$8$8$8$D$;$8$8$8$B";"9$8$J#;#J"J#J#J";" +E8E8:FEFE8FEFEE8E8E8E8E8FEFEE8E8FEFE?E8MFEFEE8E8E8E8;E8E8E8E8O)FEFEE8FEFEE8E8FEFEFEFEE8E8FEFEFEFEE8FEFEE8E8FEFEFEFEE8E8FEFEE8E8FEFEE8E8FEFE#?$9sD&:#8#J#8&9'8"8"8"8#s8"8#<#<"8"8":sC#<#8&8'E'E&J"J&J#<#J'9&>%G"J#<"8&:'9s$8%;&:#='="8%8&:'9&;&F& +O FEFEFEE8FEFEFEFEFEFEE8FEE8E8E8FEFEE8E8FEFE@E8E8FEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8FEE8FEFEE8E8E8FEFEFEE8E8E8E8FEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEE8E8FEFECE8FFEFEE8FEFEEFEFEE8E8#J$8(8"=%J$J"=$8$J"F$8">$<"=$8$:"8#;"8#C( +ME8E89E8E8FEFEE8E8FEFEFEE88E8E8E8E8FECE8E8E8E8E8FEFEE8E8FEFEE8E8EE8E8E8E8FEFEE8E8FEFEE8E8FEFEE8E8FEFE@FEGFEFEE8E8E8FEFE9E8E8E8E8E8CFEFEE8E8FEFEE8FEFEE8E8FEFEE8E8O*E8E8E8;E8FEFEE8E8FEFE8E8FEFEE8E8FEFEE8E8FEFEE8E8FEFEFEE8E8FEE8E8FEFEE8E8E8FEFEJ#JsE#8"="<%:sJ#8"J%;"<"8s;#8"JsJ#E%J$8"J"J%J"J#J%:sJ#;$G%:"8$:"8$ +=FEFE6E8E8E8FEE8E8E8FEFEE89FEFEE8KFEFEFEFEE8E8E8E8E8FE6E8EE8E8FEFEFEFEO*FEFEFEFEO?E8DFEFEFEFEEE86FEFEO(FEFEFEFEE8EE8E8FEFEE8FEFEFEFEE8FEFEFEE8FEFEFEB$:#J#J#9"@#<$J#8#J$B&="8"D#9"J$:#J'J$8$8$8$B&8"8$8$8$8$J$8$J'D#J"J'J$G'9$8":$8" +E8FEFEFEFE9E8E89FEFEE8FEFEE8FEFEBFEFEE8E8E8E8E8E8E8E8O(E8FEFEE8E8E8E8E8E8E8E8E8FEE8E8E8FEE"8"J$8$:"8$J#8$8#8#G$?"J#G"8$J"8"J$9#C$9#B$8$J(J$J$9'8"=#J"J$J$9#H#J$9#<$D$9#8#8";#8"E(;$ +FEFELE8FEFEFEFEE8FEFEFEE8JFEFEFEFEE8FEFEE8E8E8FEFEFE"A)8$8'8$:(9$8$9(C':':'F#8"9':'D&;'J"8#;$8$8$8$8$8$9(8&8"J"8#<$8'8$J$8$8$8&8$8"9(C*8$8"8$8$8(8"9"8%8$8"9(:&;&D& +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8E8:FEFEFEFEE8E8FEFEFEFEFEE8FEFEFEFEE8FEFE7E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEE8E8FEFEFEFEE8E8FEFEFEFEFEFEE8FEFEFEFEFEE8FEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEFEE8FEFEFEE8FEFEFEFEE8E8FEFEFEFEE8E8FEFEFEE8E8FEFEFEFEE87FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEE8E8FEFEFEE8FE5FEFEFEFEFEFEFEFEFEE8FEFEFEFEFE8FEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEE8FEFEFEFEFEE8E8FEFEFEFEFEE8E8FEFEE8FEFEFEFEFEFEFEFEE8FEFEFEFEFEE8FEFEFEFEE8FEFEE8FEFEE8FEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEE8E%9t8x8%C%:':zBs8&:#J':r;r9#8#C':zC%:z;&:s:&E%<%<%G&:%<%F$=%F$;&;s8s8s:&:r:#Et8zD$;s8z:&E&8t8s9&9z:&9':'F$ +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8E8E8E8E8E8E8E8E8%J#J%J#;%<%G#=%<%I#9r;%G#<%=%;# +P8FEFEFEFEFEFE;FEFEQ;FEFEFEFE>FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE.;s%:$@%8%9'8s(F#>'J$9'J';#J'J#J"<':'D#>':'G"=&:'D#=';':$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEFEFEFEE8E8E8:FEFEE8FEFEFEFEFEFEO!FEFEFEFEE8FEFEFE8FEFEFEFEFEFEO4E8E8?FEFEFEE8E8FEFEFEFEE8E8FEFEFEFEFEFEE8E8FEFEFEFEE8E8FEFEFEE8E8E8E8E8FEFEE8E8FEFEFEFEFEFEE8E8FEFEFEFEE8E8FEFEE8FEFEC(8#8#;$8&>"@"8"8"8"8'9"8$9"8%D$@";#J"8&J'J"8%J#J"J$J"J$>"8$ +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8E8FEFE$>#J"J$8"=#J$J$;$8$8$8$B#>$8$8$8$D$E$8$B#>"?$8$ +E8E8:FEFE8FEFEE8E8E8E8E8FEFEE8E8FEFEE8FEFE?E8MFEFEE8E8E8E8=E8FEFEP#FEFEE8FEFEE8E8FEFEFEFEE8E8FEFEE8E8FEFEE8E8FEFEFEFEE8E8FEFEFEFEE8FEFEE8E8FEFEE8E8E8FEFEE8E8FEFEB$:#J"9#="J$9#8#G$@-;%9%8%C"9#9%:*J%;'8#8%;%9(;(D%E$J$>%J$ +FEFEE8E8E8O(FEE8E8FEEFEFEFEE8E8FEFEFEFEE8E8FEFEE8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8FEFEFEFEFEFEFEE8FEFEE8FEFE8FEFEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEE8O?FEFEE8FEFEFEFEO*E8FEFEJ#;sB"8#>#?$9sD&:#8#J#8&9'8"8"8"8#s8"8#<#<"8"8":s<$:'9'9#8%:'8"8&9&8"C'E"J"?&J$ +O FEFEFEE8FEFEFEFEFEFEE8FEFEE8E8FEFEE8E8FEFE@E8E8FEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8FEE8FEFEE8E8E8FEFEFEFEFEE8FEFEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8E8FEFEE8E8FEFEE8FEE8E8FEFEFEFEE8E8FEE8FEFEE8E8FEFEE8OAE8E8E8E8FEFEEFEFEE8J"8"J#8#<#=%J"8$;#8"J"8#9#@#F#8#E"8"F%:$8(8"F#?"<$8"E$8$B"J"?#J$ +ME8E89E8E8FEFEE8E8FEFEFEE8:E8E8FEFEE8E8FECE8E8E8E8E8FEFEE8E8FEFEE8E8FEFEFEE8FEFEE8E8FEFEE8FEFEE8E8E8E8E8FEFEE8E8FEFEE8E8FEFEFEOAFEE8E8IFEFEE8J#JsE#8"="<%:sJ#8"J%;"<"8s;#8"Js:%<%?#D%J%F$8"J$8"J$ +=FEFE6E8E8E8FEE8E8E8FEFEE89FEFEE8KFEFEFEFEE8E8E8E8E8FE6E8E8E8FEFEFEFEFEFEE8E8FEFEFEFEEFEFEFEFEFEFEFEFEO"@"8#9"9(8(:(8+8$8"8&;$8$9(E#8"9':'C$8$9':'F#8":%;'C$8$:$<' +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8E8E8:FEFEFEFEE8E8FEFEFEFEFEE8FEFEFEFEE8FEFE7E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEE8E8FEFEFEFEFEE8E8FEFEFEFEFEE8E8FEFEFEFEE8FEFEE8FEFEE8FEFEE8FEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEE8FEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEE8FEFEFEFEE8E%9t8x8%C%:':zBs:%9#J':r;r9#8#C':z@t:&:&<&:z9$"@"8"8"8"8'9"8$9"8%D$=#=#J"8&J'J$8$J"J$@" +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8E8E8FEFE#?$9sE$;#8#J#8&9'8"8"8"8#s8"8#<#<"8"8":sB';'8"8&E"J" +O FEFEFEE8FEFEFEFEFEFEE8FEFEFEE8E8E8FEFE@E8E8FEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8FEE8FEFEE8E8E8FEFEFEFEFEE8E8FEFEFEFEE8E8FEFEE8FEE8E8FEFEE8O#E8J"8"J#8#<#=%J#8"J"8#9#@#F#8#E"8"J$8";$8$:"G"J" +ME8E89E8E8FEFEE8E8FEFEFEE8EE8E8FECE8E8E8E8E8FEFEE8E8FEFEE8E87FEFEE8E8FEFEE8E8FEFEE8FEO#FEJ#JsE#8"="<%:sJ#8"J%;"<"8s;#8"JsG#J$8"J$8" +=FEFE6E8E8E8FEE8E8E8FEFEE89FEFEE8KFEFEFEFEE8E8E8E8E8FE6E8E8E8CFEFEFEFELFEFEFEFEB$:#J#J#9"@#<$J$<#8#J$B&="8"D#9"J&8"8$8$8$8$J&8"8$8$ +E8FEFEFEFE9E8E89FEFEE8FEFEE8FEFE9FEFEE8FEFEE8E8"A$8$8(:'8"8$8"E#8"9':'C$8$;#8"9' +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8:FEFEFEFEE8E8FEFEFEFEFEE8FEFEFEFEE8FEFE7E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEFEFEFEE8FEFEFEFEFEE8E8FEFEFEFEE8FEFEE8FEFEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEE8FEFEFEFEE8E%9t8x8%C%:':zBs:#;#J':r;r9#8#C':zAs9&<%9tE&:%<%Ds;&:% +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8E8E8E8E8E8#;%G#@#;%;# +P8FEFEFEFEFE=FEFEQ'FEFEFEFEO F9F9F9F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE.;s%:$@%8%9'8s(F#>&J$9'J';#JsJ':2B':&;&E#J"?"<'D#A"<':$ +FEFEFEFEE8FEE8FEFEFEFEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEE8FEFEFEFEFEFEFEFEFEFEE8FEFE;FEFEE8FEFEFEFEFEFEO!FEFEFEFEE8FEFEFE9FEO(F9F9F9F9E8F9F9F9F9F9E8F9E8F9F9F9F9E8F9F9F9F9F9F9F9F9E8E8E8F9F9E8F9F9F9F9E8F9F9F9F9?FEFEFEFEE8E8FEFEFEFEFEFEFEE8E8FEFEE8FEFEC(8#8#;$8&>"@"8"8"8"8'9"8$9"8%D$=(8#J"8&J'J#8#J#J':'8":#8"D"<(9(C$J"?"J$@" +FEFEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8FEFEE8E8FEFEE8E8E8E8E8E8E8FEFEFEFEE8FEFEE8E8E8FEFEFEFEFEFE:FEFEE8FEE"8"J"8"J$8"@#<$C#>";":#J"J$8"=#J$8":$8"="F$=";"9";"C#J$=$;$8$B#@$;$8$ +E8E8:FEFE8FEFEE8E8E8E8E8FEFEE8E8E8E8FEFE?E8MFEFEE8E8E8E8OGF9F9E8E8F9F9E8E8F9F9F9E8E8E8E8E8E8E8>FEFEE8FEFEE8FEFEE8E8FEFEE8E8FEFEE8FEFEE8E8FEFEB$:#J"9#="J&9#8#G$@-;%9%8%C"9#9%:*J%:$8'8%J"9#:"9#:"J$;&;&J$=$J$H$ +FEFEE8E8E8O(FEE8E8FECE8FEFEFEE8E8E8FEFEFEFEE8E8FEFEE8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE8E8FEFEFEFEFEFEFEE8FEFEE8FEFE8FEFEFEFEFEFEFEFEFEFEE8FEFEFEFEFEFE9F9E8E8F9E8E8E84F9F9F9E8F9F9F9E8E8F9F9F9E8MFEFEE8FEFEE8EFEFEE8E8FEFEJ#;sB"8#>#?$9sC&;#8#J#8&9'8"8"8"8#s8"8#<#<"8"8":s8"<"9'9"<%8%D#8#9"8#;"8#?";s:&:&;&:sC#8#E"?"J" +O FEFEFEE8FEFEFEFEFEFEE8FEFEFEE8FEFEE8E8FEFE@E8E8FEE8E8FEFEFEFEE8E8FEFEE8E8E8E8E8FEE8FEFEE8E8E8FEFEFEE8E8FEFEE8E8FEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8F9F9E8F9F9F9F9F9E8E8F9F9F9F9E8F9F9F9F9E8F9F9F9E8E8E8E8E8E8GE8J"8"J#8#<#=%J(<#8"J"8#9#@#F#8#E"8"J$8$9'J#8#:#8#J"8$8(9(J"?"J" +ME8E89E8E8FEFEE8E8FEFEFEE88FEFEE8E8E8FEFEE8E8FECE8E8E8E8E8FEFEE8E8FEFEE8E88FEFEE8E8FEFEE8FEFEFEFEE8BE8E8F9F9E8E8F9F99E8E8F9F9F9F9E8E8E8F9F9F9F9E8E8E8F9F9KFEFEGFEJ#JsE#8"="<%:sJ#8"J%;"<"8s;#8"JsD%<"8"J#8";#8";""B#8#:(8"<"9(J':'8"8#G':&;&D$8$J#8";#8"9'C$8$;#8"9' +E8E8FEFEFEFEE8E8E8FEFEFEFEFEFEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEE8E8FEFEFEFEE8FEFEFEFEFEFEFEFEFEFEFEFEFEFEE8FEFEFEE8E8E8:FEFEFEFEE8E8FEFEFEFEFEE8FEFEFEFEE8FEFE7E8FEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEFEE8FEFEFEFEFEE8FEFEE8FEFEFEFEFEE87E8F9F9F9F9E8E8F9F9F9F9E8F9F9F9E8F9F9F9F9E8E8F9F9F9E8E8F9F9F9E8F9F9F9F9F9F99FEFEFEFEFEFEE8FEFEFEFEE8FEFEFEFEFEFEFEFEFEE8FEFEFEFEE8E%9t8x8%C%:':zBs:$:#J':r;r9#8#C':zB';&9$8$:&J':'9tD%<$=$EsJ&;&:%Ds;&:% +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E82E8E8E8E8E8E8E8$J":";":"J":"F":";":"JS8Q":"JRJr +O5T,FFFFFFFFFFFF4FFFFFFFFFFFFFFFFFFFFFO"FFFFFFFFF8FFFFF8MQ@FFFFFF9UGDEJ$8$9$8$J$8$9$J#A";$8$J#?#J#J#?#J$J#:"A"J"J"G$J">)J"J" +CFFFFFFFFFFFFFFFFFFFFFFFFOMFFFFFFFFFFFFF8F8F8AF8F8F8FFFFFFFFFFFFQLF8F8F8F8JF8F84F8F8F8F8KFFFFF8EFFFFFFFFP)F8O9F8F8FFFFO2FFFFFFF8F8F8F8FFFF?FFUEDEJ#8%8+:Q;(:RJ$8%:(9P=%J$>$I$8$:#?Q8+D$8$D$8$9$8$J$8$8#8#<$8$;%:"8%8"B#8%<%:)9#8%D#8#>%<(=%J%8$;%FFFFFFFFFFFFFFFFFFFFFFFFFFF8FFFFO0FFFFF8O%FFFFFFFFU8DFJ#8#;#8#H"9$9"9"<%:"8$>%J#8#D":#:"8$<$="8$=#8#J#8"<%9"9"9"J$8#>"H"9%8%8$9$:#8%J"8%8$8$?"8#J#:#9"8%8":%:"8$;"8"8"8"J"J&8"8%8%8%J# +DFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8FFF8F8F8F8F8F8F8FFFFFFFFF8FFF8F8F8F8FFF8F8F8F8F8F8F8U7DEDEBU"U8"8#8"9"8#8"8UD"9";#@"9"=#8#<#G"8#8"J"9"G"9";"8#8"J#J":#@"9"J":$;%8"J":"<"HUD":";"9"="8"I#@"8#9":":#@"9"JU"U"U"UC$>&;U"U?":":"DU"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"U"UE"8) +F8FFF8F8FFFFF8F8FFF8F8F8F8F8F8FFFFF8F8F8F8FFF8F8FF:F8F8F8F8FFF8F8FFQAF8F87FFF8F8F8F8PMF8FFFFFFFFFFFFFFF89F8F8F8F8F8F8F8FFF8F8F8F8F8F8F8F8F8F8F8F8:F8F8F8FFFFF8F8FFFFFFFFF8FFF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8E8E0E0E0E0E0DEDEE8J$8$9$8$G"HQA#9"9$J$8$J#J$8$J$8"9QJ#D$:"?"G"J#I#J">Q:QF$8$J#:$8":"9"J' +CF8FFF8F8FFF8F8FFF8F8FFF8F8F8F8F8FFFFFF:F8FFF8F8FFF8?F8F89F8FFF8F8FFF8R(F8F8F8FFPIFFFFF8F8F8FFF8F8O,FFFFF8F8GF8F8FFFFFFFFF8O3FFFFFFFFFFFFF8F8>F8F8F8F8FFFFBz9":";":"9u<&B"J#:"J":"J":"J":"J#8$<&I#JuJ"8"J"JzJ$;zJzF$9$ +5F8F8F8F8F8F8F8F8F8FFFFFF7F8F8FF:F8F8O.F8F8R,F8FFQ0FFFFF8F8F8F8F8F8F8F8F8F8EF8EF8FFO"FFKKF8:F8F8F85F8BTJF8E8DFDFDEDEE8J&<":$8'J"<":$D"9"J$8$9#9"<&J$8$D$8$9$8$J"J":"J#J":";":$;"8"Jr9&<"9"<'J&8">$J":"A# +OMF8F8F8F8F8FFFFFFFFFFFFF8F8F8F8O(FFFFFFFFFFFFFFR(F8FFFFFFFFF8FFFFFFF8F8F8F8F8;F8FFFFFFFFF8F8FFFFFFFFF8F8FFFFFFFFF8ODFFJFFFF6FFFF9FFFFFFFFFFFFF8FFGF8F8F8F8F8F8FFFFF8FFFFFFFFF8O8F8F8F8F8F8F8FFFFF8EFFFFFFFFJ#8%8"8"9"9"8P8$8%=%>#J$8$;$9$8%;$8$8"8$9"J$8$9$8$<#?#>$8":P8#8"9"9"E#?#?#?#J$8$8#8%:$8$";";":"="8"=$J#J"9#:#:";# +OKF8F8F8F8F8F8O!F8F8F8F8F8F8F8R)F8F8F8F8F8F8%<&;zD%>#>%=%Js8u8s9r9'Fr=%:%8%:&Du:%<'9$9%F#;sz +i5F4=" +F4F5 +ENDBITMAP +%%EndBinary +0 -208 1000 792 C +FMENDPAGE +%%EndPage: "23" 1 +%%Page: "22" 2 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Object-Oriented Simulation) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +479.9 719.46 132.1 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Exercise: Object-Oriented Simulation) 132.1 722 T +0 14 Q +-0.1 (This is a more extended exercise to design a simulation based upon CLOS. The domain of) 54 697.67 P +0.23 (your simulation is up to you, but some suggested applications are a submarine scenario, a) 54 682.67 P +0.86 (Star T) 54 667.67 P +0.86 (rek scenario, a hack/rogue like cave-exploration game, or a land battle simulation.) 88.98 667.67 P +-0.16 (The end goal, obviously) 54 652.67 P +-0.16 (, is to apply this to ORBIS, but that does not necessarily mean that) 187.93 652.67 P +-0.14 (a submarine simulation is the only \050or even best\051 domain on which to practice the core ob-) 54 637.67 P +-0.84 (ject-oriented concepts and CLOS constructs. So choose whichever domain you think would) 54 622.67 P +(be interesting and in which it would be feasible to do something in the time available.) 54 607.67 T +0.97 (The basic idea is to have instances of several classes of objects that represent entities in) 54 577.67 P +0.1 (your \322world\323. Each class would have certain behaviors assigned to it. The top-level simu-) 54 562.67 P +0.42 (lation loop could be quite simple, since the more complex behaviors are assigned to each) 54 547.67 P +(object individually) 54 532.67 T +(. For instance, the body of your main loop might look like:) 158.48 532.67 T +2 12.5 Q +(\050mapc #\325Act \051) 54 518.67 T +0 14 Q +(or maybe) 54 504.17 T +2 12.5 Q +(\050loop for Instance in do) 54 490.17 T +(\050Act Instance\051) 69 476.67 T +(\050if \050Simulation-Over?\051) 69 463.17 T +(\050Exit-Simulation\051\051\051) 99 449.67 T +0 14 Q +0.52 (Dif) 54 420.17 P +0.52 (ferent versions of the) 72.41 420.17 P +2 12.5 Q +1.11 (Act) 196.57 420.17 P +0 14 Q +0.52 ( method might be de\336ned for dif) 219.07 420.17 P +0.52 (ferent classes of objects, or) 403.91 420.17 P +0.67 (there might be relatively standard versions that make use of other methods that would in) 54 405.17 P +-0.15 (turn be specialized on each object type. For instance,) 54 390.17 P +2 12.5 Q +-0.32 (Act) 352.44 390.17 P +0 14 Q +-0.15 ( might be made up of) 374.94 390.17 P +2 12.5 Q +-0.32 (Sense) 496.93 390.17 P +0 14 Q +-0.15 ( and) 534.43 390.17 P +2 12.5 Q +-0.64 (Interact) 54 375.17 P +0 14 Q +-0.3 (.) 114 375.17 P +2 12.5 Q +-0.64 (Sense) 120.7 375.17 P +0 14 Q +-0.3 ( might be a class-speci\336c way of trying to determine who is near to you,) 158.2 375.17 P +1.4 (making use of, say) 54 360.17 P +1.4 (,) 162.27 360.17 P +2 12.5 Q +3 (Location) 170.67 360.17 P +0 14 Q +1.4 ( slots and instance-speci\336c sensing capabilities. E.g. in a) 230.67 360.17 P +1.76 (Star) 54 345.17 P +1.76 (-T) 76.27 345.17 P +1.76 (rek scenario you might say a ship can sense anybody within 10*Current-Sensor) 89 345.17 P +1.76 (-) 553.34 345.17 P +-0.76 (Power) 54 330.17 P +-0.76 (-Level units, while an asteroid doesn\325) 89.49 330.17 P +-0.76 (t sense anything. Once another object is sensed,) 296.19 330.17 P +0.2 (the current object could) 54 315.17 P +2 12.5 Q +0.44 (Interact) 190.9 315.17 P +0 14 Q +0.2 ( with it, with the course of action and outcomes of any) 250.9 315.17 P +2.92 (actions taken to be taken determined by the class of objects, aggressiveness, current) 54 300.17 P +-0.22 (strengths and characteristics of each object, etc. Y) 54 285.17 P +-0.22 (ou have great freedom in the design; just) 331.33 285.17 P +-0.01 (be sure to make use of the capabilities objects and methods provide. T) 54 270.17 P +-0.01 (ry to concentrate on) 446.46 270.17 P +0.61 (the general simulation framework, which will emphasize the OO capabilities, rather than) 54 255.17 P +(spending all your time implementing some very detailed model for one object.) 54 240.17 T +-0.16 (T) 54 210.17 P +-0.16 (wo common types of simulation are ones where actions occur only after every user) 61.57 210.17 P +-0.16 (-spec-) 523.8 210.17 P +-0.4 (i\336ed \322move\323 of some main player) 54 195.17 P +-0.4 (, or ones that start and run continuously) 241.57 195.17 P +-0.4 (. Y) 459.51 195.17 P +-0.4 (ou may choose) 474.82 195.17 P +(either type.) 54 180.17 T +-0.33 (Y) 54 150.17 P +-0.33 (ou will need some sort of interface to show what is going on in your simulation. If you\325re) 62.71 150.17 P +0.1 (familiar with CLIM, that might be a good choice. If not, I have put together a very simple) 54 135.17 P +0.23 (CLIM library that lets you create a window and draw text, various geometric objects, and) 54 120.17 P +-0.54 (a submarine icon on the window) 54 105.17 P +-0.54 (. Information on this library is attached. Y) 232.74 105.17 P +-0.54 (ou could also put) 463.57 105.17 P +-0.62 (together a simple ASCII "graphics" display) 54 90.17 P +-0.62 (, or \050in a pinch\051 just use textual output. One sug-) 292.78 90.17 P +0.81 (gested approach is to have your main simulation functions update some sort of Location) 54 75.17 P +-0.02 (slot in your objects, then have a :before method that erases the object from its old position) 54 60.17 P +FMENDPAGE +%%EndPage: "22" 2 +%%Page: "21" 3 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Defgeneric) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +3 F +0 X +(n) 54 728.67 T +224.1 727.18 67.17 727.18 2 L +V +1.02 H +0 Z +N +1 14 Q +(:argument-precedence-order) 67.17 728.67 T +0 F +0.39 (List the ar) 54 713.67 P +0.39 (gs \050as speci\336ed in the defgeneric parameter list\051 in the order you want. The de-) 111.29 713.67 P +(fault is to consider them in left to right order) 54 698.67 T +(. For instance, consider:) 302.49 698.67 T +2 12.5 Q +(\050defmethod Foo \050Item \050L list\051\051) 54 669.67 T +( \050Frobify Item L\051\051) 54 656.17 T +(\050defmethod Foo \050\050L list\051 Item\051) 54 629.17 T +( \050Munge Item L\051\051) 54 615.67 T +0 14 Q +-0.16 (Now consider a call to) 54 587.67 P +2 12.5 Q +-0.35 (Foo) 182.66 587.67 P +0 14 Q +-0.16 ( with two lists:) 205.16 587.67 P +2 12.5 Q +-0.35 (\050Foo \325\050A B C\051 \325\050D E F\051\051) 290.87 587.67 P +0 14 Q +-0.16 (. The second ver-) 461.3 587.67 P +-0.46 (sion of) 54 572.67 P +2 12.5 Q +-0.99 (Foo) 95.08 572.67 P +0 14 Q +-0.46 ( will get invoked, since it has the more speci\336c match on the \336rst ar) 117.58 572.67 P +-0.46 (gument, and) 489.24 572.67 P +(the ar) 54 557.67 T +(guments will get munged instead of frobi\336ed. However) 85.23 557.67 T +(, if you had \336rst done:) 394.97 557.67 T +2 12.5 Q +(\050defgeneric Foo \050Item1 Item2\051) 54 528.67 T +-1.23 ( \050:documentation "Foo takes 2 entries and Munges or Frobifies them"\051) 54 515.17 P +( \050:argument-precedence-order Item2 Item1\051\051) 54 501.67 T +0 14 Q +0.59 (then) 54 472.17 P +2 12.5 Q +1.26 (\050Foo \325\050A B C\051 \325\050D E F\051\051) 82.19 472.17 P +0 14 Q +0.59 ( would have gotten the \336rst version, since it is has a) 262.24 472.17 P +0.1 (more speci\336c match on) 54 457.17 P +2 12.5 Q +0.21 (Item2) 188.14 457.17 P +0 14 Q +0.1 (, which is listed \336rst in the) 225.64 457.17 P +2 12.5 Q +0.21 (:argument-precedence-or-) 378 457.17 P +(der) 54 442.17 T +0 14 Q +( entry) 76.5 442.17 T +(.) 107.86 442.17 T +FMENDPAGE +%%EndPage: "21" 3 +%%Page: "20" 4 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Defgeneric) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +356.86 719.46 255.14 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Defgeneric) 255.14 722 T +0 14 Q +(:documentation) 54 697.67 T +(:method) 54 682.67 T +(:method-combination) 54 667.67 T +(:ar) 54 652.67 T +(gument-precedence-order) 68.52 652.67 T +3 10 Q +(n) 54 629.67 T +153.27 628.18 67.17 628.18 2 L +V +1.02 H +N +1 14 Q +(:documentation) 67.17 629.67 T +0 F +-0.21 (Sets up basic generic function \050name, number and names of ar) 54 614.67 P +-0.21 (guments\051 plus a documenta-) 400.38 614.67 P +(tion string.) 54 599.67 T +2 12.5 Q +(\050defgeneric Area \050Geometric-Object\051) 54 585.67 T +(\050:documentation "Area of geometric object in square meters"\051\051) 69 572.17 T +3 10 Q +(n) 54 549.67 T +112.45 548.18 67.17 548.18 2 L +V +N +1 14 Q +(:method) 67.17 549.67 T +0 F +-0.08 (Lets you de\336ne multiple methods in one location. Use defmethod if you want the methods) 54 534.67 P +0.05 (to be together with the class de\336nition \050i.e. all stuf) 54 519.67 P +0.05 (f related to rectangles in one place\051, use) 335.3 519.67 P +0.51 (defgeneric if you want the methods to be together with each other \050i.e. all stuf) 54 504.67 P +0.51 (f related to) 496.33 504.67 P +(area in one place\051.) 54 489.67 T +2 12.5 Q +(\050defgeneric Area \050Geometric-Object\051) 54 475.67 T +(\050:documentation "Area of geometric object in square meters"\051) 69 462.17 T +(\050:method \050\050C Circle\051\051 \050* pi \050expt \050Radius C\051 2\051\051\051) 69 448.67 T +(\050:method \050\050R Rectangle\051\051 \050* \050Width R\051 \050Height R\051\051\051) 69 435.17 T +( ...\051) 54 421.67 T +3 10 Q +(n) 54 399.17 T +184.52 397.68 67.17 397.68 2 L +V +N +1 14 Q +(:method-combination) 67.17 399.17 T +0 F +-0.2 (Allows you to change how inherited values get returned for a given method. The default is) 54 384.17 P +1.06 (to return a single value that is the value of the most speci\336c method. However) 54 369.17 P +1.06 (, you can) 504.95 369.17 P +(specify that the values get combined into a list, added together) 54 354.17 T +(, etc.) 403.01 354.17 T +(Some options:) 54 339.17 T +114 309.11 54 309.11 2 L +V +1.25 H +N +2 12.5 Q +(STANDARD) 54 310.17 T +0 14 Q +(The default.) 54 295.67 T +91.5 265.6 54 265.6 2 L +V +N +2 12.5 Q +(PROGN) 54 266.67 T +0 14 Q +(Execute all methods that apply in most-speci\336c to least-speci\336c order) 54 252.17 T +(.) 442.46 252.17 T +2 12.5 Q +(\050defgeneric Print-Identity \050Obj\051) 54 238.17 T +( \050:method-combination progn\051\051) 54 224.67 T +(\050defmethod Print-Identity) 54 211.17 T +286.5 210.1 249 210.1 2 L +V +N +(progn) 249 211.17 T +( \050\050R Rectangle\051\051) 286.5 211.17 T +( \050print "I\325m a Rectangle"\051) 54 197.67 T +(R\051) 69 184.17 T +(\050defmethod Print-Identity) 54 170.67 T +286.5 169.6 249 169.6 2 L +V +N +(progn) 249 170.67 T +( \050\050S Square\051\051) 286.5 170.67 T +( \050print "I\325m a Square"\051) 54 157.17 T +(S\051) 69 143.67 T +(\050Print-Identity Square-1\051) 54 116.67 T +("I\325m a Square") 54 103.17 T +("I\325m a Rectangle") 54 89.67 T +4 14 Q +(\336) 54 76.17 T +2 12.5 Q +( #) 67.82 76.17 T +0 14 Q +(Other options include) 54 61.67 T +2 12.5 Q +( +) 175.32 61.67 T +0 14 Q +(,) 190.32 61.67 T +2 12.5 Q +(list) 197.32 61.67 T +0 14 Q +(,) 227.32 61.67 T +2 12.5 Q +(and) 234.32 61.67 T +0 14 Q +(,) 256.82 61.67 T +2 12.5 Q +(or) 263.82 61.67 T +0 14 Q +(,) 278.26 61.67 T +2 12.5 Q +(max) 285.26 61.67 T +0 14 Q +(,) 307.76 61.67 T +2 12.5 Q +(min) 314.76 61.67 T +0 14 Q +(,) 337.26 61.67 T +2 12.5 Q +(append) 344.26 61.67 T +0 14 Q +( and) 389.26 61.67 T +2 12.5 Q +(nconc) 416.48 61.67 T +0 14 Q +(.) 453.98 61.67 T +FMENDPAGE +%%EndPage: "20" 4 +%%Page: "19" 5 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Timing and Efficiency) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +3 F +0 X +(n) 54 728.67 T +90.77 727.18 67.17 727.18 2 L +V +1.02 H +0 Z +N +1 14 Q +(GET) 67.17 728.67 T +324.24 727.18 90.14 727.18 2 L +V +N +(-INTERNAL-RUN-TIME has very low \336delity) 90.14 728.67 T +0 12 Q +-0.08 (The typical way to do timing in Common Lisp is either to call the high-level) 54 715 P +2 11 Q +-0.19 (time) 422.4 715 P +0 12 Q +-0.08 ( macro \050for a rough re-) 448.8 715 P +0.31 (sult\051, or to call) 54 703 P +2 11 Q +0.68 (get-internal-run-time) 128.23 703 P +0 12 Q +0.31 ( before and after \050for more accurate numbers\051. However) 266.83 703 P +0.31 (, for) 537.7 703 P +0.52 (some reason the Lucid clock only ticks in increments of 0.01 seconds, so the dif) 54 691 P +0.52 (ference between subse-) 445.01 691 P +0.67 (quent calls to) 54 679 P +2 11 Q +1.48 (get-internal-run-time) 123.01 679 P +0 12 Q +0.67 ( will never be less than 0.01 sec. This is \336ne for timing long) 261.61 679 P +-0.72 (processes, but for these very fast operations, more \336delity is needed. One solution is to call the routine mul-) 54 667 P +0.14 (tiple times, time it, and then take the average time. Y) 54 655 P +0.14 (ou don\325) 308.5 655 P +0.14 (t want to do this in an explicit loop, because) 345.42 655 P +0.58 (you are then timing the overhead of the looping as well. So a macro that expands directly into repeated) 54 643 P +1.35 (calls is a good solution. Loading ~hall/Lisp/T) 54 631 P +1.35 (iming-Macros.sbin will give you a simple timing macro) 280.53 631 P +2 11 Q +0.61 (Time-Form) 54 619 P +0 12 Q +0.28 ( that takes a Lisp form and optionally a number N \050defaulting to 20\051. It executes the form N) 113.4 619 P +0.83 (times, records the total time, and then divides that time by N. E.g. assuming) 54 607 P +2 11 Q +1.83 (Find-Matching-Slot-) 432.6 607 P +(Value) 54 595 T +0 12 Q +( is your function from #1,) 87 595 T +2 10 Q +(\050Time-Form \050Find-Matching-Slot-Value) 54 582.33 T +5 F +(Slot-Value) 276 582.33 T +(Instance-List) 342 582.33 T +2 F +(\051\051) 420 582.33 T +3 F +(n) 54 561.67 T +283.43 560.18 67.17 560.18 2 L +V +N +1 14 Q +(Garbage collection can throw timing off) 67.17 561.67 T +0 12 Q +-0.7 (Garbage collection \050gc\051 is when Lisp reclaims memory that was allocated but is no longer used. An ephem-) 54 548 P +-0.19 (eral gc, the most common type, takes around 0.1 seconds, and can make your timing results vary) 54 536 P +-0.19 (. In some) 514.06 536 P +-0.4 (sense you want to count this time, since a routine that generates more garbage does slow the system down.) 54 524 P +0.52 (But since it is sporadic, you might want to try turning garbage collection of) 54 512 P +0.52 (f while timing. Y) 421.92 512 P +0.52 (ou can call) 504.96 512 P +2 11 Q +1.47 (gc-off) 54 500 P +0 12 Q +0.67 ( and) 93.6 500 P +2 11 Q +1.47 (gc-on/egc-on) 118.26 500 P +0 12 Q +0.67 (yourself, or use t macro, also de\336ned in ~hall/Lisp/T) 206.63 500 P +0.67 (iming-Macros.sbin.) 464 500 P +(E.g.) 54 488 T +2 10 Q +(\050Without-GC) 54 475.33 T +(\050Time-Form \050Find-Matching-Slot-Value) 66 465.33 T +5 F +(Slot-Value) 288 465.33 T +(Instance-List) 354 465.33 T +2 F +(\051\051\051) 432 465.33 T +3 F +(n) 54 444.67 T +351.69 443.18 67.17 443.18 2 L +V +N +1 14 Q +(The compiler optimization settings affect the results) 67.17 444.67 T +0 12 Q +-0.66 (Y) 54 431 P +-0.66 (ou might want to do your timing runs twice. Once with the default, high error) 61.46 431 P +-0.66 (-checking settings, and once) 424 431 P +(with the fast, highly optimized settings. T) 54 419 T +(o do the \336rst, type) 253.16 419 T +2 10 Q +(\050proclaim \324\050optimize \050safety 3\051 \050compilation-speed 3\051 \050speed 2\051\051\051) 54 406.33 T +0 12 Q +(then recompile your \336les, then rerun them. T) 54 395 T +(o do the optimized case) 268.13 395 T +2 10 Q +(\050proclaim \324\050optimize \050safety 1\051 \050compilation-speed 0\051 \050speed 3\051\051\051) 54 382.33 T +0 12 Q +(then recompile your \336les and rerun your test cases.) 54 371 T +3 10 Q +(n) 54 349.67 T +340.88 348.18 67.17 348.18 2 L +V +N +1 14 Q +(The compiler can optimize away some operations.) 67.17 349.67 T +0 F +(Consider a function that is used to try to determine the \337oating-point speed of Lisp:) 54 334.67 T +2 10 Q +(\050loop for I from 1 to 100000 do \050* 0.1 0.2 0.3 0.4 0.5\051\051) 54 322.33 T +0 14 Q +-0.57 (W) 54 309.67 P +-0.57 (ith high optimization settings, the compiler will notice that the inner multiplication never) 66.66 309.67 P +0.58 (gets saved, and will simply remove it, leaving you with the same timing results as if you) 54 294.67 P +(had done) 54 279.67 T +2 11 Q +(\050loop for I from 1 to 100000 do NIL\051) 112.13 279.67 T +0 12 Q +(Even if you do) 54 266 T +2 10 Q +(\050loop for I from 1 to 100000 do) 54 253.33 T +(\050setq *Global* \050* 0.1 0.2 0.3 0.4 0.5\051\051\051) 66 243.33 T +0 12 Q +-0.75 (the compiler could do the multiplication once outside the loop, or even \050if particularly clever\051, only execute) 54 232 P +0.67 (the loop once. The only 100% foolproof method is to) 54 220 P +2 11 Q +1.48 (disassemble) 319.05 220 P +0 12 Q +0.67 ( the code and look at the resultant) 391.65 220 P +(assembler) 54 208 T +(, but being vigilant for this is half the battle.) 101.51 208 T +3 10 Q +(n) 54 186.67 T +426.95 185.18 67.17 185.18 2 L +V +N +1 14 Q +(Use the built-in pro\336ler to \336nd out where a routine spends its time) 67.17 186.67 T +0 12 Q +-0.33 (The built-in metering system will trace a chain of function calls and show the percent of time spent in var-) 54 173 P +-0.32 (ious subfunctions. It should de\336nitely be used for almost any serious optimization ef) 54 161 P +-0.32 (fort. See Chapter 2 of) 455.62 161 P +1.41 (Lucid\325) 54 149 P +1.41 (s Delivery T) 85.33 149 P +1.41 (ool Kit docs for the functions) 147.31 149 P +2 11 Q +3.11 (start-backtrace-logging) 299.79 149 P +0 12 Q +1.41 (,) 451.58 149 P +2 11 Q +3.11 (stop-backtrace-) 459 149 P +0.95 (logging) 54 137 P +0 12 Q +0.43 (, and) 100.2 137 P +2 11 Q +0.95 (summarize-backtrace-logging) 127.39 137 P +0 12 Q +0.43 (. However) 305.59 137 P +0.43 (, if you wrap your code inside) 355.53 137 P +2 11 Q +0.95 (With-Me-) 505.2 137 P +0.51 (tering) 54 125 P +0 12 Q +0.23 ( \050also de\336ned in ~hall/Lisp/T) 93.6 125 P +0.23 (iming-Macros.sbin\051 the total time \050slightly in\337ated due to the over-) 233.93 125 P +-0.15 (head of timing/metering\051 will be printed along with the backtrace logging info showing the breakdown of) 54 113 P +(that time.) 54 101 T +2 10 Q +(\050With-Metering \050\051) 54 88.33 T +(\051) 66 78.33 T +FMENDPAGE +%%EndPage: "19" 5 +%%Page: "18" 6 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Timing and Efficiency) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +454.21 719.46 157.79 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Exercise: Timing and Efficiency) 157.79 722 T +0 14 Q +0.34 (One of the common questions with CLOS is how the speed of using objects and methods) 54 697.67 P +0.2 (compares to the speed of alternative representations. See the notes on the second page for) 54 682.67 P +(hints on timing.) 54 667.67 T +6 24 Q +1.1 (1.) 54 637.67 P +144.2 636.14 81.79 636.14 2 L +V +0.69 H +N +0 14 Q +0.58 (Slot access) 81.79 637.67 P +0.58 (. Compare the ef) 144.2 637.67 P +0.58 (\336ciency of CLOS slot access as compared to looking up) 238.99 637.67 P +-0.49 (entries from assoc lists \050the ORBIS way\051 and from structures \050the other more modern alter-) 54 621.67 P +0.39 (native\051. Create a CLOS class that contains at least 20 slots. Make a list of at least 200 in-) 54 605.67 P +(stances of this class.) 54 589.67 T +-0.25 (\245) 90 573.67 P +-0.25 (Create an assoc list containing the same number of entries as the CLOS class con-) 101.9 573.67 P +1.36 (tains slots. Make a list containing the same number of assoc lists as the list of) 104.4 559.67 P +-0.28 (CLOS instances contains. Compare searching the list for an entry with a \336eld that) 104.4 545.67 P +0.51 (matches a given value using both approaches. Once you\325ve veri\336ed that you are) 104.4 531.67 P +0.18 (correctly \336nding the entry) 104.4 517.67 P +0.18 (, you might want to arrange it so that the only match is) 249.83 517.67 P +-0.01 (the last entry \050or none at all\051 so that both methods search the full list. T) 104.4 503.67 P +-0.01 (ry it using) 501.23 503.67 P +(a \336eld that is near the front of the assoc list, and also with one that is at the end.) 104.4 489.67 T +0.58 (\245) 90 475.67 P +0.58 (Repeat this process, but this time comparing lookup of structure \336elds to lookup) 101.9 475.67 P +(of CLOS slots.) 104.4 461.67 T +6 24 Q +0.81 (2.) 54 447.67 P +210.65 446.14 81.5 446.14 2 L +V +N +0 14 Q +0.42 (Function call overhead) 81.5 447.67 P +0.42 (. Compare the ef) 210.65 447.67 P +0.42 (\336ciency of calling a normal function to a ge-) 304.99 447.67 P +1.44 (neric function that has many methods de\336ned on it. Also compare the ef) 54 431.67 P +1.44 (\336ciency of the) 475.02 431.67 P +(built-in generic function \322dispatch\323 to doing it yourself.) 54 415.67 T +0.91 (\245) 90 399.67 P +0.91 (Create a) 101.9 399.67 P +2 12.5 Q +1.96 (Square) 153.48 399.67 P +0 14 Q +0.91 ( method, that is de\336ned on numbers as well as on objects of at) 198.48 399.67 P +3.32 (least 4 other types. Also create a) 104.4 385.67 P +2 12.5 Q +7.11 (Square-Number) 312.69 385.67 P +0 14 Q +3.32 ( function that does what) 410.19 385.67 P +2 12.5 Q +(Square) 104.4 371.67 T +0 14 Q +( does on numbers.) 149.4 371.67 T +2 10 Q +(\050defmethod Square \050\050X number\051\051 \050* X X\051\051) 104.4 360.33 T +(\050defmethod Square \050\050Obj Foo\051\051 \051) 104.4 350.33 T +(\050defmethod Square \050\050Obj Bar\051\051 \051) 104.4 340.33 T +(\050defmethod Square \050\050Obj Baz\051\051 \051) 104.4 330.33 T +(...) 104.4 320.33 T +(\050defun Square-Number \050Num\051 \050* Num Num\051\051) 104.4 310.33 T +0 14 Q +0.46 (Now) 104.4 287.67 P +0.46 (, create a list of at least 500 numbers. Compute the sum of the squares both) 130.71 287.67 P +-0.25 (ways. Is there any noticeable dif) 104.4 271.67 P +-0.25 (ference? What if you add 15 more) 284.07 271.67 P +2 12.5 Q +-0.54 (Square) 477.09 271.67 P +0 14 Q +-0.25 ( meth-) 522.09 271.67 P +-0.32 (ods? What if you declare the methods in the opposite order \050with the one on num-) 104.4 255.67 P +(bers being last\051?) 104.4 239.67 T +1.67 (\245) 90 223.67 P +1.67 (W) 101.9 223.67 P +1.67 (rite a) 114.56 223.67 P +2 12.5 Q +3.58 (Square-Method) 149.77 223.67 P +0 14 Q +1.67 ( function that mimics what the) 247.27 223.67 P +2 12.5 Q +3.58 (Square) 431.5 223.67 P +0 14 Q +1.67 ( method does.) 476.5 223.67 P +0.45 (Y) 104.4 209.67 P +0.45 (ou probably want to use) 113.11 209.67 P +2 12.5 Q +0.97 (typecase) 253.41 209.67 P +0 14 Q +0.45 (\050or) 321.88 209.67 P +2 12.5 Q +0.97 (type-of) 342.15 209.67 P +0 14 Q +0.45 ( and) 394.65 209.67 P +2 12.5 Q +0.97 (cond) 422.77 209.67 P +0 14 Q +0.45 (\051 to check the type) 452.77 209.67 P +-0.09 (of the ar) 104.4 195.67 P +-0.09 (gument and decide what to do. Compute the sum of the squares this way) 150.62 195.67 P +-0.09 (.) 554.5 195.67 P +0.92 (How does the speed compare to the) 104.4 181.67 P +2 12.5 Q +1.98 (Square) 313.43 181.67 P +0 14 Q +0.92 ( method? Y) 358.43 181.67 P +0.92 (our answer will depend) 424.2 181.67 P +(on where in the) 104.4 167.67 T +2 12.5 Q +(typecase) 194.6 167.67 T +0 14 Q +( \050or) 254.6 167.67 T +2 12.5 Q +(cond) 277.93 167.67 T +0 14 Q +(\051 your \322method\323 for numbers is.) 307.93 167.67 T +6 24 Q +0.94 (3.) 54 153.67 P +177.37 152.14 81.63 152.14 2 L +V +N +0 14 Q +0.5 (Instance creation) 81.63 153.67 P +0.5 (. ORBIS creates most of its objects at load time. However) 177.37 153.67 P +0.5 (, in some) 506.06 153.67 P +0.11 (applications \050e.g. SMS\051 you want to create many objects at run-time, and the speed of ob-) 54 137.67 P +1.33 (ject creation and initialization is an issue. If you feel so inclined, compare the speed of) 54 121.67 P +(CLOS instance creation to that of creating structures.) 54 105.67 T +6 24 Q +-0.96 (Note:) 54 74.67 P +0 14 Q +-0.5 ( benchmarking is notoriously tricky) 115.32 74.67 P +-0.5 (, and can easily give misleading results. Fol-) 312.27 74.67 P +(lowing are a couple of hints for benchmarking in Lucid Common Lisp:) 54 59.67 T +FMENDPAGE +%%EndPage: "18" 6 +%%Page: "17" 7 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Multiple Inheritance and Mixins) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +498.5 719.46 113.5 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Exercise: Multiple Inheritance and Mixins) 113.5 722 T +6 F +-1.55 (1.) 54 682.67 P +0 14 Q +-0.81 (Create a simple hierarchy of polygons, similar to part of your hierarchy from the earlier) 79.13 682.67 P +0.87 (exercises. Creating Area methods for very much this hierarchy is not feasible. However) 54 666.67 P +0.87 (,) 554.5 666.67 P +-0.77 (regular polygons, in which all side lengths and angles are identical, have a standard formula) 54 650.67 P +(for Area, where N is the number of sides and L is the length of each side.:) 54 634.67 T +-0.42 (Create a mixin to indicate that a polygon is regular) 54 564.67 P +-0.42 (, and then have an Area method that will) 333.9 564.67 P +-0.61 (work on all regular polygons. Create a variety of classes for regular polygons with dif) 54 549.67 P +-0.61 (ferent) 525.35 549.67 P +(numbers of sides, and try calculating the areas for each.) 54 534.67 T +-0.44 (Y) 54 504.67 P +-0.44 (ou can test your results by checking the area for regular quadrilaterals \050squares\051 and equi-) 62.71 504.67 P +-0.25 (lateral triangles \0500.43301L) 54 489.67 P +0 11.2 Q +-0.2 (2) 202.41 495.27 P +0 14 Q +-0.25 (\051 to see if you get the same results. Y) 208.01 489.67 P +-0.25 (ou could also create a reg-) 411.94 489.67 P +0.19 (ular polygon with a lar) 54 474.67 P +0.19 (ge number of sides, and see if the area is close to that of a circle of) 182.06 474.67 P +0.24 (the same circumference. Since you know the length of each side and the number of sides,) 54 459.67 P +0.05 (you know the circumference. If you assume that your polygon is close to a circle, you can) 54 444.67 P +0.31 (then calculate the radius as circumference/2) 54 429.67 P +4 F +0.31 (p) 300.87 429.67 P +0 F +0.31 (, and calculate the area of the corresponding) 308.56 429.67 P +(circle from there.) 54 414.67 T +54 45 558 738 C +60 576 552 630 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +7 14 Q +0 X +0 0 0 1 0 0 0 K +(A) 240.17 600.5 T +(r) 249.55 600.5 T +(e) 255.82 600.5 T +(a) 262.86 600.5 T +0 F +(1) 292.03 608.6 T +(4) 292.03 591.45 T +(-) 292.03 600.83 T +(-) 294.36 600.83 T +(-) 294.37 600.83 T +7 F +(N) 300.14 600.5 T +(L) 310.3 600.5 T +0 12 Q +(2) 318.79 605.08 T +4 14 Q +(p) 354.39 608.6 T +7 F +(N) 353.57 591.45 T +0 F +(-) 353.57 600.83 T +(-) 355.9 600.83 T +(-) 358.23 600.83 T +(-) 358.24 600.83 T +4 F +(\350) 344.95 595.02 T +(\370) 363.83 595.02 T +(\346) 344.95 607.02 T +(\366) 363.83 607.02 T +0 F +(c) 326.44 600.5 T +(o) 332.65 600.5 T +(t) 339.65 600.5 T +(=) 276.86 600.5 T +54 45 558 738 C +0 0 612 792 C +FMENDPAGE +%%EndPage: "17" 7 +%%Page: "16" 8 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Intermediate Exercise: Blocks-World) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +6 24 Q +0 X +-0.67 (3.) 54 728.67 P +0 14 Q +-0.35 (Another more advanced extension would be to add ASCII \050or CLIM\051 graphics to your) 80.02 728.67 P +-0.02 (scenario, so that you could print out the state of the world to see if it matches the informa-) 54 712.67 P +-0.19 (tion your functions are returning. Y) 54 696.67 P +-0.19 (ou could even use :after methods to automatically print) 250.75 696.67 P +-0.41 (the state of the world after every change that you make. If you would like to try my version) 54 680.67 P +-0.6 (of this \050that uses simple ASCII graphics\051 while you are doing problems \0501\051 and \0502\051, you can) 54 664.67 P +1.63 (load ~hall/Lisp/Print-Blocks.sbin, and call) 54 648.67 P +2 12.5 Q +3.48 (Print-Blocks) 301.42 648.67 P +0 14 Q +1.63 ( with your table as the ar) 391.42 648.67 P +1.63 (gu-) 539.34 648.67 P +0.23 (ment. This code makes the following assumptions, so it might not work with your code if) 54 632.67 P +(it doesn\325) 54 616.67 T +(t agree with these assumptions:) 102.36 616.67 T +0.51 (\245) 90 600.67 P +0.51 (There must be classes named) 101.9 600.67 P +2 12.5 Q +1.09 (Wide-Block) 271.24 600.67 P +0 14 Q +0.51 (,) 346.24 600.67 P +2 12.5 Q +1.09 (Narrow-Block) 353.75 600.67 P +0 14 Q +0.51 (,) 443.75 600.67 P +2 12.5 Q +1.09 (Pyramid) 451.26 600.67 P +0 14 Q +0.51 (, and) 503.76 600.67 P +2 12.5 Q +1.09 (Ta-) 535.5 600.67 P +(ble) 104.4 586.67 T +0 14 Q +(.) 126.9 586.67 T +(\245) 90 572.67 T +(W) 101.9 572.67 T +(ide blocks are twice as wide as narrow blocks and pyramids.) 114.56 572.67 T +0.83 (\245) 90 558.67 P +0.83 (The function to look up the block underneath a given block is called) 101.9 558.67 P +2 12.5 Q +1.77 (Support-) 498 558.67 P +(ing-Block) 104.4 544.67 T +0 14 Q +(.) 171.9 544.67 T +0.66 (\245) 90 530.67 P +0.66 (The function to look up the list of blocks on top of a given block is called) 101.9 530.67 P +2 12.5 Q +1.41 (Sup-) 528 530.67 P +(ported-Blocks) 104.4 516.67 T +0 14 Q +(.) 201.9 516.67 T +-0.02 (\245) 90 502.67 P +-0.02 (Assuming you have a method called) 101.9 502.67 P +2 12.5 Q +-0.05 (Put-On) 308.63 502.67 P +0 14 Q +-0.02 (, this de\336nes a :after method that au-) 353.63 502.67 P +0.37 (tomatically prints the con\336guration after every change. This assumes that the ta-) 104.4 488.67 P +(ble is stored in the variable) 104.4 474.67 T +2 12.5 Q +(*Table*) 259.16 474.67 T +0 14 Q +(.) 311.66 474.67 T +(For instance, here is some abbreviated output:) 54 460.67 T +2 10 Q +(CL-USER-7> \050load "~hall/Lisp/Blocks.sbin"\051) 54 448.33 T +(CL-USER-8> \050load "~hall/Lisp/Print-Blocks.sbin"\051) 54 438.33 T +(CL-USER-9> \050setq w1 \050make-instance 'wide-block\051\051) 54 428.33 T +(+--------------+) 54 418.33 T +(| |) 54 408.33 T +(| |) 54 398.33 T +(+--------------+) 54 388.33 T +(+---------------------------------------------------------------------------------+) 54 378.33 T +(| TABLE |) 54 368.33 T +(| |) 54 358.33 T +(+---------------------------------------------------------------------------------+) 54 348.33 T +(#) 54 338.33 T +(CL-USER-10> \050setq p1 \050make-instance 'pyramid\051\051) 54 328.33 T +( /\134 +--------------+) 54 318.33 T +( / \134 | |) 54 308.33 T +( / \134 | |) 54 298.33 T +(+------++--------------+) 54 288.33 T +(+---------------------------------------------------------------------------------+) 54 278.33 T +(| TABLE |) 54 268.33 T +(| |) 54 258.33 T +(+---------------------------------------------------------------------------------+) 54 248.33 T +(#) 54 238.33 T +(CL-USER-11> \050Put-On p1 w1\051) 54 228.33 T +( /\134) 54 218.33 T +( / \134) 54 208.33 T +( / \134) 54 198.33 T +(+------+) 54 188.33 T +(+--------------+) 54 178.33 T +(| |) 54 168.33 T +(| |) 54 158.33 T +(+--------------+) 54 148.33 T +(+---------------------------------------------------------------------------------+) 54 138.33 T +(| TABLE |) 54 128.33 T +(| |) 54 118.33 T +(+---------------------------------------------------------------------------------+) 54 108.33 T +FMENDPAGE +%%EndPage: "16" 8 +%%Page: "15" 9 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Intermediate Exercise: Blocks-World) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +477.17 719.46 134.83 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Intermediate Exercise: Blocks-World) 134.83 722 T +6 F +0.67 (1.) 54 697.67 P +0 14 Q +0.35 (Use CLOS to represent information about stacking and unstacking blocks. There are) 81.35 697.67 P +0.33 (four types of objects: tables, narrow blocks, wide blocks, and pyramids, with information) 54 681.67 P +-0.02 (on their characteristics listed below) 54 665.67 P +-0.02 (. Y) 251.29 665.67 P +-0.02 (ou should be able to retrieve the following pieces of) 266.98 665.67 P +-0.08 (information about any block: the block\325) 54 649.67 P +-0.08 (s width \050at the bottom for pyramids\051, what block it) 275.64 649.67 P +0.74 (is on \050) 54 633.67 P +2 12.5 Q +1.58 (Supporting-Block) 90.48 633.67 P +0 14 Q +0.74 (\051, what blocks \050if any\051 are directly on top of it \050) 210.48 633.67 P +2 12.5 Q +1.58 (Supported-) 483 633.67 P +-0.17 (Blocks) 54 617.67 P +0 14 Q +-0.08 (\051, what blocks \050if any\051 are anywhere on top of it \050) 99 617.67 P +2 12.5 Q +-0.17 (Blocks-Above) 374.15 617.67 P +0 14 Q +-0.08 (\051, and how much) 464.15 617.67 P +(space is still available on top for additional blocks \050) 54 601.67 T +2 12.5 Q +(Remaining-Space) 342.92 601.67 T +0 14 Q +(\051.) 455.42 601.67 T +-0.31 (Y) 54 572.67 P +-0.31 (ou should have two operators:) 62.71 572.67 P +2 12.5 Q +-0.67 (Put-On) 233.41 572.67 P +0 14 Q +-0.31 ( and) 278.41 572.67 P +2 12.5 Q +-0.67 (Take-Off) 305 572.67 P +0 14 Q +-0.31 (, each of which take two objects as) 365 572.67 P +-0.74 (ar) 54 557.67 P +-0.74 (guments.) 64.63 557.67 P +2 12.5 Q +-1.57 (\050Put-On Object1 Object2\051) 118.34 557.67 P +0 14 Q +-0.74 ( should, if there is sufficient space on) 295.19 557.67 P +2 12.5 Q +-1.57 (Object2) 502 557.67 P +0 14 Q +-0.74 (,) 554.5 557.67 P +-0.43 (put) 54 542.67 P +2 12.5 Q +-0.93 (Object1) 74.96 542.67 P +0 14 Q +-0.43 ( on top. This means that) 127.46 542.67 P +2 12.5 Q +-0.93 (\050Supporting-Block Object1\051) 262.92 542.67 P +0 14 Q +-0.43 (should now return) 456.99 542.67 P +2 12.5 Q +-0.11 (Object2) 54 527.67 P +0 14 Q +-0.05 (.) 106.5 527.67 P +2 12.5 Q +-0.11 (Object1) 113.45 527.67 P +0 14 Q +-0.05 (should now be in the list of supported blocks of) 169.4 527.67 P +2 12.5 Q +-0.11 (Object2) 438.78 527.67 P +0 14 Q +-0.05 (, and the re-) 491.28 527.67 P +0.68 (maining space of) 54 512.67 P +2 12.5 Q +1.45 (Object2) 155.18 512.67 P +0 14 Q +0.68 ( should be decremented by the width of) 207.68 512.67 P +2 12.5 Q +1.45 (Object1) 437.82 512.67 P +0 14 Q +0.68 (.) 490.32 512.67 P +2 12.5 Q +1.45 (Take-Off) 498 512.67 P +0 14 Q +0.68 (should do the reverse) 54 497.67 P +0.68 (, removing a block and putting it on the table. Y) 175.39 497.67 P +0.68 (ou can assume that) 449.83 497.67 P +-0.11 (moving a block also moves all blocks that are on top of it, or you could disallow moving a) 54 482.67 P +(block that has anything on it.) 54 467.67 T +0.22 (Build a few stacks, showing that the supporting and supported blocks are found correctly) 54 439.67 P +0.22 (,) 554.5 439.67 P +(that you can\325) 54 424.67 T +(t put blocks on top of ones with insuf) 126.84 424.67 T +(\336cient space, etc.) 335.04 424.67 T +6 24 Q +-0.68 (2.) 54 124.67 P +0 14 Q +-0.36 (If you have time and the inclination, you might want to add Strength and W) 80 124.67 P +-0.36 (eight char-) 498.1 124.67 P +-0.06 (acteristics. Y) 54 108.67 P +-0.06 (ou could prohibit putting a block on another if it would make the total weight) 125.63 108.67 P +-0.77 (of any block below it exceed its strength limitation. Or you could have blocks get \322crushed\323) 54 92.67 P +-0.59 (\050and maybe the towers they support get toppled\051 when the total weight on them exceeds the) 54 76.67 P +(limit.) 54 60.67 T +15.19 135 596.81 420 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +88.19 251.74 472.19 251.74 2 L +3 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +141.19 252.74 188.19 299.74 R +1 H +N +206.19 252.74 301.52 299.74 R +N +400.19 252.74 422.19 320.74 446.19 252.74 3 Y +N +131.11 294.43 138.19 284.74 127.05 289.21 129.08 291.82 4 Y +V +66.19 340.74 129.08 291.82 2 L +N +448.25 308.38 437.18 303.74 444.1 313.54 446.17 310.96 4 Y +V +503.19 356.74 446.18 310.96 2 L +N +377.88 239.2 381.19 250.74 384.49 239.2 381.19 239.2 4 Y +V +381.19 191.74 381.19 239.2 2 L +N +0 12 Q +(Narrow Blocks are 1 unit wide.) 24.19 369.74 T +141.19 299.74 188.19 346.74 R +N +206.19 299.74 253.19 346.74 R +N +255.19 299.74 277.19 367.74 301.19 299.74 3 Y +N +207.19 346.74 229.19 414.74 253.19 346.74 3 Y +N +(1 Narrow Block or 1 Pyramid) 24.19 357.74 T +(can \336t on top.) 24.19 345.74 T +(Pyramids are 1 unit wide) 462.19 385.74 T +(at their base. Nothing can) 462.19 373.74 T +(balance on top.) 462.19 361.74 T +314.28 300.15 305.66 291.8 308.54 303.45 311.41 301.8 4 Y +V +348.19 365.74 311.42 301.8 2 L +N +(W) 330.19 406.74 T +(ide blocks are 2 units wide.) 341.04 406.74 T +(1 wide block or any 2) 330.19 394.74 T +(smaller blocks can) 330.19 382.74 T +(\336t on top.) 330.19 370.74 T +(The table is 10 units wide.) 316.19 178.74 T +(Any combination of blocks adding) 316.19 166.74 T +(up to 10 units in width can \336t on top.) 316.19 154.74 T +582.19 417.79 24.19 417.79 2 L +0.5 H +N +582.49 149 24.49 149 2 L +N +0 0 612 792 C +FMENDPAGE +%%EndPage: "15" 9 +%%Page: "14" 10 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: print-object) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +406.62 719.46 205.38 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Exercise: print-object) 205.38 722 T +6 F +1.18 (1.) 54 682.67 P +0 14 Q +0.62 (De\336ne a custom) 81.87 682.67 P +2 12.5 Q +1.33 (print-object) 178.21 682.67 P +0 14 Q +0.62 ( method for a couple of your objects. For example,) 268.21 682.67 P +-0.28 (you will note that objects created via) 54 666.67 P +2 12.5 Q +-0.61 (Define-Class) 261.6 666.67 P +0 14 Q +-0.28 ( have a) 351.6 666.67 P +2 12.5 Q +-0.61 (print-object) 393.9 666.67 P +0 14 Q +-0.28 ( that includes) 483.9 666.67 P +(their) 54 650.67 T +2 12.5 Q +(Name) 83.16 650.67 T +0 14 Q +( slot and the name of their class in the printout.) 113.16 650.67 T +-0.44 (An amusing application of) 54 619.67 P +2 12.5 Q +-0.93 (print-object) 204.69 619.67 P +0 14 Q +-0.44 ( is to customize your prompt in Lucid Common) 294.69 619.67 P +-0.16 (Lisp. In Lucid, the value of the) 54 604.67 P +2 12.5 Q +-0.35 (*prompt*) 229.77 604.67 P +0 14 Q +-0.16 ( variable is intended to be a string that is printed) 289.77 604.67 P +-0.17 (at the beginning of each line. However) 54 589.67 P +-0.17 (, Lucid just uses) 269.77 589.67 P +2 12.5 Q +-0.36 (print) 363.6 589.67 P +0 14 Q +-0.17 ( to print it out, and) 401.1 589.67 P +2 12.5 Q +-0.36 (print) 507.83 589.67 P +0 14 Q +-0.17 ( is) 545.33 589.67 P +-0.48 (de\336ned to use the) 54 574.67 P +2 12.5 Q +-1.03 (print-object) 153.95 574.67 P +0 14 Q +-0.48 ( method if it prints out CLOS instances. Consequently) 243.95 574.67 P +-0.48 (, if) 542.93 574.67 P +1.42 (the value of the) 54 559.67 P +2 12.5 Q +3.04 (*prompt*) 149.87 559.67 P +0 14 Q +1.42 ( variable is a CLOS instance with a custom) 209.87 559.67 P +2 12.5 Q +3.04 (print-object) 468 559.67 P +0 14 Q +0.82 (method, you can ef) 54 544.67 P +0.82 (fectively have the prompt be dynamic, since the) 163.53 544.67 P +2 12.5 Q +1.76 (print-object) 441.89 544.67 P +0 14 Q +0.82 ( will) 531.89 544.67 P +-0.13 (get called each time. For instance, in /home/utilities/lisp-init.lisp, there is a function called) 54 529.67 P +2 12.5 Q +-1.34 (Make-Custom-Lisp-Listener-Prompt) 54 514.67 P +0 14 Q +-0.63 (, which sets it up so that the prompt contains the) 294 514.67 P +0.22 (name of the current package and a number indicating how many commands you\325ve typed) 54 499.67 P +(in since entering Lisp. Y) 54 484.67 T +(ou might want to try something similar) 190.64 484.67 T +(.) 408.44 484.67 T +4.91 (Here\325) 54 454.67 P +4.91 (s an example \050I call) 85.09 454.67 P +2 12.5 Q +10.52 (Make-Custom-Lisp-Listener-Prompt) 222.77 454.67 P +0 14 Q +4.91 ( from my lisp-) 462.77 454.67 P +(init.lisp\051:) 54 439.67 T +2 12.5 Q +(CL-USER-1> \050+ 2 3\051) 54 410.67 T +(5) 54 397.17 T +(CL-USER-2> \050in-package :CLIM-User\051) 54 383.67 T +(#) 54 370.17 T +(CLIM-USER-3> \050+ 2 3\051) 54 356.67 T +(5) 54 343.17 T +(CLIM-USER-4>) 54 329.67 T +FMENDPAGE +%%EndPage: "14" 10 +%%Page: "13" 11 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Simplified Interface: Def-Class) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +36 45 576 747 R +7 X +V +448.18 728.46 163.82 728.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Simplified Interface: Def-Class) 163.82 731 T +6 F +(1.) 36 703.67 T +8 14 Q +(Def-Class Macr) 62.69 703.67 T +(o. \050De\336ned in ~hall/Lisp/CLOS-Utilities.lisp/sbin\051) 156.12 703.67 T +9 10 Q +(\050defmacro) 81 688.33 T +2 F +(Define-Class) 141 688.33 T +9 F +( \050Class-Name Superclass-List &rest Slot-Descriptions\051) 213 688.33 T +( \324\050defclass ,Class-Name ,Superclass-List) 81 676.33 T +( ,\050mapcar #\325Expand-Slot-Entry Slot-Descriptions\051\051\051) 81 664.33 T +(\050defun) 81 640.33 T +2 F +(Expand-Slot-Entry) 123 640.33 T +9 F +(\050Slot-Description\051) 231 640.33 T +( \050let \050\050Name \050first Slot-Description\051\051) 81 628.33 T +( \050Value \050second Slot-Description\051\051 \051) 81 616.33 T +( \050list) 81 604.33 T +( Name) 81 592.33 T +( :accessor Name) 81 580.33 T +( :initarg \050Add-Colon Name\051) 81 568.33 T +( :initform value\051\051\051) 81 556.33 T +(;;; Like \050read-from-string \050format nil \322:~A\323 Symbol\051\051) 81 532.33 T +(\050defun) 81 520.33 T +2 F +(Add-Colon) 123 520.33 T +9 F +(\050Symbol\051 \050intern \050symbol-name Symbol\051 :keyword\051\051) 183 520.33 T +6 24 Q +(2.) 36 497.67 T +8 14 Q +(IC/Gates Example \050see ~hall/Lisp/Gates.lisp\051) 62.69 497.67 T +36 45 576 747 C +36 306 576 493 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +7 X +0 0 0 1 0 0 0 K +271 449 12.24 12 88.66 472 G +0.2 H +0 Z +0 X +271 449 12.24 12 88.66 472 A +88.8 483.99 68.29 483.99 68.29 459.99 88.8 459.99 4 L +7 X +V +2 Z +0 X +N +62.16 477.99 68.16 477.99 2 L +7 X +V +0 X +N +62.16 465.99 68.16 465.99 2 L +7 X +V +0 X +N +101.04 471.99 107.04 471.99 2 L +7 X +V +0 X +N +8 14 Q +(AND) 116.16 468.6 T +7 X +270 448 4.47 11.97 64.23 436.04 G +1 Z +0 X +270 448 4.47 11.97 64.23 436.04 A +64.51 448 87.4 448 2 L +7 X +V +2 Z +0 X +N +64.51 424.07 87.4 424.07 2 L +7 X +V +0 X +N +87.57 447.98 M + 93.79 446.82 99.23 441.76 101.54 436.02 D + 97.58 426.84 91.91 425.56 87.57 424.04 D +7 X +V +1 Z +0 X +N +62.16 442.02 68.16 442.02 2 L +7 X +V +2 Z +0 X +N +62.16 430.02 68.16 430.02 2 L +7 X +V +0 X +N +101.79 436.02 107.79 436.02 2 L +7 X +V +0 X +N +(OR) 116.16 433.05 T +7 X +271 449 12.24 12 88.66 397.01 G +0 Z +0 X +271 449 12.24 12 88.66 397.01 A +88.8 409 68.29 409 68.29 385 88.8 385 4 L +7 X +V +2 Z +0 X +N +62.16 403 68.16 403 2 L +7 X +V +0 X +N +62.16 391 68.16 391 2 L +7 X +V +0 X +N +7 X +90 450 1.26 1.26 102.1 397 G +0.25 H +0 Z +0 X +90 450 1.26 1.26 102.1 397 A +103.36 397 108.1 397 2 L +7 X +V +1 Z +0 X +N +(NAND) 116.16 393.47 T +62.16 366.99 80.16 366.99 2 L +7 X +V +0.2 H +2 Z +0 X +N +62.16 354.99 80.16 354.99 2 L +7 X +V +0 X +N +113.53 360.99 119.53 360.99 2 L +7 X +V +0 X +N +1 Z +270 448 4.47 11.97 76.21 361.01 A +76.51 372.96 99.39 372.96 2 L +2 Z +N +76.51 349.02 99.39 349.02 2 L +N +99.5 372.94 M + 105.73 371.78 111.15 366.71 113.47 360.99 D + 109.52 351.81 103.84 350.52 99.5 349 D +7 X +V +1 Z +0 X +N +270 448 4.47 11.97 67.9 361.01 A +(XOR) 125.16 357.14 T +80.16 322 71.16 313 71.16 331 3 Y +7 X +V +0 Z +0 X +N +71.16 322 62.16 322 2 L +7 X +V +1 Z +0 X +N +92.16 322 80.31 322 2 L +7 X +V +2 Z +0 X +N +7 X +90 450 4.5 4.5 84.66 322.17 G +0.5 H +0 X +90 450 4.5 4.5 84.66 322.17 A +(Inverter) 97.85 318.85 T +7 X +271 449 12.24 12 310.07 396.01 G +0.2 H +0 Z +0 X +271 449 12.24 12 310.07 396.01 A +310.21 407.99 289.7 407.99 289.7 383.99 310.21 383.99 4 L +7 X +V +2 Z +0 X +N +283.57 401.99 289.57 401.99 2 L +7 X +V +0 X +N +283.57 389.99 289.57 389.99 2 L +7 X +V +0 X +N +322.43 395.99 328.43 395.99 2 L +7 X +V +0 X +N +283.82 395.99 289.82 395.99 2 L +7 X +V +0 X +N +7 X +271 449 12.24 12 310.07 445 G +0 Z +0 X +271 449 12.24 12 310.07 445 A +310.21 456.99 289.7 456.99 289.7 432.99 310.21 432.99 4 L +7 X +V +2 Z +0 X +N +283.57 450.99 289.57 450.99 2 L +7 X +V +0 X +N +283.57 438.99 289.57 438.99 2 L +7 X +V +0 X +N +322.43 444.99 328.43 444.99 2 L +7 X +V +0 X +N +283.82 444.99 289.82 444.99 2 L +7 X +V +0 X +N +7 X +270 448 4.47 11.97 361.16 420.71 G +1 Z +0 X +270 448 4.47 11.97 361.16 420.71 A +361.44 432.67 384.34 432.67 2 L +7 X +V +2 Z +0 X +N +361.44 408.74 384.34 408.74 2 L +7 X +V +0 X +N +384.51 432.66 M + 390.72 431.49 396.16 426.43 398.48 420.69 D + 394.52 411.51 388.84 410.23 384.51 408.72 D +7 X +V +1 Z +0 X +N +359.09 426.7 365.09 426.7 2 L +7 X +V +2 Z +0 X +N +359.09 414.7 365.09 414.7 2 L +7 X +V +0 X +N +398.72 420.7 404.72 420.7 2 L +7 X +V +0 X +N +473.72 420.7 464.72 411.7 464.72 429.7 3 Y +7 X +V +0 Z +0 X +N +464.72 420.7 455.72 420.7 2 L +7 X +V +1 Z +0 X +N +485.72 420.7 473.88 420.7 2 L +7 X +V +2 Z +0 X +N +7 X +90 450 4.5 4.5 478.22 420.86 G +0.5 H +0 X +90 450 4.5 4.5 478.22 420.86 A +328.43 444.99 348.67 444.99 348.67 427 360.67 427 4 L +N +328.77 396 349 396 349 413.99 361 413.99 4 L +N +404.72 420.7 455.72 420.7 2 L +N +(EXAMPLE) 296.52 354.82 T +(A1) 299.13 438.3 T +(A2) 298.26 390.48 T +(O1) 374.79 415.69 T +(I1) 468.7 398.3 T +36 45 576 747 C +0 0 612 792 C +30.23 45 581.77 306 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +39.23 54 300.23 297 R +7 X +0 0 0 1 0 0 0 K +V +2 10 Q +0 X +(\050Def-Class Gate \050\051) 39.23 290.33 T +( \050Input-List '\050\051 \051) 39.23 280.33 T +( Operation\051) 39.23 270.33 T +(\050defmethod Input-Value \050\050Input number\051\051) 39.23 250.33 T +( Input\051) 39.23 240.33 T +(\050defmethod Input-Value \050\050Input Gate\051\051) 39.23 220.33 T +( \050Output Input\051\051) 39.23 210.33 T +(\050defmethod Input-Value-List \050\050Object Gate\051\051) 39.23 190.33 T +-1.5 ( \050mapcar #'Input-Value \050Input-List Object\051\051) 39.23 180.33 P +(\051) 39.23 170.33 T +(\050defmethod Output \050\050Object Gate\051\051) 39.23 150.33 T +( \050Boolean-to-Number) 39.23 140.33 T +( \050funcall \050Operation Object\051) 39.23 130.33 T +( \050Input-Value-List Object\051\051\051\051) 39.23 120.33 T +318.23 54 570.23 297 R +7 X +V +0 X +(\050defun Boolean-to-Number \050Boolean\051) 318.23 290.33 T +-1.5 ( "Given NIL returns 0, otherwise returns 1") 318.23 280.33 P +( \050if) 318.23 270.33 T +( Boolean) 318.23 260.33 T +( 1) 318.23 250.33 T +( 0\051 \051) 318.23 240.33 T +(\050defun All-Ones? \050Num-List\051) 318.23 220.33 T +( "Are all entries in Num-List equal to 1?) 318.23 210.33 T +( This is the operation AND gates use") 318.23 200.33 T +( \050every #'Equal-One? Num-List\051\051) 318.23 190.33 T +(\050defun Equal-One? \050Num\051 \050equal Num 1\051\051) 318.23 170.33 T +(\050Define-Class And-Gate \050Gate\051) 318.23 150.33 T +( \050Operation #'All-Ones?\051\051) 318.23 140.33 T +(...) 318.23 120.33 T +0 0 612 792 C +FMENDPAGE +%%EndPage: "13" 11 +%%Page: "12" 12 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Setf Methods) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +414.28 719.46 197.72 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Exercise: Setf Methods) 197.72 722 T +6 F +-1.27 (1.) 54 667.67 P +0 14 Q +-0.67 (Arrange it so that you can set either the W) 79.42 667.67 P +-0.67 (idth or the Height slot of Squares, but in such) 309.66 667.67 P +0.12 (a way that they always are guaranteed to have the same value. T) 54 651.67 P +0.12 (o the user) 414.08 651.67 P +0.12 (, these two slots) 468.19 651.67 P +(should appear to be synonymous.) 54 635.67 T +2 12.5 Q +(\050setq Square-1 \050make-instance \325Square :Width 5\051\051) 54 620.67 T +(\050Area Square-1\051) 54 607.17 T +4 14 Q +(\336) 174 607.17 T +2 12.5 Q +( 25) 187.82 607.17 T +(\050setf \050Width Square-1\051 6\051) 54 593.67 T +(\050Width Square-1\051) 54 580.17 T +4 14 Q +(\336) 181.5 580.17 T +2 12.5 Q +( 6) 195.32 580.17 T +(\050Height Square-1\051) 54 566.67 T +4 14 Q +(\336) 189 566.67 T +2 12.5 Q +( 6) 202.82 566.67 T +(\050Area Square-1\051) 54 553.17 T +4 14 Q +(\336) 174 553.17 T +2 12.5 Q +( 36) 187.82 553.17 T +(\050setf \050Height Square-1\051 7\051) 54 539.67 T +(\050Width Square-1\051) 54 526.17 T +4 14 Q +(\336) 181.5 526.17 T +2 12.5 Q +( 7) 195.32 526.17 T +(\050Height Square-1\051) 54 512.67 T +4 14 Q +(\336) 189 512.67 T +2 12.5 Q +( 7) 202.82 512.67 T +(\050Area Square-1\051) 54 499.17 T +4 14 Q +(\336) 174 499.17 T +2 12.5 Q +( 49) 187.82 499.17 T +6 24 Q +0.59 (2.) 54 456.17 P +0 14 Q +0.31 (Make it possible to set the Areas of various object types. For some object types \050e.g.) 81.28 456.17 P +-0.07 (rectangles\051, if it seems too arbitrary which dimension to change, feel free to put in explicit) 54 440.17 P +(messages saying it is not allowed instead.) 54 424.17 T +2 12.5 Q +(\050Area Square-1\051) 54 408.17 T +4 14 Q +(\336) 174 408.17 T +2 12.5 Q +( 49) 187.82 408.17 T +(\050setf \050Area Square-1\051 100\051) 54 394.17 T +(\050Width Square-1\051) 54 380.67 T +4 14 Q +(\336) 181.5 380.67 T +2 12.5 Q +( 10) 195.32 380.67 T +FMENDPAGE +%%EndPage: "12" 12 +%%Page: "11" 13 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Common Blunders) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +36 45 576 747 R +7 X +V +22.85 82 589.15 733 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27.35 229 288.35 724 R +7 X +0 0 0 1 0 0 0 K +V +27.35 719.79 288.35 724 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27.35 721.99 567.35 721.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +27.35 720.47 567.35 720.47 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +-0.19 (n) 27.35 710.45 P +1 14 Q +-0.22 (Confusion about doc strings in DEFMETHOD.) 37.74 710.45 P +0 12 Q +(People often do) 27.35 697.79 T +2 10 Q +(\050defmethod Area \050\050Rect Rectangle\051\051) 27.35 685.12 T +("WIDTH times HEIGHT of the rectangle") 39.35 675.12 T +(\050* \050Width Rect\051 \050Height Rect\051\051\051) 39.35 665.12 T +0 12 Q +0.81 (without clearly thinking about what that might mean.) 27.35 643.79 P +0.06 (Some people think it will make a doc string on the) 27.35 631.79 P +7 F +0.06 (ge-) 273.03 631.79 P +7.18 (neric) 27.35 619.79 P +0 F +7.18 ( function that) 52.01 619.79 P +2 11 Q +15.8 (\050documentation 'Area) 140.55 619.79 P +0.87 ('function\051) 27.35 607.79 P +0 12 Q +0.39 ( or the equivalent emacs keystrokes will) 93.35 607.79 P +0.12 (retrieve. Others vaguely expect it to make a doc string) 27.35 595.79 P +-0.49 (on each separate method, and that the emacs doc-string) 27.35 583.79 P +2.81 (retrieving keystroke \050which just calls) 27.35 571.79 P +2 11 Q +6.17 (documenta-) 222.35 571.79 P +2.61 (tion) 27.35 559.79 P +0 12 Q +1.18 (\051 will somehow automagically be able to \336gure) 53.75 559.79 P +-0.43 (out which method it applies to. In fact, Lisp will accept) 27.35 547.79 P +1.92 (this, but put the documentation on the method *ob-) 27.35 535.79 P +0.84 (ject*, which beginners probably know nothing about.) 27.35 523.79 P +1.32 (Use the) 27.35 511.79 P +2 11 Q +2.91 (:documentation) 69.32 511.79 P +0 12 Q +1.32 ( entry in) 161.72 511.79 P +2 11 Q +2.91 (defgeneric) 208.69 511.79 P +0 12 Q +1.32 ( to) 274.69 511.79 P +(put a doc string on the generic function.) 27.35 499.79 T +27.35 489.57 288.35 493.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27.35 491.78 567.35 491.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +27.35 490.25 567.35 490.25 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 27.35 480.24 T +1 14 Q +(Invalid :initargs are accepted by) 37.74 480.24 T +(MAKE-INST) 38.15 466.24 T +(ANCE.) 101.08 466.24 T +0 12 Q +0.11 (On SP) 27.35 453.57 P +0.11 (ARC machines, both Lucid Common Lisp 4.1.1) 57.36 453.57 P +0.51 (\050both the production and development compilers\051 and) 27.35 441.57 P +2.67 (Harlequin LispW) 27.35 429.57 P +2.67 (orks 3.1.0 accept unknown) 112.71 429.57 P +2 11 Q +5.87 (:ini-) 255.35 429.57 P +-0.36 (targ) 27.35 417.57 P +0 12 Q +-0.17 ('s without complaint, even at the highest) 53.75 417.57 P +2 11 Q +-0.36 (safety) 248.75 417.57 P +0 12 Q +(settings.) 27.35 405.57 T +2 10 Q +(\050defclass Foo \050\051) 27.35 382.9 T +-0.5 ( \050\050Slot-1 :accessor Slot-1 :initarg :Slot-1) 27.35 372.9 P +(:initform 5\051\051\051) 27.35 362.9 T +(; typo: SLOT1 instead of SLOT-1) 27.35 342.9 T +(\050setq Test \050make-instance 'Foo :Slot1 10\051\051) 27.35 332.9 T +([No error message]) 27.35 322.9 T +(\050Slot-1 Test\051 ==> 5) 27.35 302.9 T +0 12 Q +1.12 (This is a bug in the implementation; all implementa-) 27.35 277.57 P +(tions are supposed to \337ag this as an error) 27.35 265.57 T +(.) 222.66 265.57 T +306.35 87.59 580.85 724 R +7 X +V +306.35 719.79 580.85 724 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +306.35 721.99 846.35 721.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +306.35 720.47 846.35 720.47 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +3.41 (n) 306.35 710.45 P +1 14 Q +3.92 (Forgetting the class has to exist before any) 316.74 710.45 P +(method that specializes upon it.) 317.15 696.45 T +0 12 Q +0.62 (Lisp programmers are used to being able to de\336ne func-) 306.35 683.79 P +0.34 (tions in any order) 306.35 671.79 P +0.34 (, where even if) 391.23 671.79 P +2 11 Q +0.76 (Foo) 466.9 671.79 P +0 12 Q +0.34 ( calls) 486.7 671.79 P +2 11 Q +0.76 (Bar) 515.39 671.79 P +0 12 Q +0.34 (,) 534.71 671.79 P +2 11 Q +0.76 (Foo) 541.05 671.79 P +0 12 Q +0.34 ( can) 560.85 671.79 P +(be de\336ned \336rst. But) 306.35 659.79 T +2 10 Q +(\050defmethod Area \050\050Rect Rectangle\051\051 ...\051) 306.35 633.12 T +(\050defclass Rectangle \050Polygon\051 ...\051) 306.35 623.12 T +0 12 Q +(is illegal. Y) 306.35 597.79 T +(ou have to de\336ne the class \336rst.) 360.82 597.79 T +306.35 587.57 580.85 591.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +306.35 589.78 846.35 589.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +306.35 588.25 846.35 588.25 2 L +7 X +V +0 X +N +22.85 82 589.15 733 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +1.18 (n) 306.35 578.24 P +1 14 Q +1.36 (Changing a method to apply to a more general) 316.74 578.24 P +(class does not supersede previous method.) 317.15 564.24 T +0 12 Q +(E.g. a user writes) 306.35 551.57 T +2 10 Q +-0.5 (\050defmethod Half-Area \050\050Rect Filled-Rectangle\051\051) 306.35 528.9 P +( \050/ \050Area Rect\051 2\051\051) 306.35 518.9 T +0 12 Q +0.17 (Then they notice that this functionality could apply to all) 306.35 497.57 P +-0.64 (Rectangles, not just Filled-Rectangles. So they change the) 306.35 485.57 P +-0.34 (class, with their intuition being that they are) 306.35 473.57 P +7 F +-0.34 (r) 517.97 473.57 P +-0.34 (eplacing) 522.2 473.57 P +0 F +-0.34 ( the) 563.53 473.57 P +0.87 (old de\336nition, when in fact they are) 306.35 461.57 P +7 F +0.87 (adding) 486.38 461.57 P +0 F +0.87 ( a new) 519.72 461.57 P +0.87 (, less-) 551.99 461.57 P +1.05 (speci\336c method. They then later add a call to) 306.35 449.57 P +2 11 Q +2.32 (float) 534.46 449.57 P +0 12 Q +1.05 ( to) 567.46 449.57 P +(avoid getting a ratio back.) 306.35 437.57 T +2 10 Q +(\050defmethod Half-Area \050\050Rect Rectangle\051\051) 306.35 410.9 T +(\050float \050/ \050Area Rect\051 2\051\051\051) 318.35 400.9 T +0 12 Q +0.39 (Then they are puzzled as to why their new de\336nition ap-) 306.35 375.57 P +0.19 (pears not to have taken ef) 306.35 363.57 P +0.19 (fect, since they are testing it on) 430.06 363.57 P +0.9 (an instance of Filled-Rectangle, which still gets the old,) 306.35 351.57 P +(more-speci\336c de\336nition.) 306.35 339.57 T +296.33 724 296.33 85 2 L +0.5 H +2 Z +N +0 0 612 792 C +FMENDPAGE +%%EndPage: "11" 13 +%%Page: "10" 14 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Common Blunders) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +45 45 576 747 R +7 X +V +398.52 728.46 222.48 728.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Common Blunders) 222.48 731 T +32.2 72 588.8 723 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 129 297.7 714 R +7 X +0 0 0 1 0 0 0 K +V +36.7 709.79 297.7 714 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 711.99 576.7 711.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 710.47 576.7 710.47 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 36.7 700.45 T +1 14 Q +(Omitting parens in arglist in DEFMETHOD.) 47.09 700.45 T +0 12 Q +(W) 36.7 687.79 T +(riting) 47.55 687.79 T +2 10 Q +(\050defmethod Area \050Sq Square\051 ...\051) 36.7 675.12 T +0 12 Q +(instead of) 36.7 663.79 T +2 10 Q +(\050defmethod Area \050\050Sq Square\051\051 ...\051) 36.7 651.12 T +0 12 Q +1.43 (Lisp will accept the former) 36.7 629.79 P +1.43 (, and think that you have) 171.91 629.79 P +0.58 (two unspecialized ar) 36.7 617.79 P +0.58 (guments instead of one ar) 136.29 617.79 P +0.58 (gument) 261.7 617.79 P +(specialized as a) 36.7 605.79 T +2 11 Q +(Square) 114.34 605.79 T +0 12 Q +(.) 153.94 605.79 T +36.7 595.57 297.7 599.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 597.78 576.7 597.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 596.25 576.7 596.25 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +1.93 (n) 36.7 586.24 P +1 14 Q +2.22 (Missing parens around slot de\336nition list in) 47.09 586.24 P +(DEFCLASS.) 47.5 572.24 T +0 12 Q +(W) 36.7 559.57 T +(riting) 47.55 559.57 T +2 10 Q +(\050defclass Rectangle \050Polygon\051) 36.7 546.9 T +(\050Width ...\051) 48.7 536.9 T +(\050Height ...\051\051) 48.7 526.9 T +0 12 Q +(instead of) 36.7 515.57 T +2 10 Q +(\050defclass Rectangle \050Polygon\051) 36.7 502.9 T +(\050\050Width ...\051) 48.7 492.9 T +(\050Height ...\051\051\051) 54.7 482.9 T +0 12 Q +0.47 (Lisp will not accept the former) 36.7 457.57 P +0.47 (, but the error message) 186.86 457.57 P +(is not necessarily clear) 36.7 445.57 T +(.) 145.01 445.57 T +36.7 435.36 297.7 439.57 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 437.56 576.7 437.56 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 436.04 576.7 436.04 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +3.6 (n) 36.7 426.02 P +1 14 Q +4.13 (Forgetting empty slot de\336nition list if you) 47.09 426.02 P +(don't de\336ne local slots in DEFCLASS.) 47.5 412.02 T +0 12 Q +(W) 36.7 399.36 T +(riting) 47.55 399.36 T +2 10 Q +(\050defclass Square \050Rectangle\051\051) 36.7 386.69 T +0 12 Q +(instead of) 36.7 375.36 T +2 10 Q +(\050defclass Square \050Rectangle\051 \050\051\051) 36.7 362.69 T +0 12 Q +(Lisp will not accept the former) 36.7 337.36 T +(.) 184.35 337.36 T +36.7 327.14 297.7 331.36 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36.7 329.35 576.7 329.35 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36.7 327.82 576.7 327.82 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +1.93 (n) 36.7 317.81 P +1 14 Q +2.21 (Referring to class name instead of instance) 47.09 317.81 P +(variable in DEFMETHOD.) 47.5 303.81 T +0 12 Q +(W) 36.7 291.14 T +(riting) 47.55 291.14 T +2 10 Q +(\050defmethod Area \050\050Sq Square\051\051) 36.7 278.47 T +(\050* \050Width Square\051 \050Width Square\051\051\051) 48.7 268.47 T +0 12 Q +(instead of) 36.7 257.14 T +2 10 Q +(\050defmethod Area \050\050Sq Square\051\051) 36.7 244.47 T +(\050* \050Width Sq\051 \050Width Sq\051\051\051) 48.7 234.47 T +0 12 Q +0.3 (Lisp may give a warning about an unknown free vari-) 36.7 209.14 P +1.05 (able, but probably won't even do that if you type the) 36.7 197.14 P +2 11 Q +7.68 (defmethod) 36.7 185.14 P +0 12 Q +3.49 ( directly into the Lisp Listener \050Lucid) 96.1 185.14 P +(doesn't\051. So you might not get an error until run-time.) 36.7 173.14 T +315.7 77.59 576.7 714 R +7 X +V +315.7 709.79 576.7 714 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315.7 711.99 855.7 711.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +315.7 710.47 855.7 710.47 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +1.43 (n) 315.7 700.45 P +1 14 Q +1.64 (Forgetting accessors are functions and thus) 326.09 700.45 P +(could con\337ict with built-in function names.) 326.5 686.45 T +0 12 Q +(E.g. writing) 315.7 673.79 T +2 10 Q +(\050defclass Graphical-Object \050\051) 315.7 661.12 T +(\050\050Position :accessor Position\051\051\051) 327.7 651.12 T +0 12 Q +0.3 (Lisp will not accept this since you cannot rede\336ne the) 315.7 625.79 P +(built-in) 315.7 613.79 T +2 11 Q +(position) 354.04 613.79 T +0 12 Q +( function.) 406.84 613.79 T +315.7 603.57 576.7 607.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315.7 605.78 855.7 605.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +315.7 604.25 855.7 604.25 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +1.52 (n) 315.7 594.24 P +1 14 Q +1.74 (Putting the new value last instead of \336rst in) 326.09 594.24 P +(the de\336nition of a SETF method.) 326.5 580.24 T +0 12 Q +(W) 315.7 567.57 T +(riting) 326.55 567.57 T +2 10 Q +(\050defmethod \050setf Area\051 \050\050Sq Square\051) 315.7 554.9 T +(\050New-Area number\051\051) 441.7 544.9 T +(\050setf \050Width Sq\051 \050sqrt New-Area\051\051\051) 327.7 534.9 T +0 12 Q +(instead of) 315.7 523.57 T +2 10 Q +(\050defmethod \050setf Area\051 \050\050New-Area number\051) 315.7 510.9 T +(\050Sq Square\051\051) 441.7 500.9 T +(\050setf \050Width Sq\051 \050sqrt New-Area\051\051\051) 327.7 490.9 T +0 12 Q +-0.12 (Lisp will accept the former) 315.7 465.57 P +-0.12 (, and then users are puzzled) 444.7 465.57 P +0.5 (as to why) 315.7 453.57 P +2 11 Q +1.09 (\050setf \050Area Square-1\051 10\051) 366.19 453.57 P +0 12 Q +0.5 (doesn't) 543.21 453.57 P +(work.) 315.7 441.57 T +315.7 431.36 576.7 435.57 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +315.7 433.56 855.7 433.56 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +315.7 432.04 855.7 432.04 2 L +7 X +V +0 X +N +32.2 72 588.8 723 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +0.42 (n) 315.7 422.02 P +1 14 Q +0.48 (Putting the new value last instead of \336rst in a) 326.09 422.02 P +(call to a :writer method.) 326.5 408.02 T +0 12 Q +(E.g given) 315.7 395.36 T +2 10 Q +(\050defclass Circle \050\051) 315.7 382.69 T +(\050\050Radius :reader Radius) 327.7 372.69 T +(:writer Set-Radius) 381.7 362.69 T +(:initform 5\051\051\051) 381.7 352.69 T +(\050setq Circle-1 \050make-instance 'Circle\051\051) 315.7 342.69 T +0 12 Q +(W) 315.7 331.36 T +(riting) 326.55 331.36 T +2 10 Q +(\050Set-Radius Circle-1 10\051) 315.7 318.69 T +0 12 Q +(Instead of) 315.7 307.36 T +2 10 Q +(\050Set-Radius 10 Circle-1\051) 315.7 294.69 T +305.68 714 305.68 75 2 L +0.5 H +2 Z +N +0 0 612 792 C +FMENDPAGE +%%EndPage: "10" 14 +%%Page: "9" 15 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Exercise: Warm-up) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +395.14 719.46 216.86 719.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Exercise: Warm-up) 216.86 722 T +6 F +0.25 (1.) 54 682.67 P +0 14 Q +0.13 (De\336ne a Rectangle object with a W) 80.94 682.67 P +0.13 (idth and a Height slot, and a reader and writer for) 280.24 682.67 P +(each. T) 54 666.67 T +(ry making a few instances, retrieving and changing slots, etc.) 94.71 666.67 T +6 24 Q +-1.04 (2.) 54 620.67 P +0 14 Q +-0.55 (Rewrite your Rectangle class, but instead of de\336ning a :reader and :writer for the slots,) 79.64 620.67 P +(reproduce their behavior yourself using defmethod.) 54 604.67 T +6 24 Q +-0.28 (3.) 54 558.67 P +0 14 Q +-0.15 (Create a hierarchy of geometric objects \050circles, rectangles, squares, and others as de-) 80.41 558.67 P +-0.46 (sired\051 similar to the examples shown already) 54 542.67 P +-0.46 (. Be able to lookup and change the appropriate) 300.76 542.67 P +(\336elds indicating dimensions for each.) 54 526.67 T +6 24 Q +(4.) 54 480.67 T +0 14 Q +(De\336ne a method for each that returns the object\325) 80.69 480.67 T +(s area.) 351.29 480.67 T +6 24 Q +-1.22 (5.) 54 434.67 P +0 14 Q +-0.64 (Create a list of at least 100 objects of various types. W) 79.47 434.67 P +-0.64 (rite a function that will take such) 377.52 434.67 P +(a list and calculate the sum of the areas.) 54 418.67 T +6 24 Q +0.48 (6.) 54 372.67 P +0 14 Q +0.25 (W) 81.17 372.67 P +0.25 (rite functions that will count the number of objects of each class in your list. Sum-) 93.82 372.67 P +-0.41 (ming various entries will add up to greater than the length of your list, since most instances) 54 356.67 P +0.64 (have multiple superclasses. For instance, if you have 100 instances in your list, and your) 54 340.67 P +1.87 (top-level class is Shape, then clearly) 54 324.67 P +2 12.5 Q +4.01 (\050Number-of-Given-Class \325Shape \051) 272.48 324.67 P +0 14 Q +(should return 100.) 54 308.67 T +FMENDPAGE +%%EndPage: "9" 15 +%%Page: "8" 16 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(DEFCLASS) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +2 F +0 X +(\050:documentation "The basic submarine class"\051\051 \051) 78 731.33 T +(\050setq Sub-1 \050make-instance \325Submarine\051\051) 54 711.33 T +(\050documentation Submarine-Class\051) 54 691.33 T +4 14 Q +(\336) 292.5 691.33 T +2 10 Q +("The basic submarine class") 312.32 691.33 T +(\050documentation \050class-of Sub-1\051\051) 54 681.33 T +4 14 Q +(\336) 291.5 681.33 T +2 10 Q +("The basic submarine class") 311.32 681.33 T +(\050documentation \050find-class \325Submarine\051\051) 54 671.33 T +4 14 Q +(\336) 291.5 671.33 T +2 10 Q +("The basic submarine class") 311.32 671.33 T +3 F +(n) 54 650.67 T +153.91 649.18 67.17 649.18 2 L +V +1.02 H +0 Z +N +1 14 Q +(:default-initargs) 67.17 650.67 T +0 12 Q +-0.45 (Supplies default values for) 54 637 P +2 11 Q +-0.98 (:initarg) 183.53 637 P +0 12 Q +-0.45 ( entries. These entries are almost always ones that were provided by) 236.33 637 P +0.08 (a superclass, since if they were de\336ned in the current class it would be easier to just put in a) 54 625 P +2 11 Q +0.19 (:initform) 498.6 625 P +0 12 Q +0.59 (for them. This is an alternative to repeating the slot name and supplying a new) 54 613 P +2 11 Q +1.3 (:initform) 442.16 613 P +0 12 Q +0.59 (, but is pre-) 501.56 613 P +-0.24 (ferred by some people as being more concise. In addition, in some situations the slot name is kept private,) 54 601 P +0.15 (and only the) 54 589 P +2 11 Q +0.34 (:initarg) 116.79 589 P +0 12 Q +0.15 (\325) 169.59 589 P +0.15 (s are advertized as the of) 172.92 589 P +0.15 (\336cial interface. The) 292.42 589 P +2 11 Q +0.34 (:default-initargs) 389.52 589 P +0 12 Q +0.15 ( entry over-) 501.71 589 P +-0.03 (rides any local or inherited) 54 577 P +2 11 Q +-0.07 (:initform) 185.48 577 P +0 12 Q +-0.03 (. The values are evaluated every time) 244.88 577 P +2 11 Q +-0.07 (make-instance) 426.6 577 P +0 12 Q +-0.03 ( is called.) 512.4 577 P +2 10 Q +(\050defclass Submarine \050\051) 54 564.33 T +(\050\050Depth :accessor Depth :initarg :Depth :initform 100\051) 66 554.33 T +(\050Speed :accessor Speed :initarg :Speed :initform 5\051\051\051) 72 544.33 T +(\050defclass Slow-Submarine \050Submarine\051) 54 524.33 T +(\050\051) 66 514.33 T +(\050:default-initargs) 66 504.33 T +(:Speed 1\051\051) 84 494.33 T +(\050setq Sub-1 \050make-instance \325Slow-Submarine\051\051) 54 474.33 T +(\050Speed Sub-1\051) 54 464.33 T +4 14 Q +( \336) 132 464.33 T +2 10 Q +( 1) 149.32 464.33 T +3 F +(n) 54 443.67 T +126.52 442.18 67.17 442.18 2 L +V +N +1 14 Q +(:metaclass) 67.17 443.67 T +0 12 Q +0.19 (Can be used to change the general behavior of classes themselves, by changing the built-in superclass of) 54 430 P +(user) 54 418 T +(-de\336ned classes from the usual default of) 73.75 418 T +2 11 Q +(standard-class) 274.04 418 T +0 12 Q +(. Not for the faint of heart.) 366.44 418 T +FMENDPAGE +%%EndPage: "8" 16 +%%Page: "7" 17 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(DEFCLASS) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +3 F +0 X +(n) 54 728.67 T +124.58 727.18 67.17 727.18 2 L +V +1.02 H +0 Z +N +1 14 Q +(:allocation) 67.17 728.67 T +0 12 Q +0.98 (Speci\336es whether a slot\325) 54 715 P +0.98 (s value is speci\336c to each instance \050) 173.93 715 P +2 11 Q +2.16 (:instance) 351.76 715 P +0 12 Q +0.98 (\051, or has a single value that is) 411.16 715 P +(shared by all instances of that class \050) 54 703 T +2 11 Q +(:class) 229.63 703 T +0 12 Q +(\051. The default is) 269.23 703 T +2 11 Q +(:instance) 348.22 703 T +0 12 Q +(.) 407.62 703 T +2 10 Q +(\050defclass Submarine \050\051) 54 690.33 T +(\050\050Depth :accessor Depth :initform 100\051) 66 680.33 T +(\050Speed :accessor Speed :initform 5\051\051\051) 72 670.33 T +(\050defclass Los-Angeles \050Submarine\051) 54 650.33 T +(\050\050Max-Speed :accessor Max-Speed :initform 10 :allocation :class\051\051\051) 66 640.33 T +(\050setq SSN-1 \050make-instance \325Los-Angeles\051\051) 54 620.33 T +(\050setq SSN-2 \050make-instance \325Los-Angeles\051\051) 54 610.33 T +(\050Max-Speed SSN-1\051) 54 600.33 T +4 14 Q +(\336) 162 600.33 T +2 10 Q +( 10) 175.82 600.33 T +(\050Max-Speed SSN-2\051) 54 590.33 T +4 14 Q +(\336) 162 590.33 T +2 10 Q +( 10) 175.82 590.33 T +(\050setf \050Max-Speed SSN-1\051 15\051) 54 580.33 T +(\050Max-Speed SSN-1\051) 54 570.33 T +4 14 Q +(\336) 162 570.33 T +2 10 Q +( 15) 175.82 570.33 T +(\050Max-Speed SSN-2\051) 54 560.33 T +4 14 Q +(\336) 162 560.33 T +2 10 Q +( 15) 175.82 560.33 T +3 F +(n) 54 539.67 T +94.6 538.18 67.17 538.18 2 L +V +N +1 14 Q +(:type) 67.17 539.67 T +0 12 Q +-0.52 (Speci\336es a Common Lisp type for the value of the slot. This type information may be used by the compiler) 54 526 P +-0.01 (to provide optimizations, or might be used to do error checking. However) 54 514 P +-0.01 (, error checking is not required,) 407.07 514 P +-0.05 (and probably won\325) 54 502 P +-0.05 (t be done except when compiled with high) 144.32 502 P +2 11 Q +-0.12 (safety) 350.52 502 P +0 12 Q +-0.05 ( settings. It is similar to a type dec-) 390.12 502 P +0.57 (laration in C: putting a value of the wrong type into a slot may result in a relatively arbitrary error next) 54 490 P +-0.63 (time the slot value is used. Also recall that, in Common Lisp in general, type) 54 478 P +2 11 Q +-1.38 (integer) 415.88 478 P +0 12 Q +-0.63 ( doesn\325) 462.08 478 P +-0.63 (t let the com-) 496.23 478 P +0.25 (piler do many optimizations, since integers can be of arbitrary size. For \336xed-size integers, like) 54 466 P +2 11 Q +0.54 (int) 517.61 466 P +0 12 Q +0.25 (\325) 537.41 466 P +0.25 (s in) 540.75 466 P +(C, use the) 54 454 T +2 11 Q +(fixnum) 104.66 454 T +0 12 Q +( type declaration.) 144.26 454 T +-0.31 (The) 54 440 P +2 11 Q +-0.68 (:type) 75.35 440 P +0 12 Q +-0.31 ( entry gets inherited by combining the type restrictions of the current class and all superclasses) 108.35 440 P +0.42 (using) 54 428 P +2 11 Q +0.93 (and) 83.43 428 P +0 12 Q +0.42 (. This means that a class cannot relax a type restriction imposed by a superclass, only make it) 103.23 428 P +(more stringent.) 54 416 T +2 10 Q +(\050defclass Submarine \050\051) 54 403.33 T +(\050\050Depth :type integer\051\051\051) 210 403.33 T +(\050defclass SSN \050Submarine\051 \050\050Depth :type fixnum\051\051\051) 54 393.33 T +0 12 Q +0.25 (This means that a legal value of the) 54 372 P +2 11 Q +0.55 (Depth) 229.3 372 P +0 12 Q +0.25 ( slot must satisfy) 262.3 372 P +2 11 Q +0.55 ( \050typep) 344.06 372 P +10 F +0.55 (value) 397.95 372 P +2 F +0.55 ( \325\050and integer fix-) 430.95 372 P +(num\051\051) 54 360 T +0 12 Q +(.) 87 360 T +3 10 Q +(n) 54 338.67 T +153.27 337.18 67.17 337.18 2 L +V +N +1 14 Q +(:documentation) 67.17 338.67 T +0 12 Q +-0.35 (This option, rarely used, speci\336es documentation for the slot. The only way to retrieve this documentation) 54 325 P +-0.03 (is to call the) 54 313 P +2 11 Q +-0.08 (documentation) 115.2 313 P +0 12 Q +-0.03 ( function on the slot object. However) 201 313 P +-0.03 (, the slot object can only be gotten by) 378.62 313 P +0.32 (using a function in the CLOS MOP \050Meta-Object Protocol\051. Since the MOP did not get accepted as part) 54 301 P +0.72 (of the \336rst ANSI standard for Lisp, this means that there is no way in standard Lisp to retrieve the slot) 54 289 P +0.29 (documentation! Now) 54 277 P +0.29 (, the simplest MOP functions are in fact in most implementations \050including Lucid,) 155.16 277 P +0.65 (Symbolics, Harlequin, and Franz\051, but since this is not guaranteed to be portable, slot documentation is) 54 265 P +(generally not used.) 54 253 T +54 242.78 558 247 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +54 244.99 594 244.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +54 243.47 594 243.47 2 L +7 X +V +0 X +N +0 0 612 792 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 54 233.45 T +1 14 Q +(Class Options) 64.39 233.45 T +0 12 Q +(Class options are a list of one of the following keywords, along with an associated value.) 54 220.78 T +2 11 Q +(:documentation) 104.4 206.78 T +0 12 Q +(documentation for the class object) 225 206.78 T +2 11 Q +(:default-initargs) 104.4 194.78 T +0 12 Q +(default values for the previously speci\336ed) 225 194.78 T +2 11 Q +(:initarg) 428.96 194.78 T +0 12 Q +(\325) 481.76 194.78 T +(s) 485.1 194.78 T +2 11 Q +(:metaclass) 104.4 182.78 T +0 12 Q +0.12 (the superclass of the class object itself. Leave this for the CLOS wiz-) 225 182.78 P +(ards.) 104.4 170.78 T +(Each class option can be speci\336ed at most once for a given class.) 54 158.78 T +3 10 Q +(n) 54 137.45 T +153.27 135.97 67.17 135.97 2 L +V +1.02 H +0 Z +N +1 14 Q +(:documentation) 67.17 137.45 T +0 12 Q +1.18 (Speci\336es a documentation string for the class object. Passing the class object to the) 54 123.78 P +2 11 Q +2.6 (documentation) 472.2 123.78 P +0 12 Q +-0.13 (function will retrieve it. The class object is returned from a call to) 54 111.78 P +2 11 Q +-0.28 (defclass) 370.98 111.78 P +0 12 Q +-0.13 (, or can be found by passing) 423.78 111.78 P +(an instance to) 54 99.78 T +2 11 Q +(class-of) 122.99 99.78 T +0 12 Q +( or supplying a class name to) 175.79 99.78 T +2 11 Q +(find-class) 318.11 99.78 T +0 12 Q +(.) 384.11 99.78 T +2 10 Q +(\050setq Submarine-Class) 54 87.12 T +(\050defclass Submarine \050\051) 66 77.12 T +(\050\050Depth :accessor Depth :initform 100\051) 78 67.12 T +(\050Speed :accessor Speed :initform 5\051\051) 84 57.12 T +FMENDPAGE +%%EndPage: "7" 17 +%%Page: "6" 18 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(DEFCLASS) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 45 558 738 R +7 X +V +3 F +0 X +(n) 54 728.67 T +113.72 727.18 67.17 727.18 2 L +V +1.02 H +0 Z +N +1 14 Q +(:initform) 67.17 728.67 T +0 12 Q +0.06 (Speci\336es a default initial value for the slot. This value is evaluated each time) 54 715 P +2 11 Q +0.13 (make-instance) 426.42 715 P +0 12 Q +0.06 ( is called.) 512.22 715 P +(Supplying an explicit initial value at) 54 703 T +2 11 Q +(make-instance) 231.34 703 T +0 12 Q +( time \050see) 317.14 703 T +2 11 Q +(:initarg) 366.79 703 T +0 12 Q +(\051 will override this.) 419.59 703 T +2 10 Q +(\050defclass Submarine \050\051) 54 690.33 T +(\050\050Depth :initform 100\051) 66 680.33 T +(\050Speed :initform 5\051\051\051) 72 670.33 T +(\050setq Sub-1 \050make-instance \325Submarine\051\051) 54 650.33 T +(\050slot-value \325Sub-1 \325Speed\051) 54 640.33 T +4 14 Q +(\336) 216 640.33 T +2 10 Q +( 5) 229.82 640.33 T +(\050slot-value \325Sub-1 \325Depth\051) 54 630.33 T +4 14 Q +(\336) 216 630.33 T +2 10 Q +( 100) 229.82 630.33 T +3 F +(n) 54 609.67 T +106.09 608.18 67.17 608.18 2 L +V +N +1 14 Q +(:reader) 67.17 609.67 T +0 12 Q +-0.1 (Speci\336es the name of a function that will read the slot \050in lieu of using) 54 596 P +2 11 Q +-0.23 (slot-value) 393.42 596 P +0 12 Q +-0.1 (\051. This value is NOT) 459.42 596 P +-0.38 (evaluated, and thus should not be quoted. Using) 54 584 P +2 11 Q +-0.85 (:accessor) 284.24 584 P +0 12 Q +-0.38 ( obviates the need for) 343.64 584 P +2 11 Q +-0.85 (:reader) 448.03 584 P +0 12 Q +-0.38 ( or) 494.23 584 P +2 11 Q +-0.85 (:writer) 509.46 584 P +0 12 Q +-0.38 (.) 555 584 P +2 10 Q +(\050defclass Submarine \050\051) 54 571.33 T +(\050\050Depth :reader Depth :initform 100\051) 66 561.33 T +(\050Speed :reader Speed :initform 5\051\051\051) 72 551.33 T +(\050setq Sub-1 \050make-instance \325Submarine\051\051) 54 531.33 T +(\050Depth Sub-1\051) 54 521.33 T +4 14 Q +(\336) 138 521.33 T +2 10 Q +( 100) 151.82 521.33 T +(\050Speed Sub-1\051) 54 511.33 T +4 14 Q +(\336) 138 511.33 T +2 10 Q +( 5) 151.82 511.33 T +3 F +(n) 54 490.67 T +102.25 489.18 67.17 489.18 2 L +V +N +1 14 Q +(:writer) 67.17 490.67 T +0 12 Q +-0.05 (Speci\336es the name of a function that will set the slot \050in lieu of using) 54 477 P +2 11 Q +-0.12 (setf) 386.83 477 P +0 12 Q +-0.05 ( on) 413.23 477 P +2 11 Q +-0.12 (slot-value) 431.12 477 P +0 12 Q +-0.05 (\051. Not evalu-) 497.12 477 P +(ated. Using) 54 465 T +2 11 Q +(:accessor) 111.66 465 T +0 12 Q +( obviates the need for) 171.06 465 T +2 11 Q +(:reader) 277.37 465 T +0 12 Q +( or) 323.57 465 T +2 11 Q +(:writer) 339.56 465 T +0 12 Q +(.) 385.1 465 T +2 10 Q +(\050defclass Submarine \050\051) 54 452.33 T +(\050\050Depth :reader Depth :writer Set-Depth :initform 100\051) 66 442.33 T +(\050Speed :reader Speed :writer Set-Speed :initform 5\051\051\051) 72 432.33 T +(\050setq Sub-1 \050make-instance \325Submarine\051\051) 54 412.33 T +(\050Depth Sub-1\051) 54 402.33 T +4 14 Q +(\336) 138 402.33 T +2 10 Q +( 100) 151.82 402.33 T +(\050Speed Sub-1\051) 54 392.33 T +4 14 Q +(\336) 138 392.33 T +2 10 Q +( 5) 151.82 392.33 T +(\050Set-Depth 200 Sub-1\051) 54 382.33 T +(\050Set-Speed 4 Sub-1\051) 54 372.33 T +(\050Depth Sub-1\051) 54 362.33 T +4 14 Q +(\336) 138 362.33 T +2 10 Q +( 200) 151.82 362.33 T +(\050Speed Sub-1\051) 54 352.33 T +4 14 Q +(\336) 138 352.33 T +2 10 Q +( 4) 151.82 352.33 T +3 F +(n) 54 331.67 T +120.78 330.18 67.17 330.18 2 L +V +N +1 14 Q +(:accessor) 67.17 331.67 T +0 12 Q +-0.56 (Speci\336es the name of a function that will both read and \050with) 54 318 P +2 11 Q +-1.24 (setf) 343.87 318 P +0 12 Q +-0.56 (\051 set the slot. If you have a) 370.27 318 P +2 11 Q +-1.24 (:accessor) 496.08 318 P +0 12 Q +-0.56 (,) 555 318 P +(you don\325) 54 306 T +(t need to specify either) 96.78 306 T +2 11 Q +(:reader) 209.09 306 T +0 12 Q +( or) 255.29 306 T +2 11 Q +(:writer) 271.28 306 T +0 12 Q +(. Not evaluated.) 316.82 306 T +2 10 Q +(\050defclass Submarine \050\051) 54 293.33 T +(\050\050Depth :accessor Depth :initform 100\051) 66 283.33 T +(\050Speed :accessor Speed :initform 5\051\051\051) 72 273.33 T +(\050setq Sub-1 \050make-instance \325Submarine\051\051) 54 253.33 T +(\050Depth Sub-1\051) 54 243.33 T +4 14 Q +(\336) 138 243.33 T +2 10 Q +( 100) 151.82 243.33 T +(\050Speed Sub-1\051) 54 233.33 T +4 14 Q +(\336) 138 233.33 T +2 10 Q +( 5) 151.82 233.33 T +(\050setf \050Depth Sub-1\051 200\051) 54 223.33 T +(\050setf \050Speed Sub-1\051 4\051) 54 213.33 T +(\050Depth Sub-1\051) 54 203.33 T +4 14 Q +(\336) 138 203.33 T +2 10 Q +( 200) 151.82 203.33 T +(\050Speed Sub-1\051) 54 193.33 T +4 14 Q +(\336) 138 193.33 T +2 10 Q +( 4) 151.82 193.33 T +3 F +(n) 54 172.67 T +106.08 171.18 67.17 171.18 2 L +V +N +1 14 Q +(:initarg) 67.17 172.67 T +0 12 Q +-0.12 (Speci\336es a keyword that can be passed to) 54 159 P +2 11 Q +-0.25 (make-instance) 255.04 159 P +0 12 Q +-0.12 ( to give a slot an initial value. If this keyword) 340.84 159 P +0.11 (is used at) 54 147 P +2 11 Q +0.24 (make-instance) 101.99 147 P +0 12 Q +0.11 ( time, it overrides any default initial value that) 187.79 147 P +2 11 Q +0.24 (:initform) 414.06 147 P +0 12 Q +0.11 ( provided. Unlike) 473.46 147 P +(with) 54 135 T +2 11 Q +(defstruct) 78.34 135 T +0 12 Q +(,) 137.74 135 T +2 11 Q +(defclass) 143.74 135 T +0 12 Q +( does not make any of these keywords automatically available.) 196.54 135 T +2 10 Q +(\050defclass Submarine \050\051) 54 122.33 T +(\050\050Depth :accessor Depth :initarg :Depth :initform 100\051) 66 112.33 T +(\050Speed :accessor Speed :initarg :Speed :initform 5\051\051\051) 72 102.33 T +(\050setq Sub-1 \050make-instance \325Submarine :Depth 200\051\051) 54 82.33 T +(\050Depth Sub-1\051) 54 72.33 T +4 14 Q +(\336) 138 72.33 T +2 10 Q +( 200) 151.82 72.33 T +(\050Speed Sub-1\051) 54 62.33 T +4 14 Q +(\336) 138 62.33 T +2 10 Q +( 5) 151.82 62.33 T +FMENDPAGE +%%EndPage: "6" 18 +%%Page: "5" 19 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(DEFCLASS) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +36 45 576 747 R +7 X +V +359.03 728.46 252.97 728.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(DEFCLASS) 252.97 731 T +36 711.79 576 716 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36 713.99 576 713.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36 712.47 576 712.47 2 L +7 X +V +0 X +N +0 0 612 792 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 36 702.45 T +117.86 700.97 46.39 700.97 2 L +V +1.02 H +0 Z +N +1 14 Q +(Basic Syntax) 46.39 702.45 T +2 12.5 Q +(\050defclass) 36 689.45 T +10 F +(Class-Name) 111 689.45 T +2 F +( \050) 186 689.45 T +10 F +(Superclass) 201 689.45 T +2 F +(*\051) 276 689.45 T +(\050) 51 675.95 T +10 F +(Slot-Definition) 58.5 675.95 T +2 F +(*\051) 171 675.95 T +10 F +(Class-Option) 51 662.45 T +2 F +(*\051) 141 662.45 T +2 10 Q +(\240) 156 667.45 T +3 F +(n) 36 639.95 T +102.78 638.47 49.17 638.47 2 L +V +N +1 14 Q +(Examples) 49.17 639.95 T +8 12 Q +(\245) 36 621.29 T +(Empty super) 43.2 621.29 T +(class list, empty slot de\336nition list, no class options) 109.32 621.29 T +2 10 Q +(\050defclass Graphical-Object \050\051) 36 610.62 T +(\050\051\051) 48 600.62 T +8 12 Q +(\245) 36 583.29 T +(One super) 43.2 583.29 T +(class, two slot de\336nition lists, no class options) 95.99 583.29 T +2 10 Q +(\050defclass Rectangle \050Graphical-Object\051) 36 572.62 T +(\050\050Height :accessor Height :initarg :Height :initform 3\051) 48 562.62 T +(\050Width) 54 552.62 T +( :accessor) 96 552.62 T +(Width) 162 552.62 T +( :initarg :Width) 198 552.62 T +( :initform 5\051\051\051) 300 552.62 T +8 12 Q +(\245) 36 535.29 T +(One super) 43.2 535.29 T +(class, no slots, one class option.) 95.99 535.29 T +2 10 Q +(\050defclass Square \050Rectangle\051) 36 524.62 T +(\050\051) 48 514.62 T +(\050:documentation "The SQUARE class"\051\051) 48 504.62 T +3 F +(n) 36 483.95 T +209.32 482.47 49.17 482.47 2 L +V +N +1 14 Q +(make-instance and slot-value) 49.17 483.95 T +0 12 Q +-0.11 (Given a class de\336nition,) 36 470.29 P +2 11 Q +-0.24 (make-instance) 154.55 470.29 P +0 12 Q +-0.11 ( will make an actual object of that class. The) 240.35 470.29 P +2 11 Q +-0.24 (slot-value) 456.22 470.29 P +0 12 Q +-0.11 ( function is) 522.22 470.29 P +(the most primitive function for retrieving and setting values of slots.) 36 458.29 T +2 10 Q +(\050defclass Submarine \050\051) 36 445.62 T +(\050\050Depth\051) 48 435.62 T +(\050Speed\051\051\051) 54 425.62 T +(\050setq Sub-1 \050make-instance \324Submarine\051\051) 36 405.62 T +(\050setf \050slot-value Sub-1 \325Depth\051 100\051) 36 395.62 T +(\050slot-value Sub-1 \325Depth\051) 36 385.62 T +4 14 Q +(\336) 192 385.62 T +2 10 Q +( 100) 205.82 385.62 T +(\050slot-value Sub-1 \325Speed\051) 36 375.62 T +4 14 Q +(\336) 192 375.62 T +2 10 Q +( [Error: unbound slot SPEED]) 205.82 375.62 T +0 12 Q +0.04 (Unlike with the methods de\336ned by) 36 354.29 P +2 11 Q +0.08 (:reader) 210.87 354.29 P +0 12 Q +0.04 (,) 256.59 354.29 P +2 11 Q +0.08 (:writer) 262.63 354.29 P +0 12 Q +0.04 (, and) 308.35 354.29 P +2 11 Q +0.08 (:accessor) 334.74 354.29 P +0 12 Q +0.04 (, you cannot put) 393.67 354.29 P +2 11 Q +0.08 (:before) 474.13 354.29 P +0 12 Q +0.04 ( or) 520.33 354.29 P +2 11 Q +0.08 (:after) 536.4 354.29 P +0 12 Q +(methods on) 36 342.29 T +2 11 Q +(slot-value) 94.67 342.29 T +0 12 Q +( or) 160.67 342.29 T +2 11 Q +(\050setf slot-value\051) 176.66 342.29 T +0 12 Q +(.) 288.86 342.29 T +0.15 (There are also functions) 36 328.29 P +2 11 Q +0.32 (slot-exists-p) 155.22 328.29 P +0 12 Q +0.15 ( and) 241.02 328.29 P +2 11 Q +0.32 (slot-boundp) 264.65 328.29 P +0 12 Q +0.15 ( for checking if a given instance has a certain slot) 337.25 328.29 P +(and if that slot has a value, respectively) 36 316.29 T +(.) 224.52 316.29 T +36 306.07 576 310.29 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36 308.28 576 308.28 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +36 306.75 576 306.75 2 L +7 X +V +0 X +N +0 0 612 792 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 36 296.74 T +1 14 Q +(Slot De\336nitions) 46.39 296.74 T +0 12 Q +-0.11 (Slot de\336nitions are lists composed of the slot name followed optionally by pairs of the following slot option key-) 36 284.07 P +(words and associated value.) 36 272.07 T +2 11 Q +(:initform) 86.4 258.07 T +0 12 Q +(a default value for the slot \050unbound otherwise\051) 189 258.07 T +2 11 Q +(:reader) 86.4 246.07 T +0 12 Q +(the name of a function to lookup the slot) 189 246.07 T +2 12.5 Q +(:writer) 86.4 234.07 T +0 12 Q +(the name of a function to set the slot) 189 234.07 T +2 11 Q +(:accessor) 86.4 222.07 T +0 12 Q +(the name of a function to read, and \050with) 189 222.07 T +2 11 Q +(setf) 387.62 222.07 T +0 12 Q +(\051 set the slot) 414.02 222.07 T +2 11 Q +(:initarg) 86.4 210.07 T +0 12 Q +(the name of a keyword for) 189 210.07 T +2 11 Q +(make-instance) 318.96 210.07 T +(:allocation) 86.4 198.07 T +0 12 Q +(whether slot is shared or speci\336c to each instance) 189 198.07 T +2 11 Q +(:type) 86.4 186.07 T +0 12 Q +(a Common Lisp type for use in compiler optimizations) 189 186.07 T +2 11 Q +(:documentation) 86.4 174.07 T +0 12 Q +(documentation for the very rarely-seen slot object) 189 174.07 T +-0.06 (V) 36 162.07 P +-0.06 (alues supplied by) 43.33 162.07 P +2 11 Q +-0.14 (:initform) 129.47 162.07 P +0 12 Q +-0.06 (,) 188.87 162.07 P +2 11 Q +-0.14 (:allocation) 194.81 162.07 P +0 12 Q +-0.06 (, and) 267.41 162.07 P +2 11 Q +-0.14 (:documentation) 293.61 162.07 P +7 12 Q +-0.06 (override) 388.95 162.07 P +0 F +-0.06 ( any previously supplied value) 429.6 162.07 P +-0.58 (in a superclass. V) 36 150.07 P +-0.58 (alues supplied via) 117.58 150.07 P +2 11 Q +-1.27 (:reader) 204.83 150.07 P +0 12 Q +-0.58 (,) 250.55 150.07 P +2 11 Q +-1.27 (:writer) 255.98 150.07 P +0 12 Q +-0.58 (,) 301.7 150.07 P +2 11 Q +-1.27 (:accessor) 307.12 150.07 P +0 12 Q +-0.58 ( and) 366.52 150.07 P +2 11 Q +-1.27 (:initarg) 388.69 150.07 P +0 12 Q +-0.58 ( give values that apply to the) 441.49 150.07 P +-0.06 (current class) 36 138.07 P +7 F +-0.06 (in addition to) 99.2 138.07 P +0 F +-0.06 ( values supplied for superclasses. A) 163.77 138.07 P +2 11 Q +-0.12 (:type) 337.73 138.07 P +0 12 Q +-0.06 ( restriction imposed on a slot is) 370.73 138.07 P +7 F +-0.06 (intersected) 523.34 138.07 P +0 F +-0.04 (with the restrictions on that slot imposed by superclasses. Similarly) 36 126.07 P +-0.04 (, you can only supply one) 358.17 126.07 P +2 11 Q +-0.09 (:initform) 484.24 126.07 P +0 12 Q +-0.04 (,) 543.64 126.07 P +2 11 Q +-0.09 (:al-) 549.6 126.07 P +-1.41 (location) 36 114.07 P +0 12 Q +-0.64 (,) 88.8 114.07 P +2 11 Q +-1.41 (:documentation) 94.16 114.07 P +0 12 Q +-0.64 (, or) 186.56 114.07 P +2 11 Q +-1.41 (:type) 204.27 114.07 P +0 12 Q +-0.64 ( entry for a given slot, but you can supply multiple) 237.27 114.07 P +2 11 Q +-1.41 (:reader) 476.2 114.07 P +0 12 Q +-0.64 (,) 521.92 114.07 P +2 11 Q +-1.41 (:writer) 527.28 114.07 P +0 12 Q +-0.64 (,) 573 114.07 P +2 11 Q +(:accessor) 36 102.07 T +0 12 Q +( or) 95.4 102.07 T +2 11 Q +(:initarg) 111.4 102.07 T +0 12 Q +( entries.) 164.2 102.07 T +36 69 576 72.98 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +36 69 576 72.98 R +7 X +0 0 0 1 0 0 0 K +V +36 70.96 567 70.96 2 L +V +0.5 H +2 Z +0 X +N +0 0 612 792 C +0 10 Q +0 X +0 0 0 1 0 0 0 K +(\240) 54 62.33 T +(I\325m using regular expression notation, where a \322*\323 means \3220 or more occurrences of\323. Thus) 61.5 62.33 T +(\050Superclass*\051 means \3220 or more superclasses, inside parens\323.) 54 50.33 T +FMENDPAGE +%%EndPage: "5" 19 +%%Page: "4" 20 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Thumbnail CLOS Summary) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +36 45 576 756 R +7 X +V +433.4 737.46 178.6 737.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Thumbnail CLOS Summary) 178.6 740 T +27.7 81 584.3 732 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +32.2 86.59 293.2 723 R +7 X +0 0 0 1 0 0 0 K +V +32.2 718.79 293.2 723 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +32.2 720.99 572.2 720.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +32.2 719.47 572.2 719.47 2 L +7 X +V +0 X +N +27.7 81 584.3 732 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 32.2 709.45 T +1 14 Q +(defclass) 42.59 709.45 T +8 F +(Slot Options) 45.67 689.45 T +0 12 Q +(\245) 53.8 676.79 T +2 12.5 Q +(:) 61 676.79 T +2 11 Q +(initform) 68.5 676.79 T +0 12 Q +( - Default slot value. Evaluated at) 121.3 676.79 T +(make-instance time.) 63.16 663.79 T +(\245) 53.8 650.79 T +2 11 Q +(:reader) 61 650.79 T +0 12 Q +( - slot option to de\336ne a method to) 107.2 650.79 T +(read a slot value) 63.16 637.79 T +(\245) 53.8 624.79 T +2 11 Q +(:writer) 61 624.79 T +0 12 Q +( - makes method to set slot value) 107.2 624.79 T +-0.02 (\245) 53.8 611.79 P +2 11 Q +-0.04 (:accessor) 61 611.79 P +0 12 Q +-0.02 ( - makes two methods, a reader and) 120.4 611.79 P +(a setf writer) 63.16 598.79 T +(\245) 53.8 585.79 T +2 11 Q +(:initarg) 61 585.79 T +0 12 Q +(- Defines a keyword to make-in-) 116.8 585.79 T +(stance that sets slot value) 63.16 572.79 T +(\245) 53.8 559.79 T +2 11 Q +(:allocation) 61 559.79 T +0 12 Q +( - determines if slot is shared) 133.6 559.79 T +(\050:class\051 or normal \050omit or :instance\051) 63.16 546.79 T +-0.1 (\245) 53.8 533.79 P +2 11 Q +-0.21 (:type) 61 533.79 P +0 12 Q +-0.1 ( - Allows \050but does) 94 533.79 P +7 F +-0.1 (not) 188.51 533.79 P +0 F +-0.1 ( require\051 compiler) 203.85 533.79 P +(to make type assumptions) 63.16 520.79 T +(\245) 53.8 507.79 T +2 11 Q +(:documentation) 61 507.79 T +0 12 Q +( -) 153.4 507.79 T +(Associates a doc string) 163.4 507.79 T +(with a slot. No portable way of retrieving this) 63.16 494.79 T +(info.) 63.16 481.79 T +8 14 Q +(Class Options) 45.67 461.45 T +0 12 Q +(\245) 53.8 448.79 T +2 11 Q +(:documentation) 61 448.79 T +0 12 Q +( - Associates a doc string) 153.4 448.79 T +(with a class. Use documentation on the class) 63.16 435.79 T +-0.49 (object to retrieve this info. Y) 63.16 422.79 P +-0.49 (ou can use class-of,) 198.18 422.79 P +(\336nd-class, or the return value from defclass to) 63.16 409.79 T +(get the class object.) 63.16 396.79 T +(\245) 53.8 383.79 T +2 11 Q +(:default-initargs) 61 383.79 T +0 12 Q +( - Allows default values) 173.2 383.79 T +-0.1 (\050ala :initform\051 of already existing :initargs with-) 63.16 370.79 P +(out having to respecify slot.) 63.16 357.79 T +(\245) 53.8 344.79 T +2 11 Q +(:metaclass) 61 344.79 T +0 12 Q +( - Allows customization of basic) 127 344.79 T +(behavior of classes. Hackery for gurus only.) 63.16 331.79 T +32.2 322.57 293.2 326.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +32.2 324.78 572.2 324.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +32.2 323.25 572.2 323.25 2 L +7 X +V +0 X +N +27.7 81 584.3 732 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 32.2 313.24 T +1 14 Q +(Miscellaneous Class Operations) 42.59 313.24 T +0 12 Q +-0.28 (\245) 53.8 300.57 P +2 11 Q +-0.61 (make-instance) 61 300.57 P +0 12 Q +-0.28 ( - Creates an actual object of a) 146.8 300.57 P +(class.) 63.16 287.57 T +(\245) 53.8 274.57 T +2 11 Q +(slot-value) 61 274.57 T +0 12 Q +( - Atomic function to read the val-) 127 274.57 T +(ue of a slot. You usually want to use accessors) 63.16 261.57 T +(instead.) 63.16 248.57 T +(\245) 53.8 235.57 T +2 11 Q +(\050setf slot-value\051) 61 235.57 T +0 12 Q +( - Atomic function to) 173.2 235.57 T +(write the value of a slot. Normally use a writer) 63.16 222.57 T +-0.27 (or \050setf Accessor\051 function, but this internal ver-) 63.16 209.57 P +(sion would be called when writing your own) 63.16 196.57 T +(custom writer.) 63.16 183.57 T +(\245) 53.8 170.57 T +2 11 Q +(initialize-instance) 61 170.57 T +0 12 Q +( - Called by make-) 186.4 170.57 T +(instance, and the best place to put :after meth-) 63.16 157.57 T +(ods to do bookkeeping on instances.) 63.16 144.57 T +(\245) 53.8 131.57 T +2 11 Q +(print-object) 61 131.57 T +0 12 Q +( - Used whenever Lisp prints) 140.2 131.57 T +-0.36 (out an instance. You can write a custom version) 63.16 118.57 P +(to override default.) 63.16 105.57 T +311.2 86.59 572.2 723 R +7 X +V +0 X +(\245) 332.8 715 T +2 11 Q +(with-slots) 340 715 T +0 12 Q +( - a shorthand notation that lets) 406 715 T +-0.29 (you refer to slots as though they were variables,) 342.16 702 P +(but really use slot-value each time the variable) 342.16 689 T +(is referenced or set.) 342.16 676 T +(\245) 332.8 663 T +2 11 Q +(with-accessors) 340 663 T +0 12 Q +( - a shorthand notation that) 432.4 663 T +(lets you refer to accessors as though they were) 342.16 650 T +(variables, but really calls the accessor function) 342.16 637 T +(each time the variable is referenced or set.) 342.16 624 T +(\245) 332.8 611 T +(See) 340 611 T +2 11 Q +(Define-Class) 360.33 611 T +0 12 Q +( and) 439.53 611 T +2 11 Q +(Def-Class) 462.86 611 T +0 12 Q +( macros) 522.26 611 T +(for simpli\336ed interface with automatic :init-) 342.16 598 T +(form, :initar) 342.16 585 T +(gs and :accessor) 399.94 585 T +(.) 477.26 585 T +311.2 575.79 572.2 580 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +311.2 577.99 851.2 577.99 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +311.2 576.47 851.2 576.47 2 L +7 X +V +0 X +N +27.7 81 584.3 732 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 311.2 566.45 T +1 14 Q +(defmethod) 321.59 566.45 T +0 12 Q +(\245) 332.8 553.79 T +(Similar to defun but can replace a var in the ar-) 340 553.79 T +(glist with a) 342.16 540.79 T +2 11 Q +(\050Var Type\051) 398.5 540.79 T +0 12 Q +( pair) 464.5 540.79 T +(\245) 332.8 527.79 T +(If no generic function exists when method de-) 340 527.79 T +(\336ned, one is created) 342.16 514.79 T +(\245) 332.8 501.79 T +(Most built-in data types and all classes can be) 340 501.79 T +(specialized upon) 342.16 488.79 T +(\245) 332.8 475.79 T +(Cannot specialize on) 340 475.79 T +2 11 Q +(&optional) 442.99 475.79 T +0 12 Q +( or) 502.39 475.79 T +2 11 Q +(&key) 518.38 475.79 T +0 12 Q +( ar) 544.78 475.79 T +(gs) 556.89 475.79 T +(\245) 332.8 462.79 T +(For primary methods, only the single most spe-) 340 462.79 T +(ci\336c method is called) 342.16 449.79 T +(\245) 332.8 436.79 T +(For) 340 436.79 T +2 11 Q +(:before) 359.67 436.79 T +0 12 Q +( methods, all are executed in least-) 405.87 436.79 T +(speci\336c to most-speci\336c order) 342.16 423.79 T +(\245) 332.8 410.79 T +(For) 340 410.79 T +2 11 Q +(:after) 359.67 410.79 T +0 12 Q +( methods, all are executed in most-) 399.27 410.79 T +(speci\336c to least-speci\336c order) 342.16 397.79 T +(\245) 332.8 384.79 T +2 11 Q +(:around) 340 384.79 T +0 12 Q +( methods are the only type that can) 386.2 384.79 T +(prevent primary methods from \336ring) 342.16 371.79 T +(\245) 332.8 358.79 T +2 11 Q +(setf forms) 340 358.79 T +0 12 Q +( are considered primary methods,) 406 358.79 T +(and thus can have :before, :after) 342.16 345.79 T +(, and :around) 495.63 345.79 T +(methods associated with them) 342.16 332.79 T +(\245) 332.8 319.79 T +(Cannot add a method to a built-in standard \050i.e.) 340 319.79 T +(non-generic\051 function) 342.16 306.79 T +311.2 297.57 572.2 301.79 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +311.2 299.78 851.2 299.78 2 L +7 X +0 0 0 1 0 0 0 K +V +0.5 H +2 Z +0 X +N +311.2 298.25 851.2 298.25 2 L +7 X +V +0 X +N +27.7 81 584.3 732 C +3 10 Q +0 X +0 0 0 1 0 0 0 K +(n) 311.2 288.24 T +1 14 Q +(defgeneric) 321.59 288.24 T +0 12 Q +(\245) 332.8 275.57 T +(De\336nes generic function template) 340 275.57 T +(\245) 332.8 262.57 T +(Can de\336ne multiple methods in one form rather) 340 262.57 T +(than via multiple uses of defmethod.) 342.16 249.57 T +(\245) 332.8 236.57 T +2 11 Q +(:method-combination) 340 236.57 T +0 12 Q +( - Instead of having) 465.4 236.57 T +(the single most speci\336c method winning, you) 342.16 223.57 T +(could combine applicable methods in various) 342.16 210.57 T +(ways using this keyword.) 342.16 197.57 T +(\245) 332.8 184.57 T +2 11 Q +(:argument-precedence-order) 340 184.57 T +0 12 Q +( - De\336nes) 511.6 184.57 T +(which order ar) 342.16 171.57 T +(guments are examined in deter-) 411.92 171.57 T +(mining "most speci\336c". Default is L to R.) 342.16 158.57 T +(\245) 332.8 145.57 T +2 11 Q +(:documentation) 340 145.57 T +0 12 Q +( - Makes documentation for) 432.4 145.57 T +(the generic function ala doc strings in defun) 342.16 132.57 T +(\245) 332.8 119.57 T +(Cannot change a standard function into a gener-) 340 119.57 T +(ic one.) 342.16 106.57 T +301.18 723 301.18 84 2 L +0.5 H +2 Z +N +0 0 612 792 C +FMENDPAGE +%%EndPage: "4" 20 +%%Page: "3" 21 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Outline) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +36 45 576 756 R +7 X +V +339.9 737.46 272.1 737.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Outline) 272.1 740 T +27.7 30 584.3 732 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +32.2 33 293.2 723 R +7 X +0 0 0 1 0 0 0 K +V +8 12 Q +0 X +(I\051) 32.2 715 T +(What Ar) 43.87 715 T +(e Objects?) 89.31 715 T +0 F +(A\051) 53.8 703 T +(Comparison to structures/records) 66.46 703 T +(B\051) 53.8 691 T +(3 facets) 66.4 691 T +(1\051) 68.2 679 T +(Classes and inheritance) 81.2 679 T +(2\051) 68.2 667 T +(Behavior associated with objects \050methods/) 81.2 667 T +(overloading\051) 80.8 655 T +(3\051) 68.2 643 T +(Encapsulation and Data Protection) 81.2 643 T +(C\051) 53.8 631 T +(Simple Example: Geometric Shapes) 66.4 631 T +8 F +(II\051) 32.2 614 T +(De\336ning Classes: The Basics) 48.53 614 T +0 F +(A\051) 53.8 602 T +(defclass) 66.46 602 T +(B\051) 53.8 590 T +(make-instance) 66.4 590 T +(C\051) 53.8 578 T +(slot-value) 66.4 578 T +(D\051) 53.8 566 T +(\050setf slot-value\051) 66.46 566 T +(E\051) 53.8 554 T +(:initform) 66.4 554 T +(F\051) 53.8 542 T +(:initar) 66.4 542 T +(g) 94.86 542 T +(G\051) 53.8 530 T +(Example: Geometric Shapes) 66.46 530 T +8 F +(III\051) 32.2 513 T +(De\336ning Methods: The Basics) 53.2 513 T +0 F +(A\051) 53.8 501 T +(defmethod) 66.46 501 T +(B\051) 53.8 489 T +(Single-ar) 66.4 489 T +(gument methods) 110.18 489 T +(C\051) 53.8 477 T +(Area) 66.4 477 T +(D\051) 53.8 465 T +(Multimethods) 66.46 465 T +(E\051) 53.8 453 T +(Concat) 66.4 453 T +8 F +(IV\051) 32.2 436 T +(De\336ning Classes: Some Details) 52.53 436 T +0 F +(A\051) 53.8 424 T +(:reader) 66.46 424 T +(B\051) 53.8 412 T +(:writer) 66.4 412 T +(C\051) 53.8 400 T +(:accessor) 66.4 400 T +(D\051) 53.8 388 T +(:allocation) 66.46 388 T +(E\051) 53.8 376 T +(:type) 66.4 376 T +(F\051) 53.8 364 T +(:documentation) 66.4 364 T +8 F +(V\051) 32.2 347 T +(Exer) 47.86 347 T +(cise: W) 72.31 347 T +(arm-up) 109.3 347 T +(VI\051) 32.2 330 T +(De\336ning Methods: Some Details) 52.53 330 T +0 F +(A\051) 53.8 318 T +(Imitating :reader and :writer) 66.46 318 T +(B\051) 53.8 306 T +(Most speci\336c method wins) 66.4 306 T +(C\051) 53.8 294 T +(lambda list congruence) 66.4 294 T +(D\051) 53.8 282 T +(Idea of fallback method to trap errors) 66.46 282 T +(E\051) 53.8 270 T +(setf methods) 66.4 270 T +(F\051) 53.8 258 T +(Imitating :accessor) 66.4 258 T +8 F +(VII\051) 32.2 241 T +(Common Blunders) 57.2 241 T +0 F +(A\051) 53.8 229 T +(Omitting parens in ar) 66.46 229 T +(glist in defmethod) 168.57 229 T +(B\051) 53.8 217 T +(Missing parens around slot de\336nition list in) 66.4 217 T +(defclass) 66.4 205 T +(C\051) 53.8 193 T +(For) 66.4 193 T +(getting empty slot de\336nition list if you) 82.86 193 T +(don\325) 66.4 181 T +(t de\336ne local slots in defclass) 88.18 181 T +(D\051) 53.8 169 T +(Referring to class name instead of instance) 66.46 169 T +(variable in defmethod) 66.4 157 T +(E\051) 53.8 145 T +(For) 66.4 145 T +(getting accessors are functions and thus) 82.86 145 T +(could con\337ict with built-in function names) 66.4 133 T +(F\051) 53.8 121 T +-0.19 (Putting the new value last instead of \336rst in the) 66.4 121 P +(de\336nition of a setf method) 66.4 109 T +(G\051) 53.8 97 T +(Putting the new value last instead of \336rst in a) 66.46 97 T +(call to a :writer method) 66.4 85 T +(H\051) 53.8 73 T +(Confusion about doc strings in defmethod) 66.46 73 T +(I\051) 53.8 61 T +(Invalid :initar) 66.4 61 T +(gs accepted by make-instance) 131.85 61 T +(J\051) 53.8 49 T +(For) 66.4 49 T +(getting the class has to exist before any) 82.86 49 T +(methods that specialize upon it) 66.4 37 T +311.2 33 572.2 723 R +7 X +V +0 X +(K\051) 332.8 715 T +(Changing a method to apply to a more general) 345.46 715 T +(class does not supersede previous method) 345.4 703 T +8 F +(VIII\051) 311.2 686 T +(Exer) 340.87 686 T +(cise: Setf Methods) 365.31 686 T +(IX\051) 311.2 669 T +(Simpli\336ed Interfaces) 331.53 669 T +0 F +(A\051) 332.8 657 T +(De\336ne-Class/Def-Class) 345.46 657 T +(B\051) 332.8 645 T +(Example: Integrated Circuits/Gates) 345.4 645 T +8 F +(X\051) 311.2 628 T +(De\336ning Classes: Mor) 326.86 628 T +(e Details) 439.98 628 T +0 F +(A\051) 332.8 616 T +(Class Options) 345.46 616 T +(1\051) 347.2 604 T +(:documentation) 360.2 604 T +(2\051) 347.2 592 T +(:default-initar) 360.2 592 T +(gs) 425.97 592 T +(3\051) 347.2 580 T +(:metaclass) 360.2 580 T +(B\051) 332.8 568 T +(initialize-instance) 345.4 568 T +(C\051) 332.8 556 T +(print-object) 345.4 556 T +(D\051) 332.8 544 T +(describe-object) 345.46 544 T +8 F +(XI\051) 311.2 527 T +(Exer) 331.53 527 T +(cise: print-object) 355.98 527 T +(XII\051) 311.2 510 T +(De\336ning Methods: Mor) 336.2 510 T +(e Details) 456.64 510 T +0 F +(A\051) 332.8 498 T +(:before methods) 345.46 498 T +(B\051) 332.8 486 T +(:after methods) 345.4 486 T +(C\051) 332.8 474 T +(eql specializers) 345.4 474 T +8 F +(XIII\051) 311.2 457 T +(Intermediate Exer) 340.87 457 T +(cise: Blocks W) 434.96 457 T +(orld) 508.96 457 T +(XIV\051) 311.2 440 T +(Miscellaneous Useful T) 340.2 440 T +(opics) 457.76 440 T +0 F +(A\051) 332.8 428 T +(Multiple Inheritance) 345.46 428 T +(B\051) 332.8 416 T +(call-next-method and :around methods) 345.4 416 T +(C\051) 332.8 404 T +(with-slots/with-accessors) 345.4 404 T +(D\051) 332.8 392 T +(Lower) 345.46 392 T +(-level type checking) 376.54 392 T +(1\051) 347.2 380 T +(type-of) 360.2 380 T +(2\051) 347.2 368 T +(typep) 360.2 368 T +(3\051) 347.2 356 T +(subtypep) 360.2 356 T +(4\051) 347.2 344 T +(typecase) 360.2 344 T +8 F +(XV\051) 311.2 327 T +(Exer) 335.53 327 T +(cise: Multiple Inheritance) 359.97 327 T +(XVI\051) 311.2 310 T +(T) 340.2 310 T +(iming and Ef\336ciency) 347.98 310 T +0 F +(A\051) 332.8 298 T +(Slot access) 345.46 298 T +(B\051) 332.8 286 T +(Function Call Overhead) 345.4 286 T +(C\051) 332.8 274 T +(Instance Creation) 345.4 274 T +8 F +(XVII\051) 311.2 257 T +(Exer) 344.86 257 T +(cise: T) 369.31 257 T +(iming and Ef\336ciency) 402.75 257 T +(XVIII\051) 311.2 240 T +(defgeneric) 349.53 240 T +0 F +(A\051) 332.8 228 T +(Giving overall ar) 345.46 228 T +(glist and documentation) 427.23 228 T +(B\051) 332.8 216 T +(De\336ning multiple methods at once) 345.4 216 T +(C\051) 332.8 204 T +(:ar) 345.4 204 T +(gument-precedence-order) 357.85 204 T +(D\051) 332.8 192 T +(:method-combination) 345.46 192 T +(E\051) 332.8 180 T +(Example: showing class precedence list) 345.4 180 T +8 F +(XIX\051) 311.2 163 T +(Advanced T) 340.2 163 T +(opics) 401.43 163 T +0 F +(A\051) 332.8 151 T +(Unique names) 345.46 151 T +(1\051) 347.2 139 T +(gentemp vs. closures vs. own constructor) 360.2 139 T +-0.38 (2\051) 347.2 127 P +-0.38 (global list vs. "set" trick vs. hash tables with) 360.2 127 P +(names as keys) 359.8 115 T +(B\051) 332.8 103 T +(Dumping object to \336le) 345.4 103 T +(C\051) 332.8 91 T +(MOP) 345.4 91 T +(D\051) 332.8 79 T +(Copying instances) 345.46 79 T +8 F +(XX\051) 311.2 62 T +(Extended Exer) 335.53 62 T +(cise:) 411.64 62 T +(Object-Oriented Simulation) 337.48 50 T +301.49 723 301.49 33 2 L +0.5 H +2 Z +N +0 0 612 792 C +FMENDPAGE +%%EndPage: "3" 21 +%%Page: "2" 22 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +0 10 Q +0 X +(Introduction) 27 767.33 T +36 45 576 756 R +7 X +V +468 9 576 36 R +V +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +72 45 540 693 R +7 X +V +363.4 674.46 248.6 674.46 2 L +0 X +V +1.75 H +0 Z +N +1 24 Q +(Introduction) 248.6 677 T +0 14 Q +-0.12 (Object-oriented programming is becoming an increasingly important software tech-) 72 637.67 P +0.02 (nology in the Laboratory in general and in STD in particular) 72 622.67 P +0.02 (. Object-oriented simu-) 409.7 622.67 P +0.99 (lations are an especially important application of this technology) 72 607.67 P +0.99 (, as illustrated by) 441.38 607.67 P +(FLAIMS, ORBIS, and SMS, three recent STD systems.) 72 592.67 T +-0.02 (The Common Lisp Object System \050CLOS\051 is an advanced object-oriented language) 72 562.67 P +2.05 (that is part of the Common Lisp standard, and is based upon Flavors, Common) 72 547.67 P +-0.44 (LOOPS, and, indirectly) 72 532.67 P +-0.44 (, Smalltalk. ORBIS, the Object-oriented Rule-Based Interac-) 202.42 532.67 P +-0.58 (tive Simulation, is an important simulation shell in STD, and has increasing levels of) 72 517.67 P +0.59 (sponsor interest and funding. Although implemented in Lisp, it was created before) 72 502.67 P +-0.8 (the introduction of CLOS, and its object-oriented components are not consistent with) 72 487.67 P +-0.82 (today\325) 72 472.67 P +-0.82 (s standards. In order to stay competitive, future versions of ORBIS must be up-) 107 472.67 P +0.8 (graded to make use of the latest object-oriented design and implementation strate-) 72 457.67 P +(gies, and CLOS language features.) 72 442.67 T +-0.79 (This tutorial was designed to introduce ORBIS developers to the major language fea-) 72 412.67 P +-0.14 (tures of CLOS, the types of applications these features support, and any particularly) 72 397.67 P +1.9 (important usage or performance issues that are associated with those features. It) 72 382.67 P +-0.72 (would be appropriate for other software developers who are already familiar with the) 72 367.67 P +0.89 (basics of Common Lisp and the core ideas of object-oriented languages. It is cen-) 72 352.67 P +-0.07 (tered around a series of exercises that illustrate the various features of the language.) 72 337.67 P +(Sample solutions for the exercises are included.) 72 322.67 T +FMENDPAGE +%%EndPage: "2" 22 +%%Page: "1" 23 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +27 764 495 774 R +7 X +0 0 0 1 0 0 0 K +V +36 45 576 756 R +V +468 9 576 36 R +V +0 10 Q +0 X +(Introduction to CLOS) 481.97 29.33 T +(9/12/94 Marty Hall) 481.97 19.18 T +54 54 558 594 R +7 X +V +1 22 Q +0 X +(Object-Oriented Programming) 176.68 579.33 T +(in Common Lisp:) 232.33 555.33 T +(A Tutorial) 263.9 531.33 T +11 18 Q +(STD-N-XXXX) 261.31 486 T +(August 15, 1994) 252.24 467 T +(Marty Hall) 272.79 448 T +(The Johns Hopkins University) 208.39 372 T +(Applied Physics Laboratory) 216.58 353 T +(Johns Hopkins Rd.) 244.06 334 T +(Laurel, MD 20723-6099) 228.46 315 T +15.39 759.48 267.39 777.48 R +7 X +V +3 H +2 Z +N +FMENDPAGE +%%EndPage: "1" 23 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%PageOrder: Descend +%%Pages: 23 +%%DocumentFonts: Times-Roman +%%+ Helvetica-Narrow-Bold +%%+ Courier-Bold +%%+ ZapfDingbats +%%+ Symbol +%%+ Courier-BoldOblique +%%+ Helvetica-Bold +%%+ Times-Italic +%%+ Times-Bold +%%+ Courier +%%+ Courier-Oblique +%%+ Helvetica-Narrow +%%EOF --- cmucl-20a-20090928.orig/own-work/tutorials/other-clos/CLOS-Notes.mif +++ cmucl-20a-20090928/own-work/tutorials/other-clos/CLOS-Notes.mif @@ -0,0 +1,18578 @@ + # Generated by FrameMaker xm4.0.1P1m +# Options: +# Paragraph Text +# Paragraph Tags +# Paragraph Formats +# Font Information +# Markers +# Anchored Frames +# Tables +# Graphics and TextRect Layout +# Master Page Items +# Condition Catalog +# Table Catalogs +# Font Catalog +# Paragraph Catalog +# Document Template +# Document Dictionary +# Variables +# Element Definitions +# Elements +# + + + + + + + + + > # end of Color + + + + + + + + > # end of Color + + + + + + + + > # end of Color + + + + + + + + > # end of Color + + + + + + + + > # end of Color + + + + + + + + > # end of Color + + + + + + + + > # end of Color + + + + + + + + > # end of Color +> # end of ColorCatalog + + + + + + > # end of Condition +> # end of ConditionCatalog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + . '> + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + . '> + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + . '> + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + )\x11 '> + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + < \>)\x11 '> + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + )\\t'> + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + > # end of TabStop + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + + + + + + + + + + + > # end of Pgf +> # end of PgfCatalog + # end of ElementDefCatalog + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + > # end of Font + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + > # end of Font + + + + + + + + + + + + + + + + + + > # end of Font + + + + + > # end of Font + + + + + > # end of Font + + + + + + + + + + + + > # end of Font +> # end of FontCatalog + + + + + + + + > # end of Ruling + + + + + + + + > # end of Ruling + + + + + + + + > # end of Ruling + + + + + + + + > # end of Ruling + + + + + + + + > # end of Ruling +> # end of RulingCatalog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + + + + + + + + > # end of Pgf + > # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + : '> + + + + + > # end of Pgf + > # end of TblTitlePgf1 + + + + + + + > # end of TblFormat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + + + > # end of Pgf + > # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + # end of TblColumnH + + + + + + > # end of Pgf + > # end of TblColumnBody + + + + + + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + + : '> + + + + + > # end of Pgf + > # end of TblTitlePgf1 + + + + + + + > # end of TblFormat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + + > # end of TblColumnBody + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + + > # end of TblColumnBody + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + + > # end of TblColumnBody + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + + > # end of TblColumnBody + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + + > # end of TblColumnBody + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of PgfFont + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of TblTitlePgf1 + + + + + + + > # end of TblFormat +> # end of TblCatalog + + + > # end of View + + + + + + + + > # end of View + + + + > # end of View + + + > # end of View + + + > # end of View + + + > # end of View +> # end of Views + + '> + > # end of VariableFormat + + <$daynum\>, <$year\>'> + > # end of VariableFormat + + /<$daynum\>/<$shortyear\>'> + > # end of VariableFormat + + <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'> + > # end of VariableFormat + + /<$daynum\>/<$shortyear\>'> + > # end of VariableFormat + + <$daynum\>, <$year\>'> + > # end of VariableFormat + + /<$daynum\>/<$shortyear\>'> + > # end of VariableFormat + + '> + > # end of VariableFormat + + '> + > # end of VariableFormat + + '> + > # end of VariableFormat + + '> + > # end of VariableFormat + + '> + > # end of VariableFormat + + '> + > # end of VariableFormat + + '> + > # end of VariableFormat + + + > # end of VariableFormat + + of <$tblsheetcount\>)'> + > # end of VariableFormat +> # end of VariableFormats + + '> + > # end of XRefFormat + + on page <$pagenum\>'> + > # end of XRefFormat +> # end of XRefFormats + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> # end of Document +homehalltextteachAPLCLOS-ClassCLOS-NotesTOC.doc'> + + + + +> # end of BookComponent + # end of InitialAutoNums + + + + + + + + +,'> +='> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> # end of Dictionary + + + + + + + + + > # end of DashedPattern + + + + + + + + + + + + + + + + + + + + + > # end of PolyLine + + + + + + + > # end of Rectangle + + + + + + > # end of Rectangle + + + + + + + + > # end of Polygon + + + + + + + + + + + + > # end of ArrowStyle + + + + + > # end of PolyLine + + + + + + + > # end of PolyLine + + + + + + + > # end of PolyLine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > # end of Font + + > # end of TextLine + + + + + + > # end of Rectangle + + + + + + > # end of Rectangle + + + + + + + + > # end of Polygon + + + + + + + > # end of TextLine + + + + + + + + > # end of Polygon + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + > # end of PolyLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + + + + > # end of TextLine + + + + + > # end of Group + + + + + > # end of Group + + + + + > # end of Group + + + + + > # end of Group + + + + + + + + + > # end of PolyLine + + + + > # end of Group + + + + + + > # end of PolyLine + > # end of Frame + + + + + + + + + > # end of DashedPattern + + + + + + + + + + + + +=FrameImage +&%v +&Y\xA66A9500000500000002880000000800000000000000020000000200000300FF0066D300A0FF00 +&FF00008F007039C1578F38210000FFFF72C43E7F6C984C70BD3A00D0AFD9FF99D45482CB\x?<9630 +&,)&# \x1C191613100C0906030D1A2633404D5966737F8CA6B3BFCCD9E5F24CFF0000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000FF00CDD300200000FFBF65E3007073EBAEFF7144FFFF00E49FD757FFD9FF9980C5426420 +&EEC2FF89D454829DBFB6ACA2999086\x|ri`VLC90&\x1D13090D1A2633404D5966737F8CA6B3BFCC +&D9E5F24CD70000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&0000000000000000000000000000000000FF00AAD380F000FF00FF87FF70FF5FDD91EE5D3800FFFF +&C4FFFF8CD4B4FF7F90CC4B0090EEA7EC76D4548273FFFCF9F6F3EFECE9E6E3DFDCD9D6D3CFCCC9C6 +&C30D1A2633404D5966737F8CA6B3BFCCD9E5F24C0000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000080FE0B80FE0B80 +&FE0B80FE0B80FE0B801D0B0A80FE0B80FE0B80FE0B80FE0B80CE0B0A80180B0A0B0B8016090A0B80 +&FE0980FE0980FE0980FE0980CD090A0B8016090A0A0B0B8016090A0B80FE0980FE0980FE0980FE09 +&80CD090A0B8016090A0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CD090A0B8016090A0A0B +&0B8016090A0B80FE0980FE0980FE0980FE0980CD090A0B8016090A0A0B0B80030980130A0B80FE0A +&80FE0A80FE0A80FE0A80CE0A0B80120A8003090A0A0B0B8003090A80FE0B80FE0B80FE0B80FE0B80 +&F60B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE0980FE0980FE0980BA090A0B8010090A +&0B8010090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE0980FE0980FE0980BA090A0B +&8010090A0B8010090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE0980340980030180 +&FE0980FE098081090A0B8010090A0B8010090A0B8003090A0A0B0B8003090A0B8010090A0B80FE09 +&80FE09800B098006018005090101801B090101801B09010180220980060180FE0980FE098039090A +&0B8010090A0B090909800A0B0909090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE09 +&800A09010109090901018006090101801B090101800F090101800909010180210901010909090101 +&80FE0980FE09803A090A0B8010090A0B0909090B8008090A0909090A0B8003090A0A0B0B8003090A +&0B8010090A0B80FE0980FE098009090101800309010180230901018010090101802C090101800309 +&010180FE0980FE09803A090A0B8010090A0B0909090B8008090A0909090A0B8003090A0A0B0B8003 +&090A0B090909800A0B0909090A0B80FE0980FE098009090101800909800301800309010101090101 +&09010109800301090101018005090101800509800301800309800701800309800301800509800301 +&80030901010109010101800C09010180090980030109010909800301090101018003098003018005 +&098003018003090101010901010180FE0980FE098009090A0B80050980030B8006090A0B0909090B +&8008090A0909090A0B8003090A0A0B0B8003090A0B0909090B8008090A0909090A0B80FE0980FE09 +&800A0901010180090901018004098007010909010109090901018005090101800409010109090101 +&800409010180090901018003090101010909010180030901010109090101800C0901010180050901 +&01010909010101800309010101090901010901010109090101090909010101090901018003090101 +&010909010180FE0980FE098008090A0B8005090B09090A8006090A0B0909090B8008090A0909090A +&0B8003090A0A0B0B8003090A0B0909090B8008090A0909090A0B80FE0980FE09800C090101018006 +&09010180050901010901010901010901010909090101800509010180090901018003090101800909 +&01018004090101090909010180030901010909090101800E09010101800309010109090901018003 +&09010180060901010909090101090909010109090901018003090101090909010180FE0980FE0980 +&08090A0B8005090B09090A8006090A0B0909090B8008090A0909090A0B8003090A0A0B0B8003090A +&0B0909090B80090A0909090A0B80FE0980FE09800E09010180050901018004090101090101090101 +&09090101090909010180050901018004098005018004090101800909010180030901018003090101 +&09090901010909090101801109010109090101800909010180050980070109098007010909090101 +&090909010180FE0980FE098009090A0B8005090B0A0A0A8006090A0B0909090B8008090A0909090A +&0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE0980080901018003090101800409010180 +&05090101090101090101090101090909010180050901018004090101090909010180030901018009 +&0901018004090101090909010180030901010909090101800B090101800309010109090101800809 +&0101800609010180070901018008090101090909010180FE0980FE098009090A0B8010090A0B0909 +&090B8008090A0909090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE09800809010109 +&09090101800509010180040901010901010901010909010109090101018005090101800309010109 +&09090101800409010109090901018004090101800409010109090101010909090101090909010180 +&0C090101090909010109090901010909090101800309010180060901010909090101090909010109 +&090901010909090101090909010180FE0980FE09800A090A0B8010090A0B0909090B8008090A0909 +&090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE098007098006018003098007010901 +&01010901010901010109098003010901010909800701090980060180040980040109090980070109 +&090980030180030980030109800301800A0980060180040980040109090980060180040980040180 +&04098004010909098003010980030180FE0980FE098009090A0B8010090A0B0909090B8008090A09 +&09090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE0980FE0980FE0980BA090A0B8010 +&090A0B0909090B80090A0909090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980FE0980FE +&0980FE0980BA090A0B8010090A0B8010090A0B8003090A0A0B0B8003090A0B8010090A0B80FE0980 +&FE0980FE0980FE0980BA090A0B8010090A0B8010090A0B8003090A0A0B0B8003090A0B80110A0B80 +&FE0A80FE0A80FE0A80FE0A80BB0A0B80110A0B80110A0B8003090A0A0B80FE0A80FE0A80FE0A80FE +&0A80FB0A0B80050A80060B0A80FE0180FE0180FE0180FE0180F30180060B0A0B0B8003090A0A80FE +&0180FE0180FE0180FE0180F3010B0B8003090A0A0B0B8003090A0A80090180FE0380FE0380FE0380 +&FE0380E70301010B0B8003090A0A0B0B8003090A0A800A0180FE0380FE0380FE0380FE0380E60301 +&010B0B8003090A0A0B0B8003090A0A800B0180FE0380FE0380FE0380FE0380E50301010B0B800309 +&0A0A0B0B8003090A0A800C0180FE0380FE0380FE0380FE0380E40301010B0B8003090A0A0B0B8003 +&090A0A800D0180FE0380FE0380FE0380FE0380E30301010B0B8003090A0A0B0B8003090A0A800E01 +&80FE0380FE0380FE0380FE0380E20301010B0B8003090A0A0B0B8003090A0A800F0180FE0380FE03 +&80FE0380FE0380E10301010B0B8003090A0A0B0B8003090A0A80100180FE0380FE0380FE0380FE03 +&80E00301010B0B8003090A0A0B0B8003090A0A010103800E0180FE0380FE0380FE0380FE0380DF03 +&01010B0B8003090A0A0B0B8003090A0A01010303800E0180FE0380FE0380FE0380FE0380DE030101 +&0B0B8003090A0A0B0B8003090A0A0101030303800E0180FE0380FE0380FE0380FE0380DD0301010B +&0B8003090A0A0B0B8003090A0A0101800303800E0180FE0380FE0380FE0380FE0380DC0301010B0B +&8003090A0A0B0B8003090A0A0101800403800E0180FE0380FE0380FE0380FE0380DB0301010B0B80 +&03090A0A0B0B8003090A0A0101800503800E0180FE0380FE0380FE0380FE0380DA0301010B0B8003 +&090A0A0B0B8003090A0A0101800603800E0180FE0380FE0380FE0380FE0380D90301010B0B800309 +&0A0A0B0B8003090A0A0101800703800E0180FE0380FE0380FE0380FE0380D80301010B0B8003090A +&0A0B0B8003090A0A0101800803800E0180FE0380FE0380FE0380FE0380D70301010B0B8003090A0A +&0B0B8003090A0A0101800903800E0180FE0380FE0380FE0380FE0380D60301010B0B8003090A0A0B +&0B8003090A0A0101800A03800E0180FE0380FE0380FE0380FE0380D50301010B0B8003090A0A0B0B +&8003090A0A0101800B03800E0180FE0380FE0380FE0380FE0380D40301010B0B8003090A0A0B0B80 +&03090A0A0101800C03800E0180FE0380FE0380FE0380FE0380D30301010B0B8003090A0A0B0B8003 +&090A0A0101800D03800E0180FE0380FE0380FE0380FE0380D20301010B0B8003090A0A0B0B800309 +&0A0A0101800E03800E0180FE0380FE0380FE0380FE0380D10301010B0B8003090A0A0B0B8003090A +&0A0101800F03800E0180FE0380FE0380FE0380FE0380D00301010B0B8003090A0A0B0B8003090A0A +&0101801003800E0180FE0380FE0380FE0380FE0380CF0301010B0B8003090A0A0B0B8003090A0A01 +&01801103800E0180FE0380FE0380FE0380FE0380CE0301010B0B8003090A0A0B0B8003090A0A0101 +&801203800E0180FE0380FE0380FE0380FE0380CD0301010B0B8003090A0A0B0B8003090A0A010180 +&1303800E0180FE0380FE0380FE0380FE0380CC0301010B0B8003090A0A0B0B8003090A0A01018014 +&03800E0180FE0380FE0380FE0380FE0380CB0301010B0B8003090A0A0B0B8003090A0A0101801503 +&800E0180FE0380FE0380FE0380FE0380CA0301010B0B8003090A0A0B0B8003090A0A010180160380 +&0E0180FE0380FE0380FE0380FE0380C90301010B0B8003090A0A0B0B8003090A0A0101801703800E +&0180FE0380FE0380FE0380FE0380C80301010B0B8003090A0A0B0B8003090A0A0101801803800E01 +&80FE0380FE0380FE0380FE0380C70301010B0B8003090A0A0B0B8003090A0A0101801903800E0180 +&FE0380FE0380FE0380FE0380C60301010B0B8003090A0A0B0B8003090A0A0101801A03800E0180FE +&0380FE0380FE0380FE0380C50301010B0B8003090A0A0B0B8003090A0A0101801B03800E0180FE03 +&80FE0380FE0380FE0380C40301010B0B8003090A0A0B0B8003090A0A0101801C03800E0180FE0380 +&FE0380FE0380FE0380C30301010B0B8003090A0A0B0B8003090A0A0101801D03800E0180FE0380FE +&0380FE0380FE0380C20301010B0B8003090A0A0B0B8003090A0A0101801E03800E0180FE0380FE03 +&80FE0380FE0380C10301010B0B8003090A0A0B0B8003090A0A0101801F03800E0180FE0380FE0380 +&FE0380FE0380C00301010B0B8003090A0A0B0B8003090A0A0101802003800E0180FE0380FE0380FE +&0380FE0380BF0301010B0B8003090A0A0B0B8003090A0A0101802103800E0180FE0380FE0380FE03 +&80FE0380BE0301010B0B8003090A0A0B0B8003090A0A0101802203800E0180FE0380FE0380FE0380 +&FE0380BD0301010B0B8003090A0A0B0B8003090A0A0101802303800E0180FE0380FE0380FE0380FE +&0380BC0301010B0B8003090A0A0B0B8003090A0A0101802403800E0180FE0380FE0380FE0380FE03 +&80BB0301010B0B8003090A0A0B0B8003090A0A0101802503800E0180FE0380FE0380FE0380FE0380 +&BA0301010B0B8003090A0A0B0B8003090A0A0101802603800E0180FE0380FE0380FE0380FE0380B9 +&0301010B0B8003090A0A0B0B8003090A0A0101802703800E0180FE0380FE0380FE0380FE0380B803 +&01010B0B8003090A0A0B0B8003090A0A0101802803800E0180FE0380FE0380FE0380FE0380B70301 +&010B0B8003090A0A0B0B8003090A0A0101802903800E0180FE0380FE0380FE0380FE0380B6030101 +&0B0B8003090A0A0B0B8003090A0A0101802A03800E0180FE0380FE0380FE0380FE0380B50301010B +&0B8003090A0A0B0B8003090A0A0101802B03800E0180FE0380FE0380FE0380FE0380B40301010B0B +&8003090A0A0B0B8003090A0A0101802C03800E0180FE0380FE0380FE0380FE0380B30301010B0B80 +&03090A0A0B0B8003090A0A0101802D03800E0180FE0380FE0380FE0380FE0380B20301010B0B8003 +&090A0A0B0B8003090A0A0101802E03800E0180FE0380FE0380FE0380FE0380B10301010B0B800309 +&0A0A0B0B8003090A0A0101802F03800E0180FE0380FE0380FE0380FE0380B00301010B0B8003090A +&0A0B0B8003090A0A0101803003800E0180FE0380FE0380FE0380FE0380AF0301010B0B8003090A0A +&0B0B8003090A0A0101803103800E0180FE0380FE0380FE0380FE0380AE0301010B0B8003090A0A0B +&0B8003090A0A0101803203800E0180FE0380FE0380FE0380FE0380AD0301010B0B8003090A0A0B0B +&8003090A0A0101803303800E0180FE0380FE0380FE0380FE0380AC0301010B0B8003090A0A0B0B80 +&03090A0A0101803403800E0180FE0380FE0380FE0380FE0380AB0301010B0B8003090A0A0B0B8003 +&090A0A0101803503800E0180FE0380FE0380FE0380FE0380AA0301010B0B8003090A0A0B0B800309 +&0A0A0101803603800E0180FE0380FE0380FE0380FE0380A90301010B0B8003090A0A0B0B8003090A +&0A0101803703800E0180FE0380FE0380FE0380FE0380A80301010B0B8003090A0A0B0B8003090A0A +&0101803803800E0180FE0380FE0380FE0380FE0380A70301010B0B8003090A0A0B0B8003090A0A01 +&01803903800E0180FE0380FE0380FE0380FE0380A60301010B0B8003090A0A0B0B8003090A0A0101 +&803A03800E0180FE0380FE0380FE0380FE0380A50301010B0B8003090A0A0B0B8003090A0A010180 +&3B03800E0180FE0380FE0380FE0380FE0380A40301010B0B8003090A0A0B0B8003090A0A0101803C +&03800E0180FE0380FE0380FE0380FE0380A30301010B0B8003090A0A0B0B8003090A0A0101803D03 +&800E0180FE0380FE0380FE0380FE0380A20301010B0B8003090A0A0B0B8003090A0A0101803E0380 +&0E0180FE0380FE0380FE0380FE0380A10301010B0B8003090A0A0B0B8003090A0A0101803F03800E +&0180FE0380FE0380FE0380FE0380A00301010B0B8003090A0A0B0B8003090A0A0101804003800E01 +&80FE0380FE0380FE0380FE03809F0301010B0B8003090A0A0B0B8003090A0A0101804103800E0180 +&FE0380FE0380FE0380FE03809E0301010B0B8003090A0A0B0B8003090A0A0101804203800E0180FE +&0380FE0380FE0380FE03809D0301010B0B8003090A0A0B0B8003090A0A0101804303800E0180FE03 +&80FE0380FE0380FE03809C0301010B0B8003090A0A0B0B8003090A0A0101804403800E0180FE0380 +&FE0380FE0380FE03809B0301010B0B8003090A0A0B0B8003090A0A0101804503800E0180FE0380FE +&0380FE0380FE03809A0301010B0B8003090A0A0B0B8003090A0A0101804603800E0180FE0380FE03 +&80FE0380FE0380990301010B0B8003090A0A0B0B8003090A0A0101804703800E0180FE0380FE0380 +&FE0380FE0380980301010B0B8003090A0A0B0B8003090A0A0101804803800E0180FE0380FE0380FE +&0380FE0380970301010B0B8003090A0A0B0B8003090A0A0101804903800E0180FE0380FE0380FE03 +&80FE0380960301010B0B8003090A0A0B0B8003090A0A0101804A03800E0180FE0380FE0380FE0380 +&FE0380950301010B0B8003090A0A0B0B8003090A0A0101804B03800E0180FE0380FE0380FE0380FE +&0380940301010B0B8003090A0A0B0B8003090A0A0101804C03800E0180FE0380FE0380FE0380FE03 +&80930301010B0B8003090A0A0B0B8003090A0A0101804D03800E0180FE0380FE0380FE0380FE0380 +&920301010B0B8003090A0A0B0B8003090A0A0101804E03800E0180FE0380FE0380FE0380FE038091 +&0301010B0B8003090A0A0B0B8003090A0A0101804F03800E0180FE0380FE0380FE0380FE03809003 +&01010B0B8003090A0A0B0B8003090A0A0101805003800E0180FE0380FE0380FE0380FE03808F0301 +&010B0B8003090A0A0B0B8003090A0A0101805103800E0180FE0380FE0380FE0380FE03808E030101 +&0B0B8003090A0A0B0B8003090A0A0101805203800E0180FE0380FE0380FE0380FE03808D0301010B +&0B8003090A0A0B0B8003090A0A0101805303800E0180FE0380FE0380FE0380FE03808C0301010B0B +&8003090A0A0B0B8003090A0A0101805403800E0180FE0380FE0380FE0380FE03808B0301010B0B80 +&03090A0A0B0B8003090A0A0101805503800E0180FE0380FE0380FE0380FE03808A0301010B0B8003 +&090A0A0B0B8003090A0A0101805603800E0180FE0380FE0380FE0380FE0380890301010B0B800309 +&0A0A0B0B8003090A0A0101805703800E0180FE0380FE0380FE0380FE0380880301010B0B8003090A +&0A0B0B8003090A0A0101805803800E0180FE0380FE0380FE0380FE0380870301010B0B8003090A0A +&0B0B8003090A0A0101805903800E0180FE0380FE0380FE0380FE0380860301010B0B8003090A0A0B +&0B8003090A0A0101805A03800E0180FE0380FE0380FE0380FE0380850301010B0B8003090A0A0B0B +&8003090A0A0101805B03800E0180FE0380FE0380FE0380FE0380840301010B0B8003090A0A0B0B80 +&03090A0A0101805C03800E0180FE0380240380310180FE0380FE0380FE03802C0301010B0B800309 +&0A0A0B0B8003090A0A0101805D03800E0180FE0380230380310180FE0380FE0380FE03802C030101 +&0B0B8003090A0A0B0B8003090A0A0101805E03800E0180FE0380220380310180FE0380FE0380FE03 +&802C0301010B0B8003090A0A0B0B8003090A0A0101805F03800E0180FE0380210380310180FE0380 +&FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A0101806003800E0180FE038020038031 +&0180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A0101806103800E0180FE03 +&801F0380310180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A010180620380 +&0E0180FE03801E0380310180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A01 +&01806303800E0180FE03801D0380310180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B80 +&03090A0A0101806403800E0180FE03801C0380310180FE0380FE0380FE03802C0301010B0B800309 +&0A0A0B0B8003090A0A0101806503800E0180FE03801B0380310180FE0380FE0380FE03802C030101 +&0B0B8003090A0A0B0B8003090A0A0101806603800E0180FE03801A0380310180FE0380FE0380FE03 +&802C0301010B0B8003090A0A0B0B8003090A0A0101806703800E0180FE0380190380310180FE0380 +&FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A0101806803800E0180FE038018038031 +&0180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A0101806903800E0180FE03 +&80170380310180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A0101806A0380 +&0E0180FE0380160380310180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A01 +&01806B03800E0180FE0380150380310180FE0380FE0380FE03802C0301010B0B8003090A0A0B0B80 +&03090A0A0101806C03800E0180FE0380140380310180FE0380FE0380FE03802C0301010B0B800309 +&0A0A0B0B8003090A0A0101806D03800E0180FE0380130380310180FE0380FE0380FE03802C030101 +&0B0B8003090A0A0B0B8003090A0A0101806E03800E0180FE0380120380310180FE0380FE0380FE03 +&802C0301010B0B8003090A0A0B0B8003090A0A0101806F03800E0180FE0380110380310180FE0380 +&FE0380FE03802C0301010B0B8003090A0A0B0B8003090A0A0101807003800E0180FE0380FE0380FE +&0380FE03806F0301010B0B8003090A0A0B0B8003090A0A0101807103800E0180FE0380FE0380FE03 +&80FE03806E0301010B0B8003090A0A0B0B8003090A0A0101807203800E0180FE0380FE0380FE0380 +&FE03806D0301010B0B8003090A0A0B0B8003090A0A0101807303800E0180FE0380FE0380FE0380FE +&03806C0301010B0B8003090A0A0B0B8003090A0A0101807403800E0180FE03807703800401800703 +&800301800A0380030180190301010180FE0380FE0380B50301010B0B8003090A0A0B0B8003090A0A +&0101807503800E0180FE038037038005010301018005038005010301010303038003018003038004 +&0180140380060180050380070180060380070180140380050180FE0380FE0380B50301010B0B8003 +&090A0A0B0B8003090A0A0101807603800E0180FE0380350380090180040380090103030380030180 +&03038004018013038003018008030101018003030101018004030101018003030101018013038005 +&0180FE0380FE0380B50301010B0B8003090A0A0B0B8003090A0A0101807703800E0180FE03803303 +&0101018004030101018003030101018004030101018003038003018004030101801303010101800A +&030101800503010180040301018005030101801703010180FE0380FE0380B50301010B0B8003090A +&0A0B0B8003090A0A0101807803800E0180FE03803203010180060301018003030101800603010180 +&030380030180040301018013030101800B0301018005030101800403010180050301018017030101 +&80FE0380FE0380B50301010B0B8003090A0A0B0B8003090A0A0101807903800E0180FE0380310301 +&0180060301018003030101800603010180030301010301018003030101801203010101800B030101 +&800503010180040301018005030101801703010180FE0380FE0380B50301010B0B8003090A0A0B0B +&8003090A0A0101807A03800E0180FE03803003010101800B03010101800B03010103010180030301 +&018012030101038004018007030101800303010180060301018003030101801803010180FE0380FE +&0380B50301010B0B8003090A0A0B0B8003090A0A0101807B03800E0180FE03803003800401800903 +&80040180080301010303010103030301018012038008018007038005018008038005018019030101 +&80FE0380FE0380B50301010B0B8003090A0A0B0B8003090A0A0101807C03800E0180FE0380300380 +&06018007038006018005030101030301010303030101030303800B01800303010101800303010101 +&800503800701800603800701800403800B01800703010180FE0380FE0380B50301010B0B8003090A +&0A0B0B8003090A0A0101807D03800E0180FE03803203800401800903800401800403010103030301 +&0103030101030303800B018003030101800503010180040301010180030301010180040301010180 +&0303010101800303800B01800703010180FE0380FE0380B50301010B0B8003090A0A0B0B8003090A +&0A0101807E03800E0180FE03803403010101800B0301010180030301010303030101030301018012 +&03010180050301018004030101800503010180040301018005030101801703010180FE0380FE0380 +&B50301010B0B8003090A0A0B0B8003090A0A0101807F03800E0180FE03802A030101800703010103 +&03030101800703010180030301018003030101030101801203010180050301018004030101800503 +&010180040301018005030101801703010180FE0380FE0380B50301010B0B8003090A0A0B0B800309 +&0A0A0101808003800E0180FE03802903010180070301010303030101800703010180030301018003 +&03010103010180120301010180040301018004030101800503010180040301018005030101801703 +&010180FE0380FE0380B50301010B0B8003090A0A0B0B8003090A0A0101808103800E0180FE038028 +&03010101800503010101030303010101800503010101800303010180040380030180130301010103 +&0303010101800403010101800303010101800403010101800303010101801703010180FE0380FE03 +&80B50301010B0B8003090A0A0B0B8003090A0A0101808203800E0180FE03802703800A0180030380 +&0A0180030380040103030380030180130380070180060380070180060380070180140380090180FE +&0380FE0380B10301010B0B8003090A0A0B0B8003090A0A0101808303800E0180FE03802603010103 +&80060180040301010380060180040380040180030301010180150380040180080380050180080380 +&050180150380090180FE0380FE0380B10301010B0B8003090A0A0B0B8003090A0A0101808403800E +&0180FE03800C0380070180FE0380FE0380FE0380460301010B0B8003090A0A0B0B8003090A0A0101 +&808503800E0180FE03800A0380090180FE0380FE0380FE0380450301010B0B8003090A0A0B0B8003 +&090A0A0101808603800E0180FE0380090380090180FE0380FE0380FE0380450301010B0B8003090A +&0A0B0B8003090A0A0101808703800E0180FE0380080380090180FE0380FE0380FE0380450301010B +&0B8003090A0A0B0B8003090A0A0101808803800E0180FE0380070380090180FE0380FE0380FE0380 +&450301010B0B8003090A0A0B0B8003090A0A0101808903800E0180FE0380060380090180FE0380FE +&0380FE0380450301010B0B8003090A0A0B0B8003090A0A0101808A03800E0180FD03802801800A03 +&01010180FE0380FE0380FE03801F0301010B0B8003090A0A0B0B8003090A0A0101808B03800E0180 +&F903800401800A030101800903010180090380040180080380030180FE0380FE0380FE03801F0301 +&010B0B8003090A0A0B0B8003090A0A0101808C03800E0180F603800301030101800A030101800903 +&01018009030101038003018003030101010303010180FE0380FE0380FE03801F0301010B0B800309 +&0A0A0B0B8003090A0A0101808D03800E0180F3038003010303030101800A03010180090301018009 +&0301010303800301030301018004030180FE0380FE0380FE03801F0301010B0B8003090A0A0B0B80 +&03090A0A0101808E03800E0180F1030101018004030101800A030101800903010180090301018003 +&0301010103018005030180FE0380FE0380FE03801F0301010B0B8003090A0A0B0B8003090A0A0101 +&808F03800E0180F003018006030101800A0301018009030101800903010180050301010180030301 +&010180FE0380FE0380FE03801F0301010B0B8003090A0A0B0B8003090A0A0101809003800E0180EF +&03803E0180FE0380FE0380FE03801F0301010B0B8003090A0A0B0B8003090A0A0101809103800E01 +&80EE03018006030101800A0301018009030101800903010180050301010180030301010180FE0380 +&FE0380FE03801F0301010B0B8003090A0A0B0B8003090A0A0101809203800E0180ED030101018004 +&030101800A030101800903010180090301018003038005018004030180FE0380FE0380FE03801F03 +&01010B0B8003090A0A0B0B8003090A0A0101809303800E0180ED038003010303030101800A030101 +&800903010180090301010303800401030301018003030180FE0380FE0380FE03801F0301010B0B80 +&03090A0A0B0B8003090A0A0101809403800E0180ED03800401030101800A03010180090301018009 +&0380060180040301010303010180FE0380FE0380FE03801F0301010B0B8003090A0A0B0B8003090A +&0A0101809503800E0180EF03802C0180080380030180FE0380FE0380FE03801F0301010B0B800309 +&0A0A0B0B8003090A0A0101809603800E0180FE0380FE0380FE0380FE0380490301010B0B8003090A +&0A0B0B8003090A0A0101809703800E0180FE0380FE0380FE0380FE0380480301010B0B8003090A0A +&0B0B8003090A0A0101809803800E0180FE0380FE0380FE0380FE0380470301010B0B8003090A0A0B +&0B8003090A0A0101809903800E0180FE0380FE0380FE0380FE0380460301010B0B8003090A0A0B0B +&8003090A0A0101809A03800E0180FE0380FE0380FE0380FE0380450301010B0B8003090A0A0B0B80 +&03090A0A0101809B03800E0180FE0380FE0380FE0380FE0380440301010B0B8003090A0A0B0B8003 +&090A0A0101809C03800E0180FE0380FE0380FE0380FE0380430301010B0B8003090A0A0B0B800309 +&0A0A0101809D03800E0180FE0380FE0380FE0380FE0380420301010B0B8003090A0A0B0B8003090A +&0A0101809E03800E0180FE0380FE0380FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A +&0101809F03800E0180FE0380FE0380FE0380FE0380400301010B0B8003090A0A0B0B8003090A0A01 +&0180A003800E0180FE0380FE0380FE0380FE03803F0301010B0B8003090A0A0B0B8003090A0A0101 +&80A103800E0180FE0380FE0380FE0380FE03803E0301010B0B8003090A0A0B0B8003090A0A010180 +&A203800E0180FE0380FE0380FE0380FE03803D0301010B0B8003090A0A0B0B8003090A0A010180A3 +&03800E0180FE0380FE0380FE0380FE03803C0301010B0B8003090A0A0B0B8003090A0A010180A403 +&800E0180FE0380FE0380FE0380FE03803B0301010B0B8003090A0A0B0B8003090A0A010180A50380 +&0E0180FE0380FE0380FE0380FE03803A0301010B0B8003090A0A0B0B8003090A0A010180A603800E +&0180FE0380FE0380FE0380FE0380390301010B0B8003090A0A0B0B8003090A0A010180A703800E01 +&80FE0380FE0380FE0380FE0380380301010B0B8003090A0A0B0B8003090A0A010180A803800E0180 +&FE0380FE0380FE0380FE0380370301010B0B8003090A0A0B0B8003090A0A010180A903800E0180FE +&0380FE0380FE0380FE0380360301010B0B8003090A0A0B0B8003090A0A010180AA03800E0180FE03 +&80FE0380FE0380FE0380350301010B0B8003090A0A0B0B8003090A0A010180AB03800E0180FE0380 +&FE0380FE0380FE0380340301010B0B8003090A0A0B0B8003090A0A010180AC03800E0180FE0380FE +&0380FE0380FE0380330301010B0B8003090A0A0B0B8003090A0A010180AD03800E0180FE0380FE03 +&80FE0380FE0380320301010B0B8003090A0A0B0B8003090A0A010180AE03800E0180FE0380FE0380 +&FE0380FE0380310301010B0B8003090A0A0B0B8003090A0A010180AF03800E0180FE0380FE0380FE +&0380FE0380300301010B0B8003090A0A0B0B8003090A0A010180B003800E0180FE0380FE0380FE03 +&80FE03802F0301010B0B8003090A0A0B0B8003090A0A010180B103800E0180FE0380FE0380FE0380 +&FE03802E0301010B0B8003090A0A0B0B8003090A0A010180B203800E0180FE0380FE0380FE0380FE +&03802D0301010B0B8003090A0A0B0B8003090A0A010180B303800E0180FE0380FE0380FE0380FE03 +&802C0301010B0B8003090A0A0B0B8003090A0A010180B403800E0180FE0380FE0380FE0380FE0380 +&2B0301010B0B8003090A0A0B0B8003090A0A010180B503800E0180FE0380FE0380FE0380FE03802A +&0301010B0B8003090A0A0B0B8003090A0A010180B603800E0180FE0380FE0380FE0380FE03802903 +&01010B0B8003090A0A0B0B8003090A0A010180B703800E0180FE0380FE0380FE0380FE0380280301 +&010B0B8003090A0A0B0B8003090A0A010180B803800E0180FE0380FE0380FE0380FE038027030101 +&0B0B8003090A0A0B0B8003090A0A010180B903800E0180FE0380FE0380FE0380FE0380260301010B +&0B8003090A0A0B0B8003090A0A010180BA03800E0180FE0380FE0380FE0380FE0380250301010B0B +&8003090A0A0B0B8003090A0A010180BB03800E0180FE0380FE0380FE0380FE0380240301010B0B80 +&03090A0A0B0B8003090A0A010180BC03800E0180FE0380FE0380FE0380FE0380230301010B0B8003 +&090A0A0B0B8003090A0A010180BD03800E0180FE0380FE0380FE0380FE0380220301010B0B800309 +&0A0A0B0B8003090A0A010180BE03800E0180FE0380FE0380FE0380FE0380210301010B0B8003090A +&0A0B0B8003090A0A010180BF03800E0180FE0380FE0380FE0380FE0380200301010B0B8003090A0A +&0B0B8003090A0A010180C003800E0180FE0380FE0380FE0380FE03801F0301010B0B8003090A0A0B +&0B8003090A0A010180C103800E0180FE0380FE0380FE0380FE03801E0301010B0B8003090A0A0B0B +&8003090A0A010180C203800E0180FE0380FE0380FE0380FE03801D0301010B0B8003090A0A0B0B80 +&03090A0A010180C303800E0180FE0380FE0380FE0380FE03801C0301010B0B8003090A0A0B0B8003 +&090A0A010180C403800E0180FE0380FE0380FE0380FE03801B0301010B0B8003090A0A0B0B800309 +&0A0A010180C503800E0180FE0380FE0380FE0380FE03801A0301010B0B8003090A0A0B0B8003090A +&0A010180C603800E0180FE0380FE0380FE0380FE0380190301010B0B8003090A0A0B0B8003090A0A +&010180C703800E0180FE0380FE0380FE0380FE0380180301010B0B8003090A0A0B0B8003090A0A01 +&0180C803800E0180FE0380FE0380FE0380FE0380170301010B0B8003090A0A0B0B8003090A0A0101 +&80C903800E0180FE0380FE0380FE0380FE0380160301010B0B8003090A0A0B0B8003090A0A010180 +&CA03800E0180FE0380FE0380FE0380FE0380150301010B0B8003090A0A0B0B8003090A0A010180CB +&03800E0180FE0380FE0380FE0380FE0380140301010B0B8003090A0A0B0B8003090A0A010180CC03 +&800E0180FE0380FE0380FE0380FE0380130301010B0B8003090A0A0B0B8003090A0A010180CD0380 +&0E0180FE0380FE0380FE0380FE0380120301010B0B8003090A0A0B0B8003090A0A010180CE03800E +&0180FE0380FE0380FE0380FE0380110301010B0B8003090A0A0B0B8003090A0A010180CF03800E01 +&80FE0380FE0380FE0380FE0380100301010B0B8003090A0A0B0B8003090A0A010180D003800E0180 +&FE0380FE0380FE0380FE03800F0301010B0B8003090A0A0B0B8003090A0A010180D103800E0180FE +&0380FE0380FE0380FE03800E0301010B0B8003090A0A0B0B8003090A0A010180D203800E0180FE03 +&80FE0380FE0380FE03800D0301010B0B8003090A0A0B0B8003090A0A010180D303800E0180FE0380 +&FE0380FE0380FE03800C0301010B0B8003090A0A0B0B8003090A0A010180D403800E0180FE0380FE +&0380FE0380FE03800B0301010B0B8003090A0A0B0B8003090A0A010180D503800E0180FE0380FE03 +&80FE0380FE03800A0301010B0B8003090A0A0B0B8003090A0A010180D603800E0180FE0380FE0380 +&FE0380FE0380090301010B0B8003090A0A0B0B8003090A0A010180D703800E0180FE0380FE0380FE +&0380FE0380080301010B0B8003090A0A0B0B8003090A0A010180D803800E0180FE0380FE0380FE03 +&80FE0380070301010B0B8003090A0A0B0B8003090A0A010180D903800E0180FE0380FE0380FE0380 +&FE0380060301010B0B8003090A0A0B0B8003090A0A010180DA03800E0180FE0380FE0380FE0380FE +&0380050301010B0B8003090A0A0B0B8003090A0A010180DB03800E0180FE0380FE0380FE0380FE03 +&80040301010B0B8003090A0A0B0B8003090A0A010180DC03800E0180FE0380FE0380FE0380FE0380 +&030301010B0B8003090A0A0B0B8003090A0A010180DD03800E0180FE0380FE0380FE0380FE030303 +&0301010B0B8003090A0A0B0B8003090A0A010180DE03800E0180FE0380FE0380FE0380FE03030301 +&010B0B8003090A0A0B0B8003090A0A010180DF03800E0180FE0380FE0380FE0380FE030301010B0B +&8003090A0A0B0B8003090A0A010180E003800E0180FE0380FE0380FE0380FE0301010B0B8003090A +&0A0B0B8003090A0A010180E103800E0180FE0380FE0380FE0380FD0301010B0B8003090A0A0B0B80 +&03090A0A010180E203800E0180FE0380FE0380FE0380FC0301010B0B8003090A0A0B0B8003090A0A +&010180E303800E0180FE0380FE0380FE0380FB0301010B0B8003090A0A0B0B8003090A0A010180E4 +&03800E0180FE0380FE0380FE0380FA0301010B0B8003090A0A0B0B8003090A0A010180E503800E01 +&80FE0380FE0380FE0380F90301010B0B8003090A0A0B0B8003090A0A010180E603800E0180FE0380 +&FE0380FE0380F80301010B0B8003090A0A0B0B8003090A0A010180E703800E0180FE0380FE0380FE +&0380F70301010B0B8003090A0A0B0B8003090A0A010180E803800E0180FE0380FE0380FE0380F603 +&01010B0B8003090A0A0B0B8003090A0A010180E903800E0180FE0380FE0380FE0380F50301010B0B +&8003090A0A0B0B8003090A0A010180EA03800E0180FE0380FE0380FE0380F40301010B0B8003090A +&0A0B0B8003090A0A010180EB03800E0180FE0380FE0380FE0380F30301010B0B8003090A0A0B0B80 +&03090A0A010180EC03800E0180FE0380FE0380FE0380F20301010B0B8003090A0A0B0B8003090A0A +&010180ED03800E0180FE0380FE0380FE0380F10301010B0B8003090A0A0B0B8003090A0A010180EE +&03800E0180FE0380FE0380FE0380F00301010B0B8003090A0A0B0B8003090A0A010180EF03800E01 +&80FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180F003800E0180FE0380 +&FE0380FE0380EE0301010B0B8003090A0A0B0B8003090A0A010180F103800E0180FE0380FE0380FE +&0380ED0301010B0B8003090A0A0B0B8003090A0A010180F203800E0180FE0380FE0380FE0380EC03 +&01010B0B8003090A0A0B0B8003090A0A010180F303800E0180FE0380FE0380FE0380EB0301010B0B +&8003090A0A0B0B8003090A0A010180F403800E0180FE0380FE0380FE0380EA0301010B0B8003090A +&0A0B0B8003090A0A010180F503800E0180FE0380FE0380FE0380E90301010B0B8003090A0A0B0B80 +&03090A0A010180F603800E0180FE0380FE0380FE0380E80301010B0B8003090A0A0B0B8003090A0A +&010180F703800E0180FE0380FE0380FE0380E70301010B0B8003090A0A0B0B8003090A0A010180F8 +&03800E0180FE0380FE0380FE0380E60301010B0B8003090A0A0B0B8003090A0A010180F903800E01 +&80FE0380FE0380FE0380E50301010B0B8003090A0A0B0B8003090A0A010180FA03800E0180FE0380 +&FE0380FE0380E40301010B0B8003090A0A0B0B8003090A0A010180FB03800E0180FE0380FE0380FE +&0380E30301010B0B8003090A0A0B0B8003090A0A010180FC03800E0180FE0380FE0380FE0380E203 +&01010B0B8003090A0A0B0B8003090A0A010180FD03800E0180FE0380FE0380FE0380E10301010B0B +&8003090A0A0B0B8003090A0A010180FE03800E0180FE0380FE0380FE0380E00301010B0B8003090A +&0A0B0B8003090A0A010180FE0303800E0180FE0380FE0380FE0380DF0301010B0B8003090A0A0B0B +&8003090A0A010180FE030303800E0180FE0380FE0380FE0380DE0301010B0B8003090A0A0B0B8003 +&090A0A010180FE03030303800E0180FE0380FE0380FE0380DD0301010B0B8003090A0A0B0B800309 +&0A0A010180FE03800303800E0180FE0380FE0380FE0380DC0301010B0B8003090A0A0B0B8003090A +&0A010180FE03800403800E0180FE0380FE0380FE0380DB0301010B0B8003090A0A0B0B8003090A0A +&010180FE03800503800E0180FE0380FE0380FE0380DA0301010B0B8003090A0A0B0B8003090A0A01 +&0180FE03800603800E0180FE0380FE0380FE0380D90301010B0B8003090A0A0B0B8003090A0A0101 +&80FE03800703800E0180FE0380FE0380FE0380D80301010B0B8003090A0A0B0B8003090A0A010180 +&FE03800803800E0180FE0380FE0380FE0380D70301010B0B8003090A0A0B0B8003090A0A010180FE +&03800903800E0180FE0380FE0380FE0380D60301010B0B8003090A0A0B0B8003090A0A010180FE03 +&800A03800E0180FE0380FE0380FE0380D50301010B0B8003090A0A0B0B8003090A0A010180FE0380 +&0B03800E0180FE0380FE0380FE0380D40301010B0B8003090A0A0B0B8003090A0A010180FE03800C +&03800E0180FE0380FE0380FE0380D30301010B0B8003090A0A0B0B8003090A0A010180FE03800D03 +&800E0180FE0380FE0380FE0380D20301010B0B8003090A0A0B0B8003090A0A010180FE03800E0380 +&0E0180FE0380FE0380FE0380D10301010B0B8003090A0A0B0B8003090A0A010180FE03800F03800E +&0180FE0380FE0380FE0380D00301010B0B8003090A0A0B0B8003090A0A010180FE03801003800E01 +&80FE0380FE0380FE0380CF0301010B0B8003090A0A0B0B8003090A0A010180FE03801103800E0180 +&FE0380FE0380FE0380CE0301010B0B8003090A0A0B0B8003090A0A010180FE03801203800E0180FE +&0380FE0380FE0380CD0301010B0B8003090A0A0B0B8003090A0A010180FE03801303800E0180FE03 +&80FE0380FE0380CC0301010B0B8003090A0A0B0B8003090A0A010180FE03801403800E0180FE0380 +&FE0380FE0380CB0301010B0B8003090A0A0B0B8003090A0A010180FE03801503800E0180FE0380FE +&0380FE0380CA0301010B0B8003090A0A0B0B8003090A0A010180FE03801603800E0180FE0380FE03 +&80FE0380C90301010B0B8003090A0A0B0B8003090A0A010180FE03801703800E0180FE0380FE0380 +&FE0380C80301010B0B8003090A0A0B0B8003090A0A010180FE03801803800E0180FE0380FE0380FE +&0380C70301010B0B8003090A0A0B0B8003090A0A010180FE03801903800E0180FE0380FE0380FE03 +&80C60301010B0B8003090A0A0B0B8003090A0A010180FE03801A03800E0180FE0380FE0380FE0380 +&C50301010B0B8003090A0A0B0B8003090A0A010180FE03801B03800E0180FE0380FE0380FE0380C4 +&0301010B0B8003090A0A0B0B8003090A0A010180FE03801C03800E0180FE0380FE0380FE0380C303 +&01010B0B8003090A0A0B0B8003090A0A010180FE03801D03800E0180FE0380FE0380FE0380C20301 +&010B0B8003090A0A0B0B8003090A0A010180FE03801E03800E0180FE0380FE0380FE0380C1030101 +&0B0B8003090A0A0B0B8003090A0A010180FE03801F03800E0180FE0380FE0380FE0380C00301010B +&0B8003090A0A0B0B8003090A0A010180FE03802003800E0180FE0380FE0380FE0380BF0301010B0B +&8003090A0A0B0B8003090A0A010180FE03802103800E0180FE0380FE0380FE0380BE0301010B0B80 +&03090A0A0B0B8003090A0A010180FE03802203800C0180FE0380FE0380FE0380BF0301010B0B8003 +&090A0A0B0B8003090A0A010180FE03802303800A0180FE0380FE0380FE0380C00301010B0B800309 +&0A0A0B0B8003090A0A010180FE0380240380080180FE0380FE0380FE0380C10301010B0B8003090A +&0A0B0B8003090A0A010180FE0380250380060180FE0380FE0380FE0380C20301010B0B8003090A0A +&0B0B8003090A0A010180FE0380260380040180FE0380FE0380FE0380C30301010B0B8003090A0A0B +&0B8003090A0A010180FE0380270301010180FE0380FE0380FE0380C40301010B0B8003090A0A0B0B +&8003090A0A010180FE038028030180FE0380FE0380FE0380C50301010B0B8003090A0A0B0B800309 +&0A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE03 +&80FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380 +&FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF030101 +&0B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A +&0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A +&010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE +&0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE03 +&80EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B +&8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B +&8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A0101 +&80FE0380FE038059030180FE0380FE0380940301010B0B8003090A0A0B0B8003090A0A010180FE03 +&80FE03804D0380180180FE0380FE0380880301010B0B8003090A0A0B0B8003090A0A010180FE0380 +&FE0380470380240180FE0380FE0380820301010B0B8003090A0A0B0B8003090A0A010180FE0380FE +&03804303802C0180FE0380FE03807E0301010B0B8003090A0A0B0B8003090A0A010180FE03809003 +&0180AD0380320180FE0380FE03807B0301010B0B8003090A0A0B0B8003090A0A010180FE03808403 +&801801809E0380380180FE0380FE0380780301010B0B8003090A0A0B0B8003090A0A010180FE0380 +&7F03802201809603803E0180FE0380FE0380750301010B0B8003090A0A0B0B8003090A0A010180FE +&03807B03802A0180900380420180FE0380FE0380730301010B0B8003090A0A0B0B8003090A0A0101 +&80FE03807803803001808B038022010380220180FE0380FE0380710301010B0B8003090A0A0B0B80 +&03090A0A010180FE0380750380360180860380180180180380180180FE0380FE03806F0301010B0B +&8003090A0A0B0B8003090A0A010180FE03807203803C0180810380150180220380150180FE0380FE +&03806D0301010B0B8003090A0A0B0B8003090A0A010180FE03807003804001807D03801301802A03 +&80130180FE0380FE03806B0301010B0B8003090A0A0B0B8003090A0A010180FE03806E0380440180 +&790380120180300380120180FE0380FE0380690301010B0B8003090A0A0B0B8003090A0A010180FE +&03806C0380480180760380100180360380100180FE0380FE0380680301010B0B8003090A0A0B0B80 +&03090A0A010180FE03806A03804C01807203801001803A0380100180FE0380FE0380660301010B0B +&8003090A0A0B0B8003090A0A010180FE03806803805001806F03800F01803E03800F0180FE0380FE +&0380650301010B0B8003090A0A0B0B8003090A0A010180FE03806603805401806B03800F01804203 +&800F0180FE0380FE0380630301010B0B8003090A0A0B0B8003090A0A010180FE0380650380560180 +&6903800E01804603800E0180FE0380FE0380620301010B0B8003090A0A0B0B8003090A0A010180FE +&03806303805A01806603800D01804A03800D0180FE0380FE0380610301010B0B8003090A0A0B0B80 +&03090A0A010180FE03806203805C01806303800D01804E03800D0180FE0380FE03805F0301010B0B +&8003090A0A0B0B8003090A0A010180FE03806003805F01806103800D01805003800D0180FE0380FE +&03805E0301010B0B8003090A0A0B0B8003090A0A010180FE03805F03806201805E03800C01805403 +&800C0180FE0380FE03805D0301010B0B8003090A0A0B0B8003090A0A010180FE03805E0380640180 +&5C03800C01805603800C0180FE0380FE03805C0301010B0B8003090A0A0B0B8003090A0A010180FE +&03805D03806601805A03800B01805A03800B0180FE0380FE03805B0301010B0B8003090A0A0B0B80 +&03090A0A010180FE03805C03806801805803800B01805C03800B0180FE0380FE03805A0301010B0B +&8003090A0A0B0B8003090A0A010180FE03805A03806C01805503800B01805E03800B0180FE0380FE +&0380590301010B0B8003090A0A0B0B8003090A0A010180FE03805903806E01805303800A01806203 +&800A0180FE0380FE0380580301010B0B8003090A0A0B0B8003090A0A010180FE0380580380700180 +&5103800A01806403800A0180FE0380FE0380570301010B0B8003090A0A0B0B8003090A0A010180FE +&03805703807201804F03800A01806603800A0180FE0380FE0380560301010B0B8003090A0A0B0B80 +&03090A0A010180FE03805603807401804D03800A01806803800A0180FE0380FE0380550301010B0B +&8003090A0A0B0B8003090A0A010180FE03805503807601804B03800A01806A03800A0180FE0380FE +&0380540301010B0B8003090A0A0B0B8003090A0A010180FE03805503807601804A03800A01806C03 +&800A0180FE0380FE0380530301010B0B8003090A0A0B0B8003090A0A010180FE0380540380780180 +&4903800901806E0380090180FE0380FE0380530301010B0B8003090A0A0B0B8003090A0A010180FE +&03805303807A0180470380090180700380090180FE0380FE0380520301010B0B8003090A0A0B0B80 +&03090A0A010180FE03805203807C0180450380090180720380090180FE0380FE0380510301010B0B +&8003090A0A0B0B8003090A0A010180FE03805103807E0180430380090180740380090180FE0380FE +&0380500301010B0B8003090A0A0B0B8003090A0A010180FE03805003807F01804303800901807403 +&80090180FE0380FE0380500301010B0B8003090A0A0B0B8003090A0A010180FE0380500380800180 +&410380090180760380090180FE0380FE03804F0301010B0B8003090A0A0B0B8003090A0A010180FE +&03804F03808201803F0380090180780380090180FE0380FE03804E0301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804E03808401803E03800801807A0380080180FE0380FE03804E0301010B0B +&8003090A0A0B0B8003090A0A010180FE03804E03808401803D03800901807A0380090180FE0380FE +&03804D0301010B0B8003090A0A0B0B8003090A0A010180FE03804D03808601803B03800901807C03 +&80090180FE0380FE03804C0301010B0B8003090A0A0B0B8003090A0A010180FE03804C0380880180 +&3A03800801807E0380080180FE0380FE03804C0301010B0B8003090A0A0B0B8003090A0A010180FE +&03804C03808801803903800901807E0380090180FE0380FE03804B0301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804B03808A0180380380080180800380080180FE0380FE03804B0301010B0B +&8003090A0A0B0B8003090A0A010180FE03804B03808A0180370380080180820380080180FE0380FE +&03804A0301010B0B8003090A0A0B0B8003090A0A010180FE03804A03808C01803603800801808203 +&80080180FE0380FE03804A0301010B0B8003090A0A0B0B8003090A0A010180FE03804A03808C0180 +&350380080180840380080180FE0380FE0380490301010B0B8003090A0A0B0B8003090A0A010180FE +&03804903808E0180340380080180840380080180FE0380FE0380490301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804903808E0180330380080180860380080180FE0380FE0380480301010B0B +&8003090A0A0B0B8003090A0A010180FE0380480380900180320380080180860380080180FE0380FE +&0380480301010B0B8003090A0A0B0B8003090A0A010180FE03804803809001803103800801808803 +&80080180FE0380FE0380470301010B0B8003090A0A0B0B8003090A0A010180FE0380470380920180 +&300380080180880380080180FE0380FE0380470301010B0B8003090A0A0B0B8003090A0A010180FE +&03804703809201802F03800801808A0380080180FE0380FE0380460301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804603809401802E03800801808A0380080180FE0380FE0380460301010B0B +&8003090A0A0B0B8003090A0A010180FE03804603809401802E03800701808C0380070180FE0380FE +&0380460301010B0B8003090A0A0B0B8003090A0A010180FE03804603809401802D03800801808C03 +&80080180FE0380FE0380450301010B0B8003090A0A0B0B8003090A0A010180FE0380450380960180 +&2C03800701808E0380070180FE0380FE0380450301010B0B8003090A0A0B0B8003090A0A010180FE +&03804503809601802C03800701808E0380070180FE0380FE0380450301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804503809601802B03800801808E0380080180FE0380FE0380440301010B0B +&8003090A0A0B0B8003090A0A010180FE03804403809801802A0380070180900380070180FE0380FE +&0380440301010B0B8003090A0A0B0B8003090A0A010180FE03804403809801802A03800701809003 +&80070180FE0380FE0380440301010B0B8003090A0A0B0B8003090A0A010180FE0380440380980180 +&290380080180900380080180FE0380FE0380430301010B0B8003090A0A0B0B8003090A0A010180FE +&03804303809A0180280380070180920380070180FE0380FE0380430301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804303809A0180280380070180920380070180FE0380FE0380430301010B0B +&8003090A0A0B0B8003090A0A010180FE03804303809A0180280380070180920380070180FE0380FE +&0380430301010B0B8003090A0A0B0B8003090A0A010180FE03804303809A01802703800801809203 +&80080180FE0380FE0380420301010B0B8003090A0A0B0B8003090A0A010180FE03804203809C0180 +&260380070180940380070180FE0380FE0380420301010B0B8003090A0A0B0B8003090A0A010180FE +&03804203809C0180260380070180940380070180FE0380FE0380420301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804203809C0180260380070180940380070180FE0380FE0380420301010B0B +&8003090A0A0B0B8003090A0A010180FE03804203809C0180260380070180940380070180FE0380FE +&0380420301010B0B8003090A0A0B0B8003090A0A010180FE03804203809C01802603800701809403 +&80070180FE0380FE0380420301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E0180 +&240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE +&03804103809E0180240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804103809E0180240380070180960380070180FE0380FE0380410301010B0B +&8003090A0A0B0B8003090A0A010180FE03804103809E0180240380070180960380070180FE0380FE +&0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E01802403800701809603 +&80070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E0180 +&240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE +&03804103809E0180240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804103809E0180240380070180960380070180FE0380FE0380410301010B0B +&8003090A0A0B0B8003090A0A010180FE03804103809E0180240380070180960380070180FE0380FE +&0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E01802403800701809603 +&80070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E0180 +&240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE +&03804103809E0180240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804003809F0180230380070180970380070180FE0380FE0380410301010B0B +&8003090A0A0B0B8003090A0A010180FE03804103809E0180240380070180960380070180FE0380FE +&0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E01802403800701809603 +&80070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E0180 +&240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE +&03804103809E0180240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804103809E0180240380070180960380070180FE0380FE0380410301010B0B +&8003090A0A0B0B8003090A0A010180FE03804103809E0180240380070180960380070180FE0380FE +&0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E01802403800701809603 +&80070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E0180 +&240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE +&03804103809E0180240380070180960380070180FE0380FE0380410301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804103809E0180240380070180960380070180FE0380FE0380410301010B0B +&8003090A0A0B0B8003090A0A010180FE03804103809E0180240380070180960380070180FE0380FE +&0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804103809E01802403800701809603 +&80070180FE0380FE0380410301010B0B8003090A0A0B0B8003090A0A010180FE03804203809C0180 +&260380070180940380070180FE0380FE0380420301010B0B8003090A0A0B0B8003090A0A010180FE +&03804203809C0180260380070180940380070180FE0380FE0380420301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804203809C0180260380070180940380070180FE0380FE0380420301010B0B +&8003090A0A0B0B8003090A0A010180FE03804203809C0180260380070180940380070180FE0380FE +&0380420301010B0B8003090A0A0B0B8003090A0A010180FE03804203809C01802603800701809403 +&80070180FE0380FE0380420301010B0B8003090A0A0B0B8003090A0A010180FE03804303809A0180 +&270380080180920380080180FE0380FE0380420301010B0B8003090A0A0B0B8003090A0A010180FE +&03804303809A0180280380070180920380070180FE0380FE0380430301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804303809A0180280380070180920380070180FE0380FE0380430301010B0B +&8003090A0A0B0B8003090A0A010180FE03804303809A0180280380070180920380070180FE0380FE +&0380430301010B0B8003090A0A0B0B8003090A0A010180FE03804403809801802903800801809003 +&80080180FE0380FE0380430301010B0B8003090A0A0B0B8003090A0A010180FE0380440380980180 +&2A0380070180900380070180FE0380FE0380440301010B0B8003090A0A0B0B8003090A0A010180FE +&03804403809801802A0380070180900380070180FE0380FE0380440301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804503809601802B03800801808E0380080180FE0380FE0380440301010B0B +&8003090A0A0B0B8003090A0A010180FE03804503809601802C03800701808E0380070180FE0380FE +&0380450301010B0B8003090A0A0B0B8003090A0A010180FE03804503809601802C03800701808E03 +&80070180FE0380FE0380450301010B0B8003090A0A0B0B8003090A0A010180FE0380460380940180 +&2D03800801808C0380080180FE0380FE0380450301010B0B8003090A0A0B0B8003090A0A010180FE +&03804603809401802E03800701808C0380070180FE0380FE0380460301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804603809401802E03800801808A0380080180FE0380FE0380460301010B0B +&8003090A0A0B0B8003090A0A010180FE03804703809201802F03800801808A0380080180FE0380FE +&0380460301010B0B8003090A0A0B0B8003090A0A010180FE03804703809201803003800801808803 +&80080180FE0380FE0380470301010B0B8003090A0A0B0B8003090A0A010180FE0380480380900180 +&310380080180880380080180FE0380FE0380470301010B0B8003090A0A0B0B8003090A0A010180FE +&0380480380900180320380080180860380080180FE0380FE0380480301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804903808E0180330380080180860380080180FE0380FE0380480301010B0B +&8003090A0A0B0B8003090A0A010180FE03804903808E0180340380080180840380080180FE0380FE +&0380490301010B0B8003090A0A0B0B8003090A0A010180FE03804A03808C01803503800801808403 +&80080180FE0380FE0380490301010B0B8003090A0A0B0B8003090A0A010180FE03804A03808C0180 +&360380080180820380080180FE0380FE03804A0301010B0B8003090A0A0B0B8003090A0A010180FE +&03804B03808A0180370380080180820380080180FE0380FE03804A0301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804B03808A0180380380080180800380080180FE0380FE03804B0301010B0B +&8003090A0A0B0B8003090A0A010180FE03804C03808801803903800901807E0380090180FE0380FE +&03804B0301010B0B8003090A0A0B0B8003090A0A010180FE03804C03808801803A03800801807E03 +&80080180FE0380FE03804C0301010B0B8003090A0A0B0B8003090A0A010180FE03804D0380860180 +&3B03800901807C0380090180FE0380FE03804C0301010B0B8003090A0A0B0B8003090A0A010180FE +&03804E03808401803D03800901807A0380090180FE0380FE03804D0301010B0B8003090A0A0B0B80 +&03090A0A010180FE03804E03808401803E03800801807A0380080180FE0380FE03804E0301010B0B +&8003090A0A0B0B8003090A0A010180FE03804F03808201803F0380090180780380090180FE0380FE +&03804E0301010B0B8003090A0A0B0B8003090A0A010180FE03805003808001804103800901807603 +&80090180FE0380FE03804F0301010B0B8003090A0A0B0B8003090A0A010180FE03805003807F0180 +&430380090180740380090180FE0380FE0380500301010B0B8003090A0A0B0B8003090A0A010180FE +&03805103807E0180430380090180740380090180FE0380FE0380500301010B0B8003090A0A0B0B80 +&03090A0A010180FE03805203807C0180450380090180720380090180FE0380FE0380510301010B0B +&8003090A0A0B0B8003090A0A010180FE03805303807A0180470380090180700380090180FE0380FE +&0380520301010B0B8003090A0A0B0B8003090A0A010180FE03805403807801804903800901806E03 +&80090180FE0380FE0380530301010B0B8003090A0A0B0B8003090A0A010180FE0380550380760180 +&4A03800A01806C03800A0180FE0380FE0380530301010B0B8003090A0A0B0B8003090A0A010180FE +&03805503807601804B03800A01806A03800A0180FE0380FE0380540301010B0B8003090A0A0B0B80 +&03090A0A010180FE03805603807401804D03800A01806803800A0180FE0380FE0380550301010B0B +&8003090A0A0B0B8003090A0A010180FE03805703807201804F03800A01806603800A0180FE0380FE +&0380560301010B0B8003090A0A0B0B8003090A0A010180FE03805803807001805103800A01806403 +&800A0180FE0380FE0380570301010B0B8003090A0A0B0B8003090A0A010180FE03805903806E0180 +&5303800A01806203800A0180FE0380FE0380580301010B0B8003090A0A0B0B8003090A0A010180FE +&03805A03806C01805503800B01805E03800B0180FE0380FE0380590301010B0B8003090A0A0B0B80 +&03090A0A010180FE03805C03806801805803800B01805C03800B0180FE0380FE03805A0301010B0B +&8003090A0A0B0B8003090A0A010180FE03805D03806601805A03800B01805A03800B0180FE0380FE +&03805B0301010B0B8003090A0A0B0B8003090A0A010180FE03805E03806401805C03800C01805603 +&800C0180FE0380FE03805C0301010B0B8003090A0A0B0B8003090A0A010180FE03805F0380620180 +&5E03800C01805403800C0180FE0380FE03805D0301010B0B8003090A0A0B0B8003090A0A010180FE +&03806003805F01806103800D01805003800D0180FE0380FE03805E0301010B0B8003090A0A0B0B80 +&03090A0A010180FE03806203805C01806303800D01804E03800D0180FE0380FE03805F0301010B0B +&8003090A0A0B0B8003090A0A010180FE03806303805A01806603800D01804A03800D0180FE0380FE +&0380610301010B0B8003090A0A0B0B8003090A0A010180FE03806503805601806903800E01804603 +&800E0180FE0380FE0380620301010B0B8003090A0A0B0B8003090A0A010180FE0380660380540180 +&6B03800F01804203800F0180FE0380FE0380630301010B0B8003090A0A0B0B8003090A0A010180FE +&03806803805001806F03800F01803E03800F0180FE0380FE0380650301010B0B8003090A0A0B0B80 +&03090A0A010180FE03806A03804C01807203801001803A0380100180FE0380FE0380660301010B0B +&8003090A0A0B0B8003090A0A010180FE03806C0380480180760380100180360380100180FE0380FE +&0380680301010B0B8003090A0A0B0B8003090A0A010180FE03806E03804401807903801201803003 +&80120180FE0380FE0380690301010B0B8003090A0A0B0B8003090A0A010180FE0380700380400180 +&7D03801301802A0380130180FE0380FE03806B0301010B0B8003090A0A0B0B8003090A0A010180FE +&03807203803C0180810380150180220380150180FE0380FE03806D0301010B0B8003090A0A0B0B80 +&03090A0A010180FE0380750380360180860380180180180380180180FE0380FE03806F0301010B0B +&8003090A0A0B0B8003090A0A010180FE03807803803001808B0380460180FE0380FE038071030101 +&0B0B8003090A0A0B0B8003090A0A010180FE03807B03802A0180900380420180FE0380FE03807303 +&01010B0B8003090A0A0B0B8003090A0A010180FE03807F03802201809603803E0180FE0380FE0380 +&750301010B0B8003090A0A0B0B8003090A0A010180FE03808403801801809E0380380180FE0380FE +&0380780301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380400380320180FE0380FE03 +&807B0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE03804303802C0180FE0380FE0380 +&7E0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380470380240180FE0380FE038082 +&0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE03804D0380180180FE0380FE03808803 +&01010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B800309 +&0A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B800309 +&0A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE03 +&80FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380 +&FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF030101 +&0B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A +&0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A +&010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE +&0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE03 +&80EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B +&8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B +&8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A0101 +&80FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380 +&FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF +&0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003 +&090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003 +&090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE +&0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE03 +&80FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301 +&010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A +&0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A +&0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380 +&FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE +&0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B +&0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B +&0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A01 +&0180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE03 +&80FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380 +&EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B80 +&03090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B80 +&03090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180 +&FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE +&0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF03 +&01010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B800309 +&0A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B800309 +&0A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE03 +&80FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380 +&FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF030101 +&0B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A +&0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A +&010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE +&0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE03 +&80EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B +&8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B +&8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A0101 +&80FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380 +&FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF +&0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003 +&090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003 +&090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE +&0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE03 +&80FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301 +&010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A +&0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A +&0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380 +&FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE +&0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B +&0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B +&0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A01 +&0180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE03 +&80FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380 +&EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B80 +&03090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B80 +&03090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180 +&FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE +&0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF03 +&01010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B800309 +&0A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B800309 +&0A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE03 +&80FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380 +&FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF030101 +&0B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A +&0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A +&010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE +&0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE03 +&80EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B +&8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B +&8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A0101 +&80FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380 +&FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF +&0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003 +&090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003 +&090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE +&0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE03 +&80FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301 +&010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A +&0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A +&0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380 +&FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE +&0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B +&0B8003090A0A0B80060A010180FE0380FE0380FE0380FE0380EF0301010B0B80050A80060B0A0101 +&80FE0380FE0380FE0380FE0380EF03010180060B0A0B0B8003090A0A010180FE0380FE0380FE0380 +&FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF030101 +&0B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A +&0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A +&010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE +&0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE03 +&80EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B +&8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B +&8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A0101 +&80FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380 +&FE0380FE0380EF0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF +&0301010B0B8003090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003 +&090A0A0B0B8003090A0A010180FE0380FE0380FE0380FE0380EF0301010B0B8003090A0A0B0B8003 +&090A0A80FE0180FE0180FE0180FE0180F3010B0B8003090A0A0B0B8003090A0A80FE0180FE0180FE +&0180FE0180F3010B0B8003090A0A0B0B8003090A0A80FE0B80FE0B80FE0B80FE0B80F50B8003090A +&0A0B0B8003090A80FE0B80FE0B80FE0B80FE0B80F60B8003090A0A0B0B8016090A0B80FE0980FE09 +&80FE0980FE0980CD090A0B8016090A0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CD090A0B +&8016090A0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CD090A0B8016090A0A0B0B8016090A +&0B80FE0980FE0980FE0980FE0980CD090A0B8016090A0A0B0B80170A0B80FE0A80FE0A80FE0A80FE +&0A80CE0A0B80180A0B80FE0A80FE0A80FE0A80FE0A80FE0A80030A\x +=EndInset + + + + + + + > # end of ImportObject + + +=FrameImage +&%v +&Y\xA66A95000004FF000001920000000800000000000000020000000200000300FF0066D300A0FF00 +&FF00008F007039C1578F38210000FFFF72C43E7F6C984C70BD3A00D0AFD9FF99D45482CB\x?<9630 +&,)&# \x1C191613100C0906030D1A2633404D5966737F8CA6B3BFCCD9E5F24CFF0000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000FF00CDD300200000FFBF65E3007073EBAEFF7144FFFF00E49FD757FFD9FF9980C5426420 +&EEC2FF89D454829DBFB6ACA2999086\x|ri`VLC90&\x1D13090D1A2633404D5966737F8CA6B3BFCC +&D9E5F24CD70000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&0000000000000000000000000000000000FF00AAD380F000FF00FF87FF70FF5FDD91EE5D3800FFFF +&C4FFFF8CD4B4FF7F90CC4B0090EEA7EC76D4548273FFFCF9F6F3EFECE9E6E3DFDCD9D6D3CFCCC9C6 +&C30D1A2633404D5966737F8CA6B3BFCCD9E5F24C0000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000000000000000000 +&00000000000000000000000000000000000000000000000000000000000000000080FE0B80FE0B80 +&FE0B80FE0B80FE0B80030B0A80180B0A80FE0B80FE0B80FE0B80FE0B80CD0B0A80180B0A0A0B0B80 +&16090A0B80FE0980FE0980FE0980FE0980CC090A0B8016090A0A0A0B0B8016090A0B80FE0980FE09 +&80FE0980FE0980CC090A0B8016090A0A0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CC090A +&0B8016090A0A0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CC090A0B8016090A0A0A0B0B80 +&030980130A0B80FE0A80FE0A80FE0A80FE0A80CD0A0B80120A8003090A0A0A0B0B8003090A80FE0B +&80FE0B80FE0B80FE0B80F50B8003090A0A0A0B0B8003090A0B8010090A0B80FE0980FE0980FE0980 +&FE0980B9090A0B8010090A0B8010090A0B8003090A0A0A0B0B8003090A0B8010090A0B80FE0980FE +&0980FE0980FE0980B9090A0B8010090A0B8010090A0B8003090A0A0A0B0B8003090A0B8010090A0B +&80FE0980FE0980390980030180FE0980FE09807B090A0B8010090A0B8010090A0B8003090A0A0A0B +&0B8003090A0B8010090A0B80FE0980FE09803B09010180FE0980FE09807B090A0B8010090A0B0909 +&09800A0B0909090A0B8003090A0A0A0B0B8003090A0B8010090A0B80FE0980FE09803B09010180FE +&0980FE09807B090A0B8010090A0B0909090B8008090A0909090A0B8003090A0A0A0B0B8003090A0B +&8010090A0B80FE0980FE09803A09010180FE0980FE09807C090A0B8010090A0B0909090B8008090A +&0909090A0B8003090A0A0A0B0B8003090A0B090909800A0B0909090A0B80FE0980FE09803A090101 +&80050980030180030901010109010109010109090980030180050980030109018003098005018004 +&09010180FE0980FE098041090A0B80050980030B8006090A0B0909090B8008090A0909090A0B8003 +&090A0A0A0B0B8003090A0B0909090B8008090A0909090A0B80FE0980FE09803A0901018003090101 +&01090901018003098007010909010109090101090909010101090901010109090901010909090101 +&800409010180FE0980FE098041090A0B8005090B09090A8006090A0B0909090B8008090A0909090A +&0B8003090A0A0A0B0B8003090A0B0909090B8008090A0909090A0B80FE0980FE0980390901018004 +&09010109090901018003090101090101090101800509010109090901010909090101090909010180 +&FE0980FE09804E090A0B8005090B09090A8006090A0B0909090B8008090A0909090A0B8003090A0A +&0A0B0B8003090A0B0909090B80090A0909090A0B80FE0980FE098039090101800309800701090909 +&01010901010901010909800501090909010180090980040180FE0980FE09804A090A0B8005090B0A +&0A0A8006090A0B0909090B8008090A0909090A0B8003090A0A0A0B0B8003090A0B8010090A0B80FE +&0980FE0980380901018004090101800809010109010109010109010109090901010909090101800D +&09010180FE0980FE098049090A0B8010090A0B0909090B8008090A0909090A0B8003090A0A0A0B0B +&8003090A0B8010090A0B80FE0980FE09803809010180040901010909090101090909010109010109 +&010109010109090901018003090101090909010109090901010909090101800409010180FE0980FE +&098043090A0B8010090A0B0909090B8008090A0909090A0B8003090A0A0A0B0B8003090A0B801009 +&0A0B80FE0980FE098035098007010909098004010909090101010901010901010109800601800309 +&800401800309800501800509010180FE0980FE098043090A0B8010090A0B0909090B8008090A0909 +&090A0B8003090A0A0A0B0B8003090A0B8010090A0B80FE0980FE0980FE0980FE0980B9090A0B8010 +&090A0B0909090B80090A0909090A0B8003090A0A0A0B0B8003090A0B8010090A0B80FE0980FE0980 +&FE0980FE0980B9090A0B8010090A0B8010090A0B8003090A0A0A0B0B8003090A0B8010090A0B80FE +&0980FE0980FE0980FE0980B9090A0B8010090A0B8010090A0B8003090A0A0A0B0B8003090A0B8011 +&0A0B80FE0A80FE0A80FE0A80FE0A80BA0A0B80110A0B80110A0B8003090A0A0A0B80FE0A80FE0A80 +&FE0A80FE0A80FA0A0B80060A80060B0A80FE0180FE0180FE0180FE0180F20180060B0A0A0B0B8003 +&090A0A0180FE1D80FE1D80FE1D80FE1D80F01D010B0B8003090A0A0A0B0B8003090A0A0180FE1D80 +&FE1D80FE1D80FE1D80EF1D1E010B0B8003090A0A0A0B0B8003090A0A011D1D80FE1B80FE1B80FE1B +&80FE1B80EC1B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80FE1B80FE1B80FE1B80FE1B80 +&EC1B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80FE1B80FE1B80FE1B80FE1B80EC1B1E1E +&010B0B8003090A0A0A0B0B8003090A0A011D1D80FE1B80FE1B80FE1B80FE1B80EC1B1E1E010B0B80 +&03090A0A0A0B0B8003090A0A011D1D80121B010180051B800401802F1B0101800A1B010180471B80 +&050180041B800501803A1B01010180051B010180061B0101801D1B010180FE1B80FE1B80FE1B80AB +&1B80040180131B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80031B80090180041B010180 +&051B800401801A1B80030180101B0101800A1B0101802D1B80060180111B80060180031B80060180 +&291B80090180061B01010180051B010180061B0101800E1B80050180081B010180FE1B80FE1B80FE +&1B80941B8003011B1B800301800C1B80040180131B1E1E010B0B8003090A0A0A0B0B8003090A0A01 +&1D1D80031B800901800F1B010180181B800701800E1B0101803A1B80070180101B010180081B0101 +&802E1B80090180071B0101800E1B0101800E1B80050180FE1B80FE1B80FE1B809F1B8003011B1B80 +&0301800F1B010180131B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80051B010180031B01 +&011B1B80040180081B010180071B800301800C1B0101011B1B0101011B1B0101011B8003011B1B1B +&80070180031B80040180071B80030180031B0101011B80030180041B800601800B1B01011B1B1B01 +&011B1B0101011B1B8003011B1B1B8007011B1B1B80070180041B80030180031B8003011B1B010101 +&80031B800601800B1B010180031B01011B1B1B8003011B01011B1B1B80040180041B800701800C1B +&010180071B80040180061B8006011B1B0101011B80030180FE1B80FE1B80FE1B807D1B010180031B +&010180041B80030180071B010180041B0101011B80030180061B1E1E010B0B8003090A0A0A0B0B80 +&03090A0A011D1D80051B01011B01011B01011B1B80040180081B010180051B80070180091B010101 +&80031B0101011B8008011B1B80070180031B80040180051B8007011B1B8008011B1B1B800701800B +&1B01011B1B1B01011B1B0101011B1B8003011B1B1B8007011B1B1B8007011B1B1B8007011B1B8009 +&011B1B800701800B1B01011B01011B01011B1B8007011B1B1B80040180041B800701800C1B010180 +&071B80040180051B8007011B1B80080180FE1B80FE1B80FE1B807C1B010180031B01011B1B1B8007 +&0180051B010180041B80080180051B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80051B80 +&040180071B010180081B010180041B01010180031B01010180081B010180051B01011B1B0101011B +&1B1B0101011B1B1B0101800A1B010180041B01010180031B0101011B1B0101011B1B1B01011B1B1B +&010180031B0101800B1B80050180031B010180031B010180041B010180081B010180051B01010180 +&031B0101011B1B1B8003011B1B01011B1B010180031B0101800B1B80040180031B0101011B1B1B01 +&010180051B010180061B010180101B0101800A1B010180051B010180031B01011B1B1B0101011B1B +&1B01010180FE1B80FE1B80FE1B807B1B8007011B1B01010180031B01010180041B010180051B0101 +&011B1B1B01010180041B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80051B80040180071B +&010180081B010180041B010180051B010180081B010180051B01011B1B010180041B01011B1B1B01 +&01800A1B010180041B010180051B01011B1B010180031B01011B1B1B800301800F1B8006011B1B1B +&010180031B010180041B010180081B010180051B010180051B01011B1B1B01010180061B80030180 +&0F1B80040180031B010180041B010180051B010180061B010180101B0101800A1B010180051B8003 +&0180061B010180041B010180FE1B80FE1B80FE1B807B1B8007011B1B010180051B010180041B0101 +&80051B010180041B010180041B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80051B01011B +&010180071B010180081B010180041B80090180081B010180051B01011B1B010180041B01011B1B1B +&0101800A1B010180041B010180051B01011B1B010180031B010180031B800501800C1B010180031B +&01011B1B010180031B010180041B010180081B010180051B8009011B1B1B010180081B800501800C +&1B01011B010180031B010180041B010180051B010180061B010180101B010180031B010180041B01 +&0180061B80050180031B010180041B010180FE1B80FE1B80FE1B807B1B010180031B01011B1B8009 +&0180041B010180051B010180041B010180041B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D +&80051B0101800A1B010180081B010180041B80090180081B01010180031B0101011B1B010180041B +&01011B1B1B0101800A1B010180041B010180051B01011B1B010180031B010180051B800401800B1B +&010180031B01011B1B010180031B010180041B010180081B010180051B8009011B1B1B0101800A1B +&800401800B1B010180031B01011B010180041B010180051B010180061B010180101B010180031B01 +&0180041B010180081B8004011B1B1B010180041B010180FE1B80FE1B80FE1B807B1B010180031B01 +&011B1B80090180041B010180051B010180041B010180041B1E1E010B0B8003090A0A0A0B0B800309 +&0A0A011D1D80051B0101800A1B010180081B010180041B01010180101B0101011B1B0101011B1B1B +&0101011B1B1B0101011B1B1B010180031B010180041B010180041B01010180031B0101011B1B0101 +&80031B01011B1B1B010180031B0101800B1B010180031B01011B1B01011B1B1B01010180041B0101 +&80081B010180051B01010180091B010180071B010180031B0101800B1B010180031B01011B010101 +&1B1B1B01010180051B010180061B010180031B0101800A1B010180031B010180041B010180051B01 +&0180031B01011B1B1B0101011B1B1B01010180FE1B80FE1B80FE1B807B1B010180031B01011B1B01 +&0101800B1B010180051B0101011B1B1B01010180041B1E1E010B0B8003090A0A0A0B0B8003090A0A +&011D1D80031B80060180041B8007011B1B1B8007011B1B1B80080180091B8007011B1B1B80070180 +&031B8007011B1B8007011B1B1B8007011B1B8003011B1B8003011B1B80070180091B8008011B1B1B +&8008011B1B8007011B1B1B8007011B1B1B8008011B80070180031B80070180091B8009011B1B8008 +&011B1B80070180031B80070180081B8009011B1B8007011B1B1B8007011B1B1B80070180FE1B80FE +&1B80FE1B807B1B8003011B1B8003011B1B8008011B1B8007011B1B1B80070180051B1E1E010B0B80 +&03090A0A0A0B0B8003090A0A011D1D80031B80060180041B8007011B1B1B80070180041B80060180 +&0B1B80030180041B01011B80030180051B80040180031B80070180041B80030180031B8003011B1B +&8003011B1B800601800A1B80070180041B8003011B0101011B1B8007011B1B1B80070180041B8006 +&011B80070180031B800601800A1B8009011B1B1B8003011B0101011B1B80070180041B800401800A +&1B8009011B1B8007011B1B1B80060180031B01011B80030180FE1B80FE1B80FE1B807C1B8003011B +&1B80030180031B8006011B1B8007011B1B1B01011B80030180061B1E1E010B0B8003090A0A0A0B0B +&8003090A0A011D1D80431B010180F11B010180FE1B80FE1B80FE1B80A31B0101800B1B1E1E010B0B +&8003090A0A0A0B0B8003090A0A011D1D80431B010180F11B010180FE1B80FE1B80FE1B80A31B0101 +&800B1B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80421B80040180EE1B80040180FE1B80 +&FE1B80FE1B80A01B80040180091B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80421B8004 +&0180EE1B80040180FE1B80FE1B80FE1B80A01B80040180091B1E1E010B0B8003090A0A0A0B0B8003 +&090A0A011D1D80FE1B80FE1B80FE1B80FE1B80EC1B1E1E010B0B8003090A0A0A0B0B8003090A0A01 +&1D1D80FE1B80FE1B80FE1B80FE1B80EC1B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80FE +&1B80FE1B80FE1B80FE1B80EC1B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80FE1B80FE1B +&80FE1B80FE1B80EC1B1E1E010B0B8003090A0A0A0B0B8003090A0A011D1D80FE1E80FE1E80FE1E80 +&FE1E80EE1E010B0B8003090A0A0A0B0B8003090A0A011D80FE1E80FE1E80FE1E80FE1E80EF1E010B +&0B8003090A0A0A0B0B8003090A0A80FE0180FE0180FE0180FE0180F2010B0B8003090A0A0A0B0B80 +&03090A0A80FE1780FE1780FE1780FE1780E317800E210B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E317800D21200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE17 +&80FE1780E31721218004172080041720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE +&1780FE1780E317212180031720202180031720200B0B8003090A0A0A0B0B8003090A0A8003178009 +&0680FE1780FE1780FE1780FE1780D517212180031720202180031720200B0B8003090A0A0A0B0B80 +&03090A0A8003170680071706807917800304806C1704040480241704040480371780030480491780 +&030480FE1780FE1780FE17803417212117171720201F212117171720200B0B8003090A0A0A0B0B80 +&03090A0A8003170680071706801D178005048057170404806D1704048005170404801D1704048036 +&17040417170404802C170404801B1704048007170404801117040480FE1780FE1780FE1780161721 +&2117171720201F212117171720200B0B8003090A0A0A0B0B8003090A0A8003170680071706801E17 +&040417170404800E1704048045170404806D17040480051704048005170404801517040480211704 +&0480121704048030170404801B17040480071704048011170404800517040480FE1780FE1780FE17 +&800E172121171720201F1F1F2121171720200B0B8003090A0A0A0B0B8003090A0A80031706800717 +&06801E1704041717170404800D1704048045170404806D170404800D170404801517040480211704 +&048012170404804E170404802317040480FE1780FE1780FE17800E172121171720201F1F1F212117 +&1720200B0B8003090A0A0A0B0B8003090A0A80031706171704040417171706171717040404800617 +&040404800E1704041717170404800417800304171717800704171704040417170404041717800304 +&17040404171704040417040404800C17800304171780030417171780030480061704048003170404 +&041717040404800417800304800417800504800B1780030417178003041717178003041717178003 +&0417040404800417800304800F178003048004170404041704048003178003048003178007048004 +&17800304800417040404170404800E1780030417171704040417170404041717800704800C178006 +&0480041780030417171780030417040404800D178005048003178003048003170404041704041704 +&04170404041704040480061704048005178003048005178003041704800317800304800317800704 +&1717800304171780030480FE1780FE1780FD17212117202080041F21211720200B0B8003090A0A0A +&0B0B8003090A0A80031706171704040417171706171717040404800617040404800E170404171704 +&04800417040417170404800317040480061704041717170404800317040404171704041717040404 +&17170404800C17040480031704041717170404171704048005170404800417040417171704048003 +&1704041717040417171704041717170404800C170404800317040417171704041717040480031704 +&040417170404171717040417170404800D1704041717040417171704041717040404800517040480 +&0517040480071704041717040417171704041717040404800D170404171704041717170404171717 +&04048003170404801217040480061704041717040480031704040417170404800B17040417171704 +&04800517040480041780070417170404041717040480051704048007170404800417040417170404 +&04800517040480051704048006170404800317040480FE1780FE1780FE17212117202080041F2121 +&1720200B0B8003090A0A0A0B0B8003090A0A8003170680071706801E178004048004170404800317 +&0404171717040480061704041717170404800317040480061704041717170404800D170404171704 +&04800717040480051704048004170404171717040417171704048003170404171704040480101704 +&04170404170404171704048003170404171717040480061704048003170404800B17040480031704 +&04170404800317040480051704048005170404800617040480031704041704048003170404800C17 +&04048003170404171704041717170404800317040480121704048005170404800317040417171704 +&04801017040404800917040480041704041704041704041717040480031704048004170404800717 +&0404800317040480031704048005170404800517040480071704041717040480FE1780FE1780FE17 +&172121202080082120200B0B8003090A0A0A0B0B8003090A0A8003170680071706801E1704041717 +&0404800317800704171717040480061704041717170404800317040480061704041717170404800D +&17040417170404800317800504800517040480041704041717170404171717800704171717800404 +&800E170417040417041717178007041717170404800617800704800B178007041704048003170404 +&800517040480051704048006178007041704048003170404800C1704048003170404171704041717 +&17040480031704048012170404800517040480031704041717170404801117800404800617040480 +&04170404170404170404171704048003170404800417040480071704048003170404800B17040480 +&0517040480071704041717040480FE1780FE1780FE171721212080092120200B0B8003090A0A0A0B +&0B8003090A0A8003170680071706801E170404171717040417171704048008170404800617040417 +&17170404800317040480061704041717170404800E17800304800317040417171704048005170404 +&800417040417171704041717170404800B17040404800D1780050417171704048008170404800617 +&04048011170404800617040480031704048005170404800517040480061704048006170404800317 +&0404800C170404800317040417170404171717040480031704048012170404800517040480031704 +&04171717040480141704040480051704048004170404170404170404171704048003170404800417 +&040480071704048003170404800B170404800517040480081780030480FE1780FE1780FE17171721 +&21800A1720200B0B8003090A0A0A0B0B8003090A0A80031706171704040417171706171717040404 +&800617040404800E1704041717170404800317040417171704041717170404171717040417170404 +&1717040404800317040480061704041717170404800E178003048003170404171717040480051704 +&048004170404171704040480031704041717170404171704041717170404800D1704041717040480 +&031704041717170404171717040480071704041717170404800C1704041717170404171704041717 +&04040480051704048005170404171717040417171704041717170404171704041717040404800D17 +&0404171704041717170404171704040480031704041717170404800D170404800617040417170404 +&80031704048010170404171717040480051704048004170404170404170404171704040417170404 +&80051704048007170404800417040417171704048005170404800517040417171704048003178003 +&0480051704040480061704040480061704040480FE1780FE1780E3172121800A1720200B0B800309 +&0A0A0A0B0B8003090A0A80031706171704040417171706171717040404800617040404800D178004 +&04170404048003178004048004178004048003170404041704040417800604171717800304178003 +&04800E17040480051780030417040417178007041717170404041704040480031780040417171780 +&0504800E170404171704048004178004041717800604800517800404800E17800404800317040404 +&17040404171780070480031780040480041780040480031704040417040404800D17800304800417 +&04040417040404800317800404800C17800604800417800304171717800604800D17800504800317 +&80070417040404170404170404041704041704040480031780070417178007041717178004048003 +&17800704800317800404800517040480061704040480061704040480061704040480FE1780FE1780 +&E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80031706171717040417171706800317 +&0404800717040480FE178081170404803B17040480FE1780FE1780FE178003172121800A1720200B +&0B8003090A0A0A0B0B8003090A0A8003170617170404800317061717170404800717040480FE1780 +&82170404803B17040480FE1780FE1780FE178003172121800A1720200B0B8003090A0A0A0B0B8003 +&090A0A800317800906171717048008170480FE1780821780040480371780040480FE1780FE1780FE +&171717172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3 +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A806B1701018007170101801C1701018004 +&17800301801C17010101800D17010117170101802B17800306803F17060606803817060606801C17 +&010117170101800317010180FE1780FE1780FE178036172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A8006178003011701178005018004178007011701010180031701010180091780030117 +&178003011717178003011701171780070117800501800F17800301800517800301801B1701018007 +&170101801D170101800D1701011717010180041780030617068004170606801B170606801A178003 +&061706801F170606800A170606802C170606800A170606800F17010117170101800417010180FE17 +&80FE1780FE178035172121800A1720200B0B8003090A0A0A0B0B8003090A0A800417010101171701 +&01011717170101800917010180041701018003170101800B17010180031701011717170101171701 +&0101171717010117171701011717010117170101800D170101170101800417010117010180031701 +&0180151701018007170101801D170101800D17010117170101800317060617170606068004170606 +&801B1706068018170606061717060606801F170606800A170606802C170606800A170606800F1701 +&0117170101800417010180FE1780FE1780FE178035172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A80041701018003170101171717010180091701018004170101011717010101800B170101 +&8003170101171701018003170101171717010180061701011717170101800F170101800717010180 +&031780030180131701018007170101801D170101800D170101171701011717170606800317060680 +&2217060680181706068003170606801F1706068039170606801C17010117170101800417010180FE +&1780FE1780FE178035172121800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917 +&010180091701018004170101011717010101800B1701018003170101171701010180071701011717 +&0180031701011717170101800F170101800717010180051780030180101701018008170101800617 +&800301800517800301800417010101170101800D1701011717010117171706060680071780030680 +&031706060617060617060617060606170606068006170606800617800306800C1706068007178003 +&06170606068004178003061717170606061706060680031706061706060680041780030680051780 +&03061706800317800506800D17800506171717060617060606800417800306800317060606170606 +&06800417010117170101800517010180FE1780FE1780FE178034172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A80031701018009170101800917010180041780070117178007011717010180 +&03170101171717800301800517800401800317010117170101800317800701800417010180071701 +&01800717800301800E17010180081701018005170101171701018003170101171701011717170101 +&17170101018017178003068007170606800417800706171706060617170606800517060680051706 +&06171706061717178007061706068009170606061717060617171706061717060617171706060617 +&1706061717170606061717060680051706068004170606171706060617171706061717170606800C +&170606171717060617171706060617170606800517060680041706060617170606800F17010180FE +&1780FE1780FE178034172121800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917 +&01018009170101800417010117010117010117178007011717010180031701018004178003018003 +&17010117170180031780040180041780070180041701018007170101800917010101800D17010180 +&08170101800417010180031701018006170101171701018003170101801917800306800517060680 +&04170606170606170606171706068003170606800417060680041706068003170606171780070617 +&060617171780040617170606800B1706061717170606800317060617170606171717060680051706 +&06800317060680031706061717170606068010170606068006170606800317060680041706068004 +&1706061717170606800F17010180FE1780FE1780FE178034172121800A1720200B0B8003090A0A0A +&0B0B8003090A0A80031701018009170101171717010180041701018004170101170101170101800B +&17010180031701018006170101011717170101800617010117170101801017010180071701018007 +&17800301800E17010180081701018004170101800317010117171780050117170101800317010180 +&1B170606068004170606800417060617060617060617170606800317060680041706068004178007 +&06800A17060680041706061717170606800717800506171717060680031706061717060617171706 +&0680051706068003170606800917800406800E178004068003170606800317060680041706068004 +&1706061717170606800F17010180FE1780FE1780FE178034172121800A1720200B0B8003090A0A0A +&0B0B8003090A0A800417010180031701011717170101171717010180041701018004170101800317 +&0101800B170101800317010117170101800317010117171701011717170101171701011717170101 +&800F1701018007170101800517800301801017010180081701018004170101800317010117170101 +&17171701011717010180031701018016170606800317060680041706068004170606170606170606 +&17170606800317060680041706068004170606801117060680031706061717170606800617060617 +&171706061717170606800317060617170606171717060680051706068003170606800C1706060680 +&101706060617171706068003170606800417060680041706061717170606800F17010180FE1780FE +&1780FE178034172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004170101011717010101 +&17171701011717170101800417010180041701018003170101800C17010117170101171717010101 +&1717010180031701011717170101171701011717170101800F170101800717010180031780030180 +&13170101800717010180051701011717010117171701011717170101171717010117170101018016 +&17060606171706068005170606800417060617060617060617170606061717060680051706068005 +&1706061717170606800B170606061717170606171717060680061706061717170606171717060606 +&17170606171717060617171706068005170606800417060617171706061717170606171717060680 +&04170606068004170606171717060617171706060617170606800517060680041706061717170606 +&800E17010180FE1780FE1780FE178035172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&06178003011717178008011717800701178003011717800301800C17800301800317011780030180 +&03178007011780040117010101800B17800701171780070117010180151701018004178007018003 +&17800301800417800301170101171717010101170101018015170617800306800317800706170606 +&061706061706060617060617060606800317800706800317800406800E1780040617178006068004 +&17800306170606171706061706060617171780030617800306171780070617171780040680031780 +&0506800517060606800417800506171717060606170606068003178007061780030617800306800D +&17010180FE1780FE1780FE178035172121800A1720200B0B8003090A0A0A0B0B8003090A0A809317 +&0101805E1706068043170606806D17010180FE1780FE1780FE178035172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A8094170101805D1706068043170606806C17010180FE1780FE1780FE17 +&8036172121800A1720200B0B8003090A0A0A0B0B8003090A0A80F31780040680401780040680FE17 +&80FE1780FE1780A3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE17 +&80FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A806B17010180051780030180 +&1C170101806817800301807317010180FE1780FE1780FE178068172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A80061780030117011780050180041780070117010101800317010101800917 +&80030117178003011717178003011701171780070117800501800F17800301800417010117170101 +&801A170101800617800301170180351780030117018004170101801B170101801B17010180221780 +&0701802B17010180FE1780FE1780FE178067172121800A1720200B0B8003090A0A0A0B0B8003090A +&0A80041701010117170101011717170101800917010180041701018003170101800B170101800317 +&010117171701011717010101171717010117171701011717010117170101800D1701011701018004 +&17018003170101171701018015170101800517010117170101011717170101801B17010180111701 +&0117170101018004170101801B170101800F170101800917010180231701011717170101802B1701 +&0180FE1780FE1780FE178067172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004170101 +&8003170101171717010180091701018004170101011717010101800B170101800317010117170101 +&8003170101171717010180061701011717170101800F170101800917010117178003018013170101 +&800417010180031701011717170101801B170101801017010180031701018022170101800F170101 +&802F170101803017010180FE1780FE1780FE178067172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A8003170101800917010180091701018004170101011717010101800B1701018003170101 +&1717010101800717010117170180031701011717170101800F170101800917010180031780030180 +&10170101800517010101800517800701800417800301171717800301170101011717800701800C17 +&01010180071780030180031701010117010117010117010101171701010180051701018006178003 +&0117171780070180031780030180061780030117171701010117010101800E170101171701171717 +&80030117010101800417800301171717010101170101170101800317800301800617010180FE1780 +&FE1780FE178066172121800A1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101 +&80091701018004178007011717800701171701018003170101171717800301800517800401800317 +&01011717010180031780070180041701018008170101800617800301800E17010180061780030180 +&05170101800717010117170101800317010101171701011717170101800617800701171717800301 +&80071701018004178007011717010117171701018005170101800517010117170101800317010180 +&09170101800517010117170101171717010101171701011717178007011717178004018004170101 +&0117170101171717010117170101171717800701171717010117170101800517010180FE1780FE17 +&80FE178066172121800A1720200B0B8003090A0A0A0B0B8003090A0A800317010180091701018009 +&17010180041701011701011701011717800701171701018003170101800417800301800317010117 +&170180031780040180041780070180041701018007170101800917010101800D1701018008178003 +&018003170101800B1701018003170101800717010180061780070180041780030180051701018004 +&17010117010117010117170101171717010180051701018009170101800317010180091701018004 +&170101800317010117170101171717010117171780070117171701011717018004170101800B1701 +&011717170101170101170101171701018003170101800417010180FE1780FE1780FE178066172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917010117171701018004170101 +&8004170101170101170101800B170101800317010180061701010117171701018006170101171701 +&0180101701018006170101800817800301800E170101800A17010101171717010180071780050180 +&03170101800717010180151701010180041701018004170101170101170101171701011717170101 +&80051701018005178005018003170101800917010180041701018003170101171701011717170101 +&800D170101800717010180071780050117171701011701011701011717800701800417010180FE17 +&80FE1780FE178066172121800A1720200B0B8003090A0A0A0B0B8003090A0A800417010180031701 +&0117171701011717170101800417010180041701018003170101800B170101800317010117170101 +&800317010117171701011717170101171701011717170101800F1701018005170101800717800301 +&80101701018005170101800317010117171701018006170101171717010180031701018007170101 +&80101701018003170101800417010180041701011701011701011717010117171701018005170101 +&80041701011717170101800317010180091701018004170101800317010117170101171717010180 +&0D170101800717010180061701011717170101171717010117010117010117170101800A17010180 +&FE1780FE1780FE178066172121800A1720200B0B8003090A0A0A0B0B8003090A0A80041701010117 +&1701010117171701011717170101800417010180041701018003170101800C170101171701011717 +&170101011717010180031701011717170101171701011717170101800F1701018004170101171717 +&01011717800301801317010180041701010117170101800317010117171701011717010117171701 +&01800317010180071701011717170101800B17010101171701018005170101800417010117010117 +&01011717010117170101018005170101800417010117171701018003170101171717010180041701 +&0180051701011717010117171701011717170101800D170101800717010180061701011717170101 +&171717010117010117010117171701011717170101800317010180FE1780FE1780FE178067172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A8006178003011717178008011717800701178003 +&011717800301800C1780030180031701178003018003178007011780040117010101800B17800701 +&17178006011717010180151701018004170117800301800517800401800317800301170101178006 +&01800517800401800C17011780030180031780070117010101170101170101011717010101170101 +&01171780070117171780030117010180031780040117171780070180031780030117171780030117 +&800301800B1780040180031780060180041780030117010117010101170101170101011717178004 +&01800417010180FE1780FE1780FE178067172121800A1720200B0B8003090A0A0A0B0B8003090A0A +&809317010180E217010180FE1780FE1780FE178067172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A809417010180E017010180FE1780FE1780FE178068172121800A1720200B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B800309 +&0A0A806B170101800517800301801C170101809117800301800F17800301800E1780030180061780 +&0301800517800301800E17800301800617800301800517800301805217010101801A17010101803C +&170101800617800301800417010180FE1780FE17808B172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A8006178003011701178005018004178007011701010180031701010180091780030117 +&178003011717178003011701171780070117800501800F17800301800417010117170101801A1701 +&01800317800501802E17800301170180041701018017178005018007170101802317010117170101 +&800D17010117170101800C17010117170101800417010117170101800317010117170101800C1701 +&01171701018004170101171701018003170101171701018015178005018007170101802217800701 +&17170101800A170101800E170101803A17800301800517010117170101800417010180FE1780FE17 +&808A172121800A1720200B0B8003090A0A0A0B0B8003090A0A800417010101171701010117171701 +&01800917010180041701018003170101800B17010180031701011717170101171701010117171701 +&0117171701011717010117170101800D170101170101800417018003170101171701018015170101 +&80041701011717010101802B17010117170101018004170101801917010180091701018023170101 +&17170101800D17010117170101800C17018003170101800317010117170101800317010117170101 +&800C1701800317010180031701011717010180031701011717010180171701018009170101802217 +&011717010117170117170101800A170101800E170101803917010117010180051701011717010180 +&0417010180FE1780FE17808A172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004170101 +&8003170101171717010180091701018004170101011717010101800B170101800317010117170101 +&8003170101171717010180061701011717170101800F170101800817010117171780030180131701 +&0180041701011717170101802A17010180031701018020170101802E1701018003170101800B1701 +&018003170101800F17010180031701018003170101171701018003170101800F1701018003170101 +&80031701011717010180031701018016170101802E17011717010117170117170101801B17010180 +&3C17010180041701018003170101800317010180FE1780FE17808A172121800A1720200B0B800309 +&0A0A0A0B0B8003090A0A8003170101800917010180091701018004170101011717010101800B1701 +&0180031701011717010101800717010117170180031701011717170101800F170101800617010101 +&80051780030180101701018005170101800317010117800301170101018004178003011717178003 +&011717800301800A17010101800717800301800317010101170101170101800C1701018007178003 +&0180031701010117010101800517800301800D1701018003170101800B1701018003170101800D17 +&01010180041701018003170101171701018003170101800D17010101800417010180031701011717 +&01018003170101800D17010101800517010180071780030180031701010117010101800517800301 +&800D1701171701011717011717010117010101800417800301800517800301170117171701011780 +&04011701010117010101800517800301800417800501800317800501800F17010180041701018003 +&170101800417010180FE1780FE178089172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&03170101800917010180091701018004178007011717800701171701018003170101171717800301 +&80051780040180031701011717010180031780070180041701018008170101800617800301800E17 +&01018005170101800317010117171701010117170101171717010117170101171717010180031701 +&01171780070117171780030180071701018004178007011717800701171717010180091701018004 +&1701010117170101800317010117170101800C1701018003170101800B1701018003170101800F17 +&010180031701018003170101171701018003170101800F1701018003170101800317010117170101 +&8003170101800D170101018005170101800917010180041701010117170101800317010117170101 +&17171780070180041701018004170101011717010180051701018004170101171701010117171701 +&01171701018003170101011717010180031701011717010117171701011717170101171717010117 +&17170101800F17010180041701018003170101800417010180FE1780FE178089172121800A172020 +&0B0B8003090A0A0A0B0B8003090A0A80031701018009170101800917010180041701011701011701 +&01171780070117170101800317010180041780030180031701011717018003178004018004178007 +&0180041701018009170101800717010101800D170101800517010180031701011717170101800B17 +&01011717170101170101170101171780070180041780030180051701018004170101170101170101 +&1717800701171717010180091701018004170101171717010117171701018003170101800B170101 +&8003170101800B170101800317010180101701011717170101800317010117170101800317010180 +&10170101171717010180031701011717010180031701018016170101800917010180041701011717 +&17010117171701018003170101171780070180041701018004170101171717010180051701018003 +&17010180031701011717170101170101800417010117171701011717170101800317010117170101 +&01800617010101801317010180041701018003170101800417010180FE1780FE178089172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101171717010180041701018004 +&170101170101170101800B1701018003170101800617010101171717010180061701011717010180 +&101701018009170101800517800301800E1701018005170101800317010117171701018007178005 +&0180031701170101170180111701010180041701018004170101170101170101800C170101171717 +&0101800417010180041701011717170101171717800701800B1701018003170101800B1701018003 +&17010180101701011717170101800317010117170101800317010180101701011717170101800317 +&01011717010180031701018016170101171717010180041701018004170101171717010117171780 +&0701800E170101800417010117171701018005170101800317010180081780030180051701011717 +&17010117171780070117171780040180041780040180101701018004170101800317010180041701 +&0180FE1780FE178089172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004170101800317 +&010117171701011717170101800417010180041701018003170101800B1701018003170101171701 +&01800317010117171701011717170101171701011717170101800F17010180041701800317010180 +&03178003018010170101800517010117171701018003170101800617010117171701018003178005 +&01800C170101800317010180041701018004170101170101170101800C1701011717170101800417 +&0101800417010117171701011717170101801217010117170101800D17010117170101800C170180 +&03170101800317010117170101800317010117170101800C17018003170101800317010117170101 +&80031701011717010180171701011717170101800417010180041701011717170101171717010180 +&14170101800417010117171701018005170101800317010180081701011701018004170101171717 +&01011717170101800B17010101800617010101800F170101800517010117170101800517010180FE +&1780FE178089172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004170101011717010101 +&17171701011717170101800417010180041701018003170101800C17010117170101171717010101 +&1717010180031701011717170101171701011717170101800F170101800417010117170101171717 +&80030180131701018004170101171701010180031701018006170101171717010180031701011717 +&0101800C170101011717010180051701018004170101170101170101800C17010117171701018004 +&1701018004170101171717010180031701011717170101800C17010117170101800D170101171701 +&01800C17010117170101800417010117170101800317010117170101800C17010117170101800417 +&010117170101800317010117170101800E1701010180051701011717170101800417010180041701 +&01171717010180031701011717170101800E17010180041701011717170101800517010180041701 +&01171717010117171701011717010180031701011717170101800317010117171701011717010117 +&1717010117171701011717170101800F170101800517010117170101800417010180FE1780FE1780 +&8A172121800A1720200B0B8003090A0A0A0B0B8003090A0A80061780030117171780080117178007 +&01178003011717800301800C1780030180031701178003018003178007011780040117010101800B +&17800701171717800301800317010180151701018003178005018003178006018004178003011701 +&01171717010117170101800C17011780030180031780070117010101170101170101018009178008 +&0117178007011780030117800301800317800401800E17800301800F17800301800E178003018006 +&17800301800517800301800E17800301800617800301800517800301800F17010101800317800801 +&17178007011780030117800301800317800401800D17800501171780030117800301171780070117 +&17178004011717170101011780040117800301178003018003178004011717178005018003178005 +&01800D17800701800317800301800517010180FE1780FE17808A172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A809317010180FE1780BF17010180FE1780FE17808A172121800A1720200B0B +&8003090A0A0A0B0B8003090A0A809417010180FE1780BD17010180FE1780FE17808B172121800A17 +&20200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B +&0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A806B1701018009170101801A170101808617800301801D170101800417 +&8003018005178003018012170101800417800301800517800301800F170101018006178003018004 +&17010180FE1780FE1780FE178040172121800A1720200B0B8003090A0A0A0B0B8003090A0A800617 +&80030117011780050180041780070117010101800317010101800917800301171780030117171780 +&03011701171780070117800501800F178003018008170101018019170101800317800501802E1780 +&030117018004170101801A1780030117018004170101801B170101801C1701010180031701011717 +&0101800317010117170101801017010101800317010117170101800317010117170101800D170101 +&170101800417010117170101800417010180FE1780FE1780FE17803F172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A8004170101011717010101171717010180091701018004170101800317 +&0101800B170101800317010117171701011717010101171717010117171701011717010117170101 +&800D17010117010180071780030117170101801517010180041701011717010101802B1701011717 +&010101800417010180181701010117170101018004170101801B170101801B178003018003170101 +&17170101800317010117170101800F17800301800317010117170101800317010117170101800C17 +&01011717170101800317010117170101800417010180FE1780FE1780FE17803F172121800A172020 +&0B0B8003090A0A0A0B0B8003090A0A80041701018003170101171717010180091701018004170101 +&011717010101800B1701018003170101171701018003170101171717010180061701011717170101 +&800F17010180061701011701011717800301801317010180041701011717170101802A1701018003 +&170101801F17010180031701018022170101801A1701011701011717170101800317010117170101 +&8003170101800D17010117010117171701018003170101171701018003170101800C170117171701 +&80031701018003170101800317010180FE1780FE1780FE17803F172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A8003170101800917010180091701018004170101011717010101800B170101 +&80031701011717010101800717010117170180031701011717170101800F17010180051701011717 +&01018003178003018010170101800517010180031701011780030117010101800417800301171717 +&8003011717800301800A17010101800717800301800317010101170101170101800A170101800917 +&8003018003178003011701010180031780030117018005170101800617800301800E170101171701 +&0117171701018003170101171701018003170101800C170101171701011717170101800317010117 +&1701018003170101800D1701010180041701018003170101800417010180FE1780FE1780FE17803E +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917010180091701018004 +&17800701171780070117170101800317010117171780030180051780040180031701011717010180 +&03178007018004170101800517011717170101800517800301800E17010180051701018003170101 +&17171701010117170101171717010117170101171717010180031701011717800701171717800301 +&80071701018004178007011717800701170101800B17010180051701010117170101171701011717 +&0101018005170101800517010117170101800D170117171701011717170101800317010117170101 +&8003170101800C1701171717010117171701018003170101171701018003170101800C1701011701 +&0180031701018003170101800417010180FE1780FE1780FE17803E172121800A1720200B0B800309 +&0A0A0A0B0B8003090A0A800317010180091701018009170101800417010117010117010117178007 +&01171701018003170101800417800301800317010117170180031780040180041780070180041701 +&0180041701011717170101800717010101800D170101800517010180031701011717170101800B17 +&01011717170101170101170101171780070180041780030180051701018004170101170101170101 +&1717800701170101800B170101800517010180051701018003170101800517010180041701018003 +&170101800B170101171717010117171701018003170101171701018003170101800B170101171717 +&010117171701018003170101171701018003170101800B1701011717170101171717010180031701 +&01800417010180FE1780FE1780FE17803E172121800A1720200B0B8003090A0A0A0B0B8003090A0A +&80031701018009170101171717010180041701018004170101170101170101800B17010180031701 +&0180061701010117171701018006170101171701018010170101800417800701800417800301800E +&17010180051701018003170101171717010180071780050180031701170101170180111701010180 +&041701018004170101170101170101800A170101800B17010180051701018005170101800B170101 +&800417800701800B17800701171701018003170101171701018003170101800B1780070117170101 +&8003170101171701018003170101800B170101171717010117171701018003170101800417010180 +&FE1780FE1780FE17803E172121800A1720200B0B8003090A0A0A0B0B8003090A0A80041701018003 +&17010117171701011717170101800417010180041701018003170101800B17010180031701011717 +&0101800317010117171701011717170101171701011717170101800F170101800917010180031780 +&0301801017010180051701011717170101800317010180061701011717170101800317800501800C +&170101800317010180041701018004170101170101170101800B1701018003170101800417010180 +&051701018005170101800B1701018004170101801617010180031701011717010180031701011717 +&01018011170101800317010117170101800317010117170101800C17010117171701018003170101 +&17170101800517010180FE1780FE1780FE17803E172121800A1720200B0B8003090A0A0A0B0B8003 +&090A0A80041701010117170101011717170101171717010180041701018004170101800317010180 +&0C170101171701011717170101011717010180031701011717170101171701011717170101800F17 +&01018009170101171780030180131701018004170101171701010180031701018006170101171717 +&0101800317010117170101800C170101011717010180051701018004170101170101170101800B17 +&01010117170101018004170101800517010180061701011717170101800517010180051701011717 +&17010180101701018003170101171701018003170101171701018011170101800317010117170101 +&800317010117170101800D170101170101800417010117170101800417010180FE1780FE1780FE17 +&803F172121800A1720200B0B8003090A0A0A0B0B8003090A0A800617800301171717800801171780 +&0701178003011717800301800C178003018003170117800301800317800701178004011701010180 +&0B178007018004178004011701018015170101800317800501800317800601800417800301170101 +&171717010117170101800C1701178003018003178007011701010117010117010101800C17800301 +&80031780070117800601800417800401800317800701800317800401800F17800401800317800301 +&800517800301801017800401800317800301800517800301800F1701010180061780030180051701 +&0180FE1780FE1780FE17803F172121800A1720200B0B8003090A0A0A0B0B8003090A0A8093170101 +&80FE17800B17010180FE1780FE1780FE17803F172121800A1720200B0B8003090A0A0A0B0B800309 +&0A0A809417010180FE17800917010180FE1780FE1780FE178040172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B +&0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003 +&090A0A806B170101800417800601801A170101808617800301801B17800301800417800301800517 +&8003018012170101800417800301800517800301800F17010101800617800301802C178003018005 +&17800301801217010101804917800301803517010101801A17010101803B17010101800517010180 +&FE1780FE178009172121800A1720200B0B8003090A0A0A0B0B8003090A0A80061780030117011780 +&05018004178007011701010180031701010180091780030117178003011717178003011701171780 +&070117800501800F178003018004170101801E170101800317800501802E17800301170180041701 +&01801A1780030117018004170101801B170101801917010101800617010117170101800317010117 +&170101801017010101800317010117170101800317010117170101800D1701011701018004170101 +&171701018016178007018004170101800717010180071701018013170101800317800401800C1780 +&0301178004011780070117800501801B1701018007170101802C170101800A170101800E17010180 +&3A170101170101800517010180FE1780FE178008172121800A1720200B0B8003090A0A0A0B0B8003 +&090A0A80041701010117170101011717170101800917010180041701018003170101800B17010180 +&0317010117171701011717010101171717010117171701011717010117170101800D170101170101 +&80041701018006170101801517010180041701011717010101802B17010117170101018004170101 +&80181701010117170101018004170101801B17010180191701018007170101171701018003170101 +&17170101800F17800301800317010117170101800317010117170101800C17010117171701018003 +&17010117170101801717010117171701018004170101800717010180071701018013170101171717 +&01011717170101800C17010101171717010180041701018005170101801D17010180071701018023 +&1701018006170101800A170101800E17010180391701011717170101800417010180FE1780FE1780 +&08172121800A1720200B0B8003090A0A0A0B0B8003090A0A80041701018003170101171717010180 +&091701018004170101011717010101800B1701018003170101171701018003170101171717010180 +&061701011717170101800F1701018004170101800617800301801317010180041701011717170101 +&802A1701018003170101801F17010180031701018022170101801817010180071701018003170101 +&171701018003170101800D17010117010117171701018003170101171701018003170101800C1701 +&17171701800317010180031701018016170101801317010180071701018013170101171717010117 +&17170101800C178003011717010180041701018005170101801D170101802D170101800617010180 +&1B170101803A170117171701800517010180FE1780FE178008172121800A1720200B0B8003090A0A +&0A0B0B8003090A0A8003170101800917010180091701018004170101011717010101800B17010180 +&031701011717010101800717010117170180031701011717170101800F1701018004178005018004 +&17800301801017010180051701018003170101178003011701010180041780030117171780030117 +&17800301800A17010101800717800301800317010101170101170101800A17010180091780030180 +&03178003011701010180031780030117018005170101800617800301800D17010117010101800317 +&01018003170101171701018003170101800C17010117170101171717010180031701011717010180 +&03170101800D1701010180041701018003170101800D170101018005170101171701800417800301 +&800717010180071701018006178003018004170101011701018007170101800C1701011701171701 +&01800417010180051701018012170101018007170101800517800301800317010101170101018005 +&17800301800C17800701171717010117010101800417800301800517800301170117171701011780 +&04011701010117010101800517800301800417800501800317800501800E17010101800717010180 +&FE1780FE178007172121800A1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101 +&80091701018004178007011717800701171701018003170101171717800301800517800401800317 +&010117170101800317800701800417010180041701011717170101800517800301800E1701018005 +&17010180031701011717170101011717010117171701011717010117171701018003170101171780 +&070117171780030180071701018004178007011717800701170101800B1701018005170101011717 +&01011717010117170101018005170101800517010117170101800C17010101171701011717170101 +&8003170101171701018003170101800C170117171701011717170101800317010117170101800317 +&0101800C17010117010180031701018003170101800D170101018005178004018006170101800717 +&0101800717010180051701011717010117171701011717010101800517010101800D170101170101 +&17010180041701018005170101801217010101800717010180071701018004170101011717010180 +&03170101171701011717178007011717170101800617010101171701018005170101800417010117 +&17010101171717010117170101800317010101171701018003170101171701011717170101171717 +&010117171701011717170101800D170101170101800617010180FE1780FE178007172121800A1720 +&200B0B8003090A0A0A0B0B8003090A0A800317010180091701018009170101800417010117010117 +&01011717800701171701018003170101800417800301800317010117170180031780040180041780 +&070180041701018009170101800717010101800D170101800517010180031701011717170101800B +&17010117171701011701011701011717800701800417800301800517010180041701011701011701 +&011717800701170101800B1701018005170101800517010180031701018005170101800417010180 +&03170101800B1701018003170101171701018003170101171701018003170101800B170101171717 +&010117171701018003170101171701018003170101800B1701011717170101171717010180031701 +&01801617010117170180061701018007170101800717010180041701018003170101170101800317 +&01018004170101800F17010117010117010180041701018005170101801D17010180071701018004 +&17010117171701011717170101800317010117178007011717170101800617010117171701018005 +&17010180031701018003170101171717010117010180041701011717170101171717010180031701 +&01171701010180061701010180101701011717170101800517010180FE1780FE178007172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101171717010180041701018004 +&170101170101170101800B1701018003170101800617010101171717010180061701011717010180 +&101701018009170101800517800301800E1701018005170101800317010117171701018007178005 +&0180031701170101170180111701010180041701018004170101170101170101800A170101800B17 +&010180051701018005170101800B170101800417800701800B170101800317010117170101800317 +&0101171701018003170101800B17800701171701018003170101171701018003170101800B170101 +&17171701011717170101800317010180161701018009170101800717010180071701018004178007 +&0117010180031701018004170101800F170101171701170101800417010180051701011717170101 +&8018170101800717010180041701011717170101171717800701800C170101800617010117171701 +&01800517010180031701018008178003018005170101171717010117171780070117171780040180 +&0417800401800D1701011717170101800517010180FE1780FE178007172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A8004170101800317010117171701011717170101800417010180041701 +&018003170101800B1701018003170101171701018003170101171717010117171701011717010117 +&17170101800F17010180091701018003178003018010170101800517010117171701018003170101 +&80061701011717170101800317800501800C17010180031701018004170101800417010117010117 +&0101800B1701018003170101800417010180051701018005170101800B1701018004170101801117 +&01018003170101171717010117170101800317010117170101801117010180031701011717010180 +&0317010117170101800C170101171717010180031701011717010180171701018009170101800717 +&01018007170101800417010180061701018003170101801617010117178003018004170101800517 +&01011717170101801817010180071701018004170101171717010117171701018012170101800617 +&01011717170101800517010180031701018008170101170101800417010117171701011717170101 +&800B17010101800617010101800C1701011717170101800517010180FE1780FE178007172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80041701010117170101011717170101171717010180 +&0417010180041701018003170101800C170101171701011717170101011717010180031701011717 +&170101171701011717170101800F1701018004170101171701011717178003018013170101800417 +&01011717010101800317010180061701011717170101800317010117170101800C17010101171701 +&0180051701018004170101170101170101800B170101011717010101800417010180051701018006 +&1701011717170101800517010180051701011717170101800C170101171701018003170101171701 +&018003170101171701018011170101800317010117170101800317010117170101800D1701011701 +&01800417010117170101800E17010101800517010180091701018007170101800717010180051701 +&0117171701011717010117170101018004170101800F170101171717010101800417010180051701 +&011717170101800D1701010180071701018007170101800417010117171701018003170101171717 +&0101800C170101171717010117170101171717010180051701018004170101171717010117171701 +&01171701018003170101171717010180031701011717170101171701011717170101171717010117 +&17170101800D170101170101800517010180FE1780FE178008172121800A1720200B0B8003090A0A +&0A0B0B8003090A0A8006178003011717178008011717800701178003011717800301800C17800301 +&80031701178003018003178007011780040117010101800B17800701171780040180031701018015 +&170101800317800501800317800601800417800301170101171717010117170101800C1701178003 +&018003178007011701010117010117010101800C1780030180031780070117800601800417800401 +&800317800701800317800401800E1780030180051780030180051780030180101780040180031780 +&0301800517800301800F17010101800617800301800F170101018004178004018004178007011717 +&8007011717800701800317800401800317010101170101018003170101800E178004011701010117 +&1780070117800801800D170101018004178007011717800701178003011780030180031780040180 +&0E178004011717800301178003011717800701171717800401171717010101178004011780030117 +&800301800317800401171717800501800317800501800F17010101800617010180FE1780FE178008 +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A809317010180FE1780FE17804217010180 +&FE1780FE178008172121800A1720200B0B8003090A0A0A0B0B8003090A0A809417010180FE1780FE +&17804017010180FE1780FE178009172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE17 +&80FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A806B17010180071780 +&0301801A17010180A417800301801D17010180041780030180051780030180101701018006178003 +&01800517800301801217010117171780060180041780030180101701018005178003018006178003 +&01800417010180FE1780FE1780EF172121800A1720200B0B8003090A0A0A0B0B8003090A0A800617 +&80030117011780050180041780070117010101800317010101800917800301171780030117171780 +&03011701171780070117800501800F17800301800517010101801C170101800317800501802E1780 +&0301170180041701018017178005018043170101801C170101018003170101171701018003170101 +&17170101800D17800301800517010117170101800317010117170101801017010101171717010180 +&0817010117170101800D17800301800417010117170101800417010117170101800417010180FE17 +&80FE1780EE172121800A1720200B0B8003090A0A0A0B0B8003090A0A800417010101171701010117 +&17170101800917010180041701018003170101800B17010180031701011717170101171701010117 +&1717010117171701011717010117170101800D170101170101800517010180051701018015170101 +&80041701011717010101802B17010117170101018004170101801817010117170101801817010180 +&27170101801B17800301800317010117170101800317010117170101800C17010117010180051701 +&0117170101800317010117170101800F178003011717170101800817010117170101800C17010117 +&0101800417018003170101800317010117170101800417010180FE1780FE1780EE172121800A1720 +&200B0B8003090A0A0A0B0B8003090A0A800417010180031701011717170101800917010180041701 +&01011717010101800B17010180031701011717010180031701011717170101800617010117171701 +&01800F1701018004170101800617800301801317010180041701011717170101802A170101800317 +&0101801F170101171717010180171701018027170101801A17010117010117171701018003170101 +&171701018003170101800E17010180041701018003170101171701018003170101800D1701011701 +&01171717010180071701018003170101800E17010180091701011717170101800317010180031701 +&0180FE1780FE1780EE172121800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917 +&010180091701018004170101011717010101800B1701018003170101171701010180071701011717 +&0180031701011717170101800F170101800417010117010101800417800301801017010180051701 +&01800317010117800301170101018004178003011717178003011717800301800A17010101800717 +&800301800317010101170101170101800B1701011717170101800417800301800417800301170117 +&17800701800417800301171717010101170101018004170101011701010180041701018006178003 +&01800E1701011717010117171701018003170101171701018003170101800E170101800417010180 +&03170101171701018003170101800C1701011717010117171780050180031701018003170101800E +&170101800917010117171701018003170101800417010180FE1780FE1780ED172121800A1720200B +&0B8003090A0A0A0B0B8003090A0A8003170101800917010180091701018004178007011717800701 +&17170101800317010117171780030180051780040180031701011717010180031780070180041701 +&0180041701010117170101800517800301800E170101800517010180031701011717170101011717 +&01011717170101171701011717170101800317010117178007011717178003018007170101800417 +&80070117178007011717010117170101800417010117170101171717010117170101018003170101 +&80071701011717010117171701010117170101171717010117170101018005170101800517010117 +&170101800D1701171717010117171701018003170101171701018003170101800E17010180041701 +&018003170101171701018003170101800C1701171717010117171701011717170101171717010180 +&03170101800E170101800817010180031701018003170101800417010180FE1780FE1780ED172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917010180091701018004170101 +&17010117010117178007011717010180031701018004178003018003170101171701800317800401 +&800417800701800417010180041701018003170101800617010101800D1701018005170101800317 +&01011717170101800B17010117171701011701011701011717800701800417800301800517010180 +&04170101170101170101171780070117178004018004170101800317010117010180031701018003 +&170101800B1701011717170101171717010117170101800317010180051701018004170101800317 +&0101800B170101171717010117171701018003170101171701018003170101800E17010180041701 +&018003170101171701018003170101800B1701011717170101800717010117171701018003170101 +&800E170101800717010180041701018003170101800417010180FE1780FE1780ED172121800A1720 +&200B0B8003090A0A0A0B0B8003090A0A800317010180091701011717170101800417010180041701 +&01170101170101800B17010180031701018006170101011717170101800617010117170101801017 +&010180041701018003170101800417800301800E1701018005170101800317010117171701018007 +&1780050180031701170101170180111701010180041701018004170101170101170101800B170101 +&17170101800317800701170101800917010180071780050117171701011717170101171701018003 +&1701018005170101800417800701800B17800701171701018003170101171701018003170101800E +&17010180041701018003170101171701018003170101800B17800701800617010117171701018003 +&170101800E170101800617010180051701018003170101800417010180FE1780FE1780ED17212180 +&0A1720200B0B8003090A0A0A0B0B8003090A0A800417010180031701011717170101171717010180 +&0417010180041701018003170101800B170101800317010117170101800317010117171701011717 +&170101171701011717170101800F1701018004170101800317010117171780030180101701018005 +&1701011717170101800317010180061701011717170101800317800501800C170101800317010180 +&041701018004170101170101170101800B1701011717170101171717010180061701018009170101 +&80061701011717170101171717010117171701011717010180031701018005170101800417010180 +&16170101800317010117170101800317010117170101800F17010180051701011717010180031701 +&011717010180111701018007170101800317010117170101800F1701018005170101800717010117 +&170101800517010180FE1780FE1780ED172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&0417010101171701010117171701011717170101800417010180041701018003170101800C170101 +&171701011717170101011717010180031701011717170101171701011717170101800F1701018005 +&17010117170101171780030180131701018004170101171701010180031701018006170101171717 +&0101800317010117170101800C170101011717010180051701018004170101170101170101800B17 +&01011717170101800317010117171701011717010117171701018003170101171717010117170101 +&17171701011717170101171717010117171701011717010101800517010180051701011717170101 +&8010170101800317010117170101800317010117170101800F170101800517010117170101800317 +&0101171701018011170101171717010117170101800417010117170101800F170101800417010117 +&17170101800317010117170101800417010180FE1780FE1780EE172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A8006178003011717178008011717800701178003011717800301800C178003 +&0180031701178003018003178007011780040117010101800B178007018003178003011717170101 +&8015170101800317800501800317800601800417800301170101171717010117170101800C170117 +&80030180031780070117010101170101170101018009178004011701010180031780040180031780 +&04018005178004018003178003011701011780030117800301171717010101170101171717800701 +&800317800401800F17800401800317800301800517800301800D1780070180031780030180051780 +&03018010178004011717800401800617800301800D17800701171780060180041780030180051701 +&0180FE1780FE1780EE172121800A1720200B0B8003090A0A0A0B0B8003090A0A8093170101809F17 +&010180B817010180FE1780FE1780EE172121800A1720200B0B8003090A0A0A0B0B8003090A0A8094 +&170101809E17010180B717010180FE1780FE1780EF172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A80FE1780321780040180FE1780FE1780FE1780AB172121800A1720200B0B8003090A0A0A +&0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A806B170101800417800601801A1701018094170101800417800301800517800301801017 +&01018009170101800417800301800417010180FE1780FE1780FE178072172121800A1720200B0B80 +&03090A0A0A0B0B8003090A0A80061780030117011780050180041780070117010101800317010101 +&80091780030117178003011717178003011701171780070117800501800F17800301800417010117 +&171701018019170101800317800501802E1780030117018004170101801817800701802D17010101 +&800317010117170101800317010117170101800D1780030180081701010180031701011717010180 +&0417010180FE1780FE1780FE178071172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004 +&1701010117170101011717170101800917010180041701018003170101800B170101800317010117 +&171701011717010101171717010117171701011717010117170101800D1701011701018009170101 +&17170101801517010180041701011717010101802B17010117170101018004170101801B17010180 +&2F17800301800317010117170101800317010117170101800C170101170101800717800301800317 +&010117170101800417010180FE1780FE1780FE178071172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A80041701018003170101171717010180091701018004170101011717010101800B1701 +&018003170101171701018003170101171717010180061701011717170101800F1701018008170101 +&171717800301801317010180041701011717170101802A17010180031701018022170101802E1701 +&0117010117171701018003170101171701018003170101800E170101800617010117010117171701 +&018003170101800317010180FE1780FE1780FE178071172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A8003170101800917010180091701018004170101011717010101800B17010180031701 +&011717010101800717010117170180031701011717170101800F1701018008170101800417800301 +&80101701018005170101800317010117800301170101018004178003011717178003011717800301 +&800A17010101800717800301800317010101170101170101800E1701018005178003011701800417 +&80030117171701010117010101800E17010117170101171717010180031701011717010180031701 +&01800E17010180051701011717010117171701018003170101800417010180FE1780FE1780FE1780 +&70172121800A1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101800917010180 +&04178007011717800701171701018003170101171717800301800517800401800317010117170101 +&80031780070180041701018007170101800717800301800E17010180051701018003170101171717 +&01010117170101171717010117170101171717010180031701011717800701171717800301800717 +&01018004178007011717800701800417010180041701011717010101800317010117170101171717 +&01010117170101800D1701171717010117171701018003170101171701018003170101800E170101 +&80051701171717010117171701018003170101800417010180FE1780FE1780FE178070172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101800917010180041701011701 +&01170101171780070117170101800317010180041780030180031701011717018003178004018004 +&1780070180041701018007170101800917010101800D170101800517010180031701011717170101 +&800B1701011717170101170101170101171780070180041780030180051701018004170101170101 +&17010117178007018004170101800317010180031701011717170101800317010117170101171717 +&0101800C170101171717010117171701018003170101171701018003170101800E17010180041701 +&01171717010117171701018003170101800417010180FE1780FE1780FE178070172121800A172020 +&0B0B8003090A0A0A0B0B8003090A0A80031701018009170101171717010180041701018004170101 +&170101170101800B1701018003170101800617010101171717010180061701011717010180101701 +&018007170101800717800301800E1701018005170101800317010117171701018007178005018003 +&1701170101170180111701010180041701018004170101170101170101800E170101800317010180 +&081701018003170101171701011717170101800C1780070117170101800317010117170101800317 +&0101800E170101800417800701171701018003170101800417010180FE1780FE1780FE1780701721 +&21800A1720200B0B8003090A0A0A0B0B8003090A0A80041701018003170101171717010117171701 +&01800417010180041701018003170101800B17010180031701011717010180031701011717170101 +&1717170101171701011717170101800F170101800617010180061780030180101701018005170101 +&1717170101800317010180061701011717170101800317800501800C170101800317010180041701 +&018004170101170101170101800E1701018003170101800817010180031701011717010117171701 +&018011170101800317010117170101800317010117170101800F1701018009170101800317010117 +&170101800517010180FE1780FE1780FE178070172121800A1720200B0B8003090A0A0A0B0B800309 +&0A0A800417010101171701010117171701011717170101800417010180041701018003170101800C +&170101171701011717170101011717010180031701011717170101171701011717170101800F1701 +&01800617010180041780030180131701018004170101171701010180031701018006170101171717 +&0101800317010117170101800C170101011717010180051701018004170101170101170101800E17 +&01018004170101171717010180031701011717010117171701011717170101801117010180031701 +&0117170101800317010117170101800F1701018009170101800317010117170101800417010180FE +&1780FE1780FE178071172121800A1720200B0B8003090A0A0A0B0B8003090A0A8006178003011717 +&178008011717800701178003011717800301800C1780030180031701178003018003178007011780 +&040117010101800B1780070180031701018004170101801517010180031780050180031780060180 +&0417800301170101171717010117170101800C170117800301800317800701170101011701011701 +&0101800A1780070117171780040180051780030117171780030117800301800E1780040180031780 +&0301800517800301800D17800701800417800401800317800301800517010180FE1780FE1780FE17 +&8071172121800A1720200B0B8003090A0A0A0B0B8003090A0A809317010180D817010180FE1780FE +&1780FE178071172121800A1720200B0B8003090A0A0A0B0B8003090A0A809417010180D617010180 +&FE1780FE1780FE178072172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780 +&FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780 +&FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A806B170101800617010101801C +&170101809017010117170101802D1780030680041706060680061706060680111706068005170101 +&17170101801117010180071701018004178003018010170101800917010180041780030180041701 +&0180FE1780FE1780F9172121800A1720200B0B8003090A0A0A0B0B8003090A0A8006178003011701 +&17800501800417800701170101018003170101018009178003011717800301171717800301170117 +&1780070117800501800F178003018005170101170101801A170101800317800501802E1780030117 +&018004170101801817800701802A1701011717010180041780030617068003178003061706178003 +&0617800406800B1706060680061706061706068004170606170606800E1780030680051701011717 +&0101801017010101800617010101800317010117170101800D178003018008170101018003170101 +&17170101800417010180FE1780FE1780F8172121800A1720200B0B8003090A0A0A0B0B8003090A0A +&80041701010117170101011717170101800917010180041701018003170101800B17010180031701 +&0117171701011717010101171717010117171701011717010117170101800D170101170101800417 +&0101171717010117170101801517010180041701011717010101802B170101171701010180041701 +&01801817011717010117170180161701018011170101171701018003170606171706060617171706 +&06171706060617170606061717170606800C17060680061706061717170606171717060617171706 +&06800C170606170606800517010117170101800F1780030180051780030180031701011717010180 +&0C170101170101800717800301800317010117170101800417010180FE1780FE1780F8172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80041701018003170101171717010180091701018004 +&170101011717010101800B1701018003170101171701018003170101171717010180061701011717 +&170101800F1701018005170117171701171717800301801317010180041701011717170101802A17 +&01018003170101801F17011717010117170180161701018011170101171701011717170606800317 +&0606171706068003170606171780030617170606800B170606800817061717170680041706171717 +&068010170606800517010117170101800E1701011701018004170101170101171717010180031701 +&01800E170101800617010117010117171701018003170101800317010180FE1780FE1780F8172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A8003170101800917010180091701018004170101 +&011717010101800B1701018003170101171701010180071701011717018003170101171717010180 +&0F170101800617010101800517800301801017010180051701018003170101178003011701010180 +&04178003011717178003011717800301800A17010101800717800301800317010101170101170101 +&800B170117170101171701800317800301800317010101171701010117800701800D170101171701 +&011717170606068006170606068006170606170617170606800B1706061706060680051706060680 +&06170606068011170606800517010117170101800D17010117170101800317010117170101171717 +&01018003170101800E17010180051701011717010117171701018003170101800417010180FE1780 +&FE1780F7172121800A1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101800917 +&01018004178007011717800701171701018003170101171717800301800517800401800317010117 +&17010180031780070180041701018005170101170101800617800301800E17010180051701018003 +&17010117171701010117170101171717010117170101171717010180031701011717800701171717 +&80030180071701018004178007011717800701800417010180051701011717010180031701011717 +&01018003170101801B17800306800517800306800417060617060617060617178007061717060606 +&17170606800317060617060680041706061706068003178007068004170606801917011717170101 +&80031701171717010117171701018003170101800E17010180051701171717010117171701018003 +&170101800417010180FE1780FE1780F7172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&03170101800917010180091701018004170101170101170101171780070117170101800317010180 +&04178003018003170101171701800317800401800417800701800417010180041701011717170101 +&800717010101800D170101800517010180031701011717170101800B170101171717010117010117 +&01011717800701800417800301800517010180041701011701011701011717800701800417010180 +&0417010180031701018003178003018004170101801D178003068005178003061717170606170606 +&17060617178007061717060680031706061717060617171706061717170606171717060617171780 +&07068004170606801817010117171701011717170101171717010117171701018003170101800E17 +&01018004170101171717010117171701018003170101800417010180FE1780FE1780F7172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80031701018009170101171717010180041701018004 +&170101170101170101800B1701018003170101800617010101171717010180061701011717010180 +&1017010180041701011717170101800517800301800E170101800517010180031701011717170101 +&80071780050180031701170101170180111701010180041701018004170101170101170101800E17 +&010180041780070180041701018005170101801F1706060680061706060617170606171706170606 +&800B170606800317060617170606171717060617171706061717170606800F170606801817800701 +&1717800701171701018003170101800E170101800417800701171701018003170101800417010180 +&FE1780FE1780F7172121800A1720200B0B8003090A0A0A0B0B8003090A0A80041701018003170101 +&17171701011717170101800417010180041701018003170101800B17010180031701011717010180 +&0317010117171701011717170101171701011717170101800F170101800417010117171701018003 +&17800301801017010180051701011717170101800317010180061701011717170101800317800501 +&800C170101800317010180041701018004170101170101170101800E170101800417010180091780 +&03018004170101801A1706068003170606171706068003170606171706061717800306800B170606 +&800317060617170606171717060617171706061717170606800F170606801D170101800717010180 +&0317010117170101800F1701018009170101800317010117170101800517010180FE1780FE1780F7 +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A8004170101011717010101171717010117 +&17170101800417010180041701018003170101800C17010117170101171717010101171701018003 +&1701011717170101171701011717170101800F170101800517010117010117171780030180131701 +&0180041701011717010101800317010180061701011717170101800317010117170101800C170101 +&011717010180051701018004170101170101170101800E1701018005170101171717010117171701 +&01171701018003170101171717010180151706060617170606171717060606171706061717170606 +&171717060606800C17060617170606800317060617060680041706061706068010170606801D1701 +&018007170101800317010117170101800F1701018009170101800317010117170101800417010180 +&FE1780FE1780F8172121800A1720200B0B8003090A0A0A0B0B8003090A0A80061780030117171780 +&08011717800701178003011717800301800C17800301800317011780030180031780070117800401 +&17010101800B17800701800317010101800317010180151701018003178005018003178006018004 +&17800301170101171717010117170101800C17011780030180031780070117010101170101170101 +&01800B17800501800417800401171717010101171701010180031780040180161706178003068003 +&17061780030617171780040617060606800D17800306800517060606800617060606800E17800706 +&801817800401800417800401800317800301800D1780070180041780040180031780030180051701 +&0180FE1780FE1780F8172121800A1720200B0B8003090A0A0A0B0B8003090A0A809317010180FE17 +&805117010180FE1780FE1780F8172121800A1720200B0B8003090A0A0A0B0B8003090A0A80941701 +&0180FE17804F17010180FE1780FE1780F9172121800A1720200B0B8003090A0A0A0B0B8003090A0A +&80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE17 +&80FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE17 +&80FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE17 +&80E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317 +&2121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317212180 +&0A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720 +&200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B +&8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B800309 +&0A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A +&0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A +&0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE +&1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE +&1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE +&1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE +&1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3 +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A17 +&20200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B +&0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B800309 +&0A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780 +&FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780 +&FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780 +&FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780 +&E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E31721 +&21800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A172020 +&0B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B80 +&03090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B +&0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003 +&090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A +&80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE17 +&80FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE17 +&80FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE17 +&80E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317 +&2121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317212180 +&0A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720 +&200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B +&8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B800309 +&0A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A +&0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A +&0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE +&1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE +&1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE +&1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE +&1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3 +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A17 +&20200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B +&0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B800309 +&0A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780 +&FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780 +&FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780 +&FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780 +&E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E31721 +&21800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A172020 +&0B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B80 +&03090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A +&0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B +&0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003 +&090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A +&80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE17 +&80FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE17 +&80FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE17 +&80E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317 +&2121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317212180 +&0A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720 +&200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B +&8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B800309 +&0A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A +&0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B80 +&03090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A +&0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE +&1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE +&1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE +&1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE +&1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3 +&172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121 +&800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A17 +&20200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B +&0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003 +&090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B +&8003090A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B800309 +&0A0A80FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80 +&FE1780FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780 +&FE1780FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780 +&FE1780FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780 +&FE1780E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780 +&E3172121800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E31721 +&21800A1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A +&1720200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800A172020 +&0B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121800C200B0B800309 +&0A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E31721218009202120200B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A +&0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B800309 +&0A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003 +&090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B80 +&03090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B +&8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B +&0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F21212020 +&0B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120 +&200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F2121 +&20200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F21 +&2120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F +&212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317212120208006 +&1F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080 +&061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E31721212020 +&80061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317212120 +&2080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121 +&202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E31721 +&21202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317 +&2121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3 +&172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780 +&E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE17 +&80E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE +&1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780 +&FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE17 +&80FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE +&1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780 +&FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE17 +&80FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780FE +&1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE1780 +&FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80FE +&1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A80 +&FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A0A +&80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003090A +&0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B800309 +&0A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B8003 +&090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B80 +&03090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B0B +&8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A0B +&0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A0A +&0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003090A +&0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B800309 +&0A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B8003 +&090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B80 +&03090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B0B +&8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E3172121202080061F212120200B +&0B8003090A0A0A0B0B8003090A0A80031780FE0780FE0780FE0780FE0780DB078003172121202080 +&061F212120200B0B8003090A0A0A0B0B8003090A0A80031780190700008008070000806007000080 +&0507800400801E070000800A07000000800507000080970700008008070000801207800300800607 +&800300802707800300801107800300800607800300802A0700008067070000803207000000804407 +&000000800E070000804207000000800507800300803107000080FE07804E07800317212120208006 +&1F212120200B0B8003090A0A0A0B0B8003090A0A80031780190700008008070000800F0780090080 +&46070000800507800400801E070000800A0700000080050700008094078004008005078004008011 +&07800500800407800500802507800500800F07800500800407800500802907000080030780070007 +&0780050080050780070080040780030007000007800700800D078009008018070000801107800500 +&801A07000000804407000000800E0700008032078005008008078003008004078005008018078006 +&00801007000080FE07804E078003172121202080082120200B0B8003090A0A0A0B0B8003090A0A80 +&0317801607800700070707800700800C078009008043078007008005070000802C07000007070780 +&07008091078004008005078004008011070000070700008004070000070700008025070000070700 +&00800F07000007070000800407000007070000802807000080040780070007078005008005078007 +&0007070780080007800800800C078009008018070000801107800500801B0700008045070000800F +&07000080310780050080070780040080030700008003070000801707800700800F07000080FE0780 +&4E0780031721212080092120200B0B8003090A0A0A0B0B8003090A0A800317801607800700070707 +&800700800E0700008003078004000700000700000080030780050080040780030007000080030780 +&06008018078007008005070000800407000000070780030080030780030007000007070780040080 +&06078003000700000707078007008094070000800807000080100700008003070000800707000080 +&0407800500070700000007000007000000800D0700008003070000800D0700008003070000070707 +&00008003070000802707000080070700008006070000800A07000080050700008003070000000707 +&0000800307000000800D070000800307000080030780030080030700000007800300070707800700 +&800F0700008009078003008005078003000700000707070000070780030080170780030007070000 +&00800407800300800507800500800407800300070000070780030007078003008003070000803307 +&00008009070000070000800307000080030700008019070000070707000080040780030080030780 +&070080FE07804A078003172121800A1720200B0B8003090A0A0A0B0B8003090A0A80031780190700 +&008008070000801107000007000007800C0007078007000707078007000707078007008005070000 +&80130700008008070000800407000000070780030007070780070007070780040080050780070080 +&05070000809707000080080700008008070000800507000080030700008006070000008003078007 +&0007800A00800C0700008003070000800D0700008003070000070707000080030700008026070000 +&80080700008006070000800A07000080050700008004070000070700008004070000800D07000007 +&0000070000070780070007078008000707800700800F070000800707800700070707800700070707 +&00000707800300801007000080040780090007078007000707078007000707078007000707800300 +&07078003008004070000803207000080080700000707000080030700008003070000801907000007 +&07070000070707800700070780070080FE07804A078003172121800C200B0B8003090A0A0A0B0B80 +&03090A0A800317801707800500800407800500800F07800400800307000000070000000700000707 +&00008003070000070700000007070700000007070700008003070000800507000080110780050080 +&06070000800507000080030700000707000000070707000000800507000080040700000007070700 +&00008003078005008095070000800807000080080700008005070000800307000080040780030080 +&040700008003070000070700000007000000070000800C0700008003070000800D07000080030700 +&0007070700008003070000802607000080080700008006070000800A070000800507800400800507 +&0000800307000000800D078004008003070000008003070000000707000000070707000080030700 +&00801307000080060700000080030700000007000000070707000000070707000007000000801207 +&00008006078003000707000007000000800307000000070700008003070000070700000007070700 +&00000707070000800307000080050700008032070000800807000007070000800307000007070700 +&0000801907800500070707000000800307000000070707000080FE07804E07800317212180082021 +&2120200B0B8003090A0A0A0B0B8003090A0A80031780090007800900070700000007070000000707 +&07000000070700000007078009000707078004008003070000070700000707000080070700000707 +&00008004070000070707800300801C07000000070700000080050700008005070000800307000007 +&07000080040700008005070000800407000080040700000707070000000707000000809407000080 +&08070000801007000080030700008004078004008009070000070700000707000007070000800C07 +&00008003070000800D07000080030700000707070000800307000080260700008008070000800607 +&0000800A070000800607800600070707800700800E07800400800307000080050700000707000080 +&03070000800307000080060780090007070700008006070000800507000007000080040700000707 +&07800400801C07000000800507000080050700008007070000070700008004070000070707000080 +&03070000800507000080040780090007800900078009000780090007070700008007070000070707 +&00008004078006000707800900078009000707078006000707000080050700000707070000800607 +&80090007800900078009000780090007800900078009000780090007800900078009000780090007 +&80090007800900078009000780090007800900078009000780090007800900078009000780090007 +&80090007800900078009000780090007800900078009000780090007800900078009008008078003 +&17212117202080041F21211720200B0B8003090A0A0A0B0B8003090A0A8003178009000780090007 +&07070080030700800407008003070007070780090007070700000700008003070000070700000707 +&0000070780070007070000800A07800500801A070080030700800607000080050700008003070000 +&07070000800C07000080040700008004070000800307008003070080950700008008070000801007 +&00008003070000800707000000070707800700070700000707000007070000800C07000080030700 +&00800D07000080030700000707070000800307000080260700008008070000800607000080030700 +&0080040700008009078004000707800600800F070000070000800307000080050700000707000080 +&03070000800307000080060780090007070700008003070000070000800507000007000080090780 +&0400801C070000800607800900070780070007070000800407000080030700000707000080060700 +&00800407800900078009000780090007800900070707000080030700000707800700800407000000 +&07000007078009000780090007070700008003070000070000800507000007070700008006078009 +&00078009000780090007800900078009000780090007800900078009000780090007800900078009 +&00078009000780090007800900078009000780090007800900078009000780090007800900078009 +&00078009000780090007800900078009000780090007800900078009000780090080080780031721 +&2117202080041F21211720200B0B8003090A0A0A0B0B8003090A0A80031780380700008003070000 +&07000007070000070700000780080007070000800C07800400802607000080050700008003070000 +&07070000800C07000080040700008004070000809F07000080080700008010070000800307000080 +&080700000707800800070700000707000007070000800C0700008003070000800D07000080030700 +&00070707000080030700008026070000800807000080060700008003070000800407000080050700 +&00800407000007070000801407000080060700008005070000070700008003070000800307000080 +&1307000080030700000700008005070000070000800907000007000000801B070000800607800900 +&07800800070700008004070000800307000007070000800607000080320700008003070000070780 +&07008008070000801907000080030700000700008005070000070707000080FE07804E0780031721 +&21171720201F1F1F2121171720200B0B8003090A0A0A0B0B8003090A0A8003178038070000800307 +&00000700000707000007070000070000800407000007070000008003070000000707000080030700 +&00802607000080050700000707070000000707000000800307000000800407000080040700000007 +&0707000000809F070000800807000080110700000707000080030700000707070000000707000080 +&04070000070700000707000007070000800D07000007070000800F07000007070000800407000007 +&07000080270700008008070000800607000080030700008004070000800507000000800307000007 +&07000080140700008006070000008003070000000707000080030700008003070000800307000080 +&0D07000080030700000700000080030700000007000000800307000000070700000707000000801A +&07000080060700000080070700008004070000070700000007070700000080040780030080070700 +&008032070000800307000080060700008008070000801A0700008003070000070000008003070000 +&000707070000800307000080FE078048078003172121171720201F1F1F2121171720200B0B800309 +&0A0A0A0B0B8003090A0A800317803607800D000700000007800C0007078008000707800700800507 +&0000801B0780070007070780080007078008000707800700070707800800809B0780070007070780 +&07008005070000800607800500800307800600070707800D000700000007000000800C0780050080 +&06070000800607800500800407800500802707000080050780070007078009000707800700070707 +&8007000707800500800F0780060080040780070007078003000707800300070707800700800B0780 +&0900070780070007070780080007000000070707800300800F070000800407800700800307800800 +&07800900070780080080030780030080070700008030078009008004078004000707078006008018 +&0780080007070780070080030780070080FE07804807800317212117171720201F21211717172020 +&0B0B8003090A0A0A0B0B8003090A0A800317803607800D0007000000070000000780040007000000 +&0707078005008003078006008006070000801B078007008003078003000700000007070780050080 +&030780070080030780030007000000809B0780070007070780070080050700008007078003008005 +&07800400800407800400078006000700000007000000800D07800300800707000080070780030080 +&06078003008029070000800407800700070780090007078007000707070000078003000707078005 +&00800F078006008006078003008003078003000707800300800307800400800D0780090080030780 +&0300800507800500070707000000070707800300800F070000800407800700800507800600070780 +&04000700000007070780030007000000800407000080070700008031078009008004078004000707 +&07800400801A0780070080050780030080060780040080FE07804A07800317212117171720201F21 +&2117171720200B0B8003090A0A0A0B0B8003090A0A80031780FE0780FE07800B07000080ED070000 +&800807000080FE0780D107800317212180031720212180031720200B0B8003090A0A0A0B0B800309 +&0A0A80031780FE0780FE07800C07000080EB07000000800707000080FE0780D20780031721218003 +&1720212180031720200B0B8003090A0A0A0B0B8003090A0A80031780FE0780FE07800C07000080E9 +&07800500800607000080FE0780D20780031721218004172180041720200B0B8003090A0A0A0B0B80 +&03090A0A80031780FE0780FE0780F80780050080FE0780DB078003172121800C200B0B8003090A0A +&0A0B0B8003090A0A80031780FE0780FE0780FE0780FE0780DB0780031721800D200B0B8003090A0A +&0A0B80060A80FE1780FE1780FE1780FE1780E317800E180B0B80060A80060B0A80FE1780FE1780FE +&1780FE1780E317800E1880060B0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E18 +&0B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A +&0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A +&0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE17 +&80FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780 +&E317800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B +&8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B +&0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80 +&FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE +&1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317 +&800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003 +&090A0A0A0B0B8003090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B80 +&03090A0A80FE1780FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE17 +&80FE1780FE1780FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE1780FE1780FE1780 +&FE1780E317800E180B0B8003090A0A0A0B0B8003090A0A80FE0B80FE0B80FE0B80FE0B80F40B8003 +&090A0A0A0B0B8003090A80FE0B80FE0B80FE0B80FE0B80F50B8003090A0A0A0B0B8016090A0B80FE +&0980FE0980FE0980FE0980CC090A0B8016090A0A0A0B0B8016090A0B80FE0980FE0980FE0980FE09 +&80CC090A0B8016090A0A0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CC090A0B8016090A0A +&0A0B0B8016090A0B80FE0980FE0980FE0980FE0980CC090A0B8016090A0A0A0B0B80170A0B80FE0A +&80FE0A80FE0A80FE0A80CD0A0B80190A0B80FE0A80FE0A80FE0A80FE0A80FE0A80030A\x +=EndInset + + + + + + + > # end of ImportObject + > # end of Frame + + + + + + + + + > # end of DashedPattern + + + + + + + + + + + + + + + + + + > # end of TextRect + + + + + + + > # end of TextRect + + + + + + + + + + > # end of PolyLine + > # end of Frame + + + + + + + + + > # end of DashedPattern + + + + + + + + + + + + + + + + + + > # end of TextRect + + + + + + + > # end of TextRect + + + + + + + + + + > # end of PolyLine + > # end of Frame + + + + + + + + + > # end of DashedPattern + + + + + + + + + + + + + + # end of MathFullForm + + + + + > # end of Math + > # end of Frame +