New feature: initialization keyword arguments.
[sod] / src / classes.lisp
index 0c695b2..3ed103a 100644 (file)
@@ -71,6 +71,8 @@
                          :accessor sod-class-instance-initializers)
    (class-initializers :initarg :class-initializers :initform nil
                       :type list :accessor sod-class-class-initializers)
+   (initargs :initarg :initargs :initform nil
+            :type list :accessor sod-class-initargs)
    (initfrags :initarg :initfrags :initform nil
              :type list :accessor sod-class-initfrags)
    (tearfrags :initarg :tearfrags :initform nil
 
    See `sod-initializer' for more details."))
 
+(export 'sod-initarg)
+(defclass sod-initarg ()
+  ((%class :initarg :class :type sod-class :reader sod-initarg-class)
+   (location :initarg :location :initform (file-location nil)
+            :type file-location :reader file-location)
+   (name :initarg :name :type string :reader sod-initarg-name)
+   (type :initarg :type :type c-type :reader sod-initarg-type))
+  (:documentation
+   "Describes a keyword argument accepted by the initialization function."))
+
+(export 'sod-user-initarg)
+(defclass sod-user-initarg (sod-initarg)
+  ((default :initarg :default :type t :reader sod-initarg-default))
+  (:documentation
+   "Describes an initialization argument defined by the user."))
+
+(export 'sod-slot-initarg)
+(defclass sod-slot-initarg (sod-initarg)
+  ((slot :initarg :slot :type sod-slot :reader sod-initarg-slot))
+  (:documentation
+   "Describes an initialization argument used to initialize a slot."))
+
 ;;;--------------------------------------------------------------------------
 ;;; Messages and methods.