Skip to content

Latest commit

 

History

History
40 lines (32 loc) · 1.14 KB

README.org

File metadata and controls

40 lines (32 loc) · 1.14 KB

autoexport

Intro

autoexport is a small macro to export your definitions without any need to add them to your package’s :export section. It’s especially useful with class definitions as it also automatically exports slots, readers, writers and accessors.

Example

(ql:quickload :autoexport)
(defpackage :my-package
  (:use :cl))

(defpackage :other-package
  (:use :cl :autoexport))

;; Switch to a package
(in-package :other-package)
(pub defun some-func () (format t "Hello, World!"))
(pub defclass some-class ()
  ((x
    :accessor x
    :initform :x)
   (y
    :accessor y
    :initform :y)))

;; Switch to a different package
(in-package :my-package)
(other-package:some-func) ; => Hello, World!
                          ; Note a single colon

(defvar *test-var* (make-instance 'other-package:some-class :x 1 :y 1))

(slot-value *test-var* 'other-package:x) ; => 1
(other-package:y *test-var*) ; => 1
(setf (other-package:y *test-var*) 100) ; => 100
(other-package:y *test-var*) ; => 100