Changeset 2743

Show
Ignore:
Timestamp:
03/16/08 21:50:29 (10 months ago)
Author:
hans
Message:

Support ratios in datastore.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bknr/datastore/src/data/encoding-test.lisp

    r2685 r2743  
    6262(test-encoding integer.6 most-negative-fixnum) 
    6363 
    64 ;; ratios - currently no supported 
    65 ;; (test-encoding ratio.1 1/2) 
    66 ;; (test-encoding ratio.2 234232/23434) 
    67 ;; (test-encoding ratio.3 -12/2) 
    68 ;; (test-encoding ratio.4 -6/11) 
    69 ;; (test-encoding ratio.5 23222/13) 
     64;; ratios 
     65(test-encoding ratio.1 1/2) 
     66(test-encoding ratio.2 234232/23434) 
     67(test-encoding ratio.3 -12/2) 
     68(test-encoding ratio.4 -6/11) 
     69(test-encoding ratio.5 23222/13) 
    7070 
    7171;; complex numbers - currently not supported 
  • trunk/bknr/datastore/src/data/encoding.lisp

    r2742 r2743  
    145145        do (write-byte (ldb (byte 8 i) object) stream)))) 
    146146 
     147(defun %encode-rational (object stream) 
     148  (%encode-integer (numerator object) stream) 
     149  (%encode-integer (denominator object) stream)) 
     150 
    147151(defun encode-integer (object stream) 
    148152  (%write-char #\i stream) 
    149153  (%encode-integer object stream)) 
     154 
     155(defun encode-rational (object stream) 
     156  (%write-char #\r stream) 
     157  (%encode-rational object stream)) 
    150158 
    151159(defun count-conses (list) 
     
    268276  (typecase object 
    269277    (integer (encode-integer object stream)) 
     278    (rational (encode-rational object stream)) 
    270279    (symbol (encode-symbol object stream)) 
    271280    (character (encode-char object stream)) 
     
    307316    (assert (plusp n))                  ;n==0 geben wir nicht aus 
    308317    (%decode-integer/fixed stream n))) 
     318 
     319(defun %decode-rational (stream) 
     320  (/ (%decode-integer stream) 
     321     (%decode-integer stream))) 
    309322 
    310323(defun %decode-char (stream) 
     
    412425      (#\f (%decode-single-float stream)) 
    413426      (#\d (%decode-double-float stream)) 
     427      (#\r (%decode-rational stream)) 
    414428      (t (decode-object tag stream))))) 
    415429