`(simple-array base-char (,size)))
(sb!xc:deftype string (&optional size)
`(or (array character (,size))
`(simple-array base-char (,size)))
(sb!xc:deftype string (&optional size)
`(or (array character (,size))
(sb!xc:deftype simple-string (&optional size)
`(or (simple-array character (,size))
(sb!xc:deftype simple-string (&optional size)
`(or (simple-array character (,size))
(sb!xc:deftype simple-bit-vector (&optional size)
`(simple-array bit (,size)))
\f
(sb!xc:deftype simple-bit-vector (&optional size)
`(simple-array bit (,size)))
\f
-;;;; some private types that we use in defining the standard functions
+;;;; some private types that we use in defining the standard functions,
+;;;; or implementing declarations in standard compiler transforms
+
+;;; semistandard types
+(sb!xc:deftype generalized-boolean () t)
+
+(sb!xc:deftype format-control ()
+ '(or string function))
;;; array rank, total size...
(sb!xc:deftype array-rank () `(integer 0 (,sb!xc:array-rank-limit)))
;;; array rank, total size...
(sb!xc:deftype array-rank () `(integer 0 (,sb!xc:array-rank-limit)))
;;; a consed sequence result. If a vector, is a simple array.
(sb!xc:deftype consed-sequence () '(or list (simple-array * (*))))
;;; a consed sequence result. If a vector, is a simple array.
(sb!xc:deftype consed-sequence () '(or list (simple-array * (*))))
;;; a valid argument to a stream function
;;;
;;; FIXME: should probably be STREAM-DESIGNATOR, after the term
;;; used in the ANSI spec (if this is in fact exactly the same thing)
(sb!xc:deftype streamlike () '(or stream (member nil t)))
;;; a valid argument to a stream function
;;;
;;; FIXME: should probably be STREAM-DESIGNATOR, after the term
;;; used in the ANSI spec (if this is in fact exactly the same thing)
(sb!xc:deftype streamlike () '(or stream (member nil t)))
`(integer 0 (,(ash 1 sb!vm:single-float-digits))))
(sb!xc:deftype double-float-significand ()
`(integer 0 (,(ash 1 sb!vm:double-float-digits))))
`(integer 0 (,(ash 1 sb!vm:single-float-digits))))
(sb!xc:deftype double-float-significand ()
`(integer 0 (,(ash 1 sb!vm:double-float-digits))))