Changeset 5329
- Timestamp:
- Oct 9, 2006, 2:19:42 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/level-1/l1-streams.lisp (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-1/l1-streams.lisp
r5319 r5329 382 382 (peek-char-function 'ioblock-no-char-input) 383 383 (native-byte-order t) 384 (read-char-without-translation-wh ile-locked-function 'ioblock-no-char-input)385 (write-char-without-translation-wh ile-locked-function 'iblock-no-char-output)384 (read-char-without-translation-when-locked-function 'ioblock-no-char-input) 385 (write-char-without-translation-when-locked-function 'iblock-no-char-output) 386 386 (sharing nil) 387 387 (reserved0 nil) … … 406 406 (report-bad-arg (ioblock-stream ioblock) '(and character-stream input-stream))) 407 407 408 (defun ioblock-no-char-output (ioblock &rest other -otters)409 (declare (ignore other -otters))408 (defun ioblock-no-char-output (ioblock &rest others) 409 (declare (ignore others)) 410 410 (report-bad-arg (ioblock-stream ioblock) '(and character-stream output-stream))) 411 411 … … 1833 1833 (limit (ioblock-literal-char-code-limit ioblock)) 1834 1834 (encode-function (ioblock-encode-output-function ioblock)) 1835 (wcf (ioblock-write-char-when-locked-function ioblock)) 1835 1836 (start-char start-char (1+ start-char))) 1836 1837 ((= i num-chars) (setf (ioblock-charpos ioblock) col) num-chars) … … 1839 1840 (code (char-code char))) 1840 1841 (declare (type (mod #x110000) code)) 1841 (if (eq char #\newline) 1842 (setq col 0) 1843 (incf col)) 1844 (if (< code limit) 1845 (%ioblock-write-u8-element ioblock code) 1846 (funcall encode-function char #'%ioblock-write-u8-element ioblock))))) 1842 (cond ((eq char #\newline) 1843 (setq col 0) 1844 (funcall wcf ioblock char)) 1845 (t 1846 (incf col) 1847 (if (< code limit) 1848 (%ioblock-write-u8-element ioblock code) 1849 (funcall encode-function char #'%ioblock-write-u8-element ioblock))))))) 1847 1850 1848 1851 (declaim (inline %ioblock-write-u16-encoded-char)) … … 1889 1892 (limit (ioblock-literal-char-code-limit ioblock)) 1890 1893 (encode-function (ioblock-encode-output-function ioblock)) 1894 (wcf (ioblock-write-char-when-locked-function ioblock)) 1891 1895 (start-char start-char (1+ start-char))) 1892 1896 ((= i num-chars) (setf (ioblock-charpos ioblock) col) num-chars) … … 1895 1899 (code (char-code char))) 1896 1900 (declare (type (mod #x110000) code)) 1897 (if (eq char #\newline) 1898 (setq col 0) 1899 (incf col)) 1900 (if (< code limit) 1901 (%ioblock-write-u16-code-unit ioblock code) 1902 (funcall encode-function char #'%ioblock-write-u16-code-unit ioblock))))) 1901 (cond ((eq char #\newline) 1902 (setq col 0) 1903 (funcall wcf ioblock char)) 1904 (t 1905 (incf col) 1906 (if (< code limit) 1907 (%ioblock-write-u16-code-unit ioblock code) 1908 (funcall encode-function char #'%ioblock-write-u16-code-unit ioblock))))))) 1903 1909 1904 1910 (declaim (inline %ioblock-write-swapped-u16-encoded-char)) … … 1935 1941 (limit (ioblock-literal-char-code-limit ioblock)) 1936 1942 (encode-function (ioblock-encode-output-function ioblock)) 1943 (wcf (ioblock-write-char-when-locked-function ioblock)) 1937 1944 (start-char start-char (1+ start-char))) 1938 1945 ((= i num-chars) (setf (ioblock-charpos ioblock) col) num-chars) … … 1941 1948 (code (char-code char))) 1942 1949 (declare (type (mod #x110000) code)) 1943 (if (eq char #\newline) 1944 (setq col 0) 1945 (incf col)) 1946 (if (< code limit) 1947 (%ioblock-write-swapped-u16-code-unit ioblock code) 1948 (funcall encode-function char #'%ioblock-write-swapped-u16-code-unit ioblock))))) 1950 (cond ((eq char #\newline) 1951 (setq col 0) 1952 (funcall wcf ioblock char)) 1953 (t 1954 (incf col) 1955 (if (< code limit) 1956 (%ioblock-write-swapped-u16-code-unit ioblock code) 1957 (funcall encode-function char #'%ioblock-write-swapped-u16-code-unit ioblock))))))) 1949 1958 1950 1959 … … 2330 2339 (defun %ioblock-read-char-translating-cr-to-newline (ioblock) 2331 2340 (let* ((ch (funcall 2332 (ioblock-read-char-without-translation-wh ile-locked-function2341 (ioblock-read-char-without-translation-when-locked-function 2333 2342 ioblock) 2334 2343 ioblock))) … … 2348 2357 (defun %ioblock-read-char-translating-crlf-to-newline (ioblock) 2349 2358 (let* ((ch (funcall 2350 (ioblock-read-char-without-translation-wh ile-locked-function2359 (ioblock-read-char-without-translation-when-locked-function 2351 2360 ioblock) 2352 2361 ioblock))) 2353 2362 (if (eql ch #\Return) 2354 2363 (let* ((next (funcall 2355 (ioblock-read-char-without-translation-wh ile-locked-function2364 (ioblock-read-char-without-translation-when-locked-function 2356 2365 ioblock) 2357 2366 ioblock))) … … 2375 2384 (defun %ioblock-read-char-translating-line-separator-to-newline (ioblock) 2376 2385 (let* ((ch (funcall 2377 (ioblock-read-char-without-translation-wh ile-locked-function2386 (ioblock-read-char-without-translation-when-locked-function 2378 2387 ioblock) 2379 2388 ioblock))) … … 2392 2401 (declaim (inline %ioblock-write-char-translating-newline-to-cr)) 2393 2402 (defun %ioblock-write-char-translating-newline-to-cr (ioblock char) 2394 (funcall (ioblock-write-char-without-translation-wh ile-locked-function2403 (funcall (ioblock-write-char-without-translation-when-locked-function 2395 2404 ioblock) 2396 2405 ioblock … … 2408 2417 (defun %ioblock-write-char-translating-newline-to-crlf (ioblock char) 2409 2418 (when (eql char #\Newline) 2410 (funcall (ioblock-write-char-without-translation-wh ile-locked-function2419 (funcall (ioblock-write-char-without-translation-when-locked-function 2411 2420 ioblock) 2412 2421 ioblock 2413 2422 #\Return)) 2414 (funcall (ioblock-write-char-without-translation-wh ile-locked-function2423 (funcall (ioblock-write-char-without-translation-when-locked-function 2415 2424 ioblock) 2416 2425 ioblock … … 2427 2436 (declaim (inline %ioblock-write-char-translating-newline-to-line-separator)) 2428 2437 (defun %ioblock-write-char-translating-newline-to-line-separator (ioblock char) 2429 (funcall (ioblock-write-char-without-translation-wh ile-locked-function2438 (funcall (ioblock-write-char-without-translation-when-locked-function 2430 2439 ioblock) 2431 2440 ioblock … … 2444 2453 2445 2454 (defun setup-ioblock-input (ioblock character-p element-type sharing encoding line-termination) 2455 (setf (ioblock-sharing ioblock) sharing) 2446 2456 (when character-p 2447 2457 (if encoding 2448 2458 (let* ((unit-size (character-encoding-code-unit-size encoding))) 2449 (unless (eql unit-size 8)2450 (setq line-termination nil))2451 2459 (setf (ioblock-peek-char-function ioblock) '%encoded-ioblock-peek-char) 2452 2460 (setf (ioblock-read-line-function ioblock) … … 2494 2502 (setf (ioblock-read-line-function ioblock) 2495 2503 '%ioblock-unencoded-read-line))) 2496 (case line-termination 2497 ((:cr :crlf) 2498 (let* ((inbuf (ioblock-inbuf ioblock))) 2499 (setf (io-buffer-translate inbuf) line-termination))))) 2504 (when line-termination 2505 (setf (ioblock-read-char-without-translation-when-locked-function ioblock) 2506 (ioblock-read-char-when-locked-function ioblock)) 2507 (ecase line-termination 2508 (:cr (setf (ioblock-read-char-when-locked-function ioblock) 2509 '%ioblock-read-char-translating-cr-to-newline 2510 (ioblock-read-char-function ioblock) 2511 (case sharing 2512 (:private 2513 '%private-ioblock-read-char-translating-cr-to-newline) 2514 (:lock 2515 '%locked-ioblock-read-char-translating-cr-to-newline) 2516 (t '%ioblock-read-char-translating-cr-to-newline)))) 2517 (:crlf (setf (ioblock-read-char-when-locked-function ioblock) 2518 '%ioblock-read-char-translating-crlf-to-newline 2519 (ioblock-read-char-function ioblock) 2520 (case sharing 2521 (:private 2522 '%private-ioblock-read-char-translating-crlf-to-newline) 2523 (:lock 2524 '%locked-ioblock-read-char-translating-crlf-to-newline) 2525 (t '%ioblock-read-char-translating-crlf-to-newline)))) 2526 (:unicode (setf (ioblock-read-char-when-locked-function ioblock) 2527 '%ioblock-read-char-translating-line-separator-to-newline 2528 (ioblock-read-char-function ioblock) 2529 (case sharing 2530 (:private 2531 '%private-ioblock-read-char-translating-line-separator-to-newline) 2532 (:lock 2533 '%locked-ioblock-read-char-translating-line-separator-to-newline) 2534 (t '%ioblock-read-char-translating-line-separator-to-newline))))))) 2535 2500 2536 (unless (or (eq element-type 'character) 2501 2537 (subtypep element-type 'character)) … … 2578 2614 2579 2615 (defun setup-ioblock-output (ioblock character-p element-type sharing encoding line-termination) 2616 (or (ioblock-sharing ioblock) 2617 (setf (ioblock-sharing ioblock) sharing)) 2580 2618 (when character-p 2581 2619 (if encoding 2582 2620 (let* ((unit-size (character-encoding-code-unit-size encoding))) 2583 (unless (eq unit-size 8)2584 (setq line-termination nil))2585 2621 (setf (ioblock-encode-output-function ioblock) 2586 2622 (character-encoding-stream-encode-function encoding)) … … 2589 2625 (8 2590 2626 (setf (ioblock-write-char-when-locked-function ioblock) 2591 '%ioblock-write-u8-encoded-char)2627 '%ioblock-write-u8-encoded-char) 2592 2628 (case sharing 2593 2629 (:private '%private-ioblock-write-u8-encoded-char) … … 2616 2652 (if (character-encoding-native-endianness encoding) 2617 2653 '%ioblock-write-u16-encoded-simple-string 2618 '%ioblock-write-swapped-u 8-encoded-simple-string))))2654 '%ioblock-write-swapped-u16-encoded-simple-string)))) 2619 2655 (when (character-encoding-use-byte-order-mark encoding) 2620 2656 (setf (ioblock-pending-byte-order-mark ioblock) t))) … … 2629 2665 (:lock '%locked-ioblock-write-char) 2630 2666 (t '%ioblock-write-char))))) 2631 (case line-termination 2632 ((:cr :crlf) 2633 (let* ((outbuf (ioblock-outbuf ioblock))) 2634 (setf (io-buffer-translate outbuf) line-termination))))) 2667 (when line-termination 2668 (setf (ioblock-write-char-without-translation-when-locked-function ioblock) 2669 (ioblock-write-char-when-locked-function ioblock)) 2670 (ecase line-termination 2671 (:cr (setf (ioblock-write-char-when-locked-function ioblock) 2672 '%ioblock-write-char-translating-newline-to-cr 2673 (ioblock-read-char-function ioblock) 2674 (case sharing 2675 (:private 2676 '%private-ioblock-write-char-translating-newline-to-cr) 2677 (:lock 2678 '%locked-ioblock-write-char-translating-newline-to-cr) 2679 (t '%ioblock-write-char-translating-newline-to-cr)))) 2680 (:crlf (setf (ioblock-write-char-when-locked-function ioblock) 2681 '%ioblock-write-char-translating-newline-to-crlf 2682 (ioblock-write-char-function ioblock) 2683 (case sharing 2684 (:private 2685 '%private-ioblock-write-char-translating-newline-to-crlf) 2686 (:lock 2687 '%locked-ioblock-write-char-translating-newline-to-crlf) 2688 (t '%ioblock-write-char-translating-newline-to-crlf)))) 2689 (:unicode (setf (ioblock-write-char-when-locked-function ioblock) 2690 '%ioblock-write-char-translating-newline-to-line-separator 2691 (ioblock-write-char-function ioblock) 2692 (case sharing 2693 (:private 2694 '%private-ioblock-write-char-translating-newline-to-line-separator) 2695 (:lock 2696 '%locked-ioblock-write-char-translating-newline-to-line-separator) 2697 (t '%ioblock-write-char-translating-newline-to-line-separator))))))) 2635 2698 (unless (or (eq element-type 'character) 2636 2699 (subtypep element-type 'character)) … … 2738 2801 &allow-other-keys) 2739 2802 (declare (ignorable element-shift)) 2803 (setq line-termination (cdr (assoc line-termination *canonical-line-termination-conventions*))) 2740 2804 (when encoding 2741 2805 (unless (typep encoding 'character-encoding) … … 2930 2994 (:cp/m . :crlf) 2931 2995 (:msdos . :crlf) 2996 (:dos . :crlf) 2932 2997 (:windows . :crlf) 2933 (:inferred . nil))) 2998 (:inferred . nil) 2999 (:unicode . :unicode))) 2934 3000 2935 3001
Note:
See TracChangeset
for help on using the changeset viewer.
