Changeset 5258


Ignore:
Timestamp:
Sep 24, 2006, 7:11:19 PM (18 years ago)
Author:
Gary Byers
Message:

Some stuff to infer line-termination. Probably belongs elsewhere;
some encodings may not make it at all possible.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/l1-streams.lisp

    r5256 r5258  
    943943  (io-buffer-count (ioblock-outbuf ioblock)))
    944944
     945
     946;;; Return #\Return if an encoded #\Return is found first in vector,
     947;;; #\Linefeed if and encoded #\Linefeed is found first or if neither
     948;;; is found.
     949(defun u8-infer-line-termination (vector n)
     950  (declare (type (simple-array (unsigned-byte 8) (*)) vector)
     951           (type index n)
     952           (optimize (speed 3) (safety 0)))
     953  (dotimes (i n #\linefeed)
     954    (let* ((code (aref vector i)))
     955      (declare (type (unsigned-byte 8) code))
     956      (if (= code (char-code #\linefeed))
     957        (return #\linefeed)
     958        (if (= code (char-code #\return))
     959          (return #\return))))))
     960
     961(defun u16-infer-line-termination (vector n)
     962  (declare (type (simple-array (unsigned-byte 16) (*)) vector)
     963           (type index n)
     964           (optimize (speed 3) (safety 0)))
     965  (dotimes (i n #\linefeed)
     966    (let* ((code (aref vector i)))
     967      (declare (type (unsigned-byte 16) code))
     968      (if (= code (char-code #\linefeed))
     969        (return #\linefeed)
     970        (if (= code (char-code #\return))
     971          (return #\return))))))
     972
     973(defun swapped-u16-infer-line-termination (vector n)
     974  (declare (type (simple-array (unsigned-byte 16) (*)) vector)
     975           (type index n)
     976           (optimize (speed 3) (safety 0)))
     977  (dotimes (i n #\linefeed)
     978    (let* ((code (%swap-u16 (aref vector i))))
     979      (declare (type (unsigned-byte 16) code))
     980      (if (= code (char-code #\linefeed))
     981        (return #\linefeed)
     982        (if (= code (char-code #\return))
     983          (return #\return))))))
     984
     985(defun u32-infer-line-termination (vector n)
     986  (declare (type (simple-array (unsigned-byte 32) (*)) vector)
     987           (type index n)
     988           (optimize (speed 3) (safety 0)))
     989  (dotimes (i n #\linefeed)
     990    (let* ((code (aref vector i)))
     991      (declare (type (unsigned-byte 32) code))
     992      (if (= code (char-code #\linefeed))
     993        (return #\linefeed)
     994        (if (= code (char-code #\return))
     995          (return #\return))))))
     996
     997(defun swapped-u32-infer-line-termination (vector n)
     998  (declare (type (simple-array (unsigned-byte 32) (*)) vector)
     999           (type index n)
     1000           (optimize (speed 3) (safety 0)))
     1001  (dotimes (i n #\linefeed)
     1002    (let* ((code (%swap-u32 (aref vector i))))
     1003      (declare (type (unsigned-byte 32) code))
     1004      (if (= code (char-code #\linefeed))
     1005        (return #\linefeed)
     1006        (if (= code (char-code #\return))
     1007          (return #\return))))))
     1008
     1009
     1010
     1011             
    9451012
    9461013
Note: See TracChangeset for help on using the changeset viewer.