Changeset 2808
- Timestamp:
- 03/27/08 14:35:32 (10 months ago)
- Files:
-
- trunk/bknr/datastore/src/data/encoding-test.lisp (modified) (1 diff)
- trunk/bknr/datastore/src/data/encoding.lisp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bknr/datastore/src/data/encoding-test.lisp
r2797 r2808 97 97 (test-encoding char.3 #\Rubout) 98 98 (test-encoding char.4 (code-char 255)) 99 100 (test:test char.random 101 (test:for-all ((char (test:gen-character))) 102 (test:is (char= char (copy-by-encoding char))))) 99 103 100 104 ;; strings trunk/bknr/datastore/src/data/encoding.lisp
r2797 r2808 122 122 ;;;; workaround 123 123 124 (defun %read-char (stream &optional (eof-error-p t) eof-value) 125 (let ((b (read-byte stream eof-error-p -1))) 126 (if (eql b -1) 127 eof-value 128 (code-char b)))) 124 (declaim (inline %read-char %write-char)) 125 (defun %read-char (stream) 126 (code-char (%decode-uint32 stream))) 129 127 130 128 (defun %write-char (char stream) 129 (%encode-int32 (char-code char) stream)) 130 131 ;;;; tags 132 (declaim (inline %read-tag %write-tag)) 133 (defun %read-tag (stream) 134 (code-char (read-byte stream))) 135 136 (defun %write-tag (char stream) 131 137 (write-byte (char-code char) stream)) 132 133 (defun %write-string (string stream)134 (dotimes (i (length string))135 (%write-char (char string i) stream)))136 138 137 139 ;;;; binary encoding … … 159 161 160 162 (defun encode-integer (object stream) 161 (%write- char#\i stream)163 (%write-tag #\i stream) 162 164 (%encode-integer object stream)) 163 165 164 166 (defun encode-rational (object stream) 165 (%write- char#\r stream)167 (%write-tag #\r stream) 166 168 (%encode-rational object stream)) 167 169 … … 185 187 186 188 (defun encode-list (object stream) 187 (%write- char#\l stream)189 (%write-tag #\l stream) 188 190 (%encode-list object stream)) 189 191 190 192 (defun encode-char (object stream) 191 (%write- char#\c stream)193 (%write-tag #\c stream) 192 194 (%write-char object stream)) 193 195 … … 198 200 199 201 (defun encode-string (object stream) 200 (%write- char#\s stream)202 (%write-tag #\s stream) 201 203 (%encode-string object stream)) 202 204 … … 206 208 207 209 (defun encode-symbol (object stream) 208 (%write- char#\y stream)210 (%write-tag #\y stream) 209 211 (%encode-symbol object stream)) 210 212 211 213 (defun encode-hash-table (object stream) 212 (%write- char#\# stream)214 (%write-tag #\# stream) 213 215 (%encode-symbol (hash-table-test object) stream) 214 216 (%encode-double-float (float (hash-table-rehash-size object) 1.0d0) stream) … … 232 234 233 235 (defun encode-single-float (object stream) 234 (%write- char#\f stream)236 (%write-tag #\f stream) 235 237 (%encode-single-float object stream)) 236 238 … … 252 254 253 255 (defun encode-double-float (object stream) 254 (%write- char#\d stream)256 (%write-tag #\d stream) 255 257 (%encode-double-float object stream)) 256 258 … … 277 279 278 280 (defun encode-array (object stream) 279 (%write- char#\a stream)281 (%write-tag #\a stream) 280 282 (%encode-array object stream)) 281 283 … … 421 423 422 424 (defun decode (stream) 423 (let ((tag (%read- charstream)))425 (let ((tag (%read-tag stream))) 424 426 (case tag 425 427 (#\a (%decode-array stream))
