Rmk64: mainly separate panels for GITFNS display, FILEPOS speed up (#862)
* HRULE: Add a PREPRINTFN for horizontal rules Looks better in plaintext files * GITFNS, COMPAREDIRECTORIES: Group earler/later in separate segments GIT-CDBROWSER-SEPARATE-DIRECTIONS defaults to T * FILEIO: INITVARS rather than VARS for FILING.TYPES To avoid contamination with values from other files (like LAFITE) * FILEPKG: SEPRCASE in EDITCALLERS includes comma and quote even if no DWIMIFYCOMPLFG Also seprate the caseinsensitive UPPERCASEARRAY from the SEPRCASE array * IOCHAR: Open code the call to \INCCODE.EOLC About a 30% speed up in the slow (casearray/skip) case. Eventually macros should be defined for the externalformat interface functions, for now it is nice to be able to trace/break them. * EXTERNALFORMAT: a little bit of cleanup particularly around EOLC
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "10-Jul-2022 16:52:14"
|
||||
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;39 99224
|
||||
(FILECREATED "24-Jul-2022 14:56:20"
|
||||
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;43 100109
|
||||
|
||||
:CHANGES-TO (FNS FILEPOS \SLOWFILEPOS FFILEPOS)
|
||||
:CHANGES-TO (FNS \SLOWFILEPOS)
|
||||
|
||||
:PREVIOUS-DATE " 1-Jul-2022 11:55:50"
|
||||
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;36)
|
||||
:PREVIOUS-DATE "10-Jul-2022 16:52:14"
|
||||
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;39)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -633,6 +633,8 @@ DONTCOPY
|
||||
(\SLOWFILEPOS
|
||||
[LAMBDA (PATTERN STREAM STARTBYTEPOS ENDBYTEPOS SKIP TAIL CASEARRAY)
|
||||
|
||||
(* ;; "Edited 24-Jul-2022 14:56 by rmk")
|
||||
|
||||
(* ;; "Edited 10-Jul-2022 16:50 by rmk")
|
||||
|
||||
(* ;; "Edited 1-Jul-2022 10:51 by rmk")
|
||||
@@ -685,8 +687,11 @@ DONTCOPY
|
||||
(* ;;
|
||||
"EOFGUARD saves a little testing, assumes no character in any encoding takes more than 10 bytes.")
|
||||
|
||||
(BIND STREAMCODE NBYTESHI NBYTESLO SECONDCHARSET (NBYTES _ (IDIFFERENCE ENDBYTEPOS
|
||||
STARTBYTEPOS))
|
||||
(BIND STREAMCODE NBYTESHI NBYTESLO SECONDCHARSET *BYTECOUNTER* (NBYTES _ (IDIFFERENCE
|
||||
ENDBYTEPOS
|
||||
STARTBYTEPOS))
|
||||
(EOLC _ (FFETCH (STREAM EOLCONVENTION) OF STREAM))
|
||||
(INCCODEFN _ (FFETCH (STREAM INCCODEFN) OF STREAM)) DECLARE (SPECVARS *BYTECOUNTER*)
|
||||
FIRST (SETQ NBYTESHI (FOLDLO NBYTES FILEPOS.SEGMENT.SIZE))
|
||||
(SETQ NBYTESLO (IMOD NBYTES FILEPOS.SEGMENT.SIZE))
|
||||
DO (DO
|
||||
@@ -705,9 +710,19 @@ DONTCOPY
|
||||
(NULL (\PEEKCCODE STREAM T)))
|
||||
(GO FAILED))
|
||||
(SETQ STARTCHARSET (ffetch (STREAM CHARSET) of STREAM))
|
||||
(SETQ STREAMCODE (\INCCODE.EOLC STREAM NIL 'NFIRSTCODEBYTES 0))
|
||||
(ADD NBYTESLO NFIRSTCODEBYTES) (* ;
|
||||
(PROGN
|
||||
(* ;;
|
||||
"Open coding of \INCCODE.EOLC (with *BYTECOUNTER* and EOLC bindings above.")
|
||||
|
||||
(SETQ STREAMCODE (\CHECKEOLC (CL:FUNCALL INCCODEFN STREAM T)
|
||||
EOLC STREAM NIL T))
|
||||
|
||||
(* ;; "Make negative because that's the \INCCODE convention")
|
||||
|
||||
(SETQ NFIRSTCODEBYTES (IMINUS *BYTECOUNTER*)))
|
||||
(* ;
|
||||
"Decrement the character's byte count")
|
||||
(ADD NBYTESLO NFIRSTCODEBYTES)
|
||||
(CL:WHEN (EQ PATFIRSTCODE SKIPCODE) (* ; "Pattern starts with skip")
|
||||
(RETURN))
|
||||
(CL:WHEN CABASE
|
||||
@@ -745,16 +760,16 @@ DONTCOPY
|
||||
FOUNDIT
|
||||
|
||||
|
||||
(* ;; "The CHARSET should be accurate in the tail case. We have to adjust for the start case.")
|
||||
(* ;; "The CHARSET should be accurate in the tail case. We have to adjust for the start case. NPBYTES is positive, given that we opencoded the \INCCODE.EOLC in the first-char loop.")
|
||||
|
||||
(RETURN (SELECTQ TAIL
|
||||
(NIL (* ;
|
||||
"Fileptr wants to be where the match started")
|
||||
(freplace (STREAM CHARSET) of STREAM with STARTCHARSET)
|
||||
(\INCFILEPTR STREAM (IPLUS NPBYTES NFIRSTCODEBYTES))
|
||||
(\INCFILEPTR STREAM (IPLUS NFIRSTCODEBYTES NPBYTES))
|
||||
(\GETFILEPTR STREAM))
|
||||
(BOTH (CONS (IPLUS (\GETFILEPTR STREAM)
|
||||
NPBYTES NFIRSTCODEBYTES)
|
||||
NFIRSTCODEBYTES NPBYTES)
|
||||
(\GETFILEPTR STREAM)))
|
||||
(\GETFILEPTR STREAM)))
|
||||
FAILED
|
||||
@@ -1554,15 +1569,15 @@ DONTCOPY
|
||||
(PUTPROPS IOCHAR COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1990
|
||||
1991 2018 2020))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (3524 7318 (CHCON 3534 . 4384) (UNPACK 4386 . 5280) (DCHCON 5282 . 6549) (DUNPACK 6551
|
||||
. 7316)) (7319 18834 (UALPHORDER 7329 . 7425) (ALPHORDER 7427 . 9230) (CONCAT 9232 . 9877) (
|
||||
CONCATCODES 9879 . 10065) (PACKC 10067 . 12670) (PACK 12672 . 13251) (PACK* 13253 . 14975) (\PACK.ITEM
|
||||
14977 . 15432) (STRPOS 15434 . 18832)) (18836 19125 (XCL:PACK 18836 . 19125)) (19127 19377 (XCL:PACK*
|
||||
19127 . 19377)) (20015 22406 (STRPOSL 20025 . 21651) (MAKEBITTABLE 21653 . 22404)) (22568 23045 (
|
||||
CASEARRAY 22578 . 22768) (UPPERCASEARRAY 22770 . 23043)) (23367 55842 (FILEPOS 23377 . 32618) (
|
||||
FFILEPOS 32620 . 44841) (\SETUP.FFILEPOS 44843 . 48626) (\SLOWFILEPOS 48628 . 55840)) (56630 97877 (
|
||||
DATE 56640 . 56726) (DATEFORMAT 56728 . 56820) (GDATE 56822 . 56933) (IDATE 56935 . 68606) (
|
||||
\IDATESCANTOKEN 68608 . 69887) (\IDATE-PARSE-MONTH 69889 . 73585) (\OUTDATE 73587 . 86335) (
|
||||
\OUTDATE-STRING 86337 . 86952) (\RPLRIGHT 86954 . 87192) (\UNPACKDATE 87194 . 92985) (\PACKDATE 92987
|
||||
. 96307) (\DTSCAN 96309 . 96451) (\ISDST? 96453 . 96960) (\CHECKDSTCHANGE 96962 . 97875)))))
|
||||
(FILEMAP (NIL (3507 7301 (CHCON 3517 . 4367) (UNPACK 4369 . 5263) (DCHCON 5265 . 6532) (DUNPACK 6534
|
||||
. 7299)) (7302 18817 (UALPHORDER 7312 . 7408) (ALPHORDER 7410 . 9213) (CONCAT 9215 . 9860) (
|
||||
CONCATCODES 9862 . 10048) (PACKC 10050 . 12653) (PACK 12655 . 13234) (PACK* 13236 . 14958) (\PACK.ITEM
|
||||
14960 . 15415) (STRPOS 15417 . 18815)) (18819 19108 (XCL:PACK 18819 . 19108)) (19110 19360 (XCL:PACK*
|
||||
19110 . 19360)) (19998 22389 (STRPOSL 20008 . 21634) (MAKEBITTABLE 21636 . 22387)) (22551 23028 (
|
||||
CASEARRAY 22561 . 22751) (UPPERCASEARRAY 22753 . 23026)) (23350 56727 (FILEPOS 23360 . 32601) (
|
||||
FFILEPOS 32603 . 44824) (\SETUP.FFILEPOS 44826 . 48609) (\SLOWFILEPOS 48611 . 56725)) (57515 98762 (
|
||||
DATE 57525 . 57611) (DATEFORMAT 57613 . 57705) (GDATE 57707 . 57818) (IDATE 57820 . 69491) (
|
||||
\IDATESCANTOKEN 69493 . 70772) (\IDATE-PARSE-MONTH 70774 . 74470) (\OUTDATE 74472 . 87220) (
|
||||
\OUTDATE-STRING 87222 . 87837) (\RPLRIGHT 87839 . 88077) (\UNPACKDATE 88079 . 93870) (\PACKDATE 93872
|
||||
. 97192) (\DTSCAN 97194 . 97336) (\ISDST? 97338 . 97845) (\CHECKDSTCHANGE 97847 . 98760)))))
|
||||
STOP
|
||||
|
||||
Reference in New Issue
Block a user