Changeset 2797
- Timestamp:
- 03/25/08 11:55:16 (10 months ago)
- Files:
-
- trunk/bknr/datastore/src/bknr.datastore.asd (modified) (1 diff)
- trunk/bknr/datastore/src/data/encoding-test.lisp (modified) (1 diff)
- trunk/bknr/datastore/src/data/encoding.lisp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bknr/datastore/src/bknr.datastore.asd
r2658 r2797 22 22 :unit-test 23 23 :bknr.utils 24 :bknr.indices) 24 :bknr.indices 25 :trivial-utf-8) 25 26 26 27 :components ((:module "data" :components ((:file "package") trunk/bknr/datastore/src/data/encoding-test.lisp
r2774 r2797 101 101 (test:test string.random 102 102 (test:for-all ((string (test:gen-string))) 103 (test:is (string= string (copy-by-encoding string))))) 104 105 (test:test string.random.code-limited 106 (test:for-all ((string (test:gen-string :elements (test:gen-character :code-limit 10000)))) 103 107 (test:is (string= string (copy-by-encoding string))))) 104 108 trunk/bknr/datastore/src/data/encoding.lisp
r2768 r2797 151 151 (write-byte n stream) 152 152 (loop 153 for i from (- (* n 8) 8) downto 0 by 8154 do (write-byte (ldb (byte 8 i) object) stream))))153 for i from (- (* n 8) 8) downto 0 by 8 154 do (write-byte (ldb (byte 8 i) object) stream)))) 155 155 156 156 (defun %encode-rational (object stream) … … 170 170 ;; Daher nicht FOR-ON verwenden. 171 171 (loop for l = list then (cdr l) 172 while (consp l)173 count 1))172 while (consp l) 173 count 1)) 174 174 175 175 (defun %encode-list (object stream) 176 176 (let ((len (count-conses object))) 177 177 (%encode-integer len stream) 178 ;; Vorsicht, CMUCL LOOP hat einen Bug mit dotted lists.179 ;; Daher nicht FOR-ON verwenden.178 ;; Vorsicht, CMUCL LOOP hat einen Bug mit dotted lists. 179 ;; Daher nicht FOR-ON verwenden. 180 180 (when (> len 0) 181 181 (loop for l = object then (cdr l) 182 while (consp l)183 do (encode (car l) stream)184 finally (encode l stream)))))182 while (consp l) 183 do (encode (car l) stream) 184 finally (encode l stream))))) 185 185 186 186 (defun encode-list (object stream) … … 193 193 194 194 (defun %encode-string (object stream) 195 (labels ((string-to-octets (string) 196 #+sbcl(sb-ext:string-to-octets string :external-format :utf-8) 197 #-sbcl(flexi-streams:string-to-octets string :external-format #.(flexi-streams:make-external-format :utf-8)))) 198 (let ((octets (string-to-octets object))) 199 (%encode-integer (length octets) stream) 200 (write-sequence octets stream)))) 195 (let ((octets (trivial-utf-8:string-to-utf-8-bytes object))) 196 (%encode-integer (length octets) stream) 197 (write-sequence octets stream))) 201 198 202 199 (defun encode-string (object stream) … … 335 332 336 333 (defun %decode-string (stream) 337 (labels ((octets-to-string-safe (octets) ; and portable334 (labels ((octets-to-string-safe (octets) ; safe and portable 338 335 (let ((flexi-streams:*substitution-char* #\?)) 339 336 (flexi-streams:octets-to-string octets :external-format #.(flexi-streams:make-external-format :utf-8)))) 340 337 (octets-to-string (octets) 341 #+sbcl (handler-case 342 #+sbcl(sb-ext:octets-to-string octets :external-format :utf-8) 343 (#+sbcl sb-impl::octet-decoding-error () 344 (octets-to-string-safe octets))) 345 #-sbcl (octets-to-string-safe octets))) 338 (handler-case 339 (trivial-utf-8:utf-8-bytes-to-string octets) 340 (trivial-utf-8:utf-8-decoding-error () 341 (octets-to-string-safe octets))))) 346 342 (let* ((n (%decode-integer stream)) 347 343 (buffer (make-array n :element-type '(unsigned-byte 8)))) … … 411 407 (list (%decode-integer stream)) 412 408 (loop repeat (%decode-integer stream) 413 collect (%decode-integer stream))))409 collect (%decode-integer stream)))) 414 410 (fill-pointer 415 411 (if fill-pointer-p … … 451 447 (1 -1.0))) 452 448 (iexpt (ldb (byte 8 23) bits)) 453 (expt (if (zerop iexpt) ; denormalized449 (expt (if (zerop iexpt) ; denormalized 454 450 -126 455 451 (- iexpt 127))) … … 472 468 (1 -1.0d0))) 473 469 (iexpt (ldb (byte 11 52) bits)) 474 (expt (if (zerop iexpt) ; denormalized470 (expt (if (zerop iexpt) ; denormalized 475 471 -1022 476 472 (- iexpt 1023)))
