A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.lispworks.com/documentation/lw71/LW/html/lw-255.htm below:

process-a-class-option

Description

The generic function process-a-class-option describes how the value of a class option is parsed. It is called at defclass macroexpansion time. By default LispWorks parses class options as defined in AMOP, but you need to supply a method if you need class options with different behavior.

initargs should be a plist of class initargs and values. These are added to any other initargs for the class.

Example
(defclass m1 (standard-class)
  ((title :initarg :title)))

For single-valued, evaluated title option, add a method like this:

(defmethod clos:process-a-class-option 
           ((class m1)
            (name (eql :title))
            value)
  (unless (and value (null (cdr value)))
    (error "m1 :title must have a single value."))
  (list name (car value)))
 
(defclass my-titled-class ()
  ()
  (:metaclass m1)
  (:title "Initial Title"))

If the value is not to be evaluated, the method would look like this:

(defmethod clos:process-a-class-option 
           ((class m1)
            (name (eql :title))
            value)
  (unless (and value (null (cdr value)))
    (error "m1 :title must have a single value."))
  `(,name ',value))

Now suppose we want an option whose value is a list of titles:

(defclass m2 (standard-class)
  ((titles-list :initarg :list-of-possible-titles)))

If the titles are to be evaluated, add a method like this:

(defmethod clos:process-a-class-option 
           ((class m2)
            (name (eql :list-of-possible-titles))
            value)
  (list name `(list ,@value)))

Or, if the titles should not be evaluated, add a method like this:

(defmethod clos:process-a-class-option 
           ((class m2)
            (name (eql :list-of-possible-titles))
            value)
  (list name `',value))
 
(defclass my-multi-titled-class ()
  ()
  (:metaclass m2)
  (:list-of-possible-titles 
   "Initial Title 1" 
   "Initial Title 2"))

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4