X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/fae90f24a2c96dc8531adeeaba190a17b1044650..1c1ea17d710f2e1d40fc1e48a354195303fd7d4f:/doc/list-exports.lisp diff --git a/doc/list-exports.lisp b/doc/list-exports.lisp index 65514d4..00bb7af 100755 --- a/doc/list-exports.lisp +++ b/doc/list-exports.lisp @@ -36,8 +36,12 @@ (and export (list* (symbolicate code '-inst) (symbolicate 'make- code '-inst) - (mapcar (lambda (arg) - (symbolicate 'inst- arg)) + (mapcan (lambda (arg) + (let ((sym (if (listp arg) (car arg) arg))) + (cond ((char= (char (symbol-name sym) 0) #\&) + nil) + (t + (list (symbolicate 'inst- sym)))))) args))))) (defmethod form-list-exports ((head (eql 'sod::define-tagged-type)) tail) @@ -47,6 +51,20 @@ (symbolicate 'c- kind '-type) (symbolicate 'make- kind '-type)))) +(defmethod form-list-exports ((head (eql 'sod:defctype)) tail) + (destructuring-bind (names value &key export) tail + (declare (ignore value)) + (let ((names (if (listp names) names (list names)))) + (and export + (list* (symbolicate 'c-type- (car names)) names))))) + +(defmethod form-list-exports ((head (eql 'sod:define-simple-c-type)) tail) + (destructuring-bind (names type &key export) tail + (declare (ignore type)) + (let ((names (if (listp names) names (list names)))) + (and export + (list* (symbolicate 'c-type- (car names)) names))))) + (defmethod form-list-exports ((head (eql 'cl:macrolet)) tail) (mapcan #'form-exports (cdr tail))) @@ -372,9 +390,11 @@ (class-direct-slots class))) (exported (remove-if (lambda (sym) - (and (not (exported-symbol-p sym)) - (eq (symbol-package sym) - package))) + (or (not (symbol-package sym)) + (and (not (exported-symbol-p + sym)) + (eq (symbol-package sym) + package)))) slot-names))) (and exported (list (cons (class-name class)