1 ;;;; Mostly this file contains generic functions. The exceptions are hacks.
3 ;;;; This software is part of the SBCL system. See the README file for
6 ;;;; This software is in the public domain and is provided with absolutely no
7 ;;;; warranty. See the COPYING and CREDITS files for more information.
13 (defgeneric class-eq-specializer-p
(object))
15 (defgeneric classp
(object))
17 (defgeneric condition-class-p
(object))
19 (defgeneric eql-specializer-p
(object))
21 (defgeneric exact-class-specializer-p
(object))
23 (defgeneric forward-referenced-class-p
(object))
25 (defgeneric funcallable-standard-class-p
(object))
27 (defgeneric generic-function-p
(object))
29 (defgeneric legal-lambda-list-p
(object x
))
31 (defgeneric method-combination-p
(object))
33 (defgeneric method-p
(object))
35 (defgeneric short-method-combination-p
(object))
37 (defgeneric slot-class-p
(object))
39 (defgeneric specializerp
(object))
41 (defgeneric standard-accessor-method-p
(object))
43 (defgeneric standard-boundp-method-p
(object))
45 (defgeneric standard-class-p
(object))
47 (defgeneric standard-generic-function-p
(object))
49 (defgeneric standard-method-p
(object))
51 (defgeneric standard-reader-method-p
(object))
53 (defgeneric standard-writer-method-p
(object))
55 (defgeneric structure-class-p
(object))
59 (defgeneric accessor-method-slot-definition
(standard-accessor-method))
61 (defgeneric class-can-precede-list
(pcl-class))
63 (defgeneric class-defstruct-constructor
(structure-class))
65 (defgeneric class-defstruct-form
(structure-class))
67 (defgeneric class-direct-subclasses
(class))
69 (defgeneric class-direct-superclasses
(class))
71 (defgeneric class-eq-specializer
(class))
73 (defgeneric class-incompatible-superclass-list
(pcl-class))
75 (defgeneric class-name
(class))
77 (defgeneric class-precedence-list
(pcl-class))
79 (defgeneric class-predicate-name
(class))
81 (defgeneric class-wrapper
(pcl-class))
83 (defgeneric definition-source
(definition-source-mixin))
85 (defgeneric eql-specializer-object
(eql-specializer))
87 (defgeneric generic-function-declarations
(standard-generic-function))
89 (defgeneric generic-function-method-class
(standard-generic-function))
91 (defgeneric generic-function-method-combination
(standard-generic-function))
93 (defgeneric generic-function-methods
(standard-generic-function))
95 (defgeneric generic-function-name
(standard-generic-function))
97 (defgeneric gf-arg-info
(standard-generic-function))
99 (defgeneric gf-dfun-state
(standard-generic-function))
101 (defgeneric generic-function-initial-methods
(standard-generic-function))
103 (defgeneric long-method-combination-function
(long-method-combination))
105 (defgeneric method-combination-documentation
(standard-method-combination))
107 (defgeneric method-combination-options
(standard-method-combination))
109 (defgeneric method-combination-type
(standard-method-combination))
111 (defgeneric method-fast-function
(standard-method))
113 (defgeneric method-generic-function
(standard-method))
115 (defgeneric object-plist
(plist-mixin))
117 (defgeneric short-combination-identity-with-one-argument
118 (short-method-combination))
120 (defgeneric short-combination-operator
(short-method-combination))
122 (defgeneric slot-definition-boundp-function
(effective-slot-definition))
124 (defgeneric slot-definition-class
(slot-definition))
126 (defgeneric slot-definition-defstruct-accessor-symbol
127 (structure-slot-definition))
129 (defgeneric slot-definition-initargs
(slot-definition))
131 (defgeneric slot-definition-initform
(slot-definition))
133 (defgeneric slot-definition-initfunction
(slot-definition))
135 (defgeneric slot-definition-internal-reader-function
136 (structure-slot-definition))
138 (defgeneric slot-definition-internal-writer-function
139 (structure-slot-definition))
141 (defgeneric slot-definition-location
(standard-effective-slot-definition))
143 (defgeneric slot-definition-name
(slot-definition))
145 (defgeneric slot-definition-reader-function
(effective-slot-definition))
147 (defgeneric slot-definition-readers
(slot-definition))
149 (defgeneric slot-definition-type
(slot-definition))
151 (defgeneric slot-definition-writer-function
(effective-slot-definition))
153 (defgeneric slot-definition-writers
(slot-definition))
155 (defgeneric specializer-object
(class-eq-specializer))
157 (defgeneric specializer-type
(specializer))
161 (defgeneric (setf class-defstruct-constructor
) (new-value structure-class
))
163 (defgeneric (setf class-defstruct-form
) (new-value structure-class
))
165 (defgeneric (setf class-direct-slots
) (new-value slot-class
))
167 (defgeneric (setf class-incompatible-superclass-list
) (new-value pcl-class
))
169 (defgeneric (setf class-name
) (new-value class
))
171 (defgeneric (setf class-slots
) (new-value slot-class
))
173 (defgeneric (setf generic-function-method-class
) (new-value
174 standard-generic-function
))
176 (defgeneric (setf generic-function-method-combination
)
177 (new-value standard-generic-function
))
179 (defgeneric (setf generic-function-declarations
) (new-value
180 standard-generic-function
))
182 (defgeneric (setf generic-function-methods
) (new-value
183 standard-generic-function
))
185 (defgeneric (setf generic-function-name
) (new-value standard-generic-function
))
187 (defgeneric (setf gf-dfun-state
) (new-value standard-generic-function
))
189 (defgeneric (setf generic-function-initial-methods
)
190 (new-value standard-generic-function
))
192 (defgeneric (setf method-generic-function
) (new-value standard-method
))
194 (defgeneric (setf object-plist
) (new-value plist-mixin
))
196 (defgeneric (setf slot-definition-allocation
) (new-value
197 standard-slot-definition
))
199 (defgeneric (setf slot-definition-boundp-function
)
200 (new-value effective-slot-definition
))
202 (defgeneric (setf slot-definition-class
) (new-value slot-definition
))
204 (defgeneric (setf slot-definition-defstruct-accessor-symbol
)
205 (new-value structure-slot-definition
))
207 (defgeneric (setf slot-definition-initargs
) (new-value slot-definition
))
209 (defgeneric (setf slot-definition-initform
) (new-value slot-definition
))
211 (defgeneric (setf slot-definition-initfunction
) (new-value slot-definition
))
213 (defgeneric (setf slot-definition-internal-reader-function
)
214 (new-value structure-slot-definition
))
216 (defgeneric (setf slot-definition-internal-writer-function
)
217 (new-value structure-slot-definition
))
219 (defgeneric (setf slot-definition-location
)
220 (new-value standard-effective-slot-definition
))
222 (defgeneric (setf slot-definition-name
) (new-value slot-definition
))
224 (defgeneric (setf slot-definition-reader-function
) (new-value
225 effective-slot-definition
))
227 (defgeneric (setf slot-definition-readers
) (new-value slot-definition
))
229 (defgeneric (setf slot-definition-type
) (new-value slot-definition
))
231 (defgeneric (setf slot-definition-writer-function
)
232 (new-value effective-slot-definition
))
234 (defgeneric (setf slot-definition-writers
) (new-value slot-definition
))
238 (defgeneric accessor-method-class
(method))
240 (defgeneric accessor-method-slot-name
(m))
242 (defgeneric class-default-initargs
(class))
244 (defgeneric class-direct-default-initargs
(class))
246 (defgeneric class-direct-slots
(class))
248 (defgeneric class-finalized-p
(class))
250 (defgeneric class-prototype
(class))
252 (defgeneric class-slot-cells
(class))
254 (defgeneric class-slots
(class))
256 (defgeneric compute-class-precedence-list
(root))
258 (defgeneric compute-default-initargs
(class))
260 (defgeneric compute-discriminating-function
(gf))
262 (defgeneric compute-discriminating-function-arglist-info
(generic-function))
264 (defgeneric compute-slots
(class))
266 (defgeneric finalize-inheritance
(class))
268 (defgeneric function-keywords
(method))
270 (defgeneric generic-function-argument-precedence-order
(gf))
272 (defgeneric generic-function-lambda-list
(gf))
274 (defgeneric generic-function-pretty-arglist
(generic-function))
276 (defgeneric gf-fast-method-function-p
(gf))
278 (defgeneric initialize-internal-slot-functions
(slotd))
280 (defgeneric make-instances-obsolete
(class))
282 (defgeneric method-function
(method))
284 (defgeneric method-lambda-list
(m))
286 (defgeneric method-pretty-arglist
(method))
288 (defgeneric method-qualifiers
(m))
290 (defgeneric method-specializers
(m))
292 (defgeneric raw-instance-allocator
(class))
294 (defgeneric slot-definition-allocation
(slotd))
296 (defgeneric slots-fetcher
(class))
298 (defgeneric specializer-class
(specializer))
300 (defgeneric specializer-direct-generic-functions
(specializer))
302 (defgeneric specializer-direct-methods
(specializer))
304 (defgeneric specializer-method-table
(specializer))
306 (defgeneric update-constructors
(class))
308 (defgeneric wrapper-fetcher
(class))
312 (defgeneric add-dependent
(metaobject dependent
))
314 (defgeneric add-direct-method
(specializer method
))
316 (defgeneric add-direct-subclass
(class subclass
))
318 (defgeneric add-method
(generic-function method
))
320 (defgeneric (setf class-slot-cells
) (new-value class
))
322 (defgeneric class-slot-value
(class slot-name
))
324 (defgeneric compatible-meta-class-change-p
(class proto-new-class
))
326 (defgeneric compute-applicable-methods
(generic-function arguments
))
328 (defgeneric compute-applicable-methods-using-classes
329 (generic-function classes
))
331 (defgeneric compute-effective-slot-definition-initargs
(class direct-slotds
))
333 (defgeneric describe-object
(object stream
))
335 (defgeneric direct-slot-definition-class
(class &rest initargs
))
337 (defgeneric effective-slot-definition-class
(class &rest initargs
))
339 (defgeneric legal-documentation-p
(object x
))
341 (defgeneric legal-method-function-p
(object x
))
343 (defgeneric legal-qualifier-p
(object x
))
345 (defgeneric legal-qualifiers-p
(object x
))
347 (defgeneric legal-slot-name-p
(object x
))
349 (defgeneric legal-specializer-p
(object x
))
351 (defgeneric legal-specializers-p
(object x
))
353 (defgeneric make-boundp-method-function
(class slot-name
))
355 (defgeneric make-reader-method-function
(class slot-name
))
357 (defgeneric make-writer-method-function
(class slot-name
))
359 (defgeneric map-dependents
(metaobject function
))
361 (defgeneric remove-boundp-method
(class generic-function
))
363 (defgeneric remove-dependent
(metaobject dependent
))
365 (defgeneric remove-direct-method
(specializer method
))
367 (defgeneric remove-direct-subclass
(class subclass
))
369 (defgeneric remove-method
(generic-function method
))
371 (defgeneric remove-reader-method
(class generic-function
))
373 (defgeneric remove-writer-method
(class generic-function
))
375 (defgeneric same-specializer-p
(specl1 specl2
))
377 (defgeneric slot-accessor-function
(slotd type
))
379 (defgeneric slot-accessor-std-p
(slotd type
))
381 ;;; This controls DESCRIBE-OBJECT (SLOT-OBJECT STREAM) behavior.
382 (defgeneric slots-to-inspect
(class object
))
384 (defgeneric update-gf-dfun
(class gf
))
386 (defgeneric validate-superclass
(fsc class
))
388 (defgeneric (setf documentation
) (new-value slotd doc-type
)
389 (:argument-precedence-order doc-type slotd new-value
))
391 (defgeneric documentation
(slotd doc-type
)
392 (:argument-precedence-order doc-type slotd
))
396 (defgeneric add-boundp-method
(class generic-function slot-name
))
398 (defgeneric add-reader-method
(class generic-function slot-name
))
400 (defgeneric add-writer-method
(class generic-function slot-name
))
402 (defgeneric (setf class-slot-value
) (nv class slot-name
))
404 ;;; CMUCL comment (from Gerd Moellmann/Pierre Mai, 2002-10-19):
406 ;;; According to AMOP, COMPUTE-EFFECTIVE-METHOD should return two
407 ;;; values. Alas, the second value is only vaguely described in AMOP,
408 ;;; and, when asked on 2002-10-18, Gregor Kiczales said he couldn't
409 ;;; remember what the second value was supposed to be. So, PCL's
410 ;;; COMPUTE-EFFECTIVE-METHOD returns one value as do Allegro and
412 (defgeneric compute-effective-method
(generic-function
416 (defgeneric compute-effective-slot-definition
(class name dslotds
))
418 (defgeneric compute-slot-accessor-info
(slotd type gf
))
420 (defgeneric default-initargs
(class initargs defaults
))
422 (defgeneric find-method-combination
(generic-function type options
))
424 (defgeneric invalid-qualifiers
(generic-function combin method
))
426 (defgeneric (setf slot-accessor-function
) (function slotd type
))
428 (defgeneric (setf slot-accessor-std-p
) (value slotd type
))
430 (defgeneric slot-boundp-using-class
(class object slotd
))
432 (defgeneric slot-makunbound-using-class
(class object slotd
))
434 (defgeneric slot-unbound
(class instance slot-name
))
436 (defgeneric slot-value-using-class
(class object slotd
))
440 (defgeneric make-method-lambda
(proto-generic-function
445 (defgeneric (setf slot-value-using-class
) (new-value class object slotd
))
449 (defgeneric make-method-initargs-form
(proto-generic-function
455 ;;;; optional arguments
457 (defgeneric get-method
(generic-function
462 (defgeneric find-method
(generic-function
467 (defgeneric slot-missing
(class
471 &optional new-value
))
475 (defgeneric allocate-instance
(class &rest initargs
))
477 (defgeneric ensure-class-using-class
(class
480 &key
&allow-other-keys
))
482 (defgeneric ensure-generic-function-using-class
(generic-function
484 &key
&allow-other-keys
))
486 (defgeneric initialize-instance
(gf &key
&allow-other-keys
))
488 (defgeneric make-instance
(class &rest initargs
&key
&allow-other-keys
))
490 (defgeneric change-class
(instance new-class-name
&rest initargs
&key
&allow-other-keys
))
492 (defgeneric no-applicable-method
(generic-function &rest args
))
494 (defgeneric no-next-method
(generic-function method
&rest args
))
496 (defgeneric no-primary-method
(generic-function &rest args
))
498 (defgeneric reader-method-class
(class direct-slot
&rest initargs
))
500 (defgeneric reinitialize-instance
(gf &rest args
&key
&allow-other-keys
))
502 (defgeneric shared-initialize
(generic-function
504 &key
&allow-other-keys
))
506 (defgeneric update-dependent
(metaobject dependent
&rest initargs
))
508 (defgeneric update-instance-for-different-class
(previous
512 (defgeneric update-instance-for-redefined-class
(instance
518 (defgeneric writer-method-class
(class direct-slot
&rest initargs
))