[movitz-cvs] CVS update: movitz/storage-types.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Sat Jul 31 23:34:57 UTC 2004
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv20948
Modified Files:
storage-types.lisp
Log Message:
Changed the implementation of ratios from a defstruct to a built-in
structure.
Date: Sat Jul 31 16:34:57 2004
Author: ffjeld
Index: movitz/storage-types.lisp
diff -u movitz/storage-types.lisp:1.36 movitz/storage-types.lisp:1.37
--- movitz/storage-types.lisp:1.36 Wed Jul 28 19:14:35 2004
+++ movitz/storage-types.lisp Sat Jul 31 16:34:57 2004
@@ -9,7 +9,7 @@
;;;; Created at: Sun Oct 22 00:22:43 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: storage-types.lisp,v 1.36 2004/07/29 02:14:35 ffjeld Exp $
+;;;; $Id: storage-types.lisp,v 1.37 2004/07/31 23:34:57 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -69,6 +69,8 @@
:basic-vector #x22
:funobj #x3a
:bignum #x4a
+ :ratio #x52
+ :complex #x5a
:defstruct #x20
:std-instance #x40
:run-time-context #x50
@@ -1255,3 +1257,38 @@
(#x00 x)
(#xff (- x))))
header))
+
+(define-binary-class movitz-ratio (movitz-heap-object-other)
+ ((type
+ :binary-type other-type-byte
+ :initform :ratio)
+ (dummy0
+ :binary-type u8
+ :initform 0)
+ (dummy1
+ :binary-type lu16
+ :initform 0)
+ (dummy2
+ :binary-type word
+ :initform 0)
+ (numerator
+ :binary-type word
+ :map-binary-read-delayed 'movitz-word
+ :map-binary-write 'movitz-read-and-intern)
+ (denominator
+ :binary-type word
+ :map-binary-read-delayed 'movitz-word
+ :map-binary-write 'movitz-read-and-intern)
+ (value
+ :reader movitz-ratio-value
+ :initarg :value))
+ (:slot-align type #.+other-type-offset+))
+
+(defmethod write-binary-record ((obj movitz-ratio) stream)
+ (declare (ignore stream))
+ (let ((value (movitz-ratio-value obj)))
+ (check-type value ratio)
+ (setf (slot-value obj 'numerator) (numerator value)
+ (slot-value obj 'denominator) (denominator value))
+ (call-next-method)))
+
\ No newline at end of file
More information about the Movitz-cvs
mailing list