Changeset 5590


Ignore:
Timestamp:
Dec 4, 2006, 11:52:24 AM (18 years ago)
Author:
Gary Byers
Message:

Choke earlier on unsupported stream element-types; do some upgrading to support
some more element types (BIT -> (UNSIGNED-BYTE 8)).

Maybe support arbitrarily large integer types someday soon.
Maybe not.

File:
1 edited

Legend:

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

    r5585 r5590  
    29792979                          (t '%ioblock-write-char-translating-newline-to-line-separator))))))))
    29802980
    2981 (defun buffer-element-type-for-character-encoding (encoding)
    2982   (declare (ignore encoding))
    2983   '(unsigned-byte 8))
     2981
     2982(defun ensure-reasonable-element-type (element-type)
     2983  (let* ((upgraded (upgraded-array-element-type element-type)))
     2984    (if (eq upgraded 'bit)
     2985      '(unsigned-byte 8)
     2986      (if (eq upgraded t)
     2987        (error "Stream element-type ~s can't be reasonably supported." element-type)
     2988        upgraded))))
    29842989
    29852990(defun init-stream-ioblock (stream
     
    30353040            (make-heap-ivector insize
    30363041                               (if character-p
    3037                                  (buffer-element-type-for-character-encoding encoding)
    3038                                  element-type))
     3042                                 '(unsigned-byte 8)
     3043                                 (setq element-type
     3044                                       (ensure-reasonable-element-type element-type))))
    30393045          (setf (ioblock-inbuf ioblock)
    30403046                (make-io-buffer :buffer buffer
     
    30603066              (make-heap-ivector outsize
    30613067                                 (if character-p
    3062                                    (buffer-element-type-for-character-encoding encoding)
    3063                                    element-type))
     3068                                   '(unsigned-byte 8)
     3069                                   (setq element-type (ensure-reasonable-element-type element-type))))
    30643070            (setf (ioblock-outbuf ioblock)
    30653071                  (make-io-buffer :buffer buffer
Note: See TracChangeset for help on using the changeset viewer.