home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume10 / comobj.lisp / part12 < prev    next >
SHell self-extracting ARchive  |  1987-08-23  |  43.9 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Texas Instruments Calculator Program (executable/tiCalcProgram) magic Unsupported
1% dexvert Text File (text/txt) fallback Supported
100% file news text default
99% file JavaScript source default
98% file Lisp/Scheme program text default
97% file Lisp/Scheme program, ASCII text default
100% checkBytes Printable ASCII default
100% dexmagic PrintFox/Pagefox WEAK default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/news default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 75 75 | 6e 65 74 21 72 73 0a 46 |Path: uu|net!rs.F|
|00000010| 72 6f 6d 3a 20 72 73 40 | 75 75 6e 65 74 2e 55 55 |rom: rs@|uunet.UU|
|00000020| 2e 4e 45 54 20 28 52 69 | 63 68 20 53 61 6c 7a 29 |.NET (Ri|ch Salz)|
|00000030| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|00000040| 70 2e 73 6f 75 72 63 65 | 73 2e 75 6e 69 78 0a 53 |p.source|s.unix.S|
|00000050| 75 62 6a 65 63 74 3a 20 | 76 31 30 69 30 38 36 3a |ubject: |v10i086:|
|00000060| 20 20 43 6f 6d 6d 6f 6e | 20 4f 62 6a 65 63 74 73 | Common| Objects|
|00000070| 2c 20 43 6f 6d 6d 6f 6e | 20 4c 6f 6f 70 73 2c 20 |, Common| Loops, |
|00000080| 43 6f 6d 6d 6f 6e 20 4c | 69 73 70 2c 20 50 61 72 |Common L|isp, Par|
|00000090| 74 31 32 2f 31 33 0a 4d | 65 73 73 61 67 65 2d 49 |t12/13.M|essage-I|
|000000a0| 44 3a 20 3c 37 35 37 40 | 75 75 6e 65 74 2e 55 55 |D: <757@|uunet.UU|
|000000b0| 2e 4e 45 54 3e 0a 44 61 | 74 65 3a 20 33 20 41 75 |.NET>.Da|te: 3 Au|
|000000c0| 67 20 38 37 20 32 31 3a | 31 39 3a 33 32 20 47 4d |g 87 21:|19:32 GM|
|000000d0| 54 0a 4f 72 67 61 6e 69 | 7a 61 74 69 6f 6e 3a 20 |T.Organi|zation: |
|000000e0| 55 55 4e 45 54 20 43 6f | 6d 6d 75 6e 69 63 61 74 |UUNET Co|mmunicat|
|000000f0| 69 6f 6e 73 20 53 65 72 | 76 69 63 65 73 2c 20 41 |ions Ser|vices, A|
|00000100| 72 6c 69 6e 67 74 6f 6e | 2c 20 56 41 0a 4c 69 6e |rlington|, VA.Lin|
|00000110| 65 73 3a 20 31 31 36 34 | 0a 41 70 70 72 6f 76 65 |es: 1164|.Approve|
|00000120| 64 3a 20 72 73 40 75 75 | 6e 65 74 2e 55 55 2e 4e |d: rs@uu|net.UU.N|
|00000130| 45 54 0a 0a 53 75 62 6d | 69 74 74 65 64 2d 62 79 |ET..Subm|itted-by|
|00000140| 3a 20 52 6f 79 20 44 27 | 53 6f 75 7a 61 20 3c 64 |: Roy D'|Souza <d|
|00000150| 73 6f 75 7a 61 25 68 70 | 6c 61 62 73 63 40 68 70 |souza%hp|labsc@hp|
|00000160| 6c 61 62 73 2e 48 50 2e | 43 4f 4d 3e 0a 50 6f 73 |labs.HP.|COM>.Pos|
|00000170| 74 69 6e 67 2d 6e 75 6d | 62 65 72 3a 20 56 6f 6c |ting-num|ber: Vol|
|00000180| 75 6d 65 20 31 30 2c 20 | 49 73 73 75 65 20 38 36 |ume 10, |Issue 86|
|00000190| 0a 41 72 63 68 69 76 65 | 2d 6e 61 6d 65 3a 20 63 |.Archive|-name: c|
|000001a0| 6f 6d 6f 62 6a 2e 6c 69 | 73 70 2f 50 61 72 74 31 |omobj.li|sp/Part1|
|000001b0| 32 0a 0a 23 21 20 2f 62 | 69 6e 2f 73 68 0a 23 20 |2..#! /b|in/sh.# |
|000001c0| 54 68 69 73 20 69 73 20 | 61 20 73 68 65 6c 6c 20 |This is |a shell |
|000001d0| 61 72 63 68 69 76 65 2e | 20 20 52 65 6d 6f 76 65 |archive.| Remove|
|000001e0| 20 61 6e 79 74 68 69 6e | 67 20 62 65 66 6f 72 65 | anythin|g before|
|000001f0| 20 74 68 69 73 20 6c 69 | 6e 65 2c 20 74 68 65 6e | this li|ne, then|
|00000200| 20 75 6e 70 61 63 6b 0a | 23 20 69 74 20 62 79 20 | unpack.|# it by |
|00000210| 73 61 76 69 6e 67 20 69 | 74 20 69 6e 74 6f 20 61 |saving i|t into a|
|00000220| 20 66 69 6c 65 20 61 6e | 64 20 74 79 70 69 6e 67 | file an|d typing|
|00000230| 20 22 73 68 20 66 69 6c | 65 22 2e 20 20 54 6f 20 | "sh fil|e". To |
|00000240| 6f 76 65 72 77 72 69 74 | 65 20 65 78 69 73 74 69 |overwrit|e existi|
|00000250| 6e 67 0a 23 20 66 69 6c | 65 73 2c 20 74 79 70 65 |ng.# fil|es, type|
|00000260| 20 22 73 68 20 66 69 6c | 65 20 2d 63 22 2e 20 20 | "sh fil|e -c". |
|00000270| 59 6f 75 20 63 61 6e 20 | 61 6c 73 6f 20 66 65 65 |You can |also fee|
|00000280| 64 20 74 68 69 73 20 61 | 73 20 73 74 61 6e 64 61 |d this a|s standa|
|00000290| 72 64 20 69 6e 70 75 74 | 20 76 69 61 0a 23 20 75 |rd input| via.# u|
|000002a0| 6e 73 68 61 72 2c 20 6f | 72 20 62 79 20 74 79 70 |nshar, o|r by typ|
|000002b0| 69 6e 67 20 22 73 68 20 | 3c 66 69 6c 65 22 2c 20 |ing "sh |<file", |
|000002c0| 65 2e 67 2e 2e 20 20 49 | 66 20 74 68 69 73 20 61 |e.g.. I|f this a|
|000002d0| 72 63 68 69 76 65 20 69 | 73 20 63 6f 6d 70 6c 65 |rchive i|s comple|
|000002e0| 74 65 2c 20 79 6f 75 0a | 23 20 77 69 6c 6c 20 73 |te, you.|# will s|
|000002f0| 65 65 20 74 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |ee the f|ollowing|
|00000300| 20 6d 65 73 73 61 67 65 | 20 61 74 20 74 68 65 20 | message| at the |
|00000310| 65 6e 64 3a 0a 23 09 09 | 22 45 6e 64 20 6f 66 20 |end:.#..|"End of |
|00000320| 61 72 63 68 69 76 65 20 | 31 32 20 28 6f 66 20 31 |archive |12 (of 1|
|00000330| 33 29 2e 22 0a 23 20 43 | 6f 6e 74 65 6e 74 73 3a |3).".# C|ontents:|
|00000340| 20 20 6d 65 74 68 6f 64 | 73 2e 6c 0a 50 41 54 48 | method|s.l.PATH|
|00000350| 3d 2f 62 69 6e 3a 2f 75 | 73 72 2f 62 69 6e 3a 2f |=/bin:/u|sr/bin:/|
|00000360| 75 73 72 2f 75 63 62 20 | 3b 20 65 78 70 6f 72 74 |usr/ucb |; export|
|00000370| 20 50 41 54 48 0a 69 66 | 20 74 65 73 74 20 2d 66 | PATH.if| test -f|
|00000380| 20 27 6d 65 74 68 6f 64 | 73 2e 6c 27 20 2d 61 20 | 'method|s.l' -a |
|00000390| 22 24 7b 31 7d 22 20 21 | 3d 20 22 2d 63 22 20 3b |"${1}" !|= "-c" ;|
|000003a0| 20 74 68 65 6e 20 0a 20 | 20 65 63 68 6f 20 73 68 | then . | echo sh|
|000003b0| 61 72 3a 20 57 69 6c 6c | 20 6e 6f 74 20 63 6c 6f |ar: Will| not clo|
|000003c0| 62 62 65 72 20 65 78 69 | 73 74 69 6e 67 20 66 69 |bber exi|sting fi|
|000003d0| 6c 65 20 5c 22 27 6d 65 | 74 68 6f 64 73 2e 6c 27 |le \"'me|thods.l'|
|000003e0| 5c 22 0a 65 6c 73 65 0a | 65 63 68 6f 20 73 68 61 |\".else.|echo sha|
|000003f0| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|00000400| 27 6d 65 74 68 6f 64 73 | 2e 6c 27 5c 22 20 5c 28 |'methods|.l'\" \(|
|00000410| 34 32 30 34 36 20 63 68 | 61 72 61 63 74 65 72 73 |42046 ch|aracters|
|00000420| 5c 29 0a 73 65 64 20 22 | 73 2f 5e 58 2f 2f 22 20 |\).sed "|s/^X//" |
|00000430| 3e 27 6d 65 74 68 6f 64 | 73 2e 6c 27 20 3c 3c 27 |>'method|s.l' <<'|
|00000440| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 27 0a 58 3b 3b |END_OF_F|ILE'.X;;|
|00000450| 3b 2d 2a 2d 4d 6f 64 65 | 3a 4c 49 53 50 3b 20 50 |;-*-Mode|:LISP; P|
|00000460| 61 63 6b 61 67 65 3a 20 | 50 43 4c 3b 20 42 61 73 |ackage: |PCL; Bas|
|00000470| 65 3a 31 30 3b 20 53 79 | 6e 74 61 78 3a 43 6f 6d |e:10; Sy|ntax:Com|
|00000480| 6d 6f 6e 2d 6c 69 73 70 | 20 2d 2a 2d 0a 58 3b 3b |mon-lisp| -*-.X;;|
|00000490| 3b 0a 58 3b 3b 3b 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a |;.X;;; *|********|
|000004a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004e0| 0a 58 3b 3b 3b 20 43 6f | 70 79 72 69 67 68 74 20 |.X;;; Co|pyright |
|000004f0| 28 63 29 20 31 39 38 35 | 20 58 65 72 6f 78 20 43 |(c) 1985| Xerox C|
|00000500| 6f 72 70 6f 72 61 74 69 | 6f 6e 2e 20 20 41 6c 6c |orporati|on. All|
|00000510| 20 72 69 67 68 74 73 20 | 72 65 73 65 72 76 65 64 | rights |reserved|
|00000520| 2e 0a 58 3b 3b 3b 0a 58 | 3b 3b 3b 20 55 73 65 20 |..X;;;.X|;;; Use |
|00000530| 61 6e 64 20 63 6f 70 79 | 69 6e 67 20 6f 66 20 74 |and copy|ing of t|
|00000540| 68 69 73 20 73 6f 66 74 | 77 61 72 65 20 61 6e 64 |his soft|ware and|
|00000550| 20 70 72 65 70 61 72 61 | 74 69 6f 6e 20 6f 66 20 | prepara|tion of |
|00000560| 64 65 72 69 76 61 74 69 | 76 65 20 77 6f 72 6b 73 |derivati|ve works|
|00000570| 0a 58 3b 3b 3b 20 62 61 | 73 65 64 20 75 70 6f 6e |.X;;; ba|sed upon|
|00000580| 20 74 68 69 73 20 73 6f | 66 74 77 61 72 65 20 61 | this so|ftware a|
|00000590| 72 65 20 70 65 72 6d 69 | 74 74 65 64 2e 20 20 41 |re permi|tted. A|
|000005a0| 6e 79 20 64 69 73 74 72 | 69 62 75 74 69 6f 6e 20 |ny distr|ibution |
|000005b0| 6f 66 20 74 68 69 73 0a | 58 3b 3b 3b 20 73 6f 66 |of this.|X;;; sof|
|000005c0| 74 77 61 72 65 20 6f 72 | 20 64 65 72 69 76 61 74 |tware or| derivat|
|000005d0| 69 76 65 20 77 6f 72 6b | 73 20 6d 75 73 74 20 63 |ive work|s must c|
|000005e0| 6f 6d 70 6c 79 20 77 69 | 74 68 20 61 6c 6c 20 61 |omply wi|th all a|
|000005f0| 70 70 6c 69 63 61 62 6c | 65 20 55 6e 69 74 65 64 |pplicabl|e United|
|00000600| 0a 58 3b 3b 3b 20 53 74 | 61 74 65 73 20 65 78 70 |.X;;; St|ates exp|
|00000610| 6f 72 74 20 63 6f 6e 74 | 72 6f 6c 20 6c 61 77 73 |ort cont|rol laws|
|00000620| 2e 0a 58 3b 3b 3b 20 0a | 58 3b 3b 3b 20 54 68 69 |..X;;; .|X;;; Thi|
|00000630| 73 20 73 6f 66 74 77 61 | 72 65 20 69 73 20 6d 61 |s softwa|re is ma|
|00000640| 64 65 20 61 76 61 69 6c | 61 62 6c 65 20 41 53 20 |de avail|able AS |
|00000650| 49 53 2c 20 61 6e 64 20 | 58 65 72 6f 78 20 43 6f |IS, and |Xerox Co|
|00000660| 72 70 6f 72 61 74 69 6f | 6e 20 6d 61 6b 65 73 20 |rporatio|n makes |
|00000670| 6e 6f 0a 58 3b 3b 3b 20 | 77 61 72 72 61 6e 74 79 |no.X;;; |warranty|
|00000680| 20 61 62 6f 75 74 20 74 | 68 65 20 73 6f 66 74 77 | about t|he softw|
|00000690| 61 72 65 2c 20 69 74 73 | 20 70 65 72 66 6f 72 6d |are, its| perform|
|000006a0| 61 6e 63 65 20 6f 72 20 | 69 74 73 20 63 6f 6e 66 |ance or |its conf|
|000006b0| 6f 72 6d 69 74 79 20 74 | 6f 20 61 6e 79 0a 58 3b |ormity t|o any.X;|
|000006c0| 3b 3b 20 73 70 65 63 69 | 66 69 63 61 74 69 6f 6e |;; speci|fication|
|000006d0| 2e 0a 58 3b 3b 3b 20 0a | 58 3b 3b 3b 20 41 6e 79 |..X;;; .|X;;; Any|
|000006e0| 20 70 65 72 73 6f 6e 20 | 6f 62 74 61 69 6e 69 6e | person |obtainin|
|000006f0| 67 20 61 20 63 6f 70 79 | 20 6f 66 20 74 68 69 73 |g a copy| of this|
|00000700| 20 73 6f 66 74 77 61 72 | 65 20 69 73 20 72 65 71 | softwar|e is req|
|00000710| 75 65 73 74 65 64 20 74 | 6f 20 73 65 6e 64 20 74 |uested t|o send t|
|00000720| 68 65 69 72 0a 58 3b 3b | 3b 20 6e 61 6d 65 20 61 |heir.X;;|; name a|
|00000730| 6e 64 20 70 6f 73 74 20 | 6f 66 66 69 63 65 20 6f |nd post |office o|
|00000740| 72 20 65 6c 65 63 74 72 | 6f 6e 69 63 20 6d 61 69 |r electr|onic mai|
|00000750| 6c 20 61 64 64 72 65 73 | 73 20 74 6f 3a 0a 58 3b |l addres|s to:.X;|
|00000760| 3b 3b 20 20 20 43 6f 6d | 6d 6f 6e 4c 6f 6f 70 73 |;; Com|monLoops|
|00000770| 20 43 6f 6f 72 64 69 6e | 61 74 6f 72 0a 58 3b 3b | Coordin|ator.X;;|
|00000780| 3b 20 20 20 58 65 72 6f | 78 20 41 72 74 69 66 69 |; Xero|x Artifi|
|00000790| 63 61 6c 20 49 6e 74 65 | 6c 6c 69 67 65 6e 63 65 |cal Inte|lligence|
|000007a0| 20 53 79 73 74 65 6d 73 | 0a 58 3b 3b 3b 20 20 20 | Systems|.X;;; |
|000007b0| 32 34 30 30 20 48 61 6e | 6f 76 65 72 20 53 74 2e |2400 Han|over St.|
|000007c0| 0a 58 3b 3b 3b 20 20 20 | 50 61 6c 6f 20 41 6c 74 |.X;;; |Palo Alt|
|000007d0| 6f 2c 20 43 41 20 39 34 | 33 30 33 0a 58 3b 3b 3b |o, CA 94|303.X;;;|
|000007e0| 20 28 6f 72 20 73 65 6e | 64 20 41 72 70 61 6e 65 | (or sen|d Arpane|
|000007f0| 74 20 6d 61 69 6c 20 74 | 6f 20 43 6f 6d 6d 6f 6e |t mail t|o Common|
|00000800| 4c 6f 6f 70 73 2d 43 6f | 6f 72 64 69 6e 61 74 6f |Loops-Co|ordinato|
|00000810| 72 2e 70 61 40 58 65 72 | 6f 78 2e 61 72 70 61 29 |r.pa@Xer|ox.arpa)|
|00000820| 0a 58 3b 3b 3b 0a 58 3b | 3b 3b 20 53 75 67 67 65 |.X;;;.X;|;; Sugge|
|00000830| 73 74 69 6f 6e 73 2c 20 | 63 6f 6d 6d 65 6e 74 73 |stions, |comments|
|00000840| 20 61 6e 64 20 72 65 71 | 75 65 73 74 73 20 66 6f | and req|uests fo|
|00000850| 72 20 69 6d 70 72 6f 76 | 65 6d 65 6e 74 73 20 61 |r improv|ements a|
|00000860| 72 65 20 61 6c 73 6f 20 | 77 65 6c 63 6f 6d 65 2e |re also |welcome.|
|00000870| 0a 58 3b 3b 3b 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X;;; **|********|
|00000880| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000890| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000008a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000008b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0a |********|*******.|
|000008c0| 58 3b 3b 3b 0a 58 0a 58 | 28 69 6e 2d 70 61 63 6b |X;;;.X.X|(in-pack|
|000008d0| 61 67 65 20 27 70 63 6c | 29 0a 58 0a 58 20 20 3b |age 'pcl|).X.X ;|
|000008e0| 3b 20 20 20 0a 58 3b 3b | 3b 3b 3b 3b 20 4d 65 74 |; .X;;|;;;; Met|
|000008f0| 68 6f 64 73 0a 58 20 20 | 3b 3b 20 20 20 0a 58 0a |hods.X |;; .X.|
|00000900| 58 28 6e 64 65 66 73 74 | 72 75 63 74 20 28 65 73 |X(ndefst|ruct (es|
|00000910| 73 65 6e 74 69 61 6c 2d | 6d 65 74 68 6f 64 0a 58 |sential-|method.X|
|00000920| 09 20 20 20 20 20 20 28 | 3a 63 6c 61 73 73 20 63 |. (|:class c|
|00000930| 6c 61 73 73 29 0a 58 09 | 20 20 20 20 20 20 28 3a |lass).X.| (:|
|00000940| 63 6f 6e 63 2d 6e 61 6d | 65 20 6d 65 74 68 6f 64 |conc-nam|e method|
|00000950| 2d 29 29 0a 58 20 20 28 | 64 69 73 63 72 69 6d 69 |-)).X (|discrimi|
|00000960| 6e 61 74 6f 72 20 6e 69 | 6c 29 0a 58 20 20 28 61 |nator ni|l).X (a|
|00000970| 72 67 6c 69 73 74 20 28 | 29 29 0a 58 20 20 28 74 |rglist (|)).X (t|
|00000980| 79 70 65 2d 73 70 65 63 | 69 66 69 65 72 73 20 28 |ype-spec|ifiers (|
|00000990| 29 29 0a 58 20 20 28 66 | 75 6e 63 74 69 6f 6e 20 |)).X (f|unction |
|000009a0| 6e 69 6c 29 29 0a 58 0a | 58 28 6e 64 65 66 73 74 |nil)).X.|X(ndefst|
|000009b0| 72 75 63 74 20 28 63 6f | 6d 62 69 6e 61 62 6c 65 |ruct (co|mbinable|
|000009c0| 2d 6d 65 74 68 6f 64 2d | 6d 69 78 69 6e 20 28 3a |-method-|mixin (:|
|000009d0| 63 6c 61 73 73 20 63 6c | 61 73 73 29 29 29 0a 58 |class cl|ass))).X|
|000009e0| 0a 58 28 6e 64 65 66 73 | 74 72 75 63 74 20 28 62 |.X(ndefs|truct (b|
|000009f0| 61 73 69 63 2d 6d 65 74 | 68 6f 64 0a 58 09 20 20 |asic-met|hod.X. |
|00000a00| 20 20 20 20 28 3a 63 6c | 61 73 73 20 63 6c 61 73 | (:cl|ass clas|
|00000a10| 73 29 0a 58 09 20 20 20 | 20 20 20 28 3a 69 6e 63 |s).X. | (:inc|
|00000a20| 6c 75 64 65 20 28 65 73 | 73 65 6e 74 69 61 6c 2d |lude (es|sential-|
|00000a30| 6d 65 74 68 6f 64 29 29 | 0a 58 09 20 20 20 20 20 |method))|.X. |
|00000a40| 20 28 3a 63 6f 6e 73 74 | 72 75 63 74 6f 72 20 6d | (:const|ructor m|
|00000a50| 61 6b 65 2d 6d 65 74 68 | 6f 64 2d 31 29 0a 58 09 |ake-meth|od-1).X.|
|00000a60| 20 20 20 20 20 20 28 3a | 63 6f 6e 63 2d 6e 61 6d | (:|conc-nam|
|00000a70| 65 20 6d 65 74 68 6f 64 | 2d 29 29 0a 58 20 20 28 |e method|-)).X (|
|00000a80| 66 75 6e 63 74 69 6f 6e | 20 6e 69 6c 29 0a 58 20 |function| nil).X |
|00000a90| 20 28 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 | (discri|minator |
|00000aa0| 6e 69 6c 29 0a 58 20 20 | 28 74 79 70 65 2d 73 70 |nil).X |(type-sp|
|00000ab0| 65 63 69 66 69 65 72 73 | 20 28 29 29 0a 58 20 20 |ecifiers| ()).X |
|00000ac0| 28 61 72 67 6c 69 73 74 | 20 28 29 29 0a 58 20 20 |(arglist| ()).X |
|00000ad0| 28 6f 70 74 69 6f 6e 73 | 20 28 29 20 3a 61 6c 6c |(options| () :all|
|00000ae0| 6f 63 61 74 69 6f 6e 20 | 3a 64 79 6e 61 6d 69 63 |ocation |:dynamic|
|00000af0| 29 29 0a 58 0a 58 28 6e | 64 65 66 73 74 72 75 63 |)).X.X(n|defstruc|
|00000b00| 74 20 28 6d 65 74 68 6f | 64 20 28 3a 63 6c 61 73 |t (metho|d (:clas|
|00000b10| 73 20 63 6c 61 73 73 29 | 0a 58 09 09 20 20 20 20 |s class)|.X.. |
|00000b20| 28 3a 69 6e 63 6c 75 64 | 65 20 28 63 6f 6d 62 69 |(:includ|e (combi|
|00000b30| 6e 61 62 6c 65 2d 6d 65 | 74 68 6f 64 2d 6d 69 78 |nable-me|thod-mix|
|00000b40| 69 6e 0a 58 09 09 09 20 | 20 20 20 20 20 20 62 61 |in.X... | ba|
|00000b50| 73 69 63 2d 6d 65 74 68 | 6f 64 29 29 29 29 0a 58 |sic-meth|od)))).X|
|00000b60| 0a 58 0a 58 28 6e 64 65 | 66 73 74 72 75 63 74 20 |.X.X(nde|fstruct |
|00000b70| 28 65 73 73 65 6e 74 69 | 61 6c 2d 64 69 73 63 72 |(essenti|al-discr|
|00000b80| 69 6d 69 6e 61 74 6f 72 | 0a 58 09 20 20 20 20 20 |iminator|.X. |
|00000b90| 20 28 3a 63 6c 61 73 73 | 20 63 6c 61 73 73 29 0a | (:class| class).|
|00000ba0| 58 09 20 20 20 20 20 20 | 28 3a 63 6f 6e 63 2d 6e |X. |(:conc-n|
|00000bb0| 61 6d 65 20 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |ame disc|riminato|
|00000bc0| 72 2d 29 29 0a 58 20 20 | 28 6e 61 6d 65 20 6e 69 |r-)).X |(name ni|
|00000bd0| 6c 29 0a 58 20 20 28 6d | 65 74 68 6f 64 73 20 28 |l).X (m|ethods (|
|00000be0| 29 29 0a 58 20 20 28 64 | 69 73 63 72 69 6d 69 6e |)).X (d|iscrimin|
|00000bf0| 61 74 69 6e 67 2d 66 75 | 6e 63 74 69 6f 6e 20 28 |ating-fu|nction (|
|00000c00| 29 29 0a 58 20 20 28 63 | 6c 61 73 73 69 63 61 6c |)).X (c|lassical|
|00000c10| 2d 6d 65 74 68 6f 64 2d | 74 61 62 6c 65 20 6e 69 |-method-|table ni|
|00000c20| 6c 20 3a 61 6c 6c 6f 63 | 61 74 69 6f 6e 20 3a 64 |l :alloc|ation :d|
|00000c30| 79 6e 61 6d 69 63 29 0a | 58 20 20 28 63 61 63 68 |ynamic).|X (cach|
|00000c40| 65 20 28 29 29 29 0a 58 | 0a 58 28 6e 64 65 66 73 |e ())).X|.X(ndefs|
|00000c50| 74 72 75 63 74 20 28 6d | 65 74 68 6f 64 2d 63 6f |truct (m|ethod-co|
|00000c60| 6d 62 69 6e 61 74 69 6f | 6e 2d 6d 69 78 69 6e 20 |mbinatio|n-mixin |
|00000c70| 28 3a 63 6c 61 73 73 20 | 63 6c 61 73 73 29 0a 58 |(:class |class).X|
|00000c80| 09 09 09 09 20 20 20 20 | 20 20 28 3a 63 6f 6e 63 |.... | (:conc|
|00000c90| 2d 6e 61 6d 65 20 6e 69 | 6c 29 29 0a 58 20 20 28 |-name ni|l)).X (|
|00000ca0| 6d 65 74 68 6f 64 2d 63 | 6f 6d 62 69 6e 61 74 69 |method-c|ombinati|
|00000cb0| 6f 6e 2d 74 79 70 65 20 | 3a 64 61 65 6d 6f 6e 29 |on-type |:daemon)|
|00000cc0| 0a 58 20 20 28 6d 65 74 | 68 6f 64 2d 63 6f 6d 62 |.X (met|hod-comb|
|00000cd0| 69 6e 61 74 69 6f 6e 2d | 70 61 72 61 6d 65 74 65 |ination-|paramete|
|00000ce0| 72 73 20 28 29 29 0a 58 | 20 20 28 6d 65 74 68 6f |rs ()).X| (metho|
|00000cf0| 64 73 2d 63 6f 6d 62 69 | 6e 65 2d 70 20 28 29 29 |ds-combi|ne-p ())|
|00000d00| 0a 58 20 20 29 0a 58 0a | 58 28 6e 64 65 66 73 74 |.X ).X.|X(ndefst|
|00000d10| 72 75 63 74 20 28 62 61 | 73 69 63 2d 64 69 73 63 |ruct (ba|sic-disc|
|00000d20| 72 69 6d 69 6e 61 74 6f | 72 0a 58 09 20 20 20 20 |riminato|r.X. |
|00000d30| 20 20 28 3a 63 6c 61 73 | 73 20 63 6c 61 73 73 29 | (:clas|s class)|
|00000d40| 0a 58 09 20 20 20 20 20 | 20 28 3a 69 6e 63 6c 75 |.X. | (:inclu|
|00000d50| 64 65 20 28 65 73 73 65 | 6e 74 69 61 6c 2d 64 69 |de (esse|ntial-di|
|00000d60| 73 63 72 69 6d 69 6e 61 | 74 6f 72 29 29 0a 58 09 |scrimina|tor)).X.|
|00000d70| 20 20 20 20 20 20 28 3a | 63 6f 6e 73 74 72 75 63 | (:|construc|
|00000d80| 74 6f 72 20 6d 61 6b 65 | 2d 64 69 73 63 72 69 6d |tor make|-discrim|
|00000d90| 69 6e 61 74 6f 72 2d 31 | 29 0a 58 09 20 20 20 20 |inator-1|).X. |
|00000da0| 20 20 28 3a 63 6f 6e 63 | 2d 6e 61 6d 65 20 64 69 | (:conc|-name di|
|00000db0| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 29 29 0a 58 |scrimina|tor-)).X|
|00000dc0| 0a 58 20 20 28 64 69 73 | 70 61 74 63 68 2d 6f 72 |.X (dis|patch-or|
|00000dd0| 64 65 72 20 3a 64 65 66 | 61 75 6c 74 29 20 20 0a |der :def|ault) .|
|00000de0| 58 20 20 28 69 6e 61 63 | 74 69 76 65 2d 6d 65 74 |X (inac|tive-met|
|00000df0| 68 6f 64 73 20 28 29 20 | 3a 61 6c 6c 6f 63 61 74 |hods () |:allocat|
|00000e00| 69 6f 6e 20 3a 64 79 6e | 61 6d 69 63 29 29 0a 58 |ion :dyn|amic)).X|
|00000e10| 0a 58 28 6e 64 65 66 73 | 74 72 75 63 74 20 28 64 |.X(ndefs|truct (d|
|00000e20| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 20 28 3a 63 |iscrimin|ator (:c|
|00000e30| 6c 61 73 73 20 63 6c 61 | 73 73 29 0a 58 09 09 09 |lass cla|ss).X...|
|00000e40| 20 20 20 28 3a 69 6e 63 | 6c 75 64 65 20 28 6d 65 | (:inc|lude (me|
|00000e50| 74 68 6f 64 2d 63 6f 6d | 62 69 6e 61 74 69 6f 6e |thod-com|bination|
|00000e60| 2d 6d 69 78 69 6e 0a 58 | 09 09 09 09 20 20 20 20 |-mixin.X|.... |
|00000e70| 20 20 62 61 73 69 63 2d | 64 69 73 63 72 69 6d 69 | basic-|discrimi|
|00000e80| 6e 61 74 6f 72 29 29 29 | 0a 58 20 20 29 0a 58 0a |nator)))|.X ).X.|
|00000e90| 58 3b 3b 3b 0a 58 3b 3b | 3b 20 54 68 69 73 20 69 |X;;;.X;;|; This i|
|00000ea0| 73 20 72 65 61 6c 6c 79 | 20 6a 75 73 74 20 66 6f |s really| just fo|
|00000eb0| 72 20 62 6f 6f 74 73 74 | 72 61 70 70 69 6e 67 2c |r bootst|rapping,|
|00000ec0| 20 6f 66 20 63 6f 75 72 | 73 65 20 74 68 69 73 20 | of cour|se this |
|00000ed0| 69 73 6e 27 74 20 61 6c | 6c 0a 58 3b 3b 3b 20 77 |isn't al|l.X;;; w|
|00000ee0| 6f 72 6b 65 64 20 6f 75 | 74 20 79 65 74 2e 20 20 |orked ou|t yet. |
|00000ef0| 42 75 74 20 74 68 69 73 | 20 53 48 4f 55 4c 44 20 |But this| SHOULD |
|00000f00| 72 65 61 6c 6c 79 20 6a | 75 73 74 20 62 65 20 66 |really j|ust be f|
|00000f10| 6f 72 20 62 6f 6f 74 73 | 74 72 61 70 70 69 6e 67 |or boots|trapping|
|00000f20| 2e 0a 58 3b 3b 3b 20 0a | 58 28 64 65 66 6d 65 74 |..X;;; .|X(defmet|
|00000f30| 68 20 6d 65 74 68 6f 64 | 2d 63 61 75 73 65 73 2d |h method|-causes-|
|00000f40| 63 6f 6d 62 69 6e 61 74 | 69 6f 6e 2d 70 20 28 28 |combinat|ion-p ((|
|00000f50| 6d 65 74 68 6f 64 20 62 | 61 73 69 63 2d 6d 65 74 |method b|asic-met|
|00000f60| 68 6f 64 29 29 0a 58 20 | 20 28 69 67 6e 6f 72 65 |hod)).X | (ignore|
|00000f70| 20 6d 65 74 68 6f 64 29 | 0a 58 20 20 28 29 29 0a | method)|.X ()).|
|00000f80| 58 0a 58 20 20 3b 3b 20 | 20 20 0a 58 3b 3b 3b 3b |X.X ;; | .X;;;;|
|00000f90| 3b 3b 20 0a 58 20 20 3b | 3b 20 20 20 0a 58 0a 58 |;; .X ;|; .X.X|
|00000fa0| 0a 58 28 64 65 66 75 6e | 20 72 65 61 6c 2d 65 78 |.X(defun| real-ex|
|00000fb0| 70 61 6e 64 2d 64 65 66 | 6d 65 74 68 20 28 6e 61 |pand-def|meth (na|
|00000fc0| 6d 65 26 6f 70 74 69 6f | 6e 73 20 61 72 67 6c 69 |me&optio|ns argli|
|00000fd0| 73 74 20 62 6f 64 79 29 | 0a 58 20 20 28 75 6e 6c |st body)|.X (unl|
|00000fe0| 65 73 73 20 28 6c 69 73 | 74 70 20 6e 61 6d 65 26 |ess (lis|tp name&|
|00000ff0| 6f 70 74 69 6f 6e 73 29 | 20 28 73 65 74 71 20 6e |options)| (setq n|
|00001000| 61 6d 65 26 6f 70 74 69 | 6f 6e 73 20 28 6c 69 73 |ame&opti|ons (lis|
|00001010| 74 20 6e 61 6d 65 26 6f | 70 74 69 6f 6e 73 29 29 |t name&o|ptions))|
|00001020| 29 0a 58 20 20 28 6b 65 | 79 77 6f 72 64 2d 70 61 |).X (ke|yword-pa|
|00001030| 72 73 65 20 28 28 64 69 | 73 63 72 69 6d 69 6e 61 |rse ((di|scrimina|
|00001040| 74 6f 72 2d 63 6c 61 73 | 73 20 27 64 69 73 63 72 |tor-clas|s 'discr|
|00001050| 69 6d 69 6e 61 74 6f 72 | 29 0a 58 20 20 20 20 20 |iminator|).X |
|00001060| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 6d 65 | | (me|
|00001070| 74 68 6f 64 2d 63 6c 61 | 73 73 20 27 6d 65 74 68 |thod-cla|ss 'meth|
|00001080| 6f 64 29 29 0a 58 20 20 | 20 20 20 20 20 20 20 20 |od)).X | |
|00001090| 20 20 20 20 20 20 20 28 | 63 64 72 20 6e 61 6d 65 | (|cdr name|
|000010a0| 26 6f 70 74 69 6f 6e 73 | 29 0a 58 20 20 20 20 28 |&options|).X (|
|000010b0| 64 6f 6c 69 73 74 20 28 | 78 20 27 28 3a 64 69 73 |dolist (|x '(:dis|
|000010c0| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 63 6c 61 73 73 |criminat|or-class|
|000010d0| 20 3a 6d 65 74 68 6f 64 | 2d 63 6c 61 73 73 29 29 | :method|-class))|
|000010e0| 0a 58 20 20 20 20 20 20 | 28 64 65 6c 65 74 65 20 |.X |(delete |
|000010f0| 78 20 6e 61 6d 65 26 6f | 70 74 69 6f 6e 73 20 3a |x name&o|ptions :|
|00001100| 74 65 73 74 20 23 27 28 | 6c 61 6d 62 64 61 20 28 |test #'(|lambda (|
|00001110| 78 20 79 29 0a 58 09 09 | 09 09 20 20 20 20 20 20 |x y).X..|.. |
|00001120| 20 28 61 6e 64 20 28 6c | 69 73 74 70 20 79 29 20 | (and (l|istp y) |
|00001130| 28 65 71 20 28 63 61 72 | 20 79 29 20 78 29 29 29 |(eq (car| y) x)))|
|00001140| 29 29 0a 58 20 20 20 20 | 28 6c 65 74 20 28 28 64 |)).X |(let ((d|
|00001150| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 63 6c 61 |iscrimin|ator-cla|
|00001160| 73 73 2d 6f 62 6a 65 63 | 74 20 28 63 6c 61 73 73 |ss-objec|t (class|
|00001170| 2d 6e 61 6d 65 64 20 64 | 69 73 63 72 69 6d 69 6e |-named d|iscrimin|
|00001180| 61 74 6f 72 2d 63 6c 61 | 73 73 20 74 29 29 0a 58 |ator-cla|ss t)).X|
|00001190| 20 20 20 20 20 20 20 20 | 20 20 28 6d 65 74 68 6f | | (metho|
|000011a0| 64 2d 63 6c 61 73 73 2d | 6f 62 6a 65 63 74 20 28 |d-class-|object (|
|000011b0| 63 6c 61 73 73 2d 6e 61 | 6d 65 64 20 6d 65 74 68 |class-na|med meth|
|000011c0| 6f 64 2d 63 6c 61 73 73 | 20 74 29 29 29 0a 58 20 |od-class| t))).X |
|000011d0| 20 20 20 20 20 28 6f 72 | 20 64 69 73 63 72 69 6d | (or| discrim|
|000011e0| 69 6e 61 74 6f 72 2d 63 | 6c 61 73 73 2d 6f 62 6a |inator-c|lass-obj|
|000011f0| 65 63 74 09 09 3b 0a 58 | 20 20 20 20 20 20 20 20 |ect..;.X| |
|00001200| 20 20 28 65 72 72 6f 72 | 0a 58 09 20 20 20 20 22 | (error|.X. "|
|00001210| 54 68 65 20 3a 44 49 53 | 43 52 49 4d 49 4e 41 54 |The :DIS|CRIMINAT|
|00001220| 4f 52 2d 43 4c 41 53 53 | 20 6f 70 74 69 6f 6e 20 |OR-CLASS| option |
|00001230| 74 6f 20 64 65 66 6d 65 | 74 68 20 77 61 73 20 75 |to defme|th was u|
|00001240| 73 65 64 20 74 6f 20 73 | 70 65 63 69 66 79 7e 0a |sed to s|pecify~.|
|00001250| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 74 68 |X | th|
|00001260| 61 74 20 74 68 65 20 63 | 6c 61 73 73 7e 25 6f 66 |at the c|lass~%of|
|00001270| 20 74 68 65 20 64 69 73 | 63 72 69 6d 69 6e 61 74 | the dis|criminat|
|00001280| 6f 72 20 73 68 6f 75 6c | 64 20 62 65 20 7e 53 3b |or shoul|d be ~S;|
|00001290| 7e 25 7e 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |~%~.X | |
|000012a0| 20 20 62 75 74 20 74 68 | 65 72 65 20 69 73 20 6e | but th|ere is n|
|000012b0| 6f 20 63 6c 61 73 73 20 | 6e 61 6d 65 64 20 7e 53 |o class |named ~S|
|000012c0| 2e 22 0a 58 09 20 20 20 | 20 64 69 73 63 72 69 6d |.".X. | discrim|
|000012d0| 69 6e 61 74 6f 72 2d 63 | 6c 61 73 73 0a 58 09 20 |inator-c|lass.X. |
|000012e0| 20 20 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 | discr|iminator|
|000012f0| 2d 63 6c 61 73 73 29 29 | 0a 58 20 20 20 20 20 20 |-class))|.X |
|00001300| 28 6f 72 20 6d 65 74 68 | 6f 64 2d 63 6c 61 73 73 |(or meth|od-class|
|00001310| 2d 6f 62 6a 65 63 74 0a | 58 20 20 20 20 20 20 20 |-object.|X |
|00001320| 20 20 20 28 65 72 72 6f | 72 20 22 54 68 65 20 3a | (erro|r "The :|
|00001330| 4d 45 54 48 4f 44 2d 43 | 4c 41 53 53 20 6f 70 74 |METHOD-C|LASS opt|
|00001340| 69 6f 6e 20 74 6f 20 64 | 65 66 6d 65 74 68 20 77 |ion to d|efmeth w|
|00001350| 61 73 20 75 73 65 64 20 | 74 6f 20 73 70 65 63 69 |as used |to speci|
|00001360| 66 79 7e 25 7e 0a 58 20 | 20 20 20 20 20 20 20 20 |fy~%~.X | |
|00001370| 20 20 20 20 20 20 20 20 | 20 74 68 61 74 20 74 68 | | that th|
|00001380| 65 20 63 6c 61 73 73 20 | 6f 66 20 74 68 65 20 6d |e class |of the m|
|00001390| 65 74 68 6f 64 20 73 68 | 6f 75 6c 64 20 62 65 20 |ethod sh|ould be |
|000013a0| 7e 53 3b 7e 25 7e 0a 58 | 20 20 20 20 20 20 20 20 |~S;~%~.X| |
|000013b0| 20 20 20 20 20 20 20 20 | 20 20 62 75 74 20 74 68 | | but th|
|000013c0| 65 72 65 20 69 73 20 6e | 6f 20 63 6c 61 73 73 20 |ere is n|o class |
|000013d0| 6e 61 6d 65 64 20 7e 53 | 2e 22 0a 58 20 20 20 20 |named ~S|.".X |
|000013e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 6d 65 74 | | met|
|000013f0| 68 6f 64 2d 63 6c 61 73 | 73 0a 58 20 20 20 20 20 |hod-clas|s.X |
|00001400| 20 20 20 20 20 20 20 20 | 20 20 20 20 6d 65 74 68 | | meth|
|00001410| 6f 64 2d 63 6c 61 73 73 | 29 29 0a 58 20 20 20 20 |od-class|)).X |
|00001420| 20 20 28 65 78 70 61 6e | 64 2d 64 65 66 6d 65 74 | (expan|d-defmet|
|00001430| 68 2d 69 6e 74 65 72 6e | 61 6c 20 28 63 6c 61 73 |h-intern|al (clas|
|00001440| 73 2d 70 72 6f 74 6f 74 | 79 70 65 20 64 69 73 63 |s-protot|ype disc|
|00001450| 72 69 6d 69 6e 61 74 6f | 72 2d 63 6c 61 73 73 2d |riminato|r-class-|
|00001460| 6f 62 6a 65 63 74 29 0a | 58 09 09 09 20 20 20 20 |object).|X... |
|00001470| 20 20 20 28 63 6c 61 73 | 73 2d 70 72 6f 74 6f 74 | (clas|s-protot|
|00001480| 79 70 65 20 6d 65 74 68 | 6f 64 2d 63 6c 61 73 73 |ype meth|od-class|
|00001490| 2d 6f 62 6a 65 63 74 29 | 0a 58 09 09 09 20 20 20 |-object)|.X... |
|000014a0| 20 20 20 20 6e 61 6d 65 | 26 6f 70 74 69 6f 6e 73 | name|&options|
|000014b0| 0a 58 09 09 09 20 20 20 | 20 20 20 20 61 72 67 6c |.X... | argl|
|000014c0| 69 73 74 0a 58 09 09 09 | 20 20 20 20 20 20 20 62 |ist.X...| b|
|000014d0| 6f 64 79 29 29 29 29 0a | 58 0a 58 28 64 65 66 76 |ody)))).|X.X(defv|
|000014e0| 61 72 20 2a 6d 65 74 68 | 6f 64 2d 62 65 69 6e 67 |ar *meth|od-being|
|000014f0| 2d 64 65 66 69 6e 65 64 | 2a 29 0a 58 0a 58 28 64 |-defined|*).X.X(d|
|00001500| 65 66 6d 65 74 68 20 65 | 78 70 61 6e 64 2d 64 65 |efmeth e|xpand-de|
|00001510| 66 6d 65 74 68 2d 69 6e | 74 65 72 6e 61 6c 20 28 |fmeth-in|ternal (|
|00001520| 28 70 72 6f 74 6f 2d 64 | 69 73 63 72 69 6d 69 6e |(proto-d|iscrimin|
|00001530| 61 74 6f 72 20 62 61 73 | 69 63 2d 64 69 73 63 72 |ator bas|ic-discr|
|00001540| 69 6d 69 6e 61 74 6f 72 | 29 0a 58 09 09 09 09 20 |iminator|).X.... |
|00001550| 20 28 70 72 6f 74 6f 2d | 6d 65 74 68 6f 64 20 62 | (proto-|method b|
|00001560| 61 73 69 63 2d 6d 65 74 | 68 6f 64 29 0a 58 09 09 |asic-met|hod).X..|
|00001570| 09 09 20 20 6e 61 6d 65 | 26 6f 70 74 69 6f 6e 73 |.. name|&options|
|00001580| 20 61 72 67 6c 69 73 74 | 20 62 6f 64 79 29 0a 58 | arglist| body).X|
|00001590| 20 20 28 6b 65 79 77 6f | 72 64 2d 70 61 72 73 65 | (keywo|rd-parse|
|000015a0| 20 28 28 73 65 74 66 20 | 28 29 20 73 65 74 66 2d | ((setf |() setf-|
|000015b0| 73 70 65 63 69 66 69 65 | 64 2d 70 29 29 0a 58 20 |specifie|d-p)).X |
|000015c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000015d0| 28 63 64 72 20 6e 61 6d | 65 26 6f 70 74 69 6f 6e |(cdr nam|e&option|
|000015e0| 73 29 0a 58 20 20 20 20 | 28 6c 65 74 2a 20 28 28 |s).X |(let* ((|
|000015f0| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 63 6c |discrimi|nator-cl|
|00001600| 61 73 73 2d 6e 61 6d 65 | 20 28 63 6c 61 73 73 2d |ass-name| (class-|
|00001610| 6e 61 6d 65 0a 58 09 09 | 09 09 20 20 20 20 20 20 |name.X..|.. |
|00001620| 20 28 63 6c 61 73 73 2d | 6f 66 20 70 72 6f 74 6f | (class-|of proto|
|00001630| 2d 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 29 29 |-discrim|inator))|
|00001640| 29 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 28 6d |).X | (m|
|00001650| 65 74 68 6f 64 2d 63 6c | 61 73 73 2d 6e 61 6d 65 |ethod-cl|ass-name|
|00001660| 20 28 63 6c 61 73 73 2d | 6e 61 6d 65 20 28 63 6c | (class-|name (cl|
|00001670| 61 73 73 2d 6f 66 20 70 | 72 6f 74 6f 2d 6d 65 74 |ass-of p|roto-met|
|00001680| 68 6f 64 29 29 29 0a 58 | 20 20 20 20 20 20 20 20 |hod))).X| |
|00001690| 20 20 20 28 6e 61 6d 65 | 20 28 63 61 72 20 6e 61 | (name| (car na|
|000016a0| 6d 65 26 6f 70 74 69 6f | 6e 73 29 29 0a 58 20 20 |me&optio|ns)).X |
|000016b0| 20 20 20 20 20 20 20 20 | 20 28 6d 65 72 67 65 64 | | (merged|
|000016c0| 2d 61 72 67 6c 69 73 74 | 20 28 63 6f 6e 73 20 28 |-arglist| (cons (|
|000016d0| 63 61 72 20 61 72 67 6c | 69 73 74 29 20 28 61 70 |car argl|ist) (ap|
|000016e0| 70 65 6e 64 20 73 65 74 | 66 20 28 63 64 72 20 61 |pend set|f (cdr a|
|000016f0| 72 67 6c 69 73 74 29 29 | 29 29 0a 58 20 20 20 20 |rglist))|)).X |
|00001700| 20 20 20 20 20 20 20 28 | 6d 65 72 67 65 64 2d 61 | (|merged-a|
|00001710| 72 67 73 20 28 61 72 67 | 6c 69 73 74 2d 77 69 74 |rgs (arg|list-wit|
|00001720| 68 6f 75 74 2d 74 79 70 | 65 2d 73 70 65 63 69 66 |hout-typ|e-specif|
|00001730| 69 65 72 73 20 70 72 6f | 74 6f 2d 64 69 73 63 72 |iers pro|to-discr|
|00001740| 69 6d 69 6e 61 74 6f 72 | 0a 58 20 20 20 20 20 20 |iminator|.X |
|00001750| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001760| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001770| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001780| 20 20 20 70 72 6f 74 6f | 2d 6d 65 74 68 6f 64 0a | proto|-method.|
|00001790| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|000017a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000017b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000017c0| 20 20 20 20 20 20 20 20 | 20 20 6d 65 72 67 65 64 | | merged|
|000017d0| 2d 61 72 67 6c 69 73 74 | 29 29 0a 58 20 20 20 20 |-arglist|)).X |
|000017e0| 20 20 20 20 20 20 20 28 | 6d 65 72 67 65 64 2d 74 | (|merged-t|
|000017f0| 79 70 65 2d 73 70 65 63 | 69 66 69 65 72 73 0a 58 |ype-spec|ifiers.X|
|00001800| 09 20 20 20 20 20 28 64 | 65 66 6d 65 74 68 6f 64 |. (d|efmethod|
|00001810| 2d 61 72 67 75 6d 65 6e | 74 2d 73 70 65 63 69 61 |-argumen|t-specia|
|00001820| 6c 69 7a 65 72 73 20 61 | 72 67 6c 69 73 74 29 29 |lizers a|rglist))|
|00001830| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 64 69 73 |.X | dis|
|00001840| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 6e 61 6d 65 0a |criminat|or-name.|
|00001850| 58 20 20 20 20 20 20 20 | 20 20 20 20 6d 65 74 68 |X | meth|
|00001860| 6f 64 2d 6e 61 6d 65 0a | 58 09 20 20 20 28 64 65 |od-name.|X. (de|
|00001870| 66 6d 65 74 68 6f 64 2d | 75 69 64 20 28 67 65 6e |fmethod-|uid (gen|
|00001880| 73 79 6d 29 29 0a 58 09 | 20 20 20 28 6c 6f 61 64 |sym)).X.| (load|
|00001890| 2d 6d 65 74 68 6f 64 2d | 31 20 28 29 29 0a 58 09 |-method-|1 ()).X.|
|000018a0| 20 20 20 28 64 6f 63 75 | 6d 65 6e 74 61 74 69 6f | (docu|mentatio|
|000018b0| 6e 20 28 29 29 0a 58 09 | 20 20 20 28 64 65 63 6c |n ()).X.| (decl|
|000018c0| 61 72 61 74 69 6f 6e 73 | 20 28 29 29 29 0a 58 20 |arations| ())).X |
|000018d0| 20 20 20 20 20 28 69 66 | 20 73 65 74 66 2d 73 70 | (if| setf-sp|
|000018e0| 65 63 69 66 69 65 64 2d | 70 0a 58 09 20 20 28 73 |ecified-|p.X. (s|
|000018f0| 65 74 71 20 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |etq disc|riminato|
|00001900| 72 2d 6e 61 6d 65 20 28 | 6d 61 6b 65 2d 73 65 74 |r-name (|make-set|
|00001910| 66 2d 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d |f-discri|minator-|
|00001920| 6e 61 6d 65 20 6e 61 6d | 65 29 0a 58 09 09 6d 65 |name nam|e).X..me|
|00001930| 74 68 6f 64 2d 6e 61 6d | 65 20 28 6d 61 6b 65 2d |thod-nam|e (make-|
|00001940| 73 65 74 66 2d 6d 65 74 | 68 6f 64 2d 6e 61 6d 65 |setf-met|hod-name|
|00001950| 20 6e 61 6d 65 0a 58 09 | 09 09 09 09 09 20 20 20 | name.X.|..... |
|00001960| 28 61 72 67 6c 69 73 74 | 2d 74 79 70 65 2d 73 70 |(arglist|-type-sp|
|00001970| 65 63 69 66 69 65 72 73 | 0a 58 09 09 09 09 09 09 |ecifiers|.X......|
|00001980| 20 20 20 20 20 70 72 6f | 74 6f 2d 64 69 73 63 72 | pro|to-discr|
|00001990| 69 6d 69 6e 61 74 6f 72 | 0a 58 09 09 09 09 09 09 |iminator|.X......|
|000019a0| 20 20 20 20 20 70 72 6f | 74 6f 2d 6d 65 74 68 6f | pro|to-metho|
|000019b0| 64 0a 58 09 09 09 09 09 | 09 20 20 20 20 20 73 65 |d.X.....|. se|
|000019c0| 74 66 29 0a 58 09 09 09 | 09 09 09 20 20 20 6d 65 |tf).X...|... me|
|000019d0| 72 67 65 64 2d 74 79 70 | 65 2d 73 70 65 63 69 66 |rged-typ|e-specif|
|000019e0| 69 65 72 73 29 29 0a 58 | 09 20 20 28 73 65 74 71 |iers)).X|. (setq|
|000019f0| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 2d 6e | discrim|inator-n|
|00001a00| 61 6d 65 20 6e 61 6d 65 | 0a 58 09 09 6d 65 74 68 |ame name|.X..meth|
|00001a10| 6f 64 2d 6e 61 6d 65 20 | 28 6d 61 6b 65 2d 6d 65 |od-name |(make-me|
|00001a20| 74 68 6f 64 2d 6e 61 6d | 65 20 6e 61 6d 65 0a 58 |thod-nam|e name.X|
|00001a30| 09 09 09 09 09 20 20 20 | 20 20 20 6d 65 72 67 65 |..... | merge|
|00001a40| 64 2d 74 79 70 65 2d 73 | 70 65 63 69 66 69 65 72 |d-type-s|pecifier|
|00001a50| 73 29 29 29 0a 58 20 20 | 20 20 20 20 28 6d 75 6c |s))).X | (mul|
|00001a60| 74 69 70 6c 65 2d 76 61 | 6c 75 65 2d 73 65 74 71 |tiple-va|lue-setq|
|00001a70| 20 28 64 6f 63 75 6d 65 | 6e 74 61 74 69 6f 6e 20 | (docume|ntation |
|00001a80| 64 65 63 6c 61 72 61 74 | 69 6f 6e 73 20 62 6f 64 |declarat|ions bod|
|00001a90| 79 29 0a 58 09 28 65 78 | 74 72 61 63 74 2d 64 65 |y).X.(ex|tract-de|
|00001aa0| 63 6c 61 72 61 74 69 6f | 6e 73 20 62 6f 64 79 29 |claratio|ns body)|
|00001ab0| 29 0a 58 20 20 20 20 20 | 20 28 73 65 74 71 20 6c |).X | (setq l|
|00001ac0| 6f 61 64 2d 6d 65 74 68 | 6f 64 2d 31 20 60 28 2c |oad-meth|od-1 `(,|
|00001ad0| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 63 6c |discrimi|nator-cl|
|00001ae0| 61 73 73 2d 6e 61 6d 65 | 0a 58 09 09 09 20 20 20 |ass-name|.X... |
|00001af0| 20 2c 6d 65 74 68 6f 64 | 2d 63 6c 61 73 73 2d 6e | ,method|-class-n|
|00001b00| 61 6d 65 0a 58 09 09 09 | 20 20 20 20 2c 64 69 73 |ame.X...| ,dis|
|00001b10| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 6e 61 6d 65 0a |criminat|or-name.|
|00001b20| 58 09 09 09 20 20 20 20 | 2c 6d 65 72 67 65 64 2d |X... |,merged-|
|00001b30| 74 79 70 65 2d 73 70 65 | 63 69 66 69 65 72 73 0a |type-spe|cifiers.|
|00001b40| 58 09 09 09 20 20 20 20 | 2c 6d 65 72 67 65 64 2d |X... |,merged-|
|00001b50| 61 72 67 73 0a 58 09 09 | 09 20 20 20 20 2c 28 63 |args.X..|. ,(c|
|00001b60| 64 72 20 6e 61 6d 65 26 | 6f 70 74 69 6f 6e 73 29 |dr name&|options)|
|00001b70| 29 29 0a 58 20 20 20 20 | 20 20 3b 3b 0a 58 20 20 |)).X | ;;.X |
|00001b80| 20 20 20 20 3b 3b 20 54 | 68 65 72 65 20 61 72 65 | ;; T|here are|
|00001b90| 20 34 20 63 61 73 65 73 | 3a 0a 58 20 20 20 20 20 | 4 cases|:.X |
|00001ba0| 20 3b 3b 20 20 20 2d 20 | 65 76 61 6c 75 61 74 65 | ;; - |evaluate|
|00001bb0| 64 0a 58 20 20 20 20 20 | 20 3b 3b 20 20 20 2d 20 |d.X | ;; - |
|00001bc0| 63 6f 6d 70 69 6c 65 64 | 20 74 6f 20 63 6f 72 65 |compiled| to core|
|00001bd0| 0a 58 20 20 20 20 20 20 | 3b 3b 20 20 20 2d 20 63 |.X |;; - c|
|00001be0| 6f 6d 70 69 6c 65 64 20 | 74 6f 20 66 69 6c 65 0a |ompiled |to file.|
|00001bf0| 58 20 20 20 20 20 20 3b | 3b 20 20 20 2d 20 6c 6f |X ;|; - lo|
|00001c00| 61 64 69 6e 67 20 74 68 | 65 20 63 6f 6d 70 69 6c |ading th|e compil|
|00001c10| 65 64 20 66 69 6c 65 0a | 58 20 20 20 20 20 20 3b |ed file.|X ;|
|00001c20| 3b 0a 58 20 20 20 20 20 | 20 3b 3b 20 57 68 65 6e |;.X | ;; When|
|00001c30| 20 6c 6f 61 64 69 6e 67 | 20 61 20 6d 65 74 68 6f | loading| a metho|
|00001c40| 64 20 77 68 69 63 68 20 | 68 61 73 20 61 20 72 75 |d which |has a ru|
|00001c50| 6e 2d 73 75 70 65 72 20 | 69 6e 20 69 74 2c 20 74 |n-super |in it, t|
|00001c60| 68 65 72 65 20 69 73 20 | 6e 6f 20 77 61 79 0a 58 |here is |no way.X|
|00001c70| 20 20 20 20 20 20 3b 3b | 20 74 6f 20 6b 6e 6f 77 | ;;| to know|
|00001c80| 20 77 68 69 63 68 20 6f | 66 20 74 77 6f 20 65 76 | which o|f two ev|
|00001c90| 65 6e 74 73 20 77 69 6c | 6c 20 68 61 70 70 65 6e |ents wil|l happen|
|00001ca0| 20 66 69 72 73 74 3a 0a | 58 20 20 20 20 20 20 3b | first:.|X ;|
|00001cb0| 3b 20 20 20 31 2e 20 74 | 68 65 20 6c 6f 61 64 2d |; 1. t|he load-|
|00001cc0| 74 69 6d 65 2d 65 76 61 | 6c 20 66 6f 72 6d 20 69 |time-eva|l form i|
|00001cd0| 6e 20 74 68 65 20 72 75 | 6e 20 73 75 70 65 72 20 |n the ru|n super |
|00001ce0| 77 69 6c 6c 20 62 65 0a | 58 20 20 20 20 20 20 3b |will be.|X ;|
|00001cf0| 3b 20 20 20 20 20 20 65 | 76 61 6c 75 61 74 65 64 |; e|valuated|
|00001d00| 20 66 69 72 73 74 2c 20 | 6f 72 0a 58 20 20 20 20 | first, |or.X |
|00001d10| 20 20 3b 3b 20 20 20 32 | 2e 20 74 68 65 20 66 75 | ;; 2|. the fu|
|00001d20| 6e 63 74 69 6f 6e 20 74 | 6f 20 69 6e 73 74 61 6c |nction t|o instal|
|00001d30| 6c 20 74 68 65 20 6c 6f | 61 64 65 64 20 6d 65 74 |l the lo|aded met|
|00001d40| 68 6f 64 20 28 64 65 66 | 6d 65 74 68 6f 64 2d 75 |hod (def|method-u|
|00001d50| 69 64 29 0a 58 20 20 20 | 20 20 20 3b 3b 20 20 20 |id).X | ;; |
|00001d60| 20 20 20 77 69 6c 6c 20 | 62 65 20 65 76 61 6c 75 | will |be evalu|
|00001d70| 61 74 65 64 20 66 69 72 | 73 74 2e 0a 58 20 20 20 |ated fir|st..X |
|00001d80| 20 20 20 3b 3b 20 63 6f | 6e 73 65 71 75 65 6e 74 | ;; co|nsequent|
|00001d90| 6c 79 2c 20 62 6f 74 68 | 20 74 68 65 20 73 70 65 |ly, both| the spe|
|00001da0| 63 69 61 6c 20 66 75 6e | 63 74 69 6f 6e 20 28 64 |cial fun|ction (d|
|00001db0| 65 66 6d 65 74 68 6f 64 | 2d 75 69 64 29 20 61 6e |efmethod|-uid) an|
|00001dc0| 64 20 74 68 65 0a 58 20 | 20 20 20 20 20 3b 3b 20 |d the.X | ;; |
|00001dd0| 65 78 70 61 6e 73 69 6f | 6e 20 6f 66 20 72 75 6e |expansio|n of run|
|00001de0| 2d 73 75 70 65 72 20 6d | 75 73 74 20 63 68 65 63 |-super m|ust chec|
|00001df0| 6b 20 74 6f 20 73 65 65 | 20 69 66 20 74 68 65 20 |k to see| if the |
|00001e00| 6f 74 68 65 72 20 68 61 | 73 20 61 6c 72 65 61 64 |other ha|s alread|
|00001e10| 79 0a 58 20 20 20 20 20 | 20 3b 3b 20 72 75 6e 20 |y.X | ;; run |
|00001e20| 61 6e 64 20 73 65 74 20 | 74 68 65 20 76 61 6c 75 |and set |the valu|
|00001e30| 65 20 6f 66 20 64 65 66 | 6d 65 74 68 6f 64 2d 75 |e of def|method-u|
|00001e40| 69 64 20 74 6f 20 74 68 | 65 20 6d 65 74 68 6f 64 |id to th|e method|
|00001e50| 20 69 6e 76 6f 6c 76 65 | 64 2e 0a 58 20 20 20 20 | involve|d..X |
|00001e60| 20 20 3b 3b 20 54 68 69 | 73 20 69 73 20 77 68 61 | ;; Thi|s is wha|
|00001e70| 74 20 63 61 75 73 65 73 | 20 74 68 65 20 62 6f 75 |t causes| the bou|
|00001e80| 6e 64 70 20 63 68 65 63 | 6b 73 20 6f 66 20 64 65 |ndp chec|ks of de|
|00001e90| 66 6d 65 74 68 6f 64 2d | 75 69 64 20 65 61 63 68 |fmethod-|uid each|
|00001ea0| 20 74 69 6d 65 0a 58 20 | 20 20 20 20 20 3b 3b 20 | time.X | ;; |
|00001eb0| 62 65 66 6f 72 65 20 69 | 74 20 69 73 20 73 65 74 |before i|t is set|
|00001ec0| 2e 0a 58 20 20 20 20 20 | 20 3b 3b 20 0a 58 20 20 |..X | ;; .X |
|00001ed0| 20 20 20 20 60 28 70 72 | 6f 67 6e 0a 58 09 20 0a | `(pr|ogn.X. .|
|00001ee0| 58 09 20 28 65 76 61 6c | 2d 77 68 65 6e 20 28 65 |X. (eval|-when (e|
|00001ef0| 76 61 6c 20 6c 6f 61 64 | 29 0a 58 09 20 20 20 0a |val load|).X. .|
|00001f00| 58 09 20 20 20 28 64 65 | 66 75 6e 20 2c 64 65 66 |X. (de|fun ,def|
|00001f10| 6d 65 74 68 6f 64 2d 75 | 69 64 20 28 29 0a 58 09 |method-u|id ().X.|
|00001f20| 20 20 20 20 20 28 64 65 | 63 6c 61 72 65 20 28 73 | (de|clare (s|
|00001f30| 70 65 63 69 61 6c 20 2c | 64 65 66 6d 65 74 68 6f |pecial ,|defmetho|
|00001f40| 64 2d 75 69 64 29 29 0a | 58 09 20 20 20 20 20 28 |d-uid)).|X. (|
|00001f50| 75 6e 6c 65 73 73 20 28 | 62 6f 75 6e 64 70 20 27 |unless (|boundp '|
|00001f60| 2c 64 65 66 6d 65 74 68 | 6f 64 2d 75 69 64 29 0a |,defmeth|od-uid).|
|00001f70| 58 09 20 20 20 20 20 20 | 20 28 73 65 74 71 20 2c |X. | (setq ,|
|00001f80| 64 65 66 6d 65 74 68 6f | 64 2d 75 69 64 20 28 61 |defmetho|d-uid (a|
|00001f90| 70 70 6c 79 20 23 27 6c | 6f 61 64 2d 6d 65 74 68 |pply #'l|oad-meth|
|00001fa0| 6f 64 2d 31 0a 58 09 09 | 09 09 09 20 20 20 27 2c |od-1.X..|... ',|
|00001fb0| 6c 6f 61 64 2d 6d 65 74 | 68 6f 64 2d 31 29 29 29 |load-met|hod-1)))|
|00001fc0| 0a 58 09 20 20 20 20 20 | 2c 40 28 61 6e 64 20 2a |.X. |,@(and *|
|00001fd0| 72 65 61 6c 2d 6d 65 74 | 68 6f 64 73 2d 65 78 69 |real-met|hods-exi|
|00001fe0| 73 74 2d 70 2a 0a 58 09 | 09 20 20 20 20 60 28 28 |st-p*.X.|. `((|
|00001ff0| 72 65 63 6f 72 64 2d 64 | 65 66 69 6e 69 74 69 6f |record-d|efinitio|
|00002000| 6e 0a 58 09 09 09 27 2c | 64 69 73 63 72 69 6d 69 |n.X...',|discrimi|
|00002010| 6e 61 74 6f 72 2d 6e 61 | 6d 65 20 27 6d 65 74 68 |nator-na|me 'meth|
|00002020| 6f 64 0a 58 09 09 09 27 | 2c 6d 65 72 67 65 64 2d |od.X...'|,merged-|
|00002030| 74 79 70 65 2d 73 70 65 | 63 69 66 69 65 72 73 20 |type-spe|cifiers |
|00002040| 27 2c 28 63 64 72 20 6e | 61 6d 65 26 6f 70 74 69 |',(cdr n|ame&opti|
|00002050| 6f 6e 73 29 29 0a 58 09 | 09 20 20 20 20 20 20 28 |ons)).X.|. (|
|00002060| 73 65 74 66 20 28 73 79 | 6d 62 6f 6c 2d 66 75 6e |setf (sy|mbol-fun|
|00002070| 63 74 69 6f 6e 20 27 2c | 6d 65 74 68 6f 64 2d 6e |ction ',|method-n|
|00002080| 61 6d 65 29 0a 58 09 09 | 09 20 20 20 20 23 27 28 |ame).X..|. #'(|
|00002090| 6c 61 6d 62 64 61 20 2c | 6d 65 72 67 65 64 2d 61 |lambda ,|merged-a|
|000020a0| 72 67 73 0a 58 09 09 09 | 09 2c 40 64 6f 63 75 6d |rgs.X...|.,@docum|
|000020b0| 65 6e 74 61 74 69 6f 6e | 0a 58 09 09 09 09 2c 40 |entation|.X....,@|
|000020c0| 64 65 63 6c 61 72 61 74 | 69 6f 6e 73 0a 58 09 09 |declarat|ions.X..|
|000020d0| 09 09 28 64 65 63 6c 61 | 72 65 20 28 6d 65 74 68 |..(decla|re (meth|
|000020e0| 6f 64 2d 66 75 6e 63 74 | 69 6f 6e 2d 6e 61 6d 65 |od-funct|ion-name|
|000020f0| 20 2c 6d 65 74 68 6f 64 | 2d 6e 61 6d 65 29 29 0a | ,method|-name)).|
|00002100| 58 09 09 09 09 2c 28 77 | 72 61 70 2d 6d 65 74 68 |X....,(w|rap-meth|
|00002110| 6f 64 2d 62 6f 64 79 0a | 58 09 09 09 09 20 20 20 |od-body.|X.... |
|00002120| 70 72 6f 74 6f 2d 64 69 | 73 63 72 69 6d 69 6e 61 |proto-di|scrimina|
|00002130| 74 6f 72 0a 58 09 09 09 | 09 20 20 20 28 61 70 70 |tor.X...|. (app|
|00002140| 6c 79 20 27 63 6f 6d 70 | 69 6c 65 2d 6d 65 74 68 |ly 'comp|ile-meth|
|00002150| 6f 64 2d 31 20 6c 6f 61 | 64 2d 6d 65 74 68 6f 64 |od-1 loa|d-method|
|00002160| 2d 31 29 0a 58 09 09 09 | 09 20 20 20 64 69 73 63 |-1).X...|. disc|
|00002170| 72 69 6d 69 6e 61 74 6f | 72 2d 6e 61 6d 65 0a 58 |riminato|r-name.X|
|00002180| 09 09 09 09 20 20 20 64 | 65 66 6d 65 74 68 6f 64 |.... d|efmethod|
|00002190| 2d 75 69 64 0a 58 09 09 | 09 09 20 20 20 6c 6f 61 |-uid.X..|.. loa|
|000021a0| 64 2d 6d 65 74 68 6f 64 | 2d 31 0a 58 09 09 09 09 |d-method|-1.X....|
|000021b0| 20 20 20 62 6f 64 79 29 | 0a 58 09 09 09 09 29 29 | body)|.X....))|
|000021c0| 29 29 0a 58 09 20 20 20 | 20 20 0a 58 09 20 20 20 |)).X. | .X. |
|000021d0| 20 20 28 73 65 74 66 20 | 28 6d 65 74 68 6f 64 2d | (setf |(method-|
|000021e0| 66 75 6e 63 74 69 6f 6e | 20 2c 64 65 66 6d 65 74 |function| ,defmet|
|000021f0| 68 6f 64 2d 75 69 64 29 | 0a 58 09 09 20 20 20 28 |hod-uid)|.X.. (|
|00002200| 73 79 6d 62 6f 6c 2d 66 | 75 6e 63 74 69 6f 6e 20 |symbol-f|unction |
|00002210| 27 2c 6d 65 74 68 6f 64 | 2d 6e 61 6d 65 29 29 0a |',method|-name)).|
|00002220| 58 09 20 20 20 20 20 0a | 58 09 20 20 20 20 20 28 |X. .|X. (|
|00002230| 61 64 64 2d 6d 65 74 68 | 6f 64 20 28 64 69 73 63 |add-meth|od (disc|
|00002240| 72 69 6d 69 6e 61 74 6f | 72 2d 6e 61 6d 65 64 20 |riminato|r-named |
|00002250| 27 2c 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d |',discri|minator-|
|00002260| 6e 61 6d 65 29 0a 58 09 | 09 09 20 2c 64 65 66 6d |name).X.|.. ,defm|
|00002270| 65 74 68 6f 64 2d 75 69 | 64 0a 58 09 09 09 20 28 |ethod-ui|d.X... (|
|00002280| 29 29 29 0a 58 09 20 20 | 20 0a 58 09 20 20 20 28 |))).X. | .X. (|
|00002290| 2c 64 65 66 6d 65 74 68 | 6f 64 2d 75 69 64 29 29 |,defmeth|od-uid))|
|000022a0| 0a 58 09 20 0a 58 09 20 | 28 65 76 61 6c 2d 77 68 |.X. .X. |(eval-wh|
|000022b0| 65 6e 20 28 63 6f 6d 70 | 69 6c 65 20 6c 6f 61 64 |en (comp|ile load|
|000022c0| 20 65 76 61 6c 29 0a 58 | 09 20 20 20 0a 58 09 20 | eval).X|. .X. |
|000022d0| 20 20 2c 40 28 61 6e 64 | 20 73 65 74 66 2d 73 70 | ,@(and| setf-sp|
|000022e0| 65 63 69 66 69 65 64 2d | 70 0a 58 09 09 20 20 60 |ecified-|p.X.. `|
|000022f0| 28 28 72 65 63 6f 72 64 | 2d 64 65 66 69 6e 69 74 |((record|-definit|
|00002300| 69 6f 6e 0a 58 09 09 20 | 20 20 20 20 20 27 2c 6e |ion.X.. | ',n|
|00002310| 61 6d 65 20 27 64 65 66 | 73 65 74 66 20 27 2c 64 |ame 'def|setf ',d|
|00002320| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 6e 61 6d |iscrimin|ator-nam|
|00002330| 65 20 27 64 65 66 6d 65 | 74 68 29 0a 58 09 09 20 |e 'defme|th).X.. |
|00002340| 20 20 20 28 64 65 66 73 | 65 74 66 20 2c 6e 61 6d | (defs|etf ,nam|
|00002350| 65 0a 58 09 09 09 20 20 | 20 20 20 2c 28 61 72 67 |e.X... | ,(arg|
|00002360| 6c 69 73 74 2d 77 69 74 | 68 6f 75 74 2d 74 79 70 |list-wit|hout-typ|
|00002370| 65 2d 73 70 65 63 69 66 | 69 65 72 73 0a 58 09 09 |e-specif|iers.X..|
|00002380| 09 09 70 72 6f 74 6f 2d | 64 69 73 63 72 69 6d 69 |..proto-|discrimi|
|00002390| 6e 61 74 6f 72 20 70 72 | 6f 74 6f 2d 6d 65 74 68 |nator pr|oto-meth|
|000023a0| 6f 64 20 61 72 67 6c 69 | 73 74 29 0a 58 09 09 09 |od argli|st).X...|
|000023b0| 20 20 20 20 20 2c 28 61 | 72 67 6c 69 73 74 2d 77 | ,(a|rglist-w|
|000023c0| 69 74 68 6f 75 74 2d 74 | 79 70 65 2d 73 70 65 63 |ithout-t|ype-spec|
|000023d0| 69 66 69 65 72 73 0a 58 | 09 09 09 09 70 72 6f 74 |ifiers.X|....prot|
|000023e0| 6f 2d 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 |o-discri|minator |
|000023f0| 70 72 6f 74 6f 2d 6d 65 | 74 68 6f 64 20 73 65 74 |proto-me|thod set|
|00002400| 66 29 0a 58 09 09 20 20 | 20 20 20 20 28 6c 69 73 |f).X.. | (lis|
|00002410| 74 20 27 2c 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |t ',disc|riminato|
|00002420| 72 2d 6e 61 6d 65 20 2c | 40 28 61 72 67 6c 69 73 |r-name ,|@(arglis|
|00002430| 74 2d 61 72 67 73 0a 58 | 09 09 09 09 09 09 20 20 |t-args.X|...... |
|00002440| 20 20 20 70 72 6f 74 6f | 2d 64 69 73 63 72 69 6d | proto|-discrim|
|00002450| 69 6e 61 74 6f 72 0a 58 | 09 09 09 09 09 09 20 20 |inator.X|...... |
|00002460| 20 20 20 70 72 6f 74 6f | 2d 6d 65 74 68 6f 64 0a | proto|-method.|
|00002470| 58 09 09 09 09 09 09 20 | 20 20 20 20 6d 65 72 67 |X...... | merg|
|00002480| 65 64 2d 61 72 67 73 29 | 29 29 29 29 0a 58 09 20 |ed-args)|)))).X. |
|00002490| 20 20 0a 58 09 20 20 20 | 27 2c 64 69 73 63 72 69 | .X. |',discri|
|000024a0| 6d 69 6e 61 74 6f 72 2d | 6e 61 6d 65 29 29 29 29 |minator-|name))))|
|000024b0| 29 0a 58 0a 58 28 64 65 | 66 6d 65 74 68 6f 64 20 |).X.X(de|fmethod |
|000024c0| 77 72 61 70 2d 6d 65 74 | 68 6f 64 2d 62 6f 64 79 |wrap-met|hod-body|
|000024d0| 20 28 28 6d 65 78 2d 67 | 65 6e 65 72 69 63 2d 66 | ((mex-g|eneric-f|
|000024e0| 75 6e 63 74 69 6f 6e 20 | 64 69 73 63 72 69 6d 69 |unction |discrimi|
|000024f0| 6e 61 74 6f 72 29 0a 58 | 09 09 09 20 20 20 20 20 |nator).X|... |
|00002500| 28 6d 65 78 2d 6d 65 74 | 68 6f 64 20 6d 65 74 68 |(mex-met|hod meth|
|00002510| 6f 64 29 0a 58 09 09 09 | 20 20 20 20 20 67 65 6e |od).X...| gen|
|00002520| 65 72 69 63 2d 66 75 6e | 63 74 69 6f 6e 2d 6e 61 |eric-fun|ction-na|
|00002530| 6d 65 0a 58 09 09 09 20 | 20 20 20 20 6d 65 74 68 |me.X... | meth|
|00002540| 6f 64 2d 75 69 64 0a 58 | 09 09 09 20 20 20 20 20 |od-uid.X|... |
|00002550| 6c 6f 61 64 2d 6d 65 74 | 68 6f 64 2d 31 2d 61 72 |load-met|hod-1-ar|
|00002560| 67 73 0a 58 09 09 09 20 | 20 20 20 20 62 6f 64 79 |gs.X... | body|
|00002570| 29 0a 58 20 20 28 6c 65 | 74 20 28 28 6d 61 63 72 |).X (le|t ((macr|
|00002580| 6f 65 78 70 61 6e 64 2d | 74 69 6d 65 2d 69 6e 66 |oexpand-|time-inf|
|00002590| 6f 72 6d 61 74 69 6f 6e | 20 28 6c 69 73 74 20 6d |ormation| (list m|
|000025a0| 65 78 2d 67 65 6e 65 72 | 69 63 2d 66 75 6e 63 74 |ex-gener|ic-funct|
|000025b0| 69 6f 6e 0a 58 09 09 09 | 09 09 20 20 20 20 6d 65 |ion.X...|.. me|
|000025c0| 78 2d 6d 65 74 68 6f 64 | 0a 58 09 09 09 09 09 20 |x-method|.X..... |
|000025d0| 20 20 20 67 65 6e 65 72 | 69 63 2d 66 75 6e 63 74 | gener|ic-funct|
|000025e0| 69 6f 6e 2d 6e 61 6d 65 | 0a 58 09 09 09 09 09 20 |ion-name|.X..... |
|000025f0| 20 20 20 6d 65 74 68 6f | 64 2d 75 69 64 0a 58 09 | metho|d-uid.X.|
|00002600| 09 09 09 09 20 20 20 20 | 6c 6f 61 64 2d 6d 65 74 |.... |load-met|
|00002610| 68 6f 64 2d 31 2d 61 72 | 67 73 29 29 29 0a 58 20 |hod-1-ar|gs))).X |
|00002620| 20 20 20 60 28 6d 61 63 | 72 6f 6c 65 74 20 2c 28 | `(mac|rolet ,(|
|00002630| 69 74 65 72 61 74 65 20 | 28 28 28 6e 61 6d 65 20 |iterate |(((name |
|00002640| 61 72 67 6c 69 73 74 20 | 70 61 72 61 6d 73 20 66 |arglist |params f|
|00002650| 6e 29 20 69 6e 20 2a 6d | 65 74 68 6f 64 2d 62 6f |n) in *m|ethod-bo|
|00002660| 64 79 2d 6d 61 63 72 6f | 73 2a 29 29 0a 58 09 09 |dy-macro|s*)).X..|
|00002670| 20 20 28 63 6f 6c 6c 65 | 63 74 20 60 28 2c 6e 61 | (colle|ct `(,na|
|00002680| 6d 65 20 2c 61 72 67 6c | 69 73 74 0a 58 09 09 09 |me ,argl|ist.X...|
|00002690| 20 20 20 20 20 20 20 28 | 66 75 6e 63 61 6c 6c 20 | (|funcall |
|000026a0| 28 66 75 6e 63 74 69 6f | 6e 20 2c 66 6e 29 0a 58 |(functio|n ,fn).X|
|000026b0| 09 09 09 09 09 27 2c 6d | 61 63 72 6f 65 78 70 61 |.....',m|acroexpa|
|000026c0| 6e 64 2d 74 69 6d 65 2d | 69 6e 66 6f 72 6d 61 74 |nd-time-|informat|
|000026d0| 69 6f 6e 0a 58 09 09 09 | 09 09 2c 40 70 61 72 61 |ion.X...|..,@para|
|000026e0| 6d 73 29 29 29 29 0a 58 | 20 20 20 20 20 20 20 28 |ms)))).X| (|
|000026f0| 62 6c 6f 63 6b 20 2c 67 | 65 6e 65 72 69 63 2d 66 |block ,g|eneric-f|
|00002700| 75 6e 63 74 69 6f 6e 2d | 6e 61 6d 65 0a 58 09 20 |unction-|name.X. |
|00002710| 2e 20 2c 62 6f 64 79 29 | 29 29 29 0a 58 0a 58 28 |. ,body)|))).X.X(|
|00002720| 64 65 66 75 6e 20 6d 61 | 63 72 6f 65 78 70 61 6e |defun ma|croexpan|
|00002730| 64 2d 74 69 6d 65 2d 67 | 65 6e 65 72 69 63 2d 66 |d-time-g|eneric-f|
|00002740| 75 6e 63 74 69 6f 6e 20 | 28 6d 74 69 29 20 28 6e |unction |(mti) (n|
|00002750| 74 68 20 30 20 6d 74 69 | 29 29 0a 58 0a 58 28 64 |th 0 mti|)).X.X(d|
|00002760| 65 66 75 6e 20 6d 61 63 | 72 6f 65 78 70 61 6e 64 |efun mac|roexpand|
|00002770| 2d 74 69 6d 65 2d 6d 65 | 74 68 6f 64 20 28 6d 74 |-time-me|thod (mt|
|00002780| 69 29 20 28 6e 74 68 20 | 31 20 6d 74 69 29 29 0a |i) (nth |1 mti)).|
|00002790| 58 0a 58 28 64 65 66 75 | 6e 20 6d 61 63 72 6f 65 |X.X(defu|n macroe|
|000027a0| 78 70 61 6e 64 2d 74 69 | 6d 65 2d 67 65 6e 65 72 |xpand-ti|me-gener|
|000027b0| 69 63 2d 66 75 6e 63 74 | 69 6f 6e 2d 6e 61 6d 65 |ic-funct|ion-name|
|000027c0| 20 28 6d 74 69 29 20 28 | 6e 74 68 20 32 20 6d 74 | (mti) (|nth 2 mt|
|000027d0| 69 29 29 0a 58 0a 58 28 | 64 65 66 75 6e 20 6d 61 |i)).X.X(|defun ma|
|000027e0| 63 72 6f 65 78 70 61 6e | 64 2d 74 69 6d 65 2d 6d |croexpan|d-time-m|
|000027f0| 65 74 68 6f 64 2d 75 69 | 64 20 28 6d 74 69 29 20 |ethod-ui|d (mti) |
|00002800| 28 6e 74 68 20 33 20 6d | 74 69 29 29 0a 58 0a 58 |(nth 3 m|ti)).X.X|
|00002810| 28 64 65 66 75 6e 20 6d | 61 63 72 6f 65 78 70 61 |(defun m|acroexpa|
|00002820| 6e 64 2d 74 69 6d 65 2d | 6c 6f 61 64 2d 6d 65 74 |nd-time-|load-met|
|00002830| 68 6f 64 2d 31 2d 61 72 | 67 73 20 28 6d 74 69 29 |hod-1-ar|gs (mti)|
|00002840| 20 28 6e 74 68 20 34 20 | 6d 74 69 29 29 0a 58 0a | (nth 4 |mti)).X.|
|00002850| 58 0a 58 28 64 65 66 75 | 6e 20 6c 6f 61 64 2d 6d |X.X(defu|n load-m|
|00002860| 65 74 68 6f 64 2d 31 20 | 28 64 69 73 63 72 69 6d |ethod-1 |(discrim|
|00002870| 69 6e 61 74 6f 72 2d 63 | 6c 61 73 73 2d 6e 61 6d |inator-c|lass-nam|
|00002880| 65 0a 58 09 09 20 20 20 | 20 20 20 20 6d 65 74 68 |e.X.. | meth|
|00002890| 6f 64 2d 63 6c 61 73 73 | 2d 6e 61 6d 65 0a 58 09 |od-class|-name.X.|
|000028a0| 09 20 20 20 20 20 20 20 | 64 69 73 63 72 69 6d 69 |. |discrimi|
|000028b0| 6e 61 74 6f 72 2d 6e 61 | 6d 65 0a 58 09 09 20 20 |nator-na|me.X.. |
|000028c0| 20 20 20 20 20 6d 65 74 | 68 6f 64 2d 74 79 70 65 | met|hod-type|
|000028d0| 2d 73 70 65 63 69 66 69 | 65 72 73 0a 58 09 09 20 |-specifi|ers.X.. |
|000028e0| 20 20 20 20 20 6d 65 74 | 68 6f 64 2d 61 72 67 6c | met|hod-argl|
|000028f0| 69 73 74 0a 58 09 09 20 | 20 20 20 20 20 6f 70 74 |ist.X.. | opt|
|00002900| 69 6f 6e 73 29 0a 58 20 | 20 28 6c 65 74 2a 20 28 |ions).X | (let* (|
|00002910| 28 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 0a 58 |(discrim|inator.X|
|00002920| 09 20 20 20 28 65 6e 73 | 75 72 65 2d 73 65 6c 65 |. (ens|ure-sele|
|00002930| 63 74 6f 72 2d 73 70 65 | 63 69 61 6c 69 7a 61 62 |ctor-spe|cializab|
|00002940| 6c 65 0a 58 09 20 20 20 | 20 20 28 63 6c 61 73 73 |le.X. | (class|
|00002950| 2d 70 72 6f 74 6f 74 79 | 70 65 20 28 63 6c 61 73 |-prototy|pe (clas|
|00002960| 73 2d 6e 61 6d 65 64 20 | 64 69 73 63 72 69 6d 69 |s-named |discrimi|
|00002970| 6e 61 74 6f 72 2d 63 6c | 61 73 73 2d 6e 61 6d 65 |nator-cl|ass-name|
|00002980| 29 29 0a 58 09 20 20 20 | 20 20 64 69 73 63 72 69 |)).X. | discri|
|00002990| 6d 69 6e 61 74 6f 72 2d | 6e 61 6d 65 0a 58 09 20 |minator-|name.X. |
|000029a0| 20 20 20 20 6d 65 74 68 | 6f 64 2d 61 72 67 6c 69 | meth|od-argli|
|000029b0| 73 74 29 29 0a 58 09 20 | 28 6d 65 74 68 6f 64 0a |st)).X. |(method.|
|000029c0| 58 09 20 20 20 28 6f 72 | 20 28 66 69 6e 64 2d 6d |X. (or| (find-m|
|000029d0| 65 74 68 6f 64 20 64 69 | 73 63 72 69 6d 69 6e 61 |ethod di|scrimina|
|000029e0| 74 6f 72 20 6d 65 74 68 | 6f 64 2d 74 79 70 65 2d |tor meth|od-type-|
|000029f0| 73 70 65 63 69 66 69 65 | 72 73 20 6f 70 74 69 6f |specifie|rs optio|
|00002a00| 6e 73 20 74 29 0a 58 09 | 20 20 20 20 20 20 20 28 |ns t).X.| (|
|00002a10| 6d 61 6b 65 20 6d 65 74 | 68 6f 64 2d 63 6c 61 73 |make met|hod-clas|
|00002a20| 73 2d 6e 61 6d 65 29 29 | 29 29 0a 58 20 20 20 20 |s-name))|)).X |
|00002a30| 28 73 65 74 66 20 28 6d | 65 74 68 6f 64 2d 61 72 |(setf (m|ethod-ar|
|00002a40| 67 6c 69 73 74 20 6d 65 | 74 68 6f 64 29 20 6d 65 |glist me|thod) me|
|00002a50| 74 68 6f 64 2d 61 72 67 | 6c 69 73 74 29 0a 58 20 |thod-arg|list).X |
|00002a60| 20 20 20 28 73 65 74 66 | 20 28 6d 65 74 68 6f 64 | (setf| (method|
|00002a70| 2d 74 79 70 65 2d 73 70 | 65 63 69 66 69 65 72 73 |-type-sp|ecifiers|
|00002a80| 20 6d 65 74 68 6f 64 29 | 0a 58 09 20 20 28 70 61 | method)|.X. (pa|
|00002a90| 72 73 65 2d 74 79 70 65 | 2d 73 70 65 63 69 66 69 |rse-type|-specifi|
|00002aa0| 65 72 73 0a 58 09 20 20 | 20 20 64 69 73 63 72 69 |ers.X. | discri|
|00002ab0| 6d 69 6e 61 74 6f 72 20 | 6d 65 74 68 6f 64 20 6d |minator |method m|
|00002ac0| 65 74 68 6f 64 2d 74 79 | 70 65 2d 73 70 65 63 69 |ethod-ty|pe-speci|
|00002ad0| 66 69 65 72 73 29 29 0a | 58 20 20 20 20 28 73 65 |fiers)).|X (se|
|00002ae0| 74 66 20 28 6d 65 74 68 | 6f 64 2d 6f 70 74 69 6f |tf (meth|od-optio|
|00002af0| 6e 73 20 6d 65 74 68 6f | 64 29 20 6f 70 74 69 6f |ns metho|d) optio|
|00002b00| 6e 73 29 0a 58 20 20 20 | 20 6d 65 74 68 6f 64 29 |ns).X | method)|
|00002b10| 29 0a 58 0a 58 28 64 65 | 66 75 6e 20 63 6f 6d 70 |).X.X(de|fun comp|
|00002b20| 69 6c 65 2d 6d 65 74 68 | 6f 64 2d 31 20 28 64 69 |ile-meth|od-1 (di|
|00002b30| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 63 6c 61 73 |scrimina|tor-clas|
|00002b40| 73 2d 6e 61 6d 65 0a 58 | 09 09 09 20 6d 65 74 68 |s-name.X|... meth|
|00002b50| 6f 64 2d 63 6c 61 73 73 | 2d 6e 61 6d 65 0a 58 09 |od-class|-name.X.|
|00002b60| 09 09 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |.. discr|iminator|
|00002b70| 2d 6e 61 6d 65 0a 58 09 | 09 09 20 6d 65 74 68 6f |-name.X.|.. metho|
|00002b80| 64 2d 74 79 70 65 2d 73 | 70 65 63 69 66 69 65 72 |d-type-s|pecifier|
|00002b90| 73 0a 58 09 09 09 20 6d | 65 74 68 6f 64 2d 61 72 |s.X... m|ethod-ar|
|00002ba0| 67 6c 69 73 74 0a 58 09 | 09 09 20 6f 70 74 69 6f |glist.X.|.. optio|
|00002bb0| 6e 73 29 0a 58 20 20 28 | 69 67 6e 6f 72 65 20 64 |ns).X (|ignore d|
|00002bc0| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 6e 61 6d |iscrimin|ator-nam|
|00002bd0| 65 29 0a 58 20 20 28 6c | 65 74 20 28 28 6d 65 74 |e).X (l|et ((met|
|00002be0| 68 6f 64 20 28 6d 61 6b | 65 20 6d 65 74 68 6f 64 |hod (mak|e method|
|00002bf0| 2d 63 6c 61 73 73 2d 6e | 61 6d 65 29 29 29 0a 58 |-class-n|ame))).X|
|00002c00| 20 20 20 20 28 73 65 74 | 66 20 28 6d 65 74 68 6f | (set|f (metho|
|00002c10| 64 2d 61 72 67 6c 69 73 | 74 20 6d 65 74 68 6f 64 |d-arglis|t method|
|00002c20| 29 20 6d 65 74 68 6f 64 | 2d 61 72 67 6c 69 73 74 |) method|-arglist|
|00002c30| 29 0a 58 20 20 20 20 28 | 73 65 74 66 20 28 6d 65 |).X (|setf (me|
|00002c40| 74 68 6f 64 2d 74 79 70 | 65 2d 73 70 65 63 69 66 |thod-typ|e-specif|
|00002c50| 69 65 72 73 20 6d 65 74 | 68 6f 64 29 0a 58 20 20 |iers met|hod).X |
|00002c60| 20 20 20 20 20 20 20 20 | 28 70 61 72 73 65 2d 74 | |(parse-t|
|00002c70| 79 70 65 2d 73 70 65 63 | 69 66 69 65 72 73 0a 58 |ype-spec|ifiers.X|
|00002c80| 09 20 20 20 20 28 63 6c | 61 73 73 2d 70 72 6f 74 |. (cl|ass-prot|
|00002c90| 6f 74 79 70 65 20 28 63 | 6c 61 73 73 2d 6e 61 6d |otype (c|lass-nam|
|00002ca0| 65 64 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |ed discr|iminator|
|00002cb0| 2d 63 6c 61 73 73 2d 6e | 61 6d 65 29 29 0a 58 09 |-class-n|ame)).X.|
|00002cc0| 20 20 20 20 6d 65 74 68 | 6f 64 0a 58 09 20 20 20 | meth|od.X. |
|00002cd0| 20 6d 65 74 68 6f 64 2d | 74 79 70 65 2d 73 70 65 | method-|type-spe|
|00002ce0| 63 69 66 69 65 72 73 29 | 29 0a 58 20 20 20 20 28 |cifiers)|).X (|
|00002cf0| 73 65 74 66 20 28 6d 65 | 74 68 6f 64 2d 6f 70 74 |setf (me|thod-opt|
|00002d00| 69 6f 6e 73 20 6d 65 74 | 68 6f 64 29 20 6f 70 74 |ions met|hod) opt|
|00002d10| 69 6f 6e 73 29 0a 58 20 | 20 20 20 6d 65 74 68 6f |ions).X | metho|
|00002d20| 64 29 29 0a 58 0a 58 0a | 58 0a 58 28 64 65 66 6d |d)).X.X.|X.X(defm|
|00002d30| 65 74 68 20 61 64 64 2d | 6e 61 6d 65 64 2d 6d 65 |eth add-|named-me|
|00002d40| 74 68 6f 64 20 28 28 70 | 72 6f 74 6f 2d 64 69 73 |thod ((p|roto-dis|
|00002d50| 63 72 69 6d 69 6e 61 74 | 6f 72 20 65 73 73 65 6e |criminat|or essen|
|00002d60| 74 69 61 6c 2d 64 69 73 | 63 72 69 6d 69 6e 61 74 |tial-dis|criminat|
|00002d70| 6f 72 29 0a 58 09 09 09 | 20 20 20 28 70 72 6f 74 |or).X...| (prot|
|00002d80| 6f 2d 6d 65 74 68 6f 64 | 20 65 73 73 65 6e 74 69 |o-method| essenti|
|00002d90| 61 6c 2d 6d 65 74 68 6f | 64 29 0a 58 09 09 09 20 |al-metho|d).X... |
|00002da0| 20 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d | discri|minator-|
|00002db0| 6e 61 6d 65 0a 58 09 09 | 09 20 20 20 61 72 67 6c |name.X..|. argl|
|00002dc0| 69 73 74 0a 58 09 09 09 | 20 20 20 74 79 70 65 2d |ist.X...| type-|
|00002dd0| 73 70 65 63 73 0a 58 09 | 09 09 20 20 20 65 78 74 |specs.X.|.. ext|
|00002de0| 72 61 0a 58 09 09 09 20 | 20 20 66 75 6e 63 74 69 |ra.X... | functi|
|00002df0| 6f 6e 29 0a 58 20 20 3b | 3b 20 57 68 61 74 20 61 |on).X ;|; What a|
|00002e00| 62 6f 75 74 20 63 68 61 | 6e 67 69 6e 67 20 74 68 |bout cha|nging th|
|00002e10| 65 20 63 6c 61 73 73 20 | 6f 66 20 74 68 65 20 64 |e class |of the d|
|00002e20| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 20 69 66 20 |iscrimin|ator if |
|00002e30| 74 68 65 72 65 20 69 73 | 0a 58 20 20 3b 3b 20 6f |there is|.X ;; o|
|00002e40| 6e 65 2e 20 20 57 68 6f | 73 65 20 6a 6f 62 20 69 |ne. Who|se job i|
|00002e50| 73 20 74 68 61 74 20 61 | 6e 79 77 61 79 73 2e 20 |s that a|nyways. |
|00002e60| 20 44 6f 20 77 65 20 6e | 65 65 64 20 73 6f 6d 65 | Do we n|eed some|
|00002e70| 74 68 69 6e 67 20 6b 69 | 6e 64 20 6f 66 0a 58 20 |thing ki|nd of.X |
|00002e80| 20 3b 3b 20 6c 69 6b 65 | 20 63 6c 61 73 73 2d 66 | ;; like| class-f|
|00002e90| 6f 72 2d 72 65 64 65 66 | 69 6e 69 74 69 6f 6e 3f |or-redef|inition?|
|00002ea0| 0a 58 20 20 28 6c 65 74 | 2a 20 28 28 64 69 73 63 |.X (let|* ((disc|
|00002eb0| 72 69 6d 69 6e 61 74 6f | 72 0a 58 09 20 20 20 3b |riminato|r.X. ;|
|00002ec0| 3b 20 4d 6f 64 75 6c 6f | 20 62 6f 6f 74 73 74 72 |; Modulo| bootstr|
|00002ed0| 61 70 70 69 6e 67 20 68 | 61 69 72 2c 20 74 68 69 |apping h|air, thi|
|00002ee0| 73 20 69 73 20 6a 75 73 | 74 3a 0a 58 09 20 20 20 |s is jus|t:.X. |
|00002ef0| 3b 3b 20 20 20 28 6f 72 | 20 28 64 69 73 63 72 69 |;; (or| (discri|
|00002f00| 6d 69 6e 61 74 6f 72 2d | 6e 61 6d 65 64 20 2e 2e |minator-|named ..|
|00002f10| 29 0a 58 09 20 20 20 3b | 3b 20 20 20 20 20 20 20 |).X. ;|; |
|00002f20| 28 6d 61 6b 65 2d 73 70 | 65 63 69 61 6c 69 7a 61 |(make-sp|ecializa|
|00002f30| 62 6c 65 29 29 0a 58 09 | 20 20 20 28 65 6e 73 75 |ble)).X.| (ensu|
|00002f40| 72 65 2d 73 65 6c 65 63 | 74 6f 72 2d 73 70 65 63 |re-selec|tor-spec|
|00002f50| 69 61 6c 69 7a 61 62 6c | 65 20 70 72 6f 74 6f 2d |ializabl|e proto-|
|00002f60| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 0a 58 09 |discrimi|nator.X.|
|00002f70| 09 09 09 09 20 20 64 69 | 73 63 72 69 6d 69 6e 61 |.... di|scrimina|
|00002f80| 74 6f 72 2d 6e 61 6d 65 | 0a 58 09 09 09 09 09 20 |tor-name|.X..... |
|00002f90| 20 61 72 67 6c 69 73 74 | 29 29 0a 58 09 20 28 65 | arglist|)).X. (e|
|00002fa0| 78 69 73 74 69 6e 67 20 | 28 66 69 6e 64 2d 6d 65 |xisting |(find-me|
|00002fb0| 74 68 6f 64 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |thod dis|criminat|
|00002fc0| 6f 72 20 74 79 70 65 2d | 73 70 65 63 73 20 65 78 |or type-|specs ex|
|00002fd0| 74 72 61 20 74 29 29 0a | 58 09 20 28 6d 65 74 68 |tra t)).|X. (meth|
|00002fe0| 6f 64 20 28 6f 72 20 65 | 78 69 73 74 69 6e 67 0a |od (or e|xisting.|
|00002ff0| 58 09 09 20 20 20 20 20 | 28 6d 61 6b 65 20 28 63 |X.. |(make (c|
|00003000| 6c 61 73 73 2d 6f 66 20 | 70 72 6f 74 6f 2d 6d 65 |lass-of |proto-me|
|00003010| 74 68 6f 64 29 29 29 29 | 29 0a 58 20 20 20 20 28 |thod))))|).X (|
|00003020| 77 68 65 6e 20 65 78 69 | 73 74 69 6e 67 20 28 63 |when exi|sting (c|
|00003030| 68 61 6e 67 65 2d 63 6c | 61 73 73 20 6d 65 74 68 |hange-cl|ass meth|
|00003040| 6f 64 20 28 63 6c 61 73 | 73 2d 6f 66 20 70 72 6f |od (clas|s-of pro|
|00003050| 74 6f 2d 6d 65 74 68 6f | 64 29 29 29 0a 58 20 20 |to-metho|d))).X |
|00003060| 20 20 28 73 65 74 66 20 | 28 6d 65 74 68 6f 64 2d | (setf |(method-|
|00003070| 61 72 67 6c 69 73 74 20 | 6d 65 74 68 6f 64 29 20 |arglist |method) |
|00003080| 61 72 67 6c 69 73 74 29 | 0a 58 20 20 20 20 28 73 |arglist)|.X (s|
|00003090| 65 74 66 20 28 6d 65 74 | 68 6f 64 2d 66 75 6e 63 |etf (met|hod-func|
|000030a0| 74 69 6f 6e 20 6d 65 74 | 68 6f 64 29 20 66 75 6e |tion met|hod) fun|
|000030b0| 63 74 69 6f 6e 29 0a 58 | 20 20 20 20 28 73 65 74 |ction).X| (set|
|000030c0| 66 20 28 6d 65 74 68 6f | 64 2d 74 79 70 65 2d 73 |f (metho|d-type-s|
|000030d0| 70 65 63 69 66 69 65 72 | 73 20 6d 65 74 68 6f 64 |pecifier|s method|
|000030e0| 29 20 74 79 70 65 2d 73 | 70 65 63 73 29 0a 58 20 |) type-s|pecs).X |
|000030f0| 20 20 20 28 61 64 64 2d | 6d 65 74 68 6f 64 20 64 | (add-|method d|
|00003100| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 20 6d 65 74 |iscrimin|ator met|
|00003110| 68 6f 64 20 65 78 74 72 | 61 29 29 29 0a 58 0a 58 |hod extr|a))).X.X|
|00003120| 28 64 65 66 6d 65 74 68 | 20 61 64 64 2d 6d 65 74 |(defmeth| add-met|
|00003130| 68 6f 64 20 28 28 64 69 | 73 63 72 69 6d 69 6e 61 |hod ((di|scrimina|
|00003140| 74 6f 72 20 65 73 73 65 | 6e 74 69 61 6c 2d 64 69 |tor esse|ntial-di|
|00003150| 73 63 72 69 6d 69 6e 61 | 74 6f 72 29 0a 58 09 09 |scrimina|tor).X..|
|00003160| 20 20 20 20 20 28 6d 65 | 74 68 6f 64 20 65 73 73 | (me|thod ess|
|00003170| 65 6e 74 69 61 6c 2d 6d | 65 74 68 6f 64 29 0a 58 |ential-m|ethod).X|
|00003180| 09 09 20 20 20 20 20 65 | 78 74 72 61 29 0a 58 20 |.. e|xtra).X |
|00003190| 20 28 69 67 6e 6f 72 65 | 20 65 78 74 72 61 29 0a | (ignore| extra).|
|000031a0| 58 20 20 28 6c 65 74 20 | 28 28 74 79 70 65 2d 73 |X (let |((type-s|
|000031b0| 70 65 63 73 20 28 6d 65 | 74 68 6f 64 2d 74 79 70 |pecs (me|thod-typ|
|000031c0| 65 2d 73 70 65 63 69 66 | 69 65 72 73 20 6d 65 74 |e-specif|iers met|
|000031d0| 68 6f 64 29 29 0a 58 20 | 20 20 20 20 20 20 3b 28 |hod)).X | ;(|
|000031e0| 6f 70 74 69 6f 6e 73 20 | 28 6d 65 74 68 6f 64 2d |options |(method-|
|000031f0| 6f 70 74 69 6f 6e 73 20 | 6d 65 74 68 6f 64 29 29 |options |method))|
|00003200| 0a 58 20 20 20 20 20 20 | 20 3b 28 6d 65 74 68 6f |.X | ;(metho|
|00003210| 64 73 20 28 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |ds (disc|riminato|
|00003220| 72 2d 6d 65 74 68 6f 64 | 73 20 64 69 73 63 72 69 |r-method|s discri|
|00003230| 6d 69 6e 61 74 6f 72 29 | 29 0a 58 09 29 0a 58 20 |minator)|).X.).X |
|00003240| 20 20 20 28 73 65 74 66 | 20 28 6d 65 74 68 6f 64 | (setf| (method|
|00003250| 2d 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 20 6d |-discrim|inator m|
|00003260| 65 74 68 6f 64 29 20 64 | 69 73 63 72 69 6d 69 6e |ethod) d|iscrimin|
|00003270| 61 74 6f 72 29 0a 58 3b | 20 20 20 20 3b 3b 20 50 |ator).X;| ;; P|
|00003280| 75 74 20 74 68 65 20 6e | 65 77 20 6d 65 74 68 6f |ut the n|ew metho|
|00003290| 64 20 77 68 65 72 65 20 | 69 74 20 62 65 6c 6f 6e |d where |it belon|
|000032a0| 67 73 2c 20 65 69 74 68 | 65 72 3a 0a 58 3b 20 20 |gs, eith|er:.X; |
|000032b0| 20 20 3b 3b 20 20 2d 20 | 54 68 65 20 73 61 6d 65 | ;; - |The same|
|000032c0| 20 28 45 51 29 20 6d 65 | 74 68 6f 64 20 6f 62 6a | (EQ) me|thod obj|
|000032d0| 65 63 74 20 69 73 20 61 | 6c 72 65 61 64 79 20 6f |ect is a|lready o|
|000032e0| 6e 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d |n discri|minator-|
|000032f0| 6d 65 74 68 6f 64 73 0a | 58 3b 20 20 20 20 3b 3b |methods.|X; ;;|
|00003300| 20 20 20 20 6f 66 20 74 | 68 65 20 64 69 73 63 72 | of t|he discr|
|00003310| 69 6d 69 6e 61 74 6f 72 | 20 73 6f 20 77 65 20 64 |iminator| so we d|
|00003320| 6f 6e 27 74 20 6e 65 65 | 64 20 74 6f 20 64 6f 20 |on't nee|d to do |
|00003330| 61 6e 79 74 68 69 6e 67 | 20 74 6f 20 70 75 74 20 |anything| to put |
|00003340| 74 68 65 0a 58 3b 20 20 | 20 20 3b 3b 20 20 20 20 |the.X; | ;; |
|00003350| 6e 65 77 20 6d 65 74 68 | 6f 64 73 20 77 68 65 72 |new meth|ods wher|
|00003360| 65 20 69 74 20 62 65 6c | 6f 6e 67 73 2e 0a 58 3b |e it bel|ongs..X;|
|00003370| 20 20 20 20 3b 3b 20 20 | 2d 20 54 68 65 72 65 20 | ;; |- There |
|00003380| 69 73 20 61 6e 20 6d 65 | 74 68 6f 64 20 6f 6e 20 |is an me|thod on |
|00003390| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 6d 65 |discrimi|nator-me|
|000033a0| 74 68 6f 64 73 20 77 68 | 69 63 68 20 69 73 20 65 |thods wh|ich is e|
|000033b0| 71 75 61 6c 20 74 6f 0a | 58 3b 20 20 20 20 3b 3b |qual to.|X; ;;|
|000033c0| 20 20 20 20 74 68 65 20 | 6e 65 77 20 6d 65 74 68 | the |new meth|
|000033d0| 6f 64 20 28 61 63 63 6f | 72 64 69 6e 67 20 74 6f |od (acco|rding to|
|000033e0| 20 4d 45 54 48 4f 44 2d | 45 51 55 41 4c 29 2e 20 | METHOD-|EQUAL). |
|000033f0| 20 49 6e 20 74 68 69 73 | 20 63 61 73 65 2c 20 77 | In this| case, w|
|00003400| 65 0a 58 3b 20 20 20 20 | 3b 3b 20 20 20 20 72 65 |e.X; |;; re|
|00003410| 70 6c 61 63 65 20 74 68 | 65 20 65 78 69 73 74 69 |place th|e existi|
|00003420| 6e 67 20 6d 65 74 68 6f | 64 20 77 69 74 68 20 74 |ng metho|d with t|
|00003430| 68 65 20 6e 65 77 20 6f | 6e 65 2e 0a 58 3b 20 20 |he new o|ne..X; |
|00003440| 20 20 3b 3b 20 20 2d 20 | 57 65 20 6a 75 73 74 20 | ;; - |We just |
|00003450| 61 64 64 20 74 68 65 20 | 6e 65 77 20 6d 65 74 68 |add the |new meth|
|00003460| 6f 64 20 74 6f 20 64 69 | 73 63 72 69 6d 69 6e 61 |od to di|scrimina|
|00003470| 74 6f 72 2d 6d 65 74 68 | 6f 64 73 20 62 79 20 70 |tor-meth|ods by p|
|00003480| 75 73 68 69 6e 67 0a 58 | 3b 20 20 20 20 3b 3b 20 |ushing.X|; ;; |
|00003490| 20 20 20 69 74 20 6f 6e | 74 6f 20 74 68 61 74 20 | it on|to that |
|000034a0| 6c 69 73 74 2e 0a 58 3b | 20 20 20 20 28 75 6e 6c |list..X;| (unl|
|000034b0| 65 73 73 20 28 6d 65 6d | 71 20 6d 65 74 68 6f 64 |ess (mem|q method|
|000034c0| 20 6d 65 74 68 6f 64 73 | 29 0a 58 3b 20 20 20 20 | methods|).X; |
|000034d0| 20 20 28 64 6f 2a 20 28 | 28 74 61 69 6c 20 28 64 | (do* (|(tail (d|
|000034e0| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 6d 65 74 |iscrimin|ator-met|
|000034f0| 68 6f 64 73 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |hods dis|criminat|
|00003500| 6f 72 29 20 28 63 64 72 | 20 74 61 69 6c 29 29 0a |or) (cdr| tail)).|
|00003510| 58 3b 09 20 20 20 20 28 | 65 78 69 73 74 69 6e 67 |X;. (|existing|
|00003520| 2d 6d 65 74 68 6f 64 20 | 28 63 61 72 20 74 61 69 |-method |(car tai|
|00003530| 6c 29 20 28 63 61 72 20 | 74 61 69 6c 29 29 29 0a |l) (car |tail))).|
|00003540| 58 3b 09 20 20 20 28 28 | 63 6f 6e 64 20 28 28 6e |X;. ((|cond ((n|
|00003550| 75 6c 6c 20 65 78 69 73 | 74 69 6e 67 2d 6d 65 74 |ull exis|ting-met|
|00003560| 68 6f 64 29 09 09 20 0a | 58 3b 09 09 20 20 20 28 |hod).. .|X;.. (|
|00003570| 70 75 73 68 20 6d 65 74 | 68 6f 64 20 28 64 69 73 |push met|hod (dis|
|00003580| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 6d 65 74 68 6f |criminat|or-metho|
|00003590| 64 73 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |ds discr|iminator|
|000035a0| 29 29 29 0a 58 3b 09 09 | 20 20 28 28 6d 65 74 68 |))).X;..| ((meth|
|000035b0| 6f 64 2d 65 71 75 61 6c | 20 65 78 69 73 74 69 6e |od-equal| existin|
|000035c0| 67 2d 6d 65 74 68 6f 64 | 20 74 79 70 65 2d 73 70 |g-method| type-sp|
|000035d0| 65 63 73 20 6f 70 74 69 | 6f 6e 73 29 0a 58 3b 09 |ecs opti|ons).X;.|
|000035e0| 09 20 20 20 28 72 65 6d | 6f 76 65 2d 6d 65 74 68 |. (rem|ove-meth|
|000035f0| 6f 64 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |od discr|iminator|
|00003600| 20 65 78 69 73 74 69 6e | 67 2d 6d 65 74 68 6f 64 | existin|g-method|
|00003610| 29 0a 58 3b 09 09 20 20 | 20 28 72 65 74 75 72 6e |).X;.. | (return|
|00003620| 20 28 61 64 64 2d 6d 65 | 74 68 6f 64 20 64 69 73 | (add-me|thod dis|
|00003630| 63 72 69 6d 69 6e 61 74 | 6f 72 20 6d 65 74 68 6f |criminat|or metho|
|00003640| 64 29 29 29 29 0a 58 3b | 09 20 20 20 20 0a 58 3b |d)))).X;|. .X;|
|00003650| 09 20 20 20 20 28 77 68 | 65 6e 20 28 6d 65 74 68 |. (wh|en (meth|
|00003660| 6f 64 2d 63 61 75 73 65 | 73 2d 63 6f 6d 62 69 6e |od-cause|s-combin|
|00003670| 61 74 69 6f 6e 2d 70 20 | 6d 65 74 68 6f 64 29 09 |ation-p |method).|
|00003680| 20 20 20 20 20 20 20 20 | 20 3b 4e 4f 54 20 70 61 | | ;NOT pa|
|00003690| 72 74 20 6f 66 0a 58 3b | 09 20 20 20 20 20 20 28 |rt of.X;|. (|
|000036a0| 70 75 73 68 6e 65 77 20 | 6d 65 74 68 6f 64 20 28 |pushnew |method (|
|000036b0| 6d 65 74 68 6f 64 73 2d | 63 6f 6d 62 69 6e 65 2d |methods-|combine-|
|000036c0| 70 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 29 |p discri|minator)|
|000036d0| 29 29 3b 73 74 61 6e 64 | 61 72 64 0a 58 3b 09 09 |));stand|ard.X;..|
|000036e0| 09 09 09 09 20 20 20 20 | 20 20 20 20 20 20 20 20 |.... | |
|000036f0| 20 20 20 20 20 3b 70 72 | 6f 74 6f 63 6f 6c 2e 0a | ;pr|otocol..|
|00003700| 58 3b 09 20 20 20 20 28 | 64 6f 6c 69 73 74 20 28 |X;. (|dolist (|
|00003710| 61 72 67 75 6d 65 6e 74 | 2d 73 70 65 63 69 66 69 |argument|-specifi|
|00003720| 65 72 20 74 79 70 65 2d | 73 70 65 63 73 29 0a 58 |er type-|specs).X|
|00003730| 3b 09 20 20 20 20 20 20 | 28 61 64 64 2d 6d 65 74 |;. |(add-met|
|00003740| 68 6f 64 2d 6f 6e 2d 61 | 72 67 75 6d 65 6e 74 2d |hod-on-a|rgument-|
|00003750| 73 70 65 63 69 66 69 65 | 72 20 64 69 73 63 72 69 |specifie|r discri|
|00003760| 6d 69 6e 61 74 6f 72 0a | 58 3b 09 09 09 09 09 09 |minator.|X;......|
|00003770| 6d 65 74 68 6f 64 0a 58 | 3b 09 09 09 09 09 09 61 |method.X|;......a|
|00003780| 72 67 75 6d 65 6e 74 2d | 73 70 65 63 69 66 69 65 |rgument-|specifie|
|00003790| 72 29 29 29 0a 58 3b 09 | 28 29 29 29 0a 58 20 20 |r))).X;.|())).X |
|000037a0| 20 20 28 70 75 73 68 6e | 65 77 20 6d 65 74 68 6f | (pushn|ew metho|
|000037b0| 64 20 28 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |d (discr|iminator|
|000037c0| 2d 6d 65 74 68 6f 64 73 | 20 64 69 73 63 72 69 6d |-methods| discrim|
|000037d0| 69 6e 61 74 6f 72 29 29 | 0a 58 20 20 20 20 28 64 |inator))|.X (d|
|000037e0| 6f 6c 69 73 74 20 28 61 | 72 67 75 6d 65 6e 74 2d |olist (a|rgument-|
|000037f0| 73 70 65 63 69 66 69 65 | 72 20 74 79 70 65 2d 73 |specifie|r type-s|
|00003800| 70 65 63 73 29 0a 58 20 | 20 20 20 20 20 28 61 64 |pecs).X | (ad|
|00003810| 64 2d 6d 65 74 68 6f 64 | 2d 6f 6e 2d 61 72 67 75 |d-method|-on-argu|
|00003820| 6d 65 6e 74 2d 73 70 65 | 63 69 66 69 65 72 20 64 |ment-spe|cifier d|
|00003830| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 0a 58 09 09 |iscrimin|ator.X..|
|00003840| 09 09 09 6d 65 74 68 6f | 64 0a 58 09 09 09 09 09 |...metho|d.X.....|
|00003850| 61 72 67 75 6d 65 6e 74 | 2d 73 70 65 63 69 66 69 |argument|-specifi|
|00003860| 65 72 29 29 29 0a 58 20 | 20 20 20 28 64 69 73 63 |er))).X | (disc|
|00003870| 72 69 6d 69 6e 61 74 6f | 72 2d 63 68 61 6e 67 65 |riminato|r-change|
|00003880| 64 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 |d discri|minator |
|00003890| 6d 65 74 68 6f 64 20 74 | 29 0a 58 20 20 20 20 28 |method t|).X (|
|000038a0| 75 70 64 61 74 65 2d 70 | 72 65 74 74 79 2d 61 72 |update-p|retty-ar|
|000038b0| 67 6c 69 73 74 20 64 69 | 73 63 72 69 6d 69 6e 61 |glist di|scrimina|
|000038c0| 74 6f 72 20 6d 65 74 68 | 6f 64 29 09 3b 4e 4f 54 |tor meth|od).;NOT|
|000038d0| 20 70 61 72 74 20 6f 66 | 0a 58 09 09 09 09 09 09 | part of|.X......|
|000038e0| 20 20 20 20 20 20 20 20 | 3b 73 74 61 6e 64 61 72 | |;standar|
|000038f0| 64 20 70 72 6f 74 6f 63 | 6f 6c 2e 0a 58 20 20 20 |d protoc|ol..X |
|00003900| 20 28 29 29 0a 58 0a 58 | 0a 58 28 64 65 66 6d 65 | ()).X.X|.X(defme|
|00003910| 74 68 20 72 65 6d 6f 76 | 65 2d 6e 61 6d 65 64 2d |th remov|e-named-|
|00003920| 6d 65 74 68 6f 64 20 28 | 64 69 73 63 72 69 6d 69 |method (|discrimi|
|00003930| 6e 61 74 6f 72 2d 6e 61 | 6d 65 0a 58 09 09 09 20 |nator-na|me.X... |
|00003940| 20 20 20 20 20 61 72 67 | 75 6d 65 6e 74 2d 73 70 | arg|ument-sp|
|00003950| 65 63 69 66 69 65 72 73 | 0a 58 09 09 09 20 20 20 |ecifiers|.X... |
|00003960| 20 20 20 26 6f 70 74 69 | 6f 6e 61 6c 20 65 78 74 | &opti|onal ext|
|00003970| 72 61 29 0a 58 20 20 28 | 6c 65 74 20 28 28 64 69 |ra).X (|let ((di|
|00003980| 73 63 72 69 6d 69 6e 61 | 74 6f 72 20 28 29 29 0a |scrimina|tor ()).|
|00003990| 58 09 28 6d 65 74 68 6f | 64 20 28 29 29 29 0a 58 |X.(metho|d ())).X|
|000039a0| 20 20 20 20 28 63 6f 6e | 64 20 28 28 6e 75 6c 6c | (con|d ((null|
|000039b0| 20 28 73 65 74 71 20 64 | 69 73 63 72 69 6d 69 6e | (setq d|iscrimin|
|000039c0| 61 74 6f 72 20 28 64 69 | 73 63 72 69 6d 69 6e 61 |ator (di|scrimina|
|000039d0| 74 6f 72 2d 6e 61 6d 65 | 64 0a 58 09 09 09 09 20 |tor-name|d.X.... |
|000039e0| 20 20 20 20 20 20 64 69 | 73 63 72 69 6d 69 6e 61 | di|scrimina|
|000039f0| 74 6f 72 2d 6e 61 6d 65 | 29 29 29 0a 58 09 20 20 |tor-name|))).X. |
|00003a00| 20 28 65 72 72 6f 72 20 | 22 54 68 65 72 65 20 69 | (error |"There i|
|00003a10| 73 20 6e 6f 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |s no dis|criminat|
|00003a20| 6f 72 20 6e 61 6d 65 64 | 20 7e 53 2e 22 20 64 69 |or named| ~S." di|
|00003a30| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 6e 61 6d 65 |scrimina|tor-name|
|00003a40| 29 29 0a 58 09 20 20 28 | 28 6e 75 6c 6c 20 28 73 |)).X. (|(null (s|
|00003a50| 65 74 71 20 6d 65 74 68 | 6f 64 20 28 66 69 6e 64 |etq meth|od (find|
|00003a60| 2d 6d 65 74 68 6f 64 20 | 64 69 73 63 72 69 6d 69 |-method |discrimi|
|00003a70| 6e 61 74 6f 72 0a 58 09 | 09 09 09 09 20 20 20 61 |nator.X.|.... a|
|00003a80| 72 67 75 6d 65 6e 74 2d | 73 70 65 63 69 66 69 65 |rgument-|specifie|
|00003a90| 72 73 20 0a 58 09 09 09 | 09 09 20 20 20 65 78 74 |rs .X...|.. ext|
|00003aa0| 72 61 0a 58 09 09 09 09 | 09 20 20 20 74 29 29 29 |ra.X....|. t)))|
|00003ab0| 0a 58 09 20 20 20 28 65 | 72 72 6f 72 20 22 54 68 |.X. (e|rror "Th|
|00003ac0| 65 72 65 20 69 73 20 6e | 6f 20 6d 65 74 68 6f 64 |ere is n|o method|
|00003ad0| 20 66 6f 72 20 74 68 65 | 20 64 69 73 63 72 69 6d | for the| discrim|
|00003ae0| 69 6e 61 74 6f 72 20 7e | 53 7e 25 7e 0a 58 20 20 |inator ~|S~%~.X |
|00003af0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003b00| 20 77 68 69 63 68 20 6d | 61 74 63 68 65 73 20 74 | which m|atches t|
|00003b10| 68 65 20 61 72 67 75 6d | 65 6e 74 2d 73 70 65 63 |he argum|ent-spec|
|00003b20| 69 66 69 65 72 73 20 7e | 53 2e 22 0a 58 09 09 20 |ifiers ~|S.".X.. |
|00003b30| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 0a 58 | discrim|inator.X|
|00003b40| 09 09 20 20 61 72 67 75 | 6d 65 6e 74 2d 73 70 65 |.. argu|ment-spe|
|00003b50| 63 69 66 69 65 72 73 29 | 29 0a 58 09 20 20 28 74 |cifiers)|).X. (t|
|00003b60| 0a 58 09 20 20 20 28 72 | 65 6d 6f 76 65 2d 6d 65 |.X. (r|emove-me|
|00003b70| 74 68 6f 64 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |thod dis|criminat|
|00003b80| 6f 72 20 6d 65 74 68 6f | 64 29 29 29 29 29 0a 58 |or metho|d))))).X|
|00003b90| 0a 58 28 64 65 66 6d 65 | 74 68 20 72 65 6d 6f 76 |.X(defme|th remov|
|00003ba0| 65 2d 6d 65 74 68 6f 64 | 20 28 28 64 69 73 63 72 |e-method| ((discr|
|00003bb0| 69 6d 69 6e 61 74 6f 72 | 20 62 61 73 69 63 2d 64 |iminator| basic-d|
|00003bc0| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 29 20 6d 65 |iscrimin|ator) me|
|00003bd0| 74 68 6f 64 29 0a 58 20 | 20 28 73 65 74 66 20 28 |thod).X | (setf (|
|00003be0| 6d 65 74 68 6f 64 2d 64 | 69 73 63 72 69 6d 69 6e |method-d|iscrimin|
|00003bf0| 61 74 6f 72 20 6d 65 74 | 68 6f 64 29 20 6e 69 6c |ator met|hod) nil|
|00003c00| 29 0a 58 20 20 28 73 65 | 74 66 20 28 64 69 73 63 |).X (se|tf (disc|
|00003c10| 72 69 6d 69 6e 61 74 6f | 72 2d 6d 65 74 68 6f 64 |riminato|r-method|
|00003c20| 73 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 29 |s discri|minator)|
|00003c30| 0a 58 09 28 64 65 6c 71 | 20 6d 65 74 68 6f 64 20 |.X.(delq| method |
|00003c40| 28 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 2d 6d |(discrim|inator-m|
|00003c50| 65 74 68 6f 64 73 20 64 | 69 73 63 72 69 6d 69 6e |ethods d|iscrimin|
|00003c60| 61 74 6f 72 29 29 29 0a | 58 20 20 28 64 6f 6c 69 |ator))).|X (doli|
|00003c70| 73 74 20 28 74 79 70 65 | 2d 73 70 65 63 20 28 6d |st (type|-spec (m|
|00003c80| 65 74 68 6f 64 2d 74 79 | 70 65 2d 73 70 65 63 69 |ethod-ty|pe-speci|
|00003c90| 66 69 65 72 73 20 6d 65 | 74 68 6f 64 29 29 0a 58 |fiers me|thod)).X|
|00003ca0| 20 20 20 20 28 72 65 6d | 6f 76 65 2d 6d 65 74 68 | (rem|ove-meth|
|00003cb0| 6f 64 2d 6f 6e 2d 61 72 | 67 75 6d 65 6e 74 2d 73 |od-on-ar|gument-s|
|00003cc0| 70 65 63 69 66 69 65 72 | 20 64 69 73 63 72 69 6d |pecifier| discrim|
|00003cd0| 69 6e 61 74 6f 72 20 6d | 65 74 68 6f 64 20 74 79 |inator m|ethod ty|
|00003ce0| 70 65 2d 73 70 65 63 29 | 29 0a 58 20 20 28 64 69 |pe-spec)|).X (di|
|00003cf0| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 63 68 61 6e |scrimina|tor-chan|
|00003d00| 67 65 64 20 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |ged disc|riminato|
|00003d10| 72 20 6d 65 74 68 6f 64 | 20 6e 69 6c 29 0a 58 20 |r method| nil).X |
|00003d20| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 29 0a | discrim|inator).|
|00003d30| 58 0a 58 0a 58 0a 58 28 | 64 65 66 6d 65 74 68 20 |X.X.X.X(|defmeth |
|00003d40| 61 64 64 2d 6d 65 74 68 | 6f 64 2d 6f 6e 2d 61 72 |add-meth|od-on-ar|
|00003d50| 67 75 6d 65 6e 74 2d 73 | 70 65 63 69 66 69 65 72 |gument-s|pecifier|
|00003d60| 0a 58 09 20 28 28 64 69 | 73 63 72 69 6d 69 6e 61 |.X. ((di|scrimina|
|00003d70| 74 6f 72 20 65 73 73 65 | 6e 74 69 61 6c 2d 64 69 |tor esse|ntial-di|
|00003d80| 73 63 72 69 6d 69 6e 61 | 74 6f 72 29 0a 58 09 20 |scrimina|tor).X. |
|00003d90| 20 28 6d 65 74 68 6f 64 | 20 65 73 73 65 6e 74 69 | (method| essenti|
|00003da0| 61 6c 2d 6d 65 74 68 6f | 64 29 0a 58 09 20 20 61 |al-metho|d).X. a|
|00003db0| 72 67 75 6d 65 6e 74 2d | 73 70 65 63 69 66 69 65 |rgument-|specifie|
|00003dc0| 72 29 0a 58 20 20 28 69 | 67 6e 6f 72 65 20 6d 65 |r).X (i|gnore me|
|00003dd0| 74 68 6f 64 29 0a 58 20 | 20 28 77 68 65 6e 20 28 |thod).X | (when (|
|00003de0| 63 6c 61 73 73 70 20 61 | 72 67 75 6d 65 6e 74 2d |classp a|rgument-|
|00003df0| 73 70 65 63 69 66 69 65 | 72 29 0a 58 20 20 20 20 |specifie|r).X |
|00003e00| 28 70 75 73 68 6e 65 77 | 20 6d 65 74 68 6f 64 0a |(pushnew| method.|
|00003e10| 58 09 20 20 20 20 20 28 | 63 6c 61 73 73 2d 64 69 |X. (|class-di|
|00003e20| 72 65 63 74 2d 6d 65 74 | 68 6f 64 73 20 61 72 67 |rect-met|hods arg|
|00003e30| 75 6d 65 6e 74 2d 73 70 | 65 63 69 66 69 65 72 29 |ument-sp|ecifier)|
|00003e40| 29 0a 58 20 20 20 20 3b | 3b 20 54 68 69 73 20 69 |).X ;|; This i|
|00003e50| 73 20 61 20 62 75 67 2e | 20 20 54 68 69 73 20 6e |s a bug.| This n|
|00003e60| 65 65 64 73 20 74 6f 20 | 62 65 20 73 70 6c 69 74 |eeds to |be split|
|00003e70| 20 75 70 20 69 6e 74 6f | 20 61 20 6d 65 74 68 6f | up into| a metho|
|00003e80| 64 20 6f 6e 0a 58 20 20 | 20 20 3b 3b 20 65 73 73 |d on.X | ;; ess|
|00003e90| 65 6e 74 69 61 6c 20 63 | 6c 61 73 73 20 61 6e 64 |ential c|lass and|
|00003ea0| 20 61 20 6d 65 74 68 6f | 64 20 6f 6e 20 63 6c 61 | a metho|d on cla|
|00003eb0| 73 73 20 6f 72 20 73 6f | 6d 65 74 68 69 6e 67 2e |ss or so|mething.|
|00003ec0| 0a 58 20 20 20 20 28 77 | 68 65 6e 20 28 6d 65 74 |.X (w|hen (met|
|00003ed0| 68 6f 64 73 2d 63 6f 6d | 62 69 6e 65 2d 70 20 64 |hods-com|bine-p d|
|00003ee0| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 29 0a 58 20 |iscrimin|ator).X |
|00003ef0| 20 20 20 20 20 28 70 75 | 73 68 6e 65 77 20 64 69 | (pu|shnew di|
|00003f00| 73 63 72 69 6d 69 6e 61 | 74 6f 72 0a 58 09 20 20 |scrimina|tor.X. |
|00003f10| 20 20 20 20 20 28 63 6c | 61 73 73 2d 64 69 73 63 | (cl|ass-disc|
|00003f20| 72 69 6d 69 6e 61 74 6f | 72 73 2d 77 68 69 63 68 |riminato|rs-which|
|00003f30| 2d 63 6f 6d 62 69 6e 65 | 2d 6d 65 74 68 6f 64 73 |-combine|-methods|
|00003f40| 0a 58 09 09 20 61 72 67 | 75 6d 65 6e 74 2d 73 70 |.X.. arg|ument-sp|
|00003f50| 65 63 69 66 69 65 72 29 | 29 29 29 29 0a 58 0a 58 |ecifier)|)))).X.X|
|00003f60| 28 64 65 66 6d 65 74 68 | 20 72 65 6d 6f 76 65 2d |(defmeth| remove-|
|00003f70| 6d 65 74 68 6f 64 2d 6f | 6e 2d 61 72 67 75 6d 65 |method-o|n-argume|
|00003f80| 6e 74 2d 73 70 65 63 69 | 66 69 65 72 0a 58 09 20 |nt-speci|fier.X. |
|00003f90| 28 28 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 |((discri|minator |
|00003fa0| 65 73 73 65 6e 74 69 61 | 6c 2d 64 69 73 63 72 69 |essentia|l-discri|
|00003fb0| 6d 69 6e 61 74 6f 72 29 | 0a 58 09 20 20 28 6d 65 |minator)|.X. (me|
|00003fc0| 74 68 6f 64 20 65 73 73 | 65 6e 74 69 61 6c 2d 6d |thod ess|ential-m|
|00003fd0| 65 74 68 6f 64 29 0a 58 | 09 20 20 61 72 67 75 6d |ethod).X|. argum|
|00003fe0| 65 6e 74 2d 73 70 65 63 | 69 66 69 65 72 29 0a 58 |ent-spec|ifier).X|
|00003ff0| 20 20 28 69 67 6e 6f 72 | 65 20 6d 65 74 68 6f 64 | (ignor|e method|
|00004000| 29 0a 58 20 20 28 77 68 | 65 6e 20 28 63 6c 61 73 |).X (wh|en (clas|
|00004010| 73 70 20 61 72 67 75 6d | 65 6e 74 2d 73 70 65 63 |sp argum|ent-spec|
|00004020| 69 66 69 65 72 29 0a 58 | 20 20 20 20 28 73 65 74 |ifier).X| (set|
|00004030| 66 20 28 63 6c 61 73 73 | 2d 64 69 72 65 63 74 2d |f (class|-direct-|
|00004040| 6d 65 74 68 6f 64 73 20 | 61 72 67 75 6d 65 6e 74 |methods |argument|
|00004050| 2d 73 70 65 63 69 66 69 | 65 72 29 0a 58 09 20 20 |-specifi|er).X. |
|00004060| 28 64 65 6c 71 20 6d 65 | 74 68 6f 64 0a 58 09 09 |(delq me|thod.X..|
|00004070| 28 63 6c 61 73 73 2d 64 | 69 72 65 63 74 2d 6d 65 |(class-d|irect-me|
|00004080| 74 68 6f 64 73 20 61 72 | 67 75 6d 65 6e 74 2d 73 |thods ar|gument-s|
|00004090| 70 65 63 69 66 69 65 72 | 29 29 29 0a 58 20 20 20 |pecifier|))).X |
|000040a0| 20 28 77 68 65 6e 20 28 | 6d 65 74 68 6f 64 73 2d | (when (|methods-|
|000040b0| 63 6f 6d 62 69 6e 65 2d | 70 20 64 69 73 63 72 69 |combine-|p discri|
|000040c0| 6d 69 6e 61 74 6f 72 29 | 0a 58 20 20 20 20 20 20 |minator)|.X |
|000040d0| 28 73 65 74 66 20 28 63 | 6c 61 73 73 2d 64 69 73 |(setf (c|lass-dis|
|000040e0| 63 72 69 6d 69 6e 61 74 | 6f 72 73 2d 77 68 69 63 |criminat|ors-whic|
|000040f0| 68 2d 63 6f 6d 62 69 6e | 65 2d 6d 65 74 68 6f 64 |h-combin|e-method|
|00004100| 73 0a 58 09 20 20 20 20 | 20 20 61 72 67 75 6d 65 |s.X. | argume|
|00004110| 6e 74 2d 73 70 65 63 69 | 66 69 65 72 29 0a 58 09 |nt-speci|fier).X.|
|00004120| 20 20 20 20 28 64 65 6c | 71 20 64 69 73 63 72 69 | (del|q discri|
|00004130| 6d 69 6e 61 74 6f 72 0a | 58 09 09 20 20 28 63 6c |minator.|X.. (cl|
|00004140| 61 73 73 2d 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |ass-disc|riminato|
|00004150| 72 73 2d 77 68 69 63 68 | 2d 63 6f 6d 62 69 6e 65 |rs-which|-combine|
|00004160| 2d 6d 65 74 68 6f 64 73 | 0a 58 09 09 20 20 20 20 |-methods|.X.. |
|00004170| 61 72 67 75 6d 65 6e 74 | 2d 73 70 65 63 69 66 69 |argument|-specifi|
|00004180| 65 72 29 29 29 29 29 29 | 0a 58 0a 58 0a 58 28 64 |er))))))|.X.X.X(d|
|00004190| 65 66 75 6e 20 6d 61 6b | 65 2d 73 70 65 63 69 61 |efun mak|e-specia|
|000041a0| 6c 69 7a 61 62 6c 65 20 | 28 66 75 6e 63 74 69 6f |lizable |(functio|
|000041b0| 6e 2d 6e 61 6d 65 20 26 | 72 65 73 74 20 6f 70 74 |n-name &|rest opt|
|000041c0| 69 6f 6e 73 29 0a 58 20 | 20 28 77 68 65 6e 20 6f |ions).X | (when o|
|000041d0| 70 74 69 6f 6e 73 20 28 | 73 65 74 71 20 6f 70 74 |ptions (|setq opt|
|000041e0| 69 6f 6e 73 20 28 6c 69 | 73 74 2a 20 27 3a 61 6c |ions (li|st* ':al|
|000041f0| 6c 6f 77 2d 6f 74 68 65 | 72 2d 6b 65 79 73 20 74 |low-othe|r-keys t|
|00004200| 20 6f 70 74 69 6f 6e 73 | 29 29 29 0a 58 20 20 28 | options|))).X (|
|00004210| 6b 65 79 77 6f 72 64 2d | 62 69 6e 64 20 28 28 61 |keyword-|bind ((a|
|00004220| 72 67 6c 69 73 74 20 6e | 69 6c 20 61 72 67 6c 69 |rglist n|il argli|
|00004230| 73 74 2d 73 70 65 63 69 | 66 69 65 64 2d 70 29 0a |st-speci|fied-p).|
|00004240| 58 09 09 20 28 64 69 73 | 63 72 69 6d 69 6e 61 74 |X.. (dis|criminat|
|00004250| 6f 72 2d 63 6c 61 73 73 | 20 27 64 69 73 63 72 69 |or-class| 'discri|
|00004260| 6d 69 6e 61 74 6f 72 29 | 0a 58 09 09 20 28 64 69 |minator)|.X.. (di|
|00004270| 73 70 61 74 63 68 20 6e | 69 6c 20 64 69 73 70 61 |spatch n|il dispa|
|00004280| 74 63 68 2d 70 29 29 0a | 58 09 09 6f 70 74 69 6f |tch-p)).|X..optio|
|00004290| 6e 73 0a 58 20 20 20 20 | 28 63 6f 6e 64 20 28 28 |ns.X |(cond ((|
|000042a0| 6e 6f 74 20 28 6e 75 6c | 6c 20 61 72 67 6c 69 73 |not (nul|l arglis|
|000042b0| 74 2d 73 70 65 63 69 66 | 69 65 64 2d 70 29 29 29 |t-specif|ied-p)))|
|000042c0| 0a 58 09 20 20 28 28 66 | 62 6f 75 6e 64 70 20 27 |.X. ((f|boundp '|
|000042d0| 66 75 6e 63 74 69 6f 6e | 2d 61 72 67 6c 69 73 74 |function|-arglist|
|000042e0| 29 0a 58 09 20 20 20 3b | 3b 20 66 75 6e 63 74 69 |).X. ;|; functi|
|000042f0| 6f 6e 2d 61 72 67 6c 69 | 73 74 20 65 78 69 73 74 |on-argli|st exist|
|00004300| 73 2c 20 67 65 74 20 74 | 68 65 20 61 72 67 6c 69 |s, get t|he argli|
|00004310| 73 74 20 66 72 6f 6d 20 | 69 74 2e 0a 58 09 20 20 |st from |it..X. |
|00004320| 20 3b 3b 20 4e 6f 74 65 | 3a 20 74 68 65 20 66 75 | ;; Note|: the fu|
|00004330| 6e 63 61 6c 6c 20 6f 66 | 20 27 66 75 6e 63 74 69 |ncall of| 'functi|
|00004340| 6f 6e 2d 61 72 67 6c 69 | 73 74 20 70 72 65 76 65 |on-argli|st preve|
|00004350| 6e 74 73 0a 58 09 20 20 | 20 3b 3b 20 20 20 20 20 |nts.X. | ;; |
|00004360| 20 20 63 6f 6d 70 69 6c | 65 72 20 77 61 72 6e 69 | compil|er warni|
|00004370| 6e 67 73 20 61 74 20 6c | 65 61 73 74 20 69 6e 20 |ngs at l|east in |
|00004380| 73 6f 6d 65 20 6c 69 73 | 70 73 2e 0a 58 09 20 20 |some lis|ps..X. |
|00004390| 20 28 73 65 74 71 20 61 | 72 67 6c 69 73 74 20 28 | (setq a|rglist (|
|000043a0| 66 75 6e 63 61 6c 6c 20 | 27 66 75 6e 63 74 69 6f |funcall |'functio|
|000043b0| 6e 2d 61 72 67 6c 69 73 | 74 20 66 75 6e 63 74 69 |n-arglis|t functi|
|000043c0| 6f 6e 2d 6e 61 6d 65 29 | 29 29 0a 58 09 20 20 28 |on-name)|)).X. (|
|000043d0| 28 66 62 6f 75 6e 64 70 | 20 66 75 6e 63 74 69 6f |(fboundp| functio|
|000043e0| 6e 2d 6e 61 6d 65 29 0a | 58 09 20 20 20 28 65 72 |n-name).|X. (er|
|000043f0| 72 6f 72 0a 58 09 20 20 | 20 20 20 22 54 68 65 20 |ror.X. | "The |
|00004400| 3a 61 72 67 6c 69 73 74 | 20 61 72 67 75 6d 65 6e |:arglist| argumen|
|00004410| 74 20 74 6f 20 6d 61 6b | 65 2d 73 70 65 63 69 61 |t to mak|e-specia|
|00004420| 6c 69 7a 61 62 6c 65 20 | 77 61 73 20 6e 6f 74 20 |lizable |was not |
|00004430| 73 75 70 70 6c 69 65 64 | 7e 25 7e 0a 58 20 20 20 |supplied|~%~.X |
|00004440| 20 20 20 20 20 20 20 20 | 20 20 20 61 6e 64 20 74 | | and t|
|00004450| 68 65 72 65 20 69 73 20 | 6e 6f 20 76 65 72 73 69 |here is |no versi|
|00004460| 6f 6e 20 6f 66 20 46 55 | 4e 43 54 49 4f 4e 2d 41 |on of FU|NCTION-A|
|00004470| 52 47 4c 49 53 54 20 64 | 65 66 69 6e 65 64 20 66 |RGLIST d|efined f|
|00004480| 6f 72 20 74 68 69 73 7e | 25 7e 0a 58 20 20 20 20 |or this~|%~.X |
|00004490| 20 20 20 20 20 20 20 20 | 20 20 70 6f 72 74 20 6f | | port o|
|000044a0| 66 20 50 6f 72 74 61 62 | 6c 65 20 43 6f 6d 6d 6f |f Portab|le Commo|
|000044b0| 6e 4c 6f 6f 70 73 2e 7e | 25 7e 0a 58 20 20 20 20 |nLoops.~|%~.X |
|000044c0| 20 20 20 20 20 20 20 20 | 20 20 59 6f 75 20 6d 75 | | You mu|
|000044d0| 73 74 20 65 69 74 68 65 | 72 20 64 65 66 69 6e 65 |st eithe|r define|
|000044e0| 20 61 20 76 65 72 73 69 | 6f 6e 20 6f 66 20 46 55 | a versi|on of FU|
|000044f0| 4e 43 54 49 4f 4e 2d 41 | 52 47 4c 49 53 54 20 28 |NCTION-A|RGLIST (|
|00004500| 77 68 69 63 68 7e 25 7e | 0a 58 20 20 20 20 20 20 |which~%~|.X |
|00004510| 20 20 20 20 20 20 20 20 | 73 68 6f 75 6c 64 20 62 | |should b|
|00004520| 65 20 65 61 73 79 29 2c | 20 61 6e 64 20 73 65 6e |e easy),| and sen|
|00004530| 64 20 69 74 20 6f 66 66 | 20 74 6f 20 74 68 65 20 |d it off| to the |
|00004540| 50 6f 72 74 61 62 6c 65 | 20 43 6f 6d 6d 6f 6e 4c |Portable| CommonL|
|00004550| 6f 6f 70 73 7e 25 7e 0a | 58 20 20 20 20 20 20 20 |oops~%~.|X |
|00004560| 20 20 20 20 20 20 20 70 | 65 6f 70 6c 65 20 6f 72 | p|eople or|
|00004570| 20 79 6f 75 20 73 68 6f | 75 6c 64 20 63 61 6c 6c | you sho|uld call|
|00004580| 20 6d 61 6b 65 2d 73 70 | 65 63 69 61 6c 69 7a 61 | make-sp|ecializa|
|00004590| 62 6c 65 20 61 67 61 69 | 6e 20 77 69 74 68 20 74 |ble agai|n with t|
|000045a0| 68 65 7e 25 7e 0a 58 20 | 20 20 20 20 20 20 20 20 |he~%~.X | |
|000045b0| 20 20 20 20 20 66 75 6e | 63 74 69 6f 6e 27 73 20 | fun|ction's |
|000045c0| 61 72 67 6c 69 73 74 20 | 61 73 20 69 74 73 20 73 |arglist |as its s|
|000045d0| 65 63 6f 6e 64 20 61 72 | 67 75 6d 65 6e 74 2e 22 |econd ar|gument."|
|000045e0| 29 29 29 0a 58 20 20 20 | 20 28 73 65 74 71 20 64 |))).X | (setq d|
|000045f0| 69 73 70 61 74 63 68 0a | 58 09 20 20 28 69 66 20 |ispatch.|X. (if |
|00004600| 64 69 73 70 61 74 63 68 | 2d 70 0a 58 09 20 20 20 |dispatch|-p.X. |
|00004610| 20 20 20 28 69 74 65 72 | 61 74 65 20 28 28 64 69 | (iter|ate ((di|
|00004620| 73 70 20 69 6e 20 64 69 | 73 70 61 74 63 68 29 29 |sp in di|spatch))|
|00004630| 0a 58 09 09 28 75 6e 6c | 65 73 73 20 28 6d 65 6d |.X..(unl|ess (mem|
|00004640| 71 20 64 69 73 70 20 61 | 72 67 6c 69 73 74 29 0a |q disp a|rglist).|
|00004650| 58 09 09 20 20 28 65 72 | 72 6f 72 20 22 54 68 65 |X.. (er|ror "The|
|00004660| 72 65 20 69 73 20 61 20 | 73 79 6d 62 6f 6c 20 69 |re is a |symbol i|
|00004670| 6e 20 74 68 65 20 3a 64 | 69 73 70 61 74 63 68 20 |n the :d|ispatch |
|00004680| 61 72 67 75 6d 65 6e 74 | 20 28 7e 53 29 7e 25 7e |argument| (~S)~%~|
|00004690| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000046a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 77 68 69 63 | | whic|
|000046b0| 68 20 69 73 6e 27 74 20 | 69 6e 20 74 68 65 20 61 |h isn't |in the a|
|000046c0| 72 67 6c 69 73 74 2e 22 | 29 29 0a 58 09 09 28 63 |rglist."|)).X..(c|
|000046d0| 6f 6c 6c 65 63 74 20 28 | 70 6f 73 69 74 69 6f 6e |ollect (|position|
|000046e0| 20 64 69 73 70 20 61 72 | 67 6c 69 73 74 29 29 29 | disp ar|glist)))|
|000046f0| 0a 58 09 20 20 20 20 20 | 20 3a 64 65 66 61 75 6c |.X. | :defaul|
|00004700| 74 29 29 0a 58 20 20 20 | 20 28 6c 65 74 20 28 28 |t)).X | (let ((|
|00004710| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 63 6c |discrimi|nator-cl|
|00004720| 61 73 73 2d 6f 62 6a 65 | 63 74 0a 58 09 20 20 20 |ass-obje|ct.X. |
|00004730| 20 28 69 66 20 28 63 6c | 61 73 73 70 20 64 69 73 | (if (cl|assp dis|
|00004740| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 63 6c 61 73 73 |criminat|or-class|
|00004750| 29 0a 58 09 09 64 69 73 | 63 72 69 6d 69 6e 61 74 |).X..dis|criminat|
|00004760| 6f 72 2d 63 6c 61 73 73 | 0a 58 09 09 28 63 6c 61 |or-class|.X..(cla|
|00004770| 73 73 2d 6e 61 6d 65 64 | 20 64 69 73 63 72 69 6d |ss-named| discrim|
|00004780| 69 6e 61 74 6f 72 2d 63 | 6c 61 73 73 20 74 29 29 |inator-c|lass t))|
|00004790| 29 0a 58 09 20 20 28 64 | 69 73 63 72 69 6d 69 6e |).X. (d|iscrimin|
|000047a0| 61 74 6f 72 20 6e 69 6c | 29 29 0a 58 20 20 20 20 |ator nil|)).X |
|000047b0| 20 20 28 69 66 20 28 6e | 75 6c 6c 20 64 69 73 63 | (if (n|ull disc|
|000047c0| 72 69 6d 69 6e 61 74 6f | 72 2d 63 6c 61 73 73 2d |riminato|r-class-|
|000047d0| 6f 62 6a 65 63 74 29 0a | 58 09 20 20 28 65 72 72 |object).|X. (err|
|000047e0| 6f 72 0a 58 09 20 20 20 | 20 22 54 68 65 20 3a 44 |or.X. | "The :D|
|000047f0| 49 53 43 52 49 4d 49 4e | 41 54 4f 52 2d 43 4c 41 |ISCRIMIN|ATOR-CLA|
|00004800| 53 53 20 61 72 67 75 6d | 65 6e 74 20 74 6f 20 6d |SS argum|ent to m|
|00004810| 61 6b 65 2d 73 70 65 63 | 69 61 6c 69 7a 61 62 6c |ake-spec|ializabl|
|00004820| 65 20 69 73 20 7e 53 7e | 25 7e 0a 58 20 20 20 20 |e is ~S~|%~.X |
|00004830| 20 20 20 20 20 20 20 20 | 20 62 75 74 20 74 68 65 | | but the|
|00004840| 72 65 20 69 73 20 6e 6f | 20 63 6c 61 73 73 20 62 |re is no| class b|
|00004850| 79 20 74 68 61 74 20 6e | 61 6d 65 2e 22 0a 58 09 |y that n|ame.".X.|
|00004860| 20 20 20 20 64 69 73 63 | 72 69 6d 69 6e 61 74 6f | disc|riminato|
|00004870| 72 2d 63 6c 61 73 73 29 | 0a 58 09 20 20 28 73 65 |r-class)|.X. (se|
|00004880| 74 71 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |tq discr|iminator|
|00004890| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 0a 58 09 | | .X.|
|000048a0| 09 28 61 70 70 6c 79 20 | 23 27 6d 61 6b 65 20 64 |.(apply |#'make d|
|000048b0| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 63 6c 61 |iscrimin|ator-cla|
|000048c0| 73 73 2d 6f 62 6a 65 63 | 74 0a 58 09 09 20 20 20 |ss-objec|t.X.. |
|000048d0| 20 20 20 20 3a 6e 61 6d | 65 20 66 75 6e 63 74 69 | :nam|e functi|
|000048e0| 6f 6e 2d 6e 61 6d 65 0a | 58 09 09 20 20 20 20 20 |on-name.|X.. |
|000048f0| 20 20 3a 64 69 73 70 61 | 74 63 68 2d 6f 72 64 65 | :dispa|tch-orde|
|00004900| 72 20 64 69 73 70 61 74 | 63 68 0a 58 09 09 20 20 |r dispat|ch.X.. |
|00004910| 20 20 20 20 20 6f 70 74 | 69 6f 6e 73 29 29 29 0a | opt|ions))).|
|00004920| 58 3b 20 20 20 20 20 28 | 73 65 74 66 20 28 66 75 |X; (|setf (fu|
|00004930| 6e 63 74 69 6f 6e 2d 70 | 72 65 74 74 79 2d 61 72 |nction-p|retty-ar|
|00004940| 67 6c 69 73 74 20 66 75 | 6e 63 74 69 6f 6e 2d 6e |glist fu|nction-n|
|00004950| 61 6d 65 29 20 61 72 67 | 6c 69 73 74 29 0a 58 20 |ame) arg|list).X |
|00004960| 20 20 20 20 20 28 69 66 | 20 61 72 67 6c 69 73 74 | (if| arglist|
|00004970| 2d 73 70 65 63 69 66 69 | 65 64 2d 70 0a 58 09 20 |-specifi|ed-p.X. |
|00004980| 20 28 70 75 74 2d 73 6c | 6f 74 2d 61 6c 77 61 79 | (put-sl|ot-alway|
|00004990| 73 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 |s discri|minator |
|000049a0| 27 70 72 65 74 74 79 2d | 61 72 67 6c 69 73 74 20 |'pretty-|arglist |
|000049b0| 61 72 67 6c 69 73 74 29 | 0a 58 09 20 20 28 72 65 |arglist)|.X. (re|
|000049c0| 6d 6f 76 65 2d 64 79 6e | 61 6d 69 63 2d 73 6c 6f |move-dyn|amic-slo|
|000049d0| 74 20 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 |t discri|minator |
|000049e0| 27 70 72 65 74 74 79 2d | 61 72 67 6c 69 73 74 29 |'pretty-|arglist)|
|000049f0| 29 0a 58 20 20 20 20 20 | 20 28 73 65 74 66 20 28 |).X | (setf (|
|00004a00| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 6e 61 |discrimi|nator-na|
|00004a10| 6d 65 64 20 66 75 6e 63 | 74 69 6f 6e 2d 6e 61 6d |med func|tion-nam|
|00004a20| 65 29 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |e) discr|iminator|
|00004a30| 29 0a 58 20 20 20 20 20 | 20 28 77 68 65 6e 20 28 |).X | (when (|
|00004a40| 66 62 6f 75 6e 64 70 20 | 66 75 6e 63 74 69 6f 6e |fboundp |function|
|00004a50| 2d 6e 61 6d 65 29 0a 58 | 09 28 61 64 64 2d 6e 61 |-name).X|.(add-na|
|00004a60| 6d 65 64 2d 6d 65 74 68 | 6f 64 20 28 63 6c 61 73 |med-meth|od (clas|
|00004a70| 73 2d 70 72 6f 74 6f 74 | 79 70 65 20 28 63 6c 61 |s-protot|ype (cla|
|00004a80| 73 73 2d 6e 61 6d 65 64 | 20 27 64 69 73 63 72 69 |ss-named| 'discri|
|00004a90| 6d 69 6e 61 74 6f 72 29 | 29 0a 58 09 09 09 20 20 |minator)|).X... |
|00004aa0| 28 63 6c 61 73 73 2d 70 | 72 6f 74 6f 74 79 70 65 |(class-p|rototype|
|00004ab0| 20 28 63 6c 61 73 73 2d | 6e 61 6d 65 64 20 27 6d | (class-|named 'm|
|00004ac0| 65 74 68 6f 64 29 29 0a | 58 09 09 09 20 20 66 75 |ethod)).|X... fu|
|00004ad0| 6e 63 74 69 6f 6e 2d 6e | 61 6d 65 0a 58 09 09 09 |nction-n|ame.X...|
|00004ae0| 20 20 61 72 67 6c 69 73 | 74 0a 58 09 09 09 20 20 | arglis|t.X... |
|00004af0| 28 29 0a 58 09 09 09 20 | 20 28 29 0a 58 09 09 09 |().X... | ().X...|
|00004b00| 20 20 28 73 79 6d 62 6f | 6c 2d 66 75 6e 63 74 69 | (symbo|l-functi|
|00004b10| 6f 6e 20 66 75 6e 63 74 | 69 6f 6e 2d 6e 61 6d 65 |on funct|ion-name|
|00004b20| 29 29 29 0a 58 20 20 20 | 20 20 20 64 69 73 63 72 |))).X | discr|
|00004b30| 69 6d 69 6e 61 74 6f 72 | 29 29 29 0a 58 0a 58 0a |iminator|))).X.X.|
|00004b40| 58 0a 58 0a 58 0a 58 28 | 64 65 66 75 6e 20 75 70 |X.X.X.X(|defun up|
|00004b50| 64 61 74 65 2d 70 72 65 | 74 74 79 2d 61 72 67 6c |date-pre|tty-argl|
|00004b60| 69 73 74 20 28 64 69 73 | 63 72 69 6d 69 6e 61 74 |ist (dis|criminat|
|00004b70| 6f 72 20 6d 65 74 68 6f | 64 29 0a 58 20 20 28 73 |or metho|d).X (s|
|00004b80| 65 74 66 20 28 66 75 6e | 63 74 69 6f 6e 2d 70 72 |etf (fun|ction-pr|
|00004b90| 65 74 74 79 2d 61 72 67 | 6c 69 73 74 0a 58 09 20 |etty-arg|list.X. |
|00004ba0| 20 28 6f 72 20 28 64 69 | 73 63 72 69 6d 69 6e 61 | (or (di|scrimina|
|00004bb0| 74 6f 72 2d 6e 61 6d 65 | 20 64 69 73 63 72 69 6d |tor-name| discrim|
|00004bc0| 69 6e 61 74 6f 72 29 0a | 58 09 20 20 20 20 20 20 |inator).|X. |
|00004bd0| 28 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 2d 64 |(discrim|inator-d|
|00004be0| 69 73 63 72 69 6d 69 6e | 61 74 69 6e 67 2d 66 75 |iscrimin|ating-fu|
|00004bf0| 6e 63 74 69 6f 6e 20 64 | 69 73 63 72 69 6d 69 6e |nction d|iscrimin|
|00004c00| 61 74 6f 72 29 29 29 0a | 58 09 28 6f 72 20 28 67 |ator))).|X.(or (g|
|00004c10| 65 74 2d 73 6c 6f 74 2d | 75 73 69 6e 67 2d 63 6c |et-slot-|using-cl|
|00004c20| 61 73 73 20 28 63 6c 61 | 73 73 2d 6f 66 20 64 69 |ass (cla|ss-of di|
|00004c30| 73 63 72 69 6d 69 6e 61 | 74 6f 72 29 20 64 69 73 |scrimina|tor) dis|
|00004c40| 63 72 69 6d 69 6e 61 74 | 6f 72 0a 58 09 09 09 09 |criminat|or.X....|
|00004c50| 20 20 27 70 72 65 74 74 | 79 2d 61 72 67 6c 69 73 | 'prett|y-arglis|
|00004c60| 74 20 74 20 28 29 29 0a | 58 09 20 20 20 20 28 6d |t t ()).|X. (m|
|00004c70| 65 74 68 6f 64 2d 61 72 | 67 6c 69 73 74 20 6d 65 |ethod-ar|glist me|
|00004c80| 74 68 6f 64 29 29 29 29 | 0a 58 0a 58 28 64 65 66 |thod))))|.X.X(def|
|00004c90| 6d 65 74 68 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |meth dis|criminat|
|00004ca0| 6f 72 2d 70 72 65 74 74 | 79 2d 61 72 67 6c 69 73 |or-prett|y-arglis|
|00004cb0| 74 20 28 28 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |t ((disc|riminato|
|00004cc0| 72 20 62 61 73 69 63 2d | 64 69 73 63 72 69 6d 69 |r basic-|discrimi|
|00004cd0| 6e 61 74 6f 72 29 29 0a | 58 20 20 28 6f 72 20 28 |nator)).|X (or (|
|00004ce0| 67 65 74 2d 73 6c 6f 74 | 2d 75 73 69 6e 67 2d 63 |get-slot|-using-c|
|00004cf0| 6c 61 73 73 20 28 63 6c | 61 73 73 2d 6f 66 20 64 |lass (cl|ass-of d|
|00004d00| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 29 20 64 69 |iscrimin|ator) di|
|00004d10| 73 63 72 69 6d 69 6e 61 | 74 6f 72 0a 58 09 09 09 |scrimina|tor.X...|
|00004d20| 20 20 20 20 27 70 72 65 | 74 74 79 2d 61 72 67 6c | 'pre|tty-argl|
|00004d30| 69 73 74 20 74 20 28 29 | 29 0a 58 20 20 20 20 20 |ist t ()|).X |
|00004d40| 20 28 6c 65 74 20 28 28 | 6d 65 74 68 6f 64 20 28 | (let ((|method (|
|00004d50| 6f 72 20 28 64 69 73 63 | 72 69 6d 69 6e 61 74 6f |or (disc|riminato|
|00004d60| 72 2d 64 65 66 61 75 6c | 74 2d 6d 65 74 68 6f 64 |r-defaul|t-method|
|00004d70| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 29 0a | discrim|inator).|
|00004d80| 58 09 09 09 28 63 61 72 | 20 28 64 69 73 63 72 69 |X...(car| (discri|
|00004d90| 6d 69 6e 61 74 6f 72 2d | 6d 65 74 68 6f 64 73 20 |minator-|methods |
|00004da0| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 29 29 29 |discrimi|nator)))|
|00004db0| 29 29 0a 58 09 28 61 6e | 64 20 6d 65 74 68 6f 64 |)).X.(an|d method|
|00004dc0| 20 28 6d 65 74 68 6f 64 | 2d 61 72 67 6c 69 73 74 | (method|-arglist|
|00004dd0| 20 6d 65 74 68 6f 64 29 | 29 29 29 29 0a 58 0a 58 | method)|)))).X.X|
|00004de0| 28 64 65 66 6d 65 74 68 | 20 65 6e 73 75 72 65 2d |(defmeth| ensure-|
|00004df0| 73 65 6c 65 63 74 6f 72 | 2d 73 70 65 63 69 61 6c |selector|-special|
|00004e00| 69 7a 61 62 6c 65 20 28 | 28 70 72 6f 74 6f 2d 64 |izable (|(proto-d|
|00004e10| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 0a 58 09 09 |iscrimin|ator.X..|
|00004e20| 09 09 09 20 20 20 65 73 | 73 65 6e 74 69 61 6c 2d |... es|sential-|
|00004e30| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 29 0a 58 |discrimi|nator).X|
|00004e40| 09 09 09 09 09 20 73 65 | 6c 65 63 74 6f 72 20 61 |..... se|lector a|
|00004e50| 72 67 6c 69 73 74 29 0a | 58 20 20 28 6c 65 74 20 |rglist).|X (let |
|00004e60| 28 28 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 20 |((discri|minator |
|00004e70| 28 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 2d 6e |(discrim|inator-n|
|00004e80| 61 6d 65 64 20 73 65 6c | 65 63 74 6f 72 29 29 29 |amed sel|ector)))|
|00004e90| 0a 58 20 20 20 20 28 63 | 6f 6e 64 20 28 28 6e 6f |.X (c|ond ((no|
|00004ea0| 74 20 28 6e 75 6c 6c 20 | 64 69 73 63 72 69 6d 69 |t (null |discrimi|
|00004eb0| 6e 61 74 6f 72 29 29 20 | 64 69 73 63 72 69 6d 69 |nator)) |discrimi|
|00004ec0| 6e 61 74 6f 72 29 0a 58 | 20 20 20 20 20 20 20 20 |nator).X| |
|00004ed0| 20 20 28 28 6f 72 20 28 | 6e 6f 74 20 28 66 62 6f | ((or (|not (fbo|
|00004ee0| 75 6e 64 70 20 73 65 6c | 65 63 74 6f 72 29 29 0a |undp sel|ector)).|
|00004ef0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004f00| 28 65 71 20 2a 65 72 72 | 6f 72 2d 77 68 65 6e 2d |(eq *err|or-when-|
|00004f10| 64 65 66 69 6e 69 6e 67 | 2d 6d 65 74 68 6f 64 2d |defining|-method-|
|00004f20| 6f 6e 2d 65 78 69 73 74 | 69 6e 67 2d 66 75 6e 63 |on-exist|ing-func|
|00004f30| 74 69 6f 6e 2a 0a 58 09 | 09 20 20 20 27 62 6f 6f |tion*.X.|. 'boo|
|00004f40| 74 73 74 72 61 70 70 69 | 6e 67 29 29 0a 58 20 20 |tstrappi|ng)).X |
|00004f50| 20 20 20 20 20 20 20 20 | 20 28 73 65 74 66 20 28 | | (setf (|
|00004f60| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 6e 61 |discrimi|nator-na|
|00004f70| 6d 65 64 20 73 65 6c 65 | 63 74 6f 72 29 0a 58 20 |med sele|ctor).X |
|00004f80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004f90| 28 6d 61 6b 65 20 28 63 | 6c 61 73 73 2d 6f 66 20 |(make (c|lass-of |
|00004fa0| 70 72 6f 74 6f 2d 64 69 | 73 63 72 69 6d 69 6e 61 |proto-di|scrimina|
|00004fb0| 74 6f 72 29 20 3a 6e 61 | 6d 65 20 73 65 6c 65 63 |tor) :na|me selec|
|00004fc0| 74 6f 72 29 29 29 0a 58 | 20 20 20 20 20 20 20 20 |tor))).X| |
|00004fd0| 20 20 28 28 6e 75 6c 6c | 20 2a 65 72 72 6f 72 2d | ((null| *error-|
|00004fe0| 77 68 65 6e 2d 64 65 66 | 69 6e 69 6e 67 2d 6d 65 |when-def|ining-me|
|00004ff0| 74 68 6f 64 2d 6f 6e 2d | 65 78 69 73 74 69 6e 67 |thod-on-|existing|
|00005000| 2d 66 75 6e 63 74 69 6f | 6e 2a 29 0a 58 20 20 20 |-functio|n*).X |
|00005010| 20 20 20 20 20 20 20 20 | 28 6d 61 6b 65 2d 73 70 | |(make-sp|
|00005020| 65 63 69 61 6c 69 7a 61 | 62 6c 65 20 73 65 6c 65 |ecializa|ble sele|
|00005030| 63 74 6f 72 0a 58 09 09 | 09 20 20 20 20 20 20 20 |ctor.X..|. |
|00005040| 3a 61 72 67 6c 69 73 74 | 20 61 72 67 6c 69 73 74 |:arglist| arglist|
|00005050| 0a 58 09 09 09 20 20 20 | 20 20 20 20 3a 64 69 73 |.X... | :dis|
|00005060| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 63 6c 61 73 73 |criminat|or-class|
|00005070| 20 28 63 6c 61 73 73 2d | 6f 66 0a 58 09 09 09 09 | (class-|of.X....|
|00005080| 09 09 20 20 20 20 20 20 | 70 72 6f 74 6f 2d 64 69 |.. |proto-di|
|00005090| 73 63 72 69 6d 69 6e 61 | 74 6f 72 29 29 0a 58 20 |scrimina|tor)).X |
|000050a0| 20 20 20 20 20 20 20 20 | 20 20 28 64 69 73 63 72 | | (discr|
|000050b0| 69 6d 69 6e 61 74 6f 72 | 2d 6e 61 6d 65 64 20 73 |iminator|-named s|
|000050c0| 65 6c 65 63 74 6f 72 29 | 29 0a 58 20 20 20 20 20 |elector)|).X |
|000050d0| 20 20 20 20 20 28 74 0a | 58 20 20 20 20 20 20 20 | (t.|X |
|000050e0| 20 20 20 20 28 65 72 72 | 6f 72 20 22 41 74 74 65 | (err|or "Atte|
|000050f0| 6d 70 74 20 74 6f 20 61 | 64 64 20 61 20 6d 65 74 |mpt to a|dd a met|
|00005100| 68 6f 64 20 74 6f 20 74 | 68 65 20 6c 69 73 70 20 |hod to t|he lisp |
|00005110| 66 75 6e 63 74 69 6f 6e | 20 7e 53 20 77 69 74 68 |function| ~S with|
|00005120| 6f 75 74 7e 25 7e 0a 58 | 20 20 20 20 20 20 20 20 |out~%~.X| |
|00005130| 20 20 20 20 20 20 20 20 | 20 20 20 66 69 72 73 74 | | first|
|00005140| 20 63 61 6c 6c 69 6e 67 | 20 6d 61 6b 65 2d 73 70 | calling| make-sp|
|00005150| 65 63 69 61 6c 69 7a 61 | 62 6c 65 2e 20 20 42 65 |ecializa|ble. Be|
|00005160| 66 6f 72 65 20 61 74 74 | 65 6d 70 74 69 6e 67 20 |fore att|empting |
|00005170| 74 6f 7e 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |to~.X | |
|00005180| 20 20 20 20 20 20 20 20 | 64 65 66 69 6e 65 20 61 | |define a|
|00005190| 20 6d 65 74 68 6f 64 20 | 6f 6e 20 7e 53 7e 25 20 | method |on ~S~% |
|000051a0| 79 6f 75 20 73 68 6f 75 | 6c 64 20 65 76 61 6c 75 |you shou|ld evalu|
|000051b0| 61 74 65 20 74 68 65 20 | 66 6f 72 6d 3a 7e 25 7e |ate the |form:~%~|
|000051c0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000051d0| 20 20 20 20 20 28 7e 53 | 20 27 7e 53 29 22 0a 58 | (~S| '~S)".X|
|000051e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000051f0| 20 20 73 65 6c 65 63 74 | 6f 72 20 73 65 6c 65 63 | select|or selec|
|00005200| 74 6f 72 20 27 6d 61 6b | 65 2d 73 70 65 63 69 61 |tor 'mak|e-specia|
|00005210| 6c 69 7a 61 62 6c 65 20 | 73 65 6c 65 63 74 6f 72 |lizable |selector|
|00005220| 29 29 29 29 29 0a 58 0a | 58 28 64 65 66 6d 65 74 |))))).X.|X(defmet|
|00005230| 68 20 66 69 6e 64 2d 6d | 65 74 68 6f 64 20 28 64 |h find-m|ethod (d|
|00005240| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 20 74 79 70 |iscrimin|ator typ|
|00005250| 65 2d 73 70 65 63 69 66 | 69 65 72 73 20 6f 70 74 |e-specif|iers opt|
|00005260| 69 6f 6e 73 20 26 6f 70 | 74 69 6f 6e 61 6c 20 70 |ions &op|tional p|
|00005270| 61 72 73 65 29 0a 58 20 | 20 28 69 74 65 72 61 74 |arse).X | (iterat|
|00005280| 65 20 28 28 6d 65 74 68 | 6f 64 20 69 6e 20 28 64 |e ((meth|od in (d|
|00005290| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 6d 65 74 |iscrimin|ator-met|
|000052a0| 68 6f 64 73 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |hods dis|criminat|
|000052b0| 6f 72 29 29 29 0a 58 20 | 20 20 20 28 77 68 65 6e |or))).X | (when|
|000052c0| 20 28 6d 65 74 68 6f 64 | 2d 65 71 75 61 6c 20 6d | (method|-equal m|
|000052d0| 65 74 68 6f 64 0a 58 09 | 09 09 28 69 66 20 70 61 |ethod.X.|..(if pa|
|000052e0| 72 73 65 0a 58 09 09 09 | 20 20 20 20 28 70 61 72 |rse.X...| (par|
|000052f0| 73 65 2d 74 79 70 65 2d | 73 70 65 63 69 66 69 65 |se-type-|specifie|
|00005300| 72 73 20 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |rs discr|iminator|
|00005310| 0a 58 09 09 09 09 09 09 | 20 20 20 6d 65 74 68 6f |.X......| metho|
|00005320| 64 0a 58 09 09 09 09 09 | 09 20 20 20 74 79 70 65 |d.X.....|. type|
|00005330| 2d 73 70 65 63 69 66 69 | 65 72 73 29 0a 58 09 09 |-specifi|ers).X..|
|00005340| 09 20 20 20 20 74 79 70 | 65 2d 73 70 65 63 69 66 |. typ|e-specif|
|00005350| 69 65 72 73 29 0a 58 09 | 09 09 6f 70 74 69 6f 6e |iers).X.|..option|
|00005360| 73 29 0a 58 20 20 20 20 | 20 20 28 72 65 74 75 72 |s).X | (retur|
|00005370| 6e 20 6d 65 74 68 6f 64 | 29 29 29 29 0a 58 0a 58 |n method|)))).X.X|
|00005380| 28 64 65 66 6d 65 74 68 | 20 6d 65 74 68 6f 64 2d |(defmeth| method-|
|00005390| 65 71 75 61 6c 20 28 28 | 6d 65 74 68 6f 64 20 62 |equal ((|method b|
|000053a0| 61 73 69 63 2d 6d 65 74 | 68 6f 64 29 20 61 72 67 |asic-met|hod) arg|
|000053b0| 75 6d 65 6e 74 2d 73 70 | 65 63 69 66 69 65 72 73 |ument-sp|ecifiers|
|000053c0| 20 6f 70 74 69 6f 6e 73 | 29 0a 58 20 20 28 61 6e | options|).X (an|
|000053d0| 64 20 28 65 71 75 61 6c | 20 6f 70 74 69 6f 6e 73 |d (equal| options|
|000053e0| 20 28 6d 65 74 68 6f 64 | 2d 6f 70 74 69 6f 6e 73 | (method|-options|
|000053f0| 20 6d 65 74 68 6f 64 29 | 29 0a 58 20 20 20 20 20 | method)|).X |
|00005400| 20 20 28 65 71 75 61 6c | 20 61 72 67 75 6d 65 6e | (equal| argumen|
|00005410| 74 2d 73 70 65 63 69 66 | 69 65 72 73 20 28 6d 65 |t-specif|iers (me|
|00005420| 74 68 6f 64 2d 74 79 70 | 65 2d 73 70 65 63 69 66 |thod-typ|e-specif|
|00005430| 69 65 72 73 20 6d 65 74 | 68 6f 64 29 29 29 29 0a |iers met|hod)))).|
|00005440| 58 0a 58 0a 58 28 64 65 | 66 6d 65 74 68 20 64 69 |X.X.X(de|fmeth di|
|00005450| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 64 65 66 61 |scrimina|tor-defa|
|00005460| 75 6c 74 2d 6d 65 74 68 | 6f 64 20 28 28 64 69 73 |ult-meth|od ((dis|
|00005470| 63 72 69 6d 69 6e 61 74 | 6f 72 20 65 73 73 65 6e |criminat|or essen|
|00005480| 74 69 61 6c 2d 64 69 73 | 63 72 69 6d 69 6e 61 74 |tial-dis|criminat|
|00005490| 6f 72 29 29 0a 58 20 20 | 28 66 69 6e 64 2d 6d 65 |or)).X |(find-me|
|000054a0| 74 68 6f 64 20 64 69 73 | 63 72 69 6d 69 6e 61 74 |thod dis|criminat|
|000054b0| 6f 72 20 28 29 20 28 29 | 29 29 0a 58 0a 58 28 64 |or () ()|)).X.X(d|
|000054c0| 65 66 6d 65 74 68 20 69 | 6e 73 74 61 6c 6c 2d 64 |efmeth i|nstall-d|
|000054d0| 69 73 63 72 69 6d 69 6e | 61 74 69 6e 67 2d 66 75 |iscrimin|ating-fu|
|000054e0| 6e 63 74 69 6f 6e 20 28 | 28 64 69 73 63 72 69 6d |nction (|(discrim|
|000054f0| 69 6e 61 74 6f 72 0a 58 | 09 09 09 09 09 20 20 20 |inator.X|..... |
|00005500| 20 65 73 73 65 6e 74 69 | 61 6c 2d 64 69 73 63 72 | essenti|al-discr|
|00005510| 69 6d 69 6e 61 74 6f 72 | 29 0a 58 09 09 09 09 09 |iminator|).X.....|
|00005520| 20 20 77 68 65 72 65 0a | 58 09 09 09 09 09 20 20 | where.|X..... |
|00005530| 66 75 6e 63 74 69 6f 6e | 0a 58 09 09 09 09 09 20 |function|.X..... |
|00005540| 20 26 6f 70 74 69 6f 6e | 61 6c 20 69 6e 68 69 62 | &option|al inhib|
|00005550| 69 74 2d 63 6f 6d 70 69 | 6c 65 2d 70 29 0a 58 20 |it-compi|le-p).X |
|00005560| 20 28 69 67 6e 6f 72 65 | 20 64 69 73 63 72 69 6d | (ignore| discrim|
|00005570| 69 6e 61 74 6f 72 29 0a | 58 20 20 28 63 68 65 63 |inator).|X (chec|
|00005580| 6b 2d 74 79 70 65 20 77 | 68 65 72 65 20 73 79 6d |k-type w|here sym|
|00005590| 62 6f 6c 20 22 61 20 73 | 79 6d 62 6f 6c 20 6f 74 |bol "a s|ymbol ot|
|000055a0| 68 65 72 20 74 68 61 6e | 20 4e 49 4c 22 29 0a 58 |her than| NIL").X|
|000055b0| 20 20 28 63 68 65 63 6b | 2d 74 79 70 65 20 66 75 | (check|-type fu|
|000055c0| 6e 63 74 69 6f 6e 20 66 | 75 6e 63 74 69 6f 6e 20 |nction f|unction |
|000055d0| 22 61 20 66 75 6e 63 61 | 6c 6c 61 62 6c 65 20 6f |"a funca|llable o|
|000055e0| 62 6a 65 63 74 22 29 0a | 58 20 20 0a 58 20 20 28 |bject").|X .X (|
|000055f0| 77 68 65 6e 20 28 61 6e | 64 20 28 6c 69 73 74 70 |when (an|d (listp|
|00005600| 20 66 75 6e 63 74 69 6f | 6e 29 0a 58 09 20 20 20 | functio|n).X. |
|00005610| 20 20 28 65 71 20 28 63 | 61 72 20 66 75 6e 63 74 | (eq (c|ar funct|
|00005620| 69 6f 6e 29 20 27 6c 61 | 6d 62 64 61 29 0a 58 09 |ion) 'la|mbda).X.|
|00005630| 20 20 20 20 20 28 6e 75 | 6c 6c 20 69 6e 68 69 62 | (nu|ll inhib|
|00005640| 69 74 2d 63 6f 6d 70 69 | 6c 65 2d 70 29 29 0a 58 |it-compi|le-p)).X|
|00005650| 20 20 20 20 28 73 65 74 | 71 20 66 75 6e 63 74 69 | (set|q functi|
|00005660| 6f 6e 20 28 63 6f 6d 70 | 69 6c 65 20 6e 69 6c 20 |on (comp|ile nil |
|00005670| 66 75 6e 63 74 69 6f 6e | 29 29 29 0a 58 0a 58 20 |function|))).X.X |
|00005680| 20 28 69 66 20 77 68 65 | 72 65 0a 58 20 20 20 20 | (if whe|re.X |
|00005690| 20 20 28 73 65 74 66 20 | 28 73 79 6d 62 6f 6c 2d | (setf |(symbol-|
|000056a0| 66 75 6e 63 74 69 6f 6e | 20 77 68 65 72 65 29 20 |function| where) |
|000056b0| 66 75 6e 63 74 69 6f 6e | 29 0a 58 20 20 20 20 20 |function|).X |
|000056c0| 20 28 73 65 74 66 20 28 | 64 69 73 63 72 69 6d 69 | (setf (|discrimi|
|000056d0| 6e 61 74 6f 72 2d 64 69 | 73 63 72 69 6d 69 6e 61 |nator-di|scrimina|
|000056e0| 74 69 6e 67 2d 66 75 6e | 63 74 69 6f 6e 20 64 69 |ting-fun|ction di|
|000056f0| 73 63 72 69 6d 69 6e 61 | 74 6f 72 29 20 66 75 6e |scrimina|tor) fun|
|00005700| 63 74 69 6f 6e 29 29 29 | 0a 58 0a 58 0a 58 20 20 |ction)))|.X.X.X |
|00005710| 3b 3b 20 20 20 0a 58 3b | 3b 3b 3b 3b 3b 20 44 69 |;; .X;|;;;;; Di|
|00005720| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 42 61 73 65 |scrimina|tor-Base|
|00005730| 64 20 63 61 63 68 69 6e | 67 2e 0a 58 20 20 3b 3b |d cachin|g..X ;;|
|00005740| 0a 58 3b 3b 3b 20 4d 65 | 74 68 6f 64 73 20 61 72 |.X;;; Me|thods ar|
|00005750| 65 20 63 61 63 68 65 64 | 20 69 6e 20 61 20 64 69 |e cached| in a di|
|00005760| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 62 61 73 65 |scrimina|tor-base|
|00005770| 64 20 63 61 63 68 65 2e | 20 20 54 68 65 20 63 61 |d cache.| The ca|
|00005780| 63 68 65 20 69 73 20 61 | 6e 20 4e 2d 6b 65 79 0a |che is a|n N-key.|
|00005790| 58 3b 3b 3b 20 63 61 63 | 68 65 20 62 61 73 65 64 |X;;; cac|he based|
|000057a0| 20 6f 6e 20 74 68 65 20 | 6e 75 6d 62 65 72 20 6f | on the |number o|
|000057b0| 66 20 73 70 65 63 69 61 | 6c 69 7a 65 64 20 61 72 |f specia|lized ar|
|000057c0| 67 75 6d 65 6e 74 73 20 | 74 68 65 20 64 69 73 63 |guments |the disc|
|000057d0| 72 69 6d 69 6e 61 74 6f | 72 20 68 61 73 2e 0a 58 |riminato|r has..X|
|000057e0| 3b 3b 3b 20 41 73 20 79 | 65 74 20 74 68 65 20 73 |;;; As y|et the s|
|000057f0| 69 7a 65 20 6f 66 20 74 | 68 65 20 63 61 63 68 65 |ize of t|he cache|
|00005800| 20 64 6f 65 73 20 6e 6f | 74 20 63 68 61 6e 67 65 | does no|t change|
|00005810| 20 73 74 61 74 69 63 61 | 6c 6c 79 20 6f 72 20 64 | statica|lly or d|
|00005820| 79 6e 61 6d 69 63 61 6c | 6c 79 2e 0a 58 3b 3b 3b |ynamical|ly..X;;;|
|00005830| 20 42 65 63 61 75 73 65 | 20 6f 66 20 74 68 69 73 | Because| of this|
|00005840| 20 49 20 61 6c 6c 6f 77 | 20 6d 79 73 65 6c 66 20 | I allow| myself |
|00005850| 74 68 65 20 66 72 65 65 | 64 6f 6d 20 6f 66 20 63 |the free|dom of c|
|00005860| 6f 6d 70 75 74 69 6e 67 | 20 74 68 65 20 6d 61 73 |omputing| the mas|
|00005870| 6b 20 61 74 0a 58 3b 3b | 3b 20 63 6f 6d 70 69 6c |k at.X;;|; compil|
|00005880| 65 20 74 69 6d 65 20 61 | 6e 64 20 6e 6f 74 20 65 |e time a|nd not e|
|00005890| 76 65 6e 20 73 74 6f 72 | 69 6e 67 20 69 74 20 69 |ven stor|ing it i|
|000058a0| 6e 20 74 68 65 20 64 69 | 73 63 72 69 6d 69 6e 61 |n the di|scrimina|
|000058b0| 74 6f 72 2e 0a 58 0a 58 | 28 64 65 66 76 61 72 20 |tor..X.X|(defvar |
|000058c0| 2a 64 65 66 61 75 6c 74 | 2d 64 69 73 63 72 69 6d |*default|-discrim|
|000058d0| 69 6e 61 74 6f 72 2d 63 | 61 63 68 65 2d 73 69 7a |inator-c|ache-siz|
|000058e0| 65 2a 20 38 29 0a 58 0a | 58 28 64 65 66 75 6e 20 |e* 8).X.|X(defun |
|000058f0| 6d 61 6b 65 2d 64 69 73 | 63 72 69 6d 69 6e 61 74 |make-dis|criminat|
|00005900| 6f 72 2d 63 61 63 68 65 | 20 28 26 6f 70 74 69 6f |or-cache| (&optio|
|00005910| 6e 61 6c 0a 58 09 09 09 | 09 20 20 28 73 69 7a 65 |nal.X...|. (size|
|00005920| 20 2a 64 65 66 61 75 6c | 74 2d 64 69 73 63 72 69 | *defaul|t-discri|
|00005930| 6d 69 6e 61 74 6f 72 2d | 63 61 63 68 65 2d 73 69 |minator-|cache-si|
|00005940| 7a 65 2a 29 29 0a 58 20 | 20 28 6d 61 6b 65 2d 6d |ze*)).X | (make-m|
|00005950| 65 6d 6f 72 79 2d 62 6c | 6f 63 6b 20 73 69 7a 65 |emory-bl|ock size|
|00005960| 29 29 0a 58 0a 58 28 64 | 65 66 75 6e 20 6d 61 6b |)).X.X(d|efun mak|
|00005970| 65 2d 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d |e-discri|minator-|
|00005980| 63 61 63 68 65 2d 6d 61 | 73 6b 20 28 64 69 73 63 |cache-ma|sk (disc|
|00005990| 72 69 6d 69 6e 61 74 6f | 72 2d 63 61 63 68 65 0a |riminato|r-cache.|
|000059a0| 58 09 09 09 09 20 20 20 | 20 20 20 6e 6f 2d 6f 66 |X.... | no-of|
|000059b0| 2d 73 70 65 63 69 61 6c | 69 7a 65 64 2d 61 72 67 |-special|ized-arg|
|000059c0| 73 29 0a 58 20 20 28 6d | 61 6b 65 2d 6d 65 6d 6f |s).X (m|ake-memo|
|000059d0| 72 79 2d 62 6c 6f 63 6b | 2d 6d 61 73 6b 20 28 6d |ry-block|-mask (m|
|000059e0| 65 6d 6f 72 79 2d 62 6c | 6f 63 6b 2d 73 69 7a 65 |emory-bl|ock-size|
|000059f0| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 2d 63 | discrim|inator-c|
|00005a00| 61 63 68 65 29 0a 58 20 | 20 20 20 20 20 20 20 20 |ache).X | |
|00005a10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005a20| 20 28 2b 20 6e 6f 2d 6f | 66 2d 73 70 65 63 69 61 | (+ no-o|f-specia|
|00005a30| 6c 69 7a 65 64 2d 61 72 | 67 73 20 31 29 29 29 0a |lized-ar|gs 1))).|
|00005a40| 58 0a 58 28 64 65 66 6d | 65 74 68 20 66 6c 75 73 |X.X(defm|eth flus|
|00005a50| 68 2d 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d |h-discri|minator-|
|00005a60| 63 61 63 68 65 73 20 28 | 28 64 69 73 63 72 69 6d |caches (|(discrim|
|00005a70| 69 6e 61 74 6f 72 20 65 | 73 73 65 6e 74 69 61 6c |inator e|ssential|
|00005a80| 2d 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 29 29 |-discrim|inator))|
|00005a90| 0a 58 20 20 28 6c 65 74 | 20 28 28 63 61 63 68 65 |.X (let| ((cache|
|00005aa0| 20 28 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 2d | (discri|minator-|
|00005ab0| 63 61 63 68 65 20 64 69 | 73 63 72 69 6d 69 6e 61 |cache di|scrimina|
|00005ac0| 74 6f 72 29 29 29 0a 58 | 20 20 20 20 28 77 68 65 |tor))).X| (whe|
|00005ad0| 6e 20 63 61 63 68 65 20 | 28 63 6c 65 61 72 2d 6d |n cache |(clear-m|
|00005ae0| 65 6d 6f 72 79 2d 62 6c | 6f 63 6b 20 28 64 69 73 |emory-bl|ock (dis|
|00005af0| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 63 61 63 68 65 |criminat|or-cache|
|00005b00| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 29 20 | discrim|inator) |
|00005b10| 30 29 29 29 29 0a 58 0a | 58 28 64 65 66 6d 65 74 |0)))).X.|X(defmet|
|00005b20| 68 20 69 6e 69 74 69 61 | 6c 69 7a 65 2d 64 69 73 |h initia|lize-dis|
|00005b30| 63 72 69 6d 69 6e 61 74 | 6f 72 2d 63 61 63 68 65 |criminat|or-cache|
|00005b40| 20 28 28 73 65 6c 66 20 | 65 73 73 65 6e 74 69 61 | ((self |essentia|
|00005b50| 6c 2d 64 69 73 63 72 69 | 6d 69 6e 61 74 6f 72 29 |l-discri|minator)|
|00005b60| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00005b70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 6e 6f | | no|
|00005b90| 2d 6f 66 2d 73 70 65 63 | 69 61 6c 69 7a 65 64 2d |-of-spec|ialized-|
|00005ba0| 61 72 67 73 29 0a 58 20 | 20 28 69 67 6e 6f 72 65 |args).X | (ignore|
|00005bb0| 20 6e 6f 2d 6f 66 2d 73 | 70 65 63 69 61 6c 69 7a | no-of-s|pecializ|
|00005bc0| 65 64 2d 61 72 67 73 29 | 0a 58 20 20 28 75 6e 6c |ed-args)|.X (unl|
|00005bd0| 65 73 73 20 28 64 69 73 | 63 72 69 6d 69 6e 61 74 |ess (dis|criminat|
|00005be0| 6f 72 2d 63 61 63 68 65 | 20 73 65 6c 66 29 0a 58 |or-cache| self).X|
|00005bf0| 20 20 20 20 28 73 65 74 | 66 20 28 64 69 73 63 72 | (set|f (discr|
|00005c00| 69 6d 69 6e 61 74 6f 72 | 2d 63 61 63 68 65 20 73 |iminator|-cache s|
|00005c10| 65 6c 66 29 20 28 6d 61 | 6b 65 2d 64 69 73 63 72 |elf) (ma|ke-discr|
|00005c20| 69 6d 69 6e 61 74 6f 72 | 2d 63 61 63 68 65 29 29 |iminator|-cache))|
|00005c30| 29 29 0a 58 0a 58 28 64 | 65 66 6d 61 63 72 6f 20 |)).X.X(d|efmacro |
|00005c40| 64 69 73 63 72 69 6d 69 | 6e 61 74 6f 72 2d 63 61 |discrimi|nator-ca|
|00005c50| 63 68 65 2d 6f 66 66 73 | 65 74 20 28 6d 61 73 6b |che-offs|et (mask|
|00005c60| 20 26 72 65 73 74 20 63 | 6c 61 73 73 65 73 29 0a | &rest c|lasses).|
|00005c70| 58 20 20 60 28 6c 6f 67 | 61 6e 64 20 2c 6d 61 73 |X `(log|and ,mas|
|00005c80| 6b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 2c 40 |k.X | ,@|
|00005c90| 28 69 74 65 72 61 74 65 | 20 28 28 63 6c 61 73 73 |(iterate| ((class|
|00005ca0| 20 69 6e 20 63 6c 61 73 | 73 65 73 29 29 0a 58 09 | in clas|ses)).X.|
|00005cb0| 20 20 20 20 20 20 20 28 | 63 6f 6c 6c 65 63 74 20 | (|collect |
|00005cc0| 60 28 6f 62 6a 65 63 74 | 2d 63 61 63 68 65 2d 6e |`(object|-cache-n|
|00005cd0| 6f 20 2c 63 6c 61 73 73 | 20 2c 6d 61 73 6b 29 29 |o ,class| ,mask))|
|00005ce0| 29 29 29 0a 58 0a 58 28 | 64 65 66 6d 61 63 72 6f |))).X.X(|defmacro|
|00005cf0| 20 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 2d 63 | discrim|inator-c|
|00005d00| 61 63 68 65 2d 65 6e 74 | 72 79 20 28 63 61 63 68 |ache-ent|ry (cach|
|00005d10| 65 20 6f 66 66 73 65 74 | 20 6f 66 66 73 65 74 2d |e offset| offset-|
|00005d20| 66 72 6f 6d 2d 6f 66 66 | 73 65 74 29 0a 58 20 20 |from-off|set).X |
|00005d30| 60 28 6d 65 6d 6f 72 79 | 2d 62 6c 6f 63 6b 2d 72 |`(memory|-block-r|
|00005d40| 65 66 20 2c 63 61 63 68 | 65 20 28 2b 20 2c 6f 66 |ef ,cach|e (+ ,of|
|00005d50| 66 73 65 74 20 2c 6f 66 | 66 73 65 74 2d 66 72 6f |fset ,of|fset-fro|
|00005d60| 6d 2d 6f 66 66 73 65 74 | 29 29 29 0a 58 0a 58 28 |m-offset|))).X.X(|
|00005d70| 64 65 66 6d 61 63 72 6f | 20 63 61 63 68 65 2d 6d |defmacro| cache-m|
|00005d80| 65 74 68 6f 64 20 28 63 | 61 63 68 65 20 6d 61 73 |ethod (c|ache mas|
|00005d90| 6b 20 6d 65 74 68 6f 64 | 2d 66 75 6e 63 74 69 6f |k method|-functio|
|00005da0| 6e 20 26 72 65 73 74 20 | 63 6c 61 73 73 65 73 29 |n &rest |classes)|
|00005db0| 0a 58 20 20 60 28 6c 65 | 74 2a 20 28 28 2e 6f 66 |.X `(le|t* ((.of|
|00005dc0| 66 73 65 74 2e 20 28 64 | 69 73 63 72 69 6d 69 6e |fset. (d|iscrimin|
|00005dd0| 61 74 6f 72 2d 63 61 63 | 68 65 2d 6f 66 66 73 65 |ator-cac|he-offse|
|00005de0| 74 20 2c 6d 61 73 6b 20 | 2c 40 63 6c 61 73 73 65 |t ,mask |,@classe|
|00005df0| 73 29 29 29 0a 58 20 20 | 20 20 20 3b 3b 20 4f 6e |s))).X | ;; On|
|00005e00| 63 65 20 61 67 61 69 6e | 2c 20 77 65 20 68 61 76 |ce again|, we hav|
|00005e10| 65 20 74 6f 20 65 6e 64 | 75 72 65 20 61 20 6c 69 |e to end|ure a li|
|00005e20| 74 74 6c 65 20 62 72 61 | 69 6e 20 64 61 6d 61 67 |ttle bra|in damag|
|00005e30| 65 20 62 65 63 61 75 73 | 65 20 77 65 20 63 61 6e |e becaus|e we can|
|00005e40| 27 74 0a 58 20 20 20 20 | 20 3b 3b 20 63 6f 75 6e |'t.X | ;; coun|
|00005e50| 74 20 6f 6e 20 68 61 76 | 69 6e 67 20 77 69 74 68 |t on hav|ing with|
|00005e60| 6f 75 74 2d 69 6e 74 65 | 72 72 75 70 74 73 2e 20 |out-inte|rrupts. |
|00005e70| 20 49 20 73 75 70 70 6f | 73 65 20 74 68 65 20 73 | I suppo|se the s|
|00005e80| 70 65 65 64 20 6c 6f 73 | 73 20 69 73 6e 27 74 0a |peed los|s isn't.|
|00005e90| 58 20 20 20 20 20 3b 3b | 20 74 6f 6f 20 73 69 67 |X ;;| too sig|
|00005ea0| 6e 69 66 69 63 61 6e 74 | 20 73 69 6e 63 65 20 74 |nificant| since t|
|00005eb0| 68 69 73 20 69 73 20 6f | 6e 6c 79 20 77 68 65 6e |his is o|nly when|
|00005ec0| 20 77 65 20 67 65 74 20 | 61 20 63 61 63 68 65 20 | we get |a cache |
|00005ed0| 6d 69 73 73 2e 0a 58 20 | 20 20 20 20 28 73 65 74 |miss..X | (set|
|00005ee0| 66 20 28 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |f (discr|iminator|
|00005ef0| 2d 63 61 63 68 65 2d 65 | 6e 74 72 79 20 2c 63 61 |-cache-e|ntry ,ca|
|00005f00| 63 68 65 20 2e 6f 66 66 | 73 65 74 2e 20 30 29 20 |che .off|set. 0) |
|00005f10| 6e 69 6c 29 0a 58 20 20 | 20 20 20 2c 40 28 69 74 |nil).X | ,@(it|
|00005f20| 65 72 61 74 65 20 28 28 | 63 6c 61 73 73 20 69 6e |erate ((|class in|
|00005f30| 20 28 63 64 72 20 63 6c | 61 73 73 65 73 29 29 20 | (cdr cl|asses)) |
|00005f40| 28 6b 65 79 2d 6e 6f 20 | 66 72 6f 6d 20 31 29 29 |(key-no |from 1))|
|00005f50| 0a 58 20 20 20 20 20 20 | 20 20 20 28 63 6f 6c 6c |.X | (coll|
|00005f60| 65 63 74 20 60 28 73 65 | 74 66 20 28 64 69 73 63 |ect `(se|tf (disc|
|00005f70| 72 69 6d 69 6e 61 74 6f | 72 2d 63 61 63 68 65 2d |riminato|r-cache-|
|00005f80| 65 6e 74 72 79 20 2c 63 | 61 63 68 65 20 2e 6f 66 |entry ,c|ache .of|
|00005f90| 66 73 65 74 2e 20 2c 6b | 65 79 2d 6e 6f 29 0a 58 |fset. ,k|ey-no).X|
|00005fa0| 09 09 09 20 2c 63 6c 61 | 73 73 29 29 29 0a 58 20 |... ,cla|ss))).X |
|00005fb0| 20 20 20 20 28 70 72 6f | 67 31 0a 58 20 20 20 20 | (pro|g1.X |
|00005fc0| 20 20 20 28 73 65 74 66 | 20 28 64 69 73 63 72 69 | (setf| (discri|
|00005fd0| 6d 69 6e 61 74 6f 72 2d | 63 61 63 68 65 2d 65 6e |minator-|cache-en|
|00005fe0| 74 72 79 20 2c 63 61 63 | 68 65 20 2e 6f 66 66 73 |try ,cac|he .offs|
|00005ff0| 65 74 2e 20 2c 28 6c 65 | 6e 67 74 68 20 63 6c 61 |et. ,(le|ngth cla|
|00006000| 73 73 65 73 29 29 0a 58 | 09 20 20 20 20 20 2c 6d |sses)).X|. ,m|
|00006010| 65 74 68 6f 64 2d 66 75 | 6e 63 74 69 6f 6e 29 0a |ethod-fu|nction).|
|00006020| 58 20 20 20 20 20 20 20 | 28 73 65 74 66 20 28 64 |X |(setf (d|
|00006030| 69 73 63 72 69 6d 69 6e | 61 74 6f 72 2d 63 61 63 |iscrimin|ator-cac|
|00006040| 68 65 2d 65 6e 74 72 79 | 20 2c 63 61 63 68 65 20 |he-entry| ,cache |
|00006050| 2e 6f 66 66 73 65 74 2e | 20 30 29 20 2c 28 63 61 |.offset.| 0) ,(ca|
|00006060| 72 20 63 6c 61 73 73 65 | 73 29 29 29 29 29 0a 58 |r classe|s))))).X|
|00006070| 0a 58 28 64 65 66 6d 61 | 63 72 6f 20 63 61 63 68 |.X(defma|cro cach|
|00006080| 65 64 2d 6d 65 74 68 6f | 64 20 28 76 61 72 20 63 |ed-metho|d (var c|
|00006090| 61 63 68 65 20 6d 61 73 | 6b 20 26 72 65 73 74 20 |ache mas|k &rest |
|000060a0| 63 6c 61 73 73 65 73 29 | 0a 58 20 20 60 28 6c 65 |classes)|.X `(le|
|000060b0| 74 20 28 28 2e 6f 66 66 | 73 65 74 2e 20 28 64 69 |t ((.off|set. (di|
|000060c0| 73 63 72 69 6d 69 6e 61 | 74 6f 72 2d 63 61 63 68 |scrimina|tor-cach|
|000060d0| 65 2d 6f 66 66 73 65 74 | 20 2c 6d 61 73 6b 20 2e |e-offset| ,mask .|
|000060e0| 20 2c 63 6c 61 73 73 65 | 73 29 29 29 0a 58 20 20 | ,classe|s))).X |
|000060f0| 20 20 20 28 61 6e 64 20 | 2c 40 28 69 74 65 72 61 | (and |,@(itera|
|00006100| 74 65 20 28 28 63 6c 61 | 73 73 20 69 6e 20 63 6c |te ((cla|ss in cl|
|00006110| 61 73 73 65 73 29 20 28 | 6b 65 79 2d 6e 6f 20 66 |asses) (|key-no f|
|00006120| 72 6f 6d 20 30 29 29 0a | 58 20 20 20 20 20 20 20 |rom 0)).|X |
|00006130| 20 20 20 20 20 20 20 28 | 63 6f 6c 6c 65 63 74 0a | (|collect.|
|00006140| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00006150| 20 60 28 65 71 20 28 64 | 69 73 63 72 69 6d 69 6e | `(eq (d|iscrimin|
|00006160| 61 74 6f 72 2d 63 61 63 | 68 65 2d 65 6e 74 72 79 |ator-cac|he-entry|
|00006170| 20 2c 63 61 63 68 65 20 | 2e 6f 66 66 73 65 74 2e | ,cache |.offset.|
|00006180| 20 2c 6b 65 79 2d 6e 6f | 29 0a 58 09 09 20 20 20 | ,key-no|).X.. |
|00006190| 20 20 2c 63 6c 61 73 73 | 29 29 29 0a 58 20 20 20 | ,class|))).X |
|000061a0| 20 20 20 20 20 20 20 28 | 73 65 74 71 20 2c 76 61 | (|setq ,va|
|000061b0| 72 20 28 64 69 73 63 72 | 69 6d 69 6e 61 74 6f 72 |r (discr|iminator|
|000061c0| 2d 63 61 63 68 65 2d 65 | 6e 74 72 79 20 2c 63 61 |-cache-e|ntry ,ca|
|000061d0| 63 68 65 0a 58 09 09 09 | 09 09 09 2e 6f 66 66 73 |che.X...|....offs|
|000061e0| 65 74 2e 0a 58 09 09 09 | 09 09 09 2c 28 6c 65 6e |et..X...|...,(len|
|000061f0| 67 74 68 20 63 6c 61 73 | 73 65 73 29 29 29 0a 58 |gth clas|ses))).X|
|00006200| 20 20 20 20 20 20 20 20 | 20 20 74 29 29 29 0a 58 | | t))).X|
|00006210| 0a 58 28 64 65 66 6d 65 | 74 68 20 6d 61 6b 65 2d |.X(defme|th make-|
|00006220| 63 61 63 68 69 6e 67 2d | 64 69 73 63 72 69 6d 69 |caching-|discrimi|
|00006230| 6e 61 74 69 6e 67 2d 66 | 75 6e 63 74 69 6f 6e 20 |nating-f|unction |
|00006240| 28 64 69 73 63 72 69 6d | 69 6e 61 74 6f 72 20 6c |(discrim|inator l|
|00006250| 6f 6f 6b 75 70 2d 66 75 | 6e 63 74 69 6f 6e 0a 58 |ookup-fu|nction.X|
|00006260| 09 09 09 09 09 09 09 20 | 20 20 20 20 20 63 61 63 |....... | cac|
|00006270| 68 65 0a 58 09 09 09 09 | 09 09 09 20 20 20 20 20 |he.X....|... |
|00006280| 20 6d 61 73 6b 29 0a 58 | 20 20 28 6d 75 6c 74 69 | mask).X| (multi|
|00006290| 70 6c 65 2d 76 61 6c 75 | 65 2d 62 69 6e 64 20 28 |ple-valu|e-bind (|
|000062a0| 72 65 71 75 69 72 65 64 | 20 72 65 73 74 70 20 73 |required| restp s|
|000062b0| 70 65 63 69 61 6c 69 7a | 65 64 2d 70 6f 73 69 74 |pecializ|ed-posit|
|000062c0| 69 6f 6e 73 29 0a 58 20 | 20 20 20 20 20 28 63 6f |ions).X | (co|
|000062d0| 6d 70 75 74 65 2d 64 69 | 73 63 72 69 6d 69 6e 61 |mpute-di|scrimina|
|000062e0| 74 69 6e 67 2d 66 75 6e | 63 74 69 6f 6e 2d 61 72 |ting-fun|ction-ar|
|000062f0| 67 6c 69 73 74 2d 69 6e | 66 6f 20 64 69 73 63 72 |glist-in|fo discr|
|00006300| 69 6d 69 6e 61 74 6f 72 | 29 0a 58 20 20 20 20 28 |iminator|).X (|
|00006310| 66 75 6e 63 61 6c 6c 20 | 28 67 65 74 2d 74 65 6d |funcall |(get-tem|
|00006320| 70 6c 61 74 65 64 2d 66 | 75 6e 63 74 69 6f 6e 2d |plated-f|unction-|
|00006330| 63 6f 6e 73 74 72 75 63 | 74 6f 72 0a 58 09 20 20 |construc|tor.X. |
|00006340| 20 20 20 20 20 27 63 61 | 63 68 69 6e 67 2d 64 69 | 'ca|ching-di|
|00006350| 73 63 72 69 6d 69 6e 61 | 74 69 6e 67 2d 66 75 6e |scrimina|ting-fun|
|00006360| 63 74 69 6f 6e 0a 58 09 | 20 20 20 20 20 20 20 72 |ction.X.| r|
|00006370| 65 71 75 69 72 65 64 0a | 58 09 20 20 20 20 20 20 |equired.|X. |
|00006380| 20 72 65 73 74 70 0a 58 | 09 20 20 20 20 20 20 20 | restp.X|. |
|00006390| 73 70 65 63 69 61 6c 69 | 7a 65 64 2d 70 6f 73 69 |speciali|zed-posi|
|000063a0| 74 69 6f 6e 73 0a 58 09 | 20 20 20 20 20 20 20 6c |tions.X.| l|
|000063b0| 6f 6f 6b 75 70 2d 66 75 | 6e 63 74 69 6f 6e 29 0a |ookup-fu|nction).|
|000063c0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 64 69 |X | di|
|000063d0| 73 63 72 69 6d 69 6e 61 | 74 6f 72 20 63 61 63 68 |scrimina|tor cach|
|000063e0| 65 20 6d 61 73 6b 29 29 | 29 0a 58 0a 58 28 64 65 |e mask))|).X.X(de|
|000063f0| 66 75 6e 20 6d 61 6b 65 | 2d 63 68 65 63 6b 69 6e |fun make|-checkin|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.