1
0
mirror of synced 2026-05-10 09:25:44 +00:00
Files
Interlisp.medley/library/tedit/TEDIT-PCTREE.LCOM
2026-05-07 20:57:58 -07:00

209 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
(FILECREATED "10-Apr-2026 09:59:07" ("compiled on " {WMEDLEY}<library>TEDIT>TEDIT-PCTREE.;252)
"10-Apr-2026 00:42:33" recompiled explicitly%: \TEDIT.MAKEPCTB \TEDIT.SPLITPIECE in
"FULL 10-Apr-2026 ..." dated "10-Apr-2026 00:42:42")
(FILECREATED " 9-Apr-2026 17:25:38" {WMEDLEY}<library>TEDIT>TEDIT-PCTREE.;252 68540 :EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.SPLITPIECE) :PREVIOUS-DATE "14-Feb-2026 13:22:06"
{WMEDLEY}<library>TEDIT>TEDIT-PCTREE.;251)
\TEDIT.MAKEPCTB :D8
(P 6 \INTERRUPTABLE P 0 NODE I 0 TEXTOBJ) ¢`dkÏ ¿dj$¿dj¿QH`dlÏ¿o ¹dI¿dk¿dj¿ZJdÈåHÒnÿåäÍ¿JlkØÐHÓÍ@É@»dK ¿@É:¼dL¿dj¿@HÉ@h
@j@Hh]M(53 CONCAT)
(122 TEXTOBJ 108 TEXTOBJ 35 |PIECETYPE#| 30 BTREENODE 4 |BTREENODETYPE#|)
( 48 "")
\TEDIT.UPDATEPCNODES :D8
(P 1 UPWARD P 0 NODE I 2 TEXTOBJ I 1 DELTA I 0 PC) <00> XÉ"¹HHÉ$AÔ$¿I³BBÉhI!J[dÊ kÙààмHKÉð”Kµ i‡KdLð²'¿h¿IIÉ$AÔ$¿IXÉ"Y°¦lл°ÆNIL
(107 BTREENODE 101 BTREENODE 43 TEXTOBJ 37 TEXTOBJ 21 BTREENODE 15 BTREENODE)
()
\TEDIT.FIRSTPIECE :D8
(P 0 NODE I 0 TEXTOBJ) <@<40>´
@ÉÉ©H@Éð¡HhX°ìNIL
(41 BTREENODE 29 TEXTOBJ 22 STREAM 14 STREAM 5 TEXTOBJ)
()
\TEDIT.DELETETREE :D8
(P 3 OLDSLOT P 2 TARGET P 1 LAST P 0 \INTERRUPTABLE I 2 TEXTOBJ I 1 PCNODE I 0 OLD) ±Bh
kð²AdÉ"b¿b¿¿°äAdÊ kÙààÐ!A!L]dÊ kÙààо@MÉð”Mµ i‡MdNð²!¿ho ¿KIðŸKh¿KjŒlн°ÌKZdIð²¿AAÊ mÿÔÏ hοJhοJdÉ¿Jj¿JlаÇ(94 \TEDIT.THELP)
(135 BTREENODE 129 BTREENODE 18 BTREENODE)
( 89 "Piece/node not in PCNODE")
\TEDIT.INSERTTREE :D8
(P 7 \INTERRUPTABLE P 1 NEXTSLOT P 0 PARENT I 2 TEXTOBJ I 1 NEXT I 0 NEW) ÞBh
“AÉAÉ"1H!L]dÊ kÙààоAMÉð”Mµ i‡MdNð²{¿hYHHÊ kÔÏ HdÊ kÙààÐZmüлJKÉοKhοJKÉ¿Kj¿KdIð²ß¿I@¿I@ò.@dÈ"nðåHÒnÿåäÍ"¿@l"kØÐHÓÍ@É$°,lн±ÿr@dÈåHÒnÿåäÍ¿@lkØÐHÓÍ@NIL
(135 BTREENODE 69 BTREENODE 63 BTREENODE 9 PIECE)
()
\TEDIT.LASTPIECE :D8
(L (0 TEXTOBJ)) É
NIL
NIL
()
\TEDIT.PCTOCH :D8
(P 8 TOPNODE P 5 S P 2 CHARCOUNT P 1 PCNODE P 0 PREV I 1 TEXTOBJ I 0 PC) f @dÉkJIj"K]dÊ kÙààоHMÉð¬LMÉÔ¼MdNð²¿LÔºIXÉ"Y³ÒJAÉjNµ
OØlн°Í_Hð³ðOOÉ$Ô_¿N^°ÞNIL
NIL
()
\TEDIT.CHTOPC :D8
(P 17 START P 16 NBASE-CH# P 15 BASE-CH# P 14 NODE P 12 S P 10 NBASE-CH# P 9 BASE-CH# P 8 NODE P 7 LOCALCH# P 6 NEXT P 4 START P 3 BASE-NODE P 2 ALLPRIOR P 1 STARTCH P 0 HINTPC I 2 TELL-PC-START? I 1 TEXTOBJ I 0 CH# F 18 START-OF-PIECE) C @AÉñ<>B—AÉkØc$¿AÉ
@AÉ Yýñ³@dIÙHÉýñ˜¿BIc$H@jñ§B´jc$h`¢±j!Mµ,@JÙKk
Oó.AO
¿OJؼAL ¿BLc$O»JKÉ$ؾ@Nñ²ËNºM]°ÁO!
O_kÙààÐ_¿OOÉØ_dOñ•¿OÉ_¿OdOð¿h_°•lÐ_¿°ÕAÉk"OòCO!
O_kÙààÐ_¿OOÉØ_ d@ñ•¿OÉ_¿OdOð¿h_°ÂlÐ_¿°ÖAO
¿AO ¿B“Oc$ONIL
(233 BTREENODE 106 BTREENODE 72 MULTIPLE-PIECE-TABLES)
()
\TEDIT.SET-TOTLEN :D8
(P 2 S I 0 PCNODE) ?g @@j"HZdÊ kÙààлIJÉÔ¹JdKð¿IHI$Ilк°å(9 \TEDIT.THELP)
(15 BTREENODE 4 NOTCALLED)
()
\TEDIT.MAKE.VACANT.BTREESLOT :D8
(P 11 DOWN P 10 PRSLOT P 9 BTSLOT P 7 \INTERRUPTABLE P 6 \INTERRUPTABLE P 3 PREFIXNODE P 2 HALFCOUNT P 1 PREFIXTOTLEN P 0 PARENT I 1 TEXTOBJ I 0 BTNODE) DggA @Ê lð´‚±#@É"j@Ê â3‚±ç`dkÏ ¿@É$¼dL$¿X@¿H@É$¿@½MdÈ"nðåHÒnÿåäÍ"¿Ml"kØÐHÓÍ@Aɵ o H`dJÏ ¿[K@2 O_kÙààÐ_¿OOÉοO¿OOÉ¿Oj¿IOÉÔ¹OÉ_ò<OåKÒnÿåäÍ¿OlkØÐKÓͰ:Ê lð—HA
¿@É"¸±ÿrOdÈ"nðåKÒnÿåäÍ"¿Ol"kØÐKÓÍOdOð²FKI$¿@JÏ ¿@@É$jIÙÔ$¿H!O_kÙààÐ_¿@OÉð²Oµ i°lÐ_¿OlÐ_¿±ÿOdOð²k¿h@É$¿@dJkØkÙààÐ2O_¿O_ dÊ kÙààÐ_¿OO ÉοO hοOO É¿O j¿OOð³$O Oð³OlÐ_¿O lÐ_ ¿°ÄlÐ_¿±ÿiK@A ggA (577 \TEDIT.BTVALIDATE 560 \TEDIT.INSERTTREE 294 \TEDIT.MAKE.VACANT.BTREESLOT 154 \TEDIT.THELP 15 \TEDIT.BTVALIDATE)
(571 END 566 \TEDIT.MAKE.VACANT.BTREESLOT 368 BTREENODE 362 BTREENODE 242 PIECE 162 |BTREENODETYPE#| 104 BTREENODE 90 BTREENODE 70 BTREENODE 57 |BTREENODETYPE#| 21 BTREENODE 9 START 4 \TEDIT.MAKE.VACANT.BTREESLOT)
( 149 "BTNODE NOT FOUND")
\TEDIT.LINKNEWPIECE :D8
(L (2 TEXTOBJ 1 NEXT 0 NEW) P 1 \INTERRUPTABLE) 1bÉ
@AdBÉð’´h@HÎ
A@Î
@@¿°öNIL
NIL
()
\TEDIT.SPLITPIECE :D8
(P 1 \INTERRUPTABLE P 0 PREVPC I 2 TEXTOBJ I 1 CHOFFSET I 0 PC) 6ggB @´‚±Ajñ¢±Bh
¿@ÉÊ lð™@ÉB
¿`@
djÏ¿dA¿o
ªo ¿dlð¥dlð²!¿H@ÉkA ¿@dÉAkØ
°3djð³dlð¯dl ðªdlð¥dl ð²¿@@ÉA@ÉÚÔ¿@@É¿@É!J[dÊ kÙààм@KÉð”Kµ i‡KdLð².¿h¿H@B ¿H@
ggB @lл°¿(300 \TEDIT.BTVALIDATE 283 \TEDIT.LINKNEWPIECE 275 \TEDIT.INSERTTREE 150 SUBSTRING 135 SUBSTRING 104 \TEDIT.THELP 93 MEMB 65 NCREATE2 53 \TEDIT.MAKE.VACANT.BTREESLOT 15 \TEDIT.BTVALIDATE)
(294 AFTER-INSERTPIECE 289 \TEDIT.SPLITPIECE 216 PIECE 210 PIECE 193 PIECE 187 PIECE 59 |PIECETYPE#| 9 START 4 \TEDIT.SPLITPIECE)
( 99 "ATTEMPT TO SPLIT A NONSTRING NONFILE PIECE" 88 (3 4 0 2 11 8 9))
\TEDIT.INSERTPIECE :D8
(P 4 \INTERRUPTABLE P 1 LASTTREECONS P 0 PCTB I 2 TEXTOBJ I 1 NEXTPC I 0 NEWPC) ãggB Bh
A¥BÉb¿`²{AdBÉð²t¿BÉ1H ¹@ÉIÉ$Ønÿþýñ³UAdÉB ¿I`dkÏ ¿dj$¿dj¿dA¿&¹AI»ºJdÈåKÒnÿåäÍ¿JlkØÐKÓÍBH¿Ê lð™AÉB
¿@AB ¿@AB ¿@dÉB ggB @(223 \TEDIT.BTVALIDATE 206 \TEDIT.UPDATEPCNODES 195 \TEDIT.LINKNEWPIECE 186 \TEDIT.INSERTTREE 174 \TEDIT.MAKE.VACANT.BTREESLOT 81 \TEDIT.DELETETREE 55 LAST 15 \TEDIT.BTVALIDATE)
(217 END 212 \TEDIT.INSERTPIECE 88 |BTREENODETYPE#| 32 MULTIPLE-PIECE-TABLES 9 START 4 \TEDIT.INSERTPIECE)
()
\TEDIT.INSERTPIECES :D8
(P 2 \INTERRUPTABLE P 1 PC P 0 PREVPC I 2 TEXTOBJ I 1 NEXTPC I 0 PIECES) @´‚±<00>B¿Bh
¿Bh¿BÊ,jðhðið­Bi
¿BkÏ,¿AµbÉ
@°6¹Ê lð™AÉB
¿IAB ¿IdÉB µÌAdBÉð¦¿IA¿AIÎ
¿Hµ@HÎ
@@¿°ö(112 \TEDIT.UPDATEPCNODES 101 \TEDIT.INSERTTREE 92 \TEDIT.MAKE.VACANT.BTREESLOT 41 \TEDIT.WINDOW.TITLE)
(69 PIECE 12 TEXTOBJ)
()
\TEDIT.DELETEPIECES :D8
(P 6 \INTERRUPTABLE P 4 NEXT P 3 PREV P 2 PC I 1 TEXTOBJ I 0 SELPIECES) ýggA ²"`d@¿d@¿@ÉHdI¿b€@AAh
¿@ÉÉ
»@Éɵ¼Ah¿AÊ,jðhðið­Ai
¿AkÏ,¿Iµ°D¿IɺIɽJjJÉÙA ¿JdÉA ¿Kµ7LKÎ
JdMð²4¿@É
¿@ÉhggA ¿°Åɺ°<C2BA>(232 \TEDIT.BTVALIDATE 176 \TEDIT.DELETETREE 165 \TEDIT.UPDATEPCNODES 114 \TEDIT.WINDOW.TITLE 15 \TEDIT.BTVALIDATE)
(248 PIECE 226 AFTER 221 \TEDIT.DELETEPIECES 210 SELPIECES 198 SELPIECES 149 PIECE 140 PIECE 131 SELPIECES 81 SELPIECES 70 SELPIECES 28 |SELPIECESTYPE#| 21 PIECE 9 BEFORE 4 \TEDIT.DELETEPIECES)
()
\TEDIT.ALIGNEDPIECE :D8
(P 1 START-OF-PIECE P 0 PC I 1 TEXTOBJ I 0 CHNO) 5@dAÉñ”¿AÉkñ¦A  @Ai X@IÙjð©d@IÙA H(49 \TEDIT.SPLITPIECE 32 \TEDIT.CHTOPC 20 \TEDIT.FIRSTPIECE)
NIL
()
\TEDIT.BTVALIDATE :D8
(P 4 PLENHIST P 3 COUNTHIST P 2 DEPTHHIST P 1 NPIECES P 0 NNODES I 3 PRINT I 2 TOBJ I 1 MSG I 0 TAG) ±@`ð³:`@d`“¿°'@²$`gð³`´vg`´ijd2Bµbg g ð³g i
µ+i
µg i
µ o C•¿ °í(173 TEXTOBJ 166 \TEDIT.BTVALIDATE.PRINT 159 \TEDIT.CHECK-BTREE 154 ERROR 142 TEXTOBJ 136 \EVALV1 124 TEXTOBJ 118 WHICHW 111 TEXTOBJ 105 \EVALV1 92 \EVALV1 82 GETTOPVAL)
(131 LASTTESTSTREAM 100 TEXTOBJ 87 TEXTOBJ 77 TEXTOBJ 61 BTVALIDATETAGS 56 ALL 48 BTVALIDATETAGS 40 ALL 35 BTVALIDATETAGS 22 BTVALIDATETAGS 13 BTVALIDATETAGS 5 BTVALIDATETAGS)
( 149 "NOT A TEXTOBJ")
\TEDIT.BTVALIDATE.PRINT :D8
(P 8 PLH P 5 CH P 2 DH F 9 DEPTHHIST F 10 COUNTHIST F 11 PLENHIST F 12 NPIECES F 13 NNODES) Ž Wi
cWi
cWi
coi
Wi
i oi
Wi
i oi
Wi
i oi
W i
i oi
oWjHµ‚±±IWëi i oi
W i
i oi
oWjKµuLWëi i oi
oWjNµZOWëi i oi
oW i i ºIJJÖÔ¹HX±ÿ>½LMMÖÔ¼K[±ÿ}_¿OOOÖÔ_¿N^°‘(341 TERPRI 335 PRINTNUM 327 LAST 315 PRIN1 304 TERPRI 298 PRINTNUM 271 PRIN1 260 TERPRI 254 PRINTNUM 228 PRIN1 217 TERPRI 211 PRIN1 203 LAST 196 PRIN1 185 TERPRI 179 PRINTNUM 149 PRIN1 138 TERPRI 132 PRIN1 124 LAST 117 PRIN1 106 TERPRI 100 PRIN1 90 PRIN1 79 TERPRI 73 PRIN1 65 PRIN1 54 TERPRI 48 PRIN1 40 PRIN1 27 SORT 17 SORT 7 SORT)
NIL
( 320 (FIX 3) 309 "Maximum PLEN: " 276 (FLOAT 5 1) 265 "Average PLEN: " 233 (FLOAT 1 2) 222 "Average count: "
190 "Maximum count: " 154 (FLOAT 3 1) 143 "Average depth: " 111 "Maximum depth: " 84 "Minimum depth: "
59 "Number of pieces: " 34 "Number of nodes: ")
\TEDIT.CHECK-BTREE :D8
(P 9 S P 6 BT P 3 PC P 2 BT P 0 SUFFIXPIECE I 1 EMBEDDED I 0 TEXTOBJ) [ @ b@ °Rd¢ºhƒºI¹Jjh ¿°Ýdlð¥dlð²¿KÉ ³#o°lð² «oK
¿Kɵk
²6@É ²1@É
@
Ùjð³ o
@
h
¿@µgÉ@ÉjLµRMÙjð³äo@
¿°Ödjð³dlð³dl ð¬dlð§dl ð¢±ÿ8¿KÉ ±ÿbo±ÿS£L¾h„L¾L¼MNj"
O_kÙààÐ_¿OOÉÔ_¿OdOð˜¿OÔ½±ÿtlÐ_¿°à(265 STREAMP 215 \TEDIT.BTFAIL 170 \TEDIT.BTFAIL 161 \TEDIT.PCTOCH 136 \TEDIT.PCTOCH 107 \TEDIT.BTFAIL 95 IMAGEOBJP 73 STRINGP 50 \TEDIT.CHECK-BTREE1 29 \TEDIT.FIRSTPIECE 5 TEXTOBJ)
(223 PIECE 188 TEXTOBJ 179 VALID)
( 274 "File piece without a stream" 209 "TEXTLEN is inconsistent" 146 "HINTPC is not valid" 101 "Imageobject piece without an object"
80 "String piece without a string")
\TEDIT.CHECK-BTREE1 :D8
(P 7 CHECKLEN P 6 DLEN P 5 S P 2 S P 1 I I 2 PARENT I 1 DEPTH I 0 NODE F 9 SUFFIXPIECE F 10 DEPTHHIST F 11 PLENHIST F 12 COUNTHIST F 13 NPIECES F 14 NNODES)  AkÔb¢±î@Wð²WÉ
¢±ŸWÉ
É¢±•oW±…j@Éño@
¿@ɳ@WÉ
ð«o@
¿B@Éð«o@
¿@É
²$@ddÉ
Éð³É
ɦ@dWð­¿o@
¿@É£W²@dɵWÉ
ð«o@
¿WkÔcAW
µ AjWcd¿@ÉWµ
jWcd¿@ÉB@É"ð«o@
¿WkÔc@Ê Wµ@Ê jWcd¿l@Ê @IkÙààкIHó³&JÉ­o
«o@
¿IkÔ¹°Ñ@jBK]dÊ kÙààÐ_¿LMɾjNño@
¿NdjØjð³.¿MÉA@ _¿NdOÙjð³¿o@NOh
¿NÔ¼MdOð²+¿@É$LÙjð³o@dÉ$Lh
Llн°<C2BD>(521 \TEDIT.BTFAIL 471 \TEDIT.BTFAIL 440 \TEDIT.CHECK-BTREE1 420 \TEDIT.BTFAIL 373 \TEDIT.BTFAIL 361 MEMB 271 \TEDIT.BTFAIL 198 SASSOC 183 \TEDIT.BTFAIL 151 \TEDIT.BTFAIL 112 \TEDIT.BTFAIL 89 \TEDIT.BTFAIL 65 \TEDIT.BTFAIL)
(509 BTREENODE 489 BTREENODE 323 BTREENODE 298 BTREENODE 284 BTREENODE 256 BTREENODE 221 PIECE 97 PIECE 10 PIECE)
( 502 "Mismatching TOTLEN" 458 "Mismatching DLEN" 414 "Negative DLEN" 367 "Upper node entries are not empty"
356 (0 NIL) 265 "NODE with wrong UPWARD" 177 "NEXTPIECE is not consistent" 145 "PREVPIECE is not consistent"
106 "Piece with wrong PTREENODE" 83 "PIECE with no NEXT is not PREV of SUFFIXPIECE" 59 "Negative PLEN"
43 "(NEXT (PPREV of SUFFIXPIECE is not NULL")
\TEDIT.BTFAIL :D8
(I 1 VAL I 0 STRING F 0 TAG F 1 MSG) )oooo@
A
(38 \TEDIT.THELP 32 CONCAT)
NIL
( 25 ": " 20 "" 12 " " 7 "")
\TEDIT.MATCHPCS :D8
(P 4 \INTERRUPTABLE P 2 DOWN P 1 S I 0 NODE) s@1HYdÊ kÙààлIɲ$JdÈå@ÒnÿåäÍ¿JlkØÐ@ÓͰ*Jò"JdÈ"nðå@ÒnÿåäÍ"¿Jl"kØÐ@ÓÍIdKðhlÐY°¡NIL
(66 BTREENODE 24 PIECE)
()
(PRETTYCOMPRINT TEDIT-PCTREECOMS)
(RPAQQ TEDIT-PCTREECOMS ((* ;; "Balanced tree PIECE TABLE supporting functions") (DECLARE%:
EVAL@COMPILE DONTCOPY (* ;;
"\BTREEMAXCOUNT = number of children in a full node = maximum value for a node's COUNT field.") (
EXPORT (CONSTANTS (\BTREEWORDSPERSLOT 4) (\BTREEMAXCOUNT 8)) (RECORDS BTREENODE BTSLOT) (MACROS
\NTHSLOT \NEXTSLOT \PREVSLOT \LASTSLOT \FIRSTSLOT \MOVESLOT \FILLSLOT \FINDSLOT) (MACROS \SUFFIXPIECEP
) (I.S.OPRS inslots inpieces backpieces)) (MACROS \INSURE.VACANT.BTREESLOT) (ADDVARS (
INSPECTDONTSORTFIELDS BTREENODE))) (INITRECORDS BTREENODE) (INITVARS (MULTIPLE-PIECE-TABLES T)) (* ;
"Experimentation") (GLOBALVARS MULTIPLE-PIECE-TABLES) (FNS \TEDIT.MAKEPCTB \TEDIT.UPDATEPCNODES
\TEDIT.FIRSTPIECE \TEDIT.DELETETREE \TEDIT.INSERTTREE \TEDIT.LASTPIECE \TEDIT.PCTOCH \TEDIT.CHTOPC
\TEDIT.SET-TOTLEN \TEDIT.MAKE.VACANT.BTREESLOT \TEDIT.LINKNEWPIECE \TEDIT.SPLITPIECE
\TEDIT.INSERTPIECE \TEDIT.INSERTPIECES \TEDIT.DELETEPIECES \TEDIT.ALIGNEDPIECE) (COMS (* ;
"Debugging ") (FNS \TEDIT.BTVALIDATE \TEDIT.BTVALIDATE.PRINT \TEDIT.CHECK-BTREE \TEDIT.CHECK-BTREE1
\TEDIT.BTFAIL \TEDIT.MATCHPCS) (INITVARS (BTVALIDATETAGS (QUOTE DONT))) (GLOBALVARS BTVALIDATETAGS))))
(/DECLAREDATATYPE (QUOTE BTREENODE) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER
POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER BYTE XPOINTER POINTER)) (QUOTE
((BTREENODE 0 POINTER) (BTREENODE 2 POINTER) (BTREENODE 4 POINTER) (BTREENODE 6 POINTER) (BTREENODE 8
POINTER) (BTREENODE 10 POINTER) (BTREENODE 12 POINTER) (BTREENODE 14 POINTER) (BTREENODE 16 POINTER)
(BTREENODE 18 POINTER) (BTREENODE 20 POINTER) (BTREENODE 22 POINTER) (BTREENODE 24 POINTER) (BTREENODE
26 POINTER) (BTREENODE 28 POINTER) (BTREENODE 30 POINTER) (BTREENODE 32 (BITS . 7)) (BTREENODE 34
XPOINTER) (BTREENODE 36 POINTER))) (QUOTE 38))
(RPAQ? MULTIPLE-PIECE-TABLES T)
(RPAQ? BTVALIDATETAGS (QUOTE DONT))
NIL