added mutable stuff to the class hierarchy

svn: r1706
This commit is contained in:
Eli Barzilay 2005-12-29 00:50:48 +00:00
parent 4bfe44c8e9
commit 4dd01ef3ab

View File

@ -1905,21 +1905,27 @@
:direct-supers (list supers ...)
:direct-slots '())))
;;>> <sequence>
;;>> <mutable>
;;>> <immutable>
;;>> <improper-list>
;;>> <pair>
;;>> <mutable-pair>
;;>> <immutable-pair>
;;>> <list>
;;>> <nonempty-list>
;;>> <mutable-nonempty-list>
;;>> <immutable-nonempty-list>
;;>> <null>
;;>> <vector>
;;>> <char>
;;>> <string-like>
;;>> <mutable-string-like>
;;>> <immutable-string-like>
;;>> <string>
;;>> <mutable-string>
;;>> <immutable-string>
;;>> <bytes>
;;>> <mutable-bytes>
;;>> <immutable-bytes>
;;>> <path>
;;>> <symbol>
@ -1989,23 +1995,29 @@
;;> <opaque-struct> can only appear in the cpl of a struct class that
;;> inherits from a struct which is not under the current inspector).
(defprimclass <sequence>)
(defprimclass <mutable>)
(defprimclass <immutable>)
(defprimclass <improper-list> <sequence>)
(defprimclass <pair> <improper-list>)
(defprimclass <mutable-pair> <pair> <mutable>)
(defprimclass <immutable-pair> <pair> <immutable>)
(defprimclass <list> <improper-list>)
(defprimclass <nonempty-list> <pair> <list>)
(defprimclass <mutable-nonempty-list> <nonempty-list> <mutable>)
(defprimclass <immutable-nonempty-list> <nonempty-list> <immutable>)
(defprimclass <null> <list>)
(defprimclass <vector> <sequence>)
(defprimclass <vector> <sequence> <mutable>)
(defprimclass <char>)
(defprimclass <string-like> <sequence>)
(defprimclass <mutable-string-like> <string-like> <mutable>)
(defprimclass <immutable-string-like> <string-like> <immutable>)
(defprimclass <string> <string-like>)
(defprimclass <immutable-string> <immutable-string-like>)
(defprimclass <mutable-string> <string> <mutable-string-like>)
(defprimclass <immutable-string> <string> <immutable-string-like>)
(defprimclass <bytes> <string-like>)
(defprimclass <immutable-bytes> <immutable-string-like>)
(defprimclass <path> <string-like>)
(defprimclass <mutable-bytes> <bytes> <mutable-string-like>)
(defprimclass <immutable-bytes> <bytes> <immutable-string-like>)
(defprimclass <path> <immutable-string-like>)
(defprimclass <symbol>)
(defprimclass <keyword> <symbol>)
(defprimclass <real-keyword>)
@ -2035,7 +2047,7 @@
(defprimclass <input-stream-port> <input-port> <stream-port>)
(defprimclass <output-stream-port> <output-port> <stream-port>)
(defprimclass <void>)
(defprimclass <box>)
(defprimclass <box> <mutable>)
(defprimclass <weak-box> <box>)
(defprimclass <regexp>)
(defprimclass <byte-regexp>)
@ -2088,34 +2100,36 @@
[(primitive? x) <primitive-procedure>]
[else <procedure>])]
[(string? x) (if (immutable? x) <immutable-string> <string>)]
[(pair? x) (if (list? x)
(if (immutable? x)
<immutable-nonempty-list> <nonempty-list>)
(if (immutable? x)
<immutable-pair> <pair>))]
[(pair? x)
(if (list? x)
(if (immutable? x)
<immutable-nonempty-list> <mutable-nonempty-list>)
(if (immutable? x)
<immutable-pair> <mutable-pair>))]
[(null? x) <null>]
[(symbol? x) (if (keyword? x) <keyword> <symbol>)]
[(number? x) (if (exact? x)
(cond [(integer? x) <exact-integer>]
[(rational? x) <exact-rational>]
[(real? x) <exact-real>]
[(complex? x) <exact-complex>]
[else <exact>]) ; should not happen
(cond [(integer? x) <inexact-integer>]
[(rational? x) <inexact-rational>]
[(real? x) <inexact-real>]
[(complex? x) <inexact-complex>]
[else <inexact>]))] ; should not happen
[(number? x)
(if (exact? x)
(cond [(integer? x) <exact-integer>]
[(rational? x) <exact-rational>]
[(real? x) <exact-real>]
[(complex? x) <exact-complex>]
[else <exact>]) ; should not happen
(cond [(integer? x) <inexact-integer>]
[(rational? x) <inexact-rational>]
[(real? x) <inexact-real>]
[(complex? x) <inexact-complex>]
[else <inexact>]))] ; should not happen
[(boolean? x) <boolean>]
[(char? x) <char>]
[(bytes? x) (if (immutable? x) <immutable-bytes> <bytes>)]
[(path? x) <path>]
[(vector? x) <vector>]
[(eof-object? x) <end-of-file>]
[(input-port? x) (if (file-stream-port? x)
<input-stream-port> <input-port>)]
[(output-port? x) (if (file-stream-port? x)
<output-stream-port> <output-port>)]
[(input-port? x)
(if (file-stream-port? x) <input-stream-port> <input-port>)]
[(output-port? x)
(if (file-stream-port? x) <output-stream-port> <output-port>)]
;; MzScheme stuff
[(struct? x)
(let-values ([(type _) (struct-info x)])
@ -2126,15 +2140,15 @@
[(regexp? x) <regexp>]
[(byte-regexp? x) <byte-regexp>]
[(promise? x) <promise>]
[(exn? x) (if (exn:break? x)
<break-exn> <non-break-exn>)]
[(exn? x)
(if (exn:break? x) <break-exn> <non-break-exn>)]
[(real-keyword? x) <real-keyword>]
[(semaphore? x) <semaphore>]
[(hash-table? x) <hash-table>]
[(thread? x) <thread>]
[(subprocess? x) <subprocess>]
[(syntax? x) (if (identifier? x)
<identifier-syntax> <syntax>)]
[(syntax? x)
(if (identifier? x) <identifier-syntax> <syntax>)]
[(namespace? x) <namespace>]
[(custodian? x) <custodian>]
[(tcp-listener? x) <tcp-listener>]
@ -2183,24 +2197,40 @@
;;> <sequence> : <primitive-class>
;;> <improper-list> : <primitive-class>
;;> <pair> : <primitive-class>
;;> <mutable-pair> : <primitive-class>
;;> <immutable-pair> : <primitive-class>
;;> <nonempty-list> : <primitive-class>
;;> <mutable-nonempty-list> : <primitive-class>
;;> <immutable-nonempty-list> : <primitive-class>
;;> <list> : <primitive-class>
;;> <nonempty-list> : <primitive-class>
;;> <mutable-nonempty-list> : <primitive-class>
;;> <immutable-nonempty-list> : <primitive-class>
;;> <null> : <primitive-class>
;;> <vector> : <primitive-class>
;;> <string-like> : <primitive-class>
;;> <string> : <primitive-class>
;;> <mutable-string> : <primitive-class>
;;> <immutable-string> : <primitive-class>
;;> <bytes> : <primitive-class>
;;> <path> : <primitive-class>
;;> <mutable-bytes> : <primitive-class>
;;> <immutable-bytes> : <primitive-class>
;;> <path> : <primitive-class>
;;> <mutable> : <primitive-class>
;;> <mutable-pair> : <primitive-class>
;;> <mutable-nonempty-list> : <primitive-class>
;;> <mutable-string-like> : <primitive-class>
;;> <mutable-string> : <primitive-class>
;;> <mutable-bytes> : <primitive-class>
;;> <vector>
;;> <box>
;;> <immutable> : <primitive-class>
;;> <immutable-nonempty-list> : <primitive-class>
;;> <immutable-pair> : <primitive-class>
;;> <immutable-string-like> : <primitive-class>
;;> <immutable-string> : <primitive-class>
;;> <immutable-bytes> : <primitive-class>
;;> <path> : <primitive-class>
;;> <char> : <primitive-class>
;;> <symbol> : <primitive-class>
;;> <keyword> : <primitive-class>