Use external strings to store the contents of Edwin buffers. Edwin can
now edit files and buffers up to 32 MB without occupying more than a
small and (roughly) constant amount of space in the Scheme heap.
New procedures in the system global environment:
EXTERNAL-STRING-DESCRIPTOR (Edwin needs this to initialize the group
structure so that the microcode can get at it.)
XSTRING-FILL!
XSTRING-REF
XSTRING-SET!
XSUBSTRING (This was in imail/imail-util.scm.)
XSUBSTRING-FILL!
XSUBSTRING-FIND-NEXT-CHAR
XSUBSTRING-FIND-NEXT-CHAR-CI
XSUBSTRING-FIND-NEXT-CHAR-IN-SET
XSUBSTRING-FIND-PREVIOUS-CHAR
XSUBSTRING-FIND-PREVIOUS-CHAR-CI
XSUBSTRING-FIND-PREVIOUS-CHAR-IN-SET
(There is probably a better way to deal with most of the above
procedures -- I expect that wouldn't hurt just to fold them into the
string operations by similar names, since we already check argument
types in those operations. This kludginess works for now, though.)
15 files changed: