X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/4ee476bc29b80fca2faabb4bd286ca70c98f7a44..12949379840101e2d65883f29c5e8f0f6de49e9c:/src/pset-proto.lisp?ds=sidebyside diff --git a/src/pset-proto.lisp b/src/pset-proto.lisp index 2620585..f03ec51 100644 --- a/src/pset-proto.lisp +++ b/src/pset-proto.lisp @@ -43,9 +43,9 @@ (:predicate propertyp) (:conc-name p-) (:constructor %make-property - (name value - &key type location seenp - &aux (key (property-key name)) (%type type)))) + (name value + &key type location seenp + &aux (key (property-key name)) (%type type)))) "A simple structure for holding a property in a property set. The main useful feature is the ability to tick off properties which have @@ -66,14 +66,8 @@ (export 'decode-property) (defgeneric decode-property (raw) (:documentation "Decode a RAW value into a TYPE, VALUE pair.") - (:method ((raw symbol)) (values :symbol raw)) - (:method ((raw integer)) (values :int raw)) - (:method ((raw string)) (values :string raw)) - (:method ((raw character)) (values :char raw)) (:method ((raw property)) (values (p-type raw) (p-value raw))) - (:method ((raw cons)) (values (car raw) (cdr raw))) - (:method ((raw function)) (values :func raw)) - (:method ((raw c-type)) (values :type raw))) + (:method ((raw cons)) (values (car raw) (cdr raw)))) (export 'make-property) (defun make-property (name raw-value &key type location seenp) @@ -99,9 +93,10 @@ ;; say it didn't work. (:method (value type wanted) (if (eql type wanted) value - (error "Incorrect type: expected ~A but found ~A" wanted type))) + (error "Incorrect type: expected ~(~A~) but found ~(~A~)" + wanted type))) - ;; If the caller asks for type T then give him the raw thing. + ;; If the caller asks for type T then give them the raw thing. (:method (value type (wanted (eql t))) (declare (ignore type)) value))