MACHIINEINDEPENDENT
MAKEFILE NEW with Interlisp read table, as per Larry's request
This commit is contained in:
142
library/UNICODE
142
library/UNICODE
@@ -1,11 +1,12 @@
|
|||||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT XCCS)
|
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT XCCS)
|
||||||
(FILECREATED " 3-Jul-2021 13:37:33"
|
(FILECREATED " 1-Aug-2021 23:18:29"
|
||||||
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>UNICODE.;175 66483
|
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>UNICODE.;181 64649
|
||||||
|
|
||||||
changes to%: (FNS READ-UNICODE-MAPPING MAKE-UNICODE-FORMATS)
|
changes to%: (VARS UNICODECOMS)
|
||||||
|
(FNS MAKE-UNICODE-FORMATS)
|
||||||
|
|
||||||
previous date%: " 3-Jul-2021 11:41:05"
|
previous date%: " 1-Aug-2021 10:01:35"
|
||||||
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>UNICODE.;173)
|
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>UNICODE.;180)
|
||||||
|
|
||||||
|
|
||||||
(PRETTYCOMPRINT UNICODECOMS)
|
(PRETTYCOMPRINT UNICODECOMS)
|
||||||
@@ -14,8 +15,8 @@
|
|||||||
[(COMS
|
[(COMS
|
||||||
(* ;; "External formats")
|
(* ;; "External formats")
|
||||||
|
|
||||||
(FNS UTF8.OUTCHARFN UTF8.INCCODEFN UTF8.PEEKCCODEFN \UTF8.BACKCHARFN)
|
(FNS UTF8.OUTCHARFN UTF8.INCCODEFN UTF8.PEEKCCODEFN \UTF8.BACKCCODEFN)
|
||||||
(FNS UTF16BE.OUTCHARFN UTF16BE.INCCODEFN UTF16BE.PEEKCCODEFN \UTF16.BACKCHARFN)
|
(FNS UTF16BE.OUTCHARFN UTF16BE.INCCODEFN UTF16BE.PEEKCCODEFN \UTF16.BACKCCODEFN)
|
||||||
(INITVARS (EXTERNALEOL 'LF))
|
(INITVARS (EXTERNALEOL 'LF))
|
||||||
(FNS MAKE-UNICODE-FORMATS)
|
(FNS MAKE-UNICODE-FORMATS)
|
||||||
(P (MAKE-UNICODE-FORMATS EXTERNALEOL))
|
(P (MAKE-UNICODE-FORMATS EXTERNALEOL))
|
||||||
@@ -78,7 +79,7 @@
|
|||||||
(DEFINEQ
|
(DEFINEQ
|
||||||
|
|
||||||
(UTF8.OUTCHARFN
|
(UTF8.OUTCHARFN
|
||||||
[LAMBDA (STREAM CHARCODE RAW) (* ; "Edited 1-Feb-2021 15:50 by rmk:")
|
[LAMBDA (STREAM CHARCODE RAW) (* ; "Edited 1-Aug-2021 10:00 by rmk:")
|
||||||
(* ; "Edited 17-Aug-2020 08:45 by rmk:")
|
(* ; "Edited 17-Aug-2020 08:45 by rmk:")
|
||||||
(* ; "Edited 30-Jan-2020 23:08 by rmk:")
|
(* ; "Edited 30-Jan-2020 23:08 by rmk:")
|
||||||
|
|
||||||
@@ -88,12 +89,7 @@
|
|||||||
|
|
||||||
(IF (EQ CHARCODE (CHARCODE EOL))
|
(IF (EQ CHARCODE (CHARCODE EOL))
|
||||||
THEN (REPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
|
THEN (REPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
|
||||||
(\BOUT STREAM (SELECTC (FETCH (STREAM EOLCONVENTION) OF STREAM)
|
(\BOUTEOL STREAM)
|
||||||
(LF.EOLC (CHARCODE LF))
|
|
||||||
(CR.EOLC (CHARCODE CR))
|
|
||||||
(CRLF.EOLC (\BOUT STREAM (CHARCODE CR))
|
|
||||||
(CHARCODE LF))
|
|
||||||
(SHOULDNT)))
|
|
||||||
ELSE (CHANGE (FETCH (STREAM CHARPOSITION) OF STREAM)
|
ELSE (CHANGE (FETCH (STREAM CHARPOSITION) OF STREAM)
|
||||||
(IPLUS DATUM 1)) (* ; "Avoid overflow")
|
(IPLUS DATUM 1)) (* ; "Avoid overflow")
|
||||||
(FOR C INSIDE (CL:IF RAW
|
(FOR C INSIDE (CL:IF RAW
|
||||||
@@ -131,7 +127,17 @@
|
|||||||
[LAMBDA (STREAM BYTECOUNTVAR BYTECOUNTVAL RAW) (* ; "Edited 15-Jun-2021 13:35 by rmk:")
|
[LAMBDA (STREAM BYTECOUNTVAR BYTECOUNTVAL RAW) (* ; "Edited 15-Jun-2021 13:35 by rmk:")
|
||||||
(* ; "Edited 6-Aug-2020 17:13 by rmk:")
|
(* ; "Edited 6-Aug-2020 17:13 by rmk:")
|
||||||
|
|
||||||
(* ;; "Do not do UNICODE to XCSS translation if RAW.")
|
(* ;; "Do not do UNICODE to XCSS translation if RAW.")
|
||||||
|
|
||||||
|
(* ;; "Test for smallp because the stream's End-of-file operation may suppress the error")
|
||||||
|
|
||||||
|
(LET (BYTE1 BYTE2 BYTE3 BYTE4 CODE (COUNT 1))
|
||||||
|
(SETQ BYTE1 (\BIN STREAM))
|
||||||
|
|
||||||
|
(* ;; "Distinguish on header bytes (modulo peculiar EOF behavior--the caller will get whatever ended up in BYTE1")
|
||||||
|
|
||||||
|
(CL:WHEN (SMALLP BYTE1)
|
||||||
|
[SETQ CODE
|
||||||
(IF (ILESSP BYTE1 128)
|
(IF (ILESSP BYTE1 128)
|
||||||
THEN
|
THEN
|
||||||
|
|
||||||
@@ -155,61 +161,57 @@
|
|||||||
(LF (CL:IF (EQ LF.EOLC (FETCH (STREAM EOLCONVENTION) OF STREAM))
|
(LF (CL:IF (EQ LF.EOLC (FETCH (STREAM EOLCONVENTION) OF STREAM))
|
||||||
(CHARCODE EOL)
|
(CHARCODE EOL)
|
||||||
BYTE1))
|
BYTE1))
|
||||||
(CL:WHEN BYTECOUNTVAR
|
BYTE1)
|
||||||
|
ELSEIF (IGEQ BYTE1 (LLSH 15 4))
|
||||||
|
THEN (* ; "4 bytes")
|
||||||
|
(SETQ BYTE2 (\BIN STREAM))
|
||||||
|
(CL:WHEN (OR (NOT (SMALLP BYTE2))
|
||||||
|
(ILESSP BYTE2 128))
|
||||||
|
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
|
||||||
|
(SETQ BYTE3 (\BIN STREAM))
|
||||||
|
(CL:WHEN (OR (NOT (SMALLP BYTE3))
|
||||||
|
(ILESSP BYTE3 128))
|
||||||
|
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
|
||||||
(SETQ BYTE4 (\BIN STREAM))
|
(SETQ BYTE4 (\BIN STREAM))
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE4))
|
(CL:WHEN (OR (NOT (SMALLP BYTE4))
|
||||||
(ILESSP BYTE4 128))
|
(ILESSP BYTE4 128))
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4)))
|
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4)))
|
||||||
(SETQ COUNT 4)
|
(SETQ COUNT 4)
|
||||||
(LOGOR (LLSH (LOADBYTE BYTE1 0 3)
|
(LOGOR (LLSH (LOADBYTE BYTE1 0 3)
|
||||||
(LF (CL:IF (EQ LF.EOLC (FETCH (STREAM EOLCONVENTION) OF STREAM))
|
18)
|
||||||
(LLSH (LOADBYTE BYTE2 0 6)
|
(LLSH (LOADBYTE BYTE2 0 6)
|
||||||
12)
|
12)
|
||||||
(LLSH (LOADBYTE BYTE3 0 6)
|
(LLSH (LOADBYTE BYTE3 0 6)
|
||||||
6)
|
6)
|
||||||
(LOADBYTE BYTE4 0 6))
|
(LOADBYTE BYTE4 0 6))
|
||||||
(SETQ BYTE2 (\BIN STREAM))
|
ELSEIF (IGEQ BYTE1 (LLSH 7 5))
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE2))
|
THEN (* ; "3 bytes")
|
||||||
(ILESSP BYTE2 128))
|
(SETQ BYTE2 (\BIN STREAM))
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
|
(CL:WHEN (OR (NOT (SMALLP BYTE2))
|
||||||
(SETQ BYTE3 (\BIN STREAM))
|
(ILESSP BYTE2 128))
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE3))
|
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
|
||||||
(ILESSP BYTE3 128))
|
(SETQ BYTE3 (\BIN STREAM))
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
|
(CL:WHEN (OR (NOT (SMALLP BYTE3))
|
||||||
(SETQ BYTE4 (\BIN STREAM))
|
(ILESSP BYTE3 128))
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE4))
|
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
|
||||||
(ILESSP BYTE4 128))
|
(SETQ COUNT 3)
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4)))
|
(LOGOR (LLSH (LOADBYTE BYTE1 0 4)
|
||||||
(SETQ COUNT 4)
|
12)
|
||||||
(LOGOR (LLSH (LOADBYTE BYTE1 0 3)
|
(LLSH (LOADBYTE BYTE2 0 6)
|
||||||
18)
|
6)
|
||||||
(LLSH (LOADBYTE BYTE2 0 6)
|
(LOADBYTE BYTE3 0 6))
|
||||||
12)
|
ELSE (* ; "Must be 2 bytes")
|
||||||
(LLSH (LOADBYTE BYTE3 0 6)
|
(SETQ COUNT 2)
|
||||||
6)
|
(SETQ BYTE2 (\BIN STREAM))
|
||||||
(LOADBYTE BYTE4 0 6))
|
(CL:WHEN (OR (NOT (SMALLP BYTE2))
|
||||||
ELSEIF (IGEQ BYTE1 (LLSH 7 5))
|
(ILESSP BYTE2 128))
|
||||||
THEN (* ; "3 bytes")
|
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
|
||||||
(SETQ BYTE2 (\BIN STREAM))
|
(LOGOR (LLSH (LOADBYTE BYTE1 0 5)
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE2))
|
6)
|
||||||
(ILESSP BYTE2 128))
|
(LOADBYTE BYTE2 0 6])
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
|
(CL:UNLESS (OR RAW (NOT (SMALLP CODE)))
|
||||||
(SETQ BYTE3 (\BIN STREAM))
|
(SETQ CODE (UNICODE.TRANSLATE CODE *UNICODETOXCCS*)))
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE3))
|
(CL:WHEN BYTECOUNTVAR
|
||||||
(ILESSP BYTE3 128))
|
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
|
|
||||||
(SETQ COUNT 3)
|
|
||||||
(LOGOR (LLSH (LOADBYTE BYTE1 0 4)
|
|
||||||
12)
|
|
||||||
(LLSH (LOADBYTE BYTE2 0 6)
|
|
||||||
6)
|
|
||||||
(LOADBYTE BYTE3 0 6))
|
|
||||||
ELSE (* ; "Must be 2 bytes")
|
|
||||||
(SETQ COUNT 2)
|
|
||||||
(SETQ BYTE2 (\BIN STREAM))
|
|
||||||
(CL:WHEN (OR (NOT (SMALLP BYTE2))
|
|
||||||
(ILESSP BYTE2 128))
|
|
||||||
(ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
|
|
||||||
(SET BYTECOUNTVAR (IDIFFERENCE BYTECOUNTVAL COUNT)))
|
(SET BYTECOUNTVAR (IDIFFERENCE BYTECOUNTVAL COUNT)))
|
||||||
CODE])
|
CODE])
|
||||||
|
|
||||||
@@ -993,15 +995,15 @@
|
|||||||
'*XCCSTOUNICODE*
|
'*XCCSTOUNICODE*
|
||||||
'*UNICODETOXCCS*)
|
'*UNICODETOXCCS*)
|
||||||
)
|
)
|
||||||
(CL:SETF (CL:SVREF LTORARRAY (ADD1 N-TRANSLATION-SEGMENTS))
|
(DECLARE%: DOEVAL@COMPILE DONTCOPY
|
||||||
(CL:SVREF RTOLARRAY N-TRANSLATION-SEGMENTS))
|
|
||||||
(CL:SETF (CL:SVREF RTOLARRAY (ADD1 N-TRANSLATION-SEGMENTS))
|
(GLOBALVARS *XCCSTOUNICODE* *UNICODETOXCCS*)
|
||||||
(CL:SVREF LTORARRAY N-TRANSLATION-SEGMENTS))
|
)
|
||||||
|
(DEFINEQ
|
||||||
(* ;; "")
|
|
||||||
|
(HEXSTRING
|
||||||
(CL:WHEN LTORVAR (SETATOMVAL LTORVAR LTORARRAY))
|
[LAMBDA (N WIDTH) (* ; "Edited 23-Jul-2020 08:28 by rmk:")
|
||||||
(CL:WHEN RTOLVAR (SETATOMVAL RTOLVAR RTOLARRAY))
|
(* ; "Edited 20-Dec-93 17:51 by rmk:")
|
||||||
(LIST LTORARRAY RTOLARRAY])
|
|
||||||
)
|
(* ;;
|
||||||
"Converts positive numbers to Hex strings, padding on the right with 0 up to WIDTH if given.")
|
"Converts positive numbers to Hex strings, padding on the right with 0 up to WIDTH if given.")
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Reference in New Issue
Block a user