codegen-target
method-codegen
coerce-property-value
+ cl:integer (eql :int) (eql :boolean)
+ cl:string (eql :id) (eql :boolean)
cl:string (eql :id) (eql :keyword)
cl:string (eql :id) (eql :symbol)
cl:string (eql :id) (eql :type)
cl:string (eql :string) (eql :id)
cl:string (eql :string) (eql :keyword)
cl:string (eql :string) (eql :symbol)
+ cl:symbol (eql :symbol) (eql :boolean)
cl:symbol (eql :symbol) (eql :id)
cl:symbol (eql :symbol) (eql :keyword)
t t (eql cl:t)
(error "Symbol `~A' not external in package `~A'"
name (package-name package)))))))))
+(let ((truish '("true" "t" "yes" "verily"))
+ (falsish '("false" "nil" "no" "nowise")))
+ (defun truishp (string)
+ "Convert STRING to a boolean."
+ (cond ((member string truish :test #'string=) t)
+ ((member string falsish :test #'string=) nil)
+ (t (error "Unrecognized boolean value `~A'" string)))))
+
;;;--------------------------------------------------------------------------
;;; Property representation.
((value symbol) (type (eql :symbol)) (wanted (eql :id)))
(frob-identifier (symbol-name value)))
+;;; Boolean.
+
+(defmethod coerce-property-value
+ ((value symbol) (type (eql :symbol)) (wanted (eql :boolean)))
+ value)
+
+(defmethod coerce-property-value
+ ((value string) (type (eql :id)) (wanted (eql :boolean)))
+ (truishp value))
+
+(defmethod coerce-property-value
+ ((value integer) (type (eql :int)) (wanted (eql :boolean)))
+ (not (zerop value)))
+
;;; Types.
(defmethod coerce-property-value