0.8alpha.0.36:
[sbcl/lichteblau.git] / src / pcl / generic-functions.lisp
bloba66447c5f07b08ae879e901744b8fb3a75d85daa
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
4 ;;;; more information.
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.
9 (in-package "SB-PCL")
11 ;;;; class predicates
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))
57 ;;;; readers
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-initialize-info (slot-class))
77 (defgeneric class-name (class))
79 (defgeneric class-precedence-list (pcl-class))
81 (defgeneric class-predicate-name (class))
83 (defgeneric class-wrapper (pcl-class))
85 (defgeneric definition-source (definition-source-mixin))
87 (defgeneric eql-specializer-object (eql-specializer))
89 (defgeneric generic-function-declarations (standard-generic-function))
91 (defgeneric generic-function-method-class (standard-generic-function))
93 (defgeneric generic-function-method-combination (standard-generic-function))
95 (defgeneric generic-function-methods (standard-generic-function))
97 (defgeneric generic-function-name (standard-generic-function))
99 (defgeneric gf-arg-info (standard-generic-function))
101 (defgeneric gf-dfun-state (standard-generic-function))
103 (defgeneric generic-function-initial-methods (standard-generic-function))
105 (defgeneric long-method-combination-function (long-method-combination))
107 (defgeneric method-combination-documentation (standard-method-combination))
109 (defgeneric method-combination-options (standard-method-combination))
111 (defgeneric method-combination-type (standard-method-combination))
113 (defgeneric method-fast-function (standard-method))
115 (defgeneric method-generic-function (standard-method))
117 (defgeneric object-plist (plist-mixin))
119 (defgeneric short-combination-identity-with-one-argument
120 (short-method-combination))
122 (defgeneric short-combination-operator (short-method-combination))
124 (defgeneric slot-definition-boundp-function (effective-slot-definition))
126 (defgeneric slot-definition-class (slot-definition))
128 (defgeneric slot-definition-defstruct-accessor-symbol
129 (structure-slot-definition))
131 (defgeneric slot-definition-initargs (slot-definition))
133 (defgeneric slot-definition-initform (slot-definition))
135 (defgeneric slot-definition-initfunction (slot-definition))
137 (defgeneric slot-definition-internal-reader-function
138 (structure-slot-definition))
140 (defgeneric slot-definition-internal-writer-function
141 (structure-slot-definition))
143 (defgeneric slot-definition-location (standard-effective-slot-definition))
145 (defgeneric slot-definition-name (slot-definition))
147 (defgeneric slot-definition-reader-function (effective-slot-definition))
149 (defgeneric slot-definition-readers (slot-definition))
151 (defgeneric slot-definition-type (slot-definition))
153 (defgeneric slot-definition-writer-function (effective-slot-definition))
155 (defgeneric slot-definition-writers (slot-definition))
157 (defgeneric specializer-object (class-eq-specializer))
159 (defgeneric specializer-type (specializer))
161 ;;;; writers
163 (defgeneric (setf class-defstruct-constructor) (new-value structure-class))
165 (defgeneric (setf class-defstruct-form) (new-value structure-class))
167 (defgeneric (setf class-direct-slots) (new-value slot-class))
169 (defgeneric (setf class-incompatible-superclass-list) (new-value pcl-class))
171 (defgeneric (setf class-initialize-info) (new-value slot-class))
173 (defgeneric (setf class-name) (new-value class))
175 (defgeneric (setf class-slots) (new-value slot-class))
177 (defgeneric (setf generic-function-method-class) (new-value
178 standard-generic-function))
180 (defgeneric (setf generic-function-method-combination)
181 (new-value standard-generic-function))
183 (defgeneric (setf generic-function-declarations) (new-value
184 standard-generic-function))
186 (defgeneric (setf generic-function-methods) (new-value
187 standard-generic-function))
189 (defgeneric (setf generic-function-name) (new-value standard-generic-function))
191 (defgeneric (setf gf-dfun-state) (new-value standard-generic-function))
193 (defgeneric (setf generic-function-initial-methods)
194 (new-value standard-generic-function))
196 (defgeneric (setf method-generic-function) (new-value standard-method))
198 (defgeneric (setf object-plist) (new-value plist-mixin))
200 (defgeneric (setf slot-definition-allocation) (new-value
201 standard-slot-definition))
203 (defgeneric (setf slot-definition-boundp-function)
204 (new-value effective-slot-definition))
206 (defgeneric (setf slot-definition-class) (new-value slot-definition))
208 (defgeneric (setf slot-definition-defstruct-accessor-symbol)
209 (new-value structure-slot-definition))
211 (defgeneric (setf slot-definition-initargs) (new-value slot-definition))
213 (defgeneric (setf slot-definition-initform) (new-value slot-definition))
215 (defgeneric (setf slot-definition-initfunction) (new-value slot-definition))
217 (defgeneric (setf slot-definition-internal-reader-function)
218 (new-value structure-slot-definition))
220 (defgeneric (setf slot-definition-internal-writer-function)
221 (new-value structure-slot-definition))
223 (defgeneric (setf slot-definition-location)
224 (new-value standard-effective-slot-definition))
226 (defgeneric (setf slot-definition-name) (new-value slot-definition))
228 (defgeneric (setf slot-definition-reader-function) (new-value
229 effective-slot-definition))
231 (defgeneric (setf slot-definition-readers) (new-value slot-definition))
233 (defgeneric (setf slot-definition-type) (new-value slot-definition))
235 (defgeneric (setf slot-definition-writer-function)
236 (new-value effective-slot-definition))
238 (defgeneric (setf slot-definition-writers) (new-value slot-definition))
240 ;;;; 1 argument
242 (defgeneric accessor-method-class (method))
244 (defgeneric accessor-method-slot-name (m))
246 (defgeneric class-default-initargs (class))
248 (defgeneric class-direct-default-initargs (class))
250 (defgeneric class-direct-slots (class))
252 (defgeneric class-finalized-p (class))
254 (defgeneric class-prototype (class))
256 (defgeneric class-slot-cells (class))
258 (defgeneric class-slots (class))
260 (defgeneric compute-class-precedence-list (root))
262 (defgeneric compute-default-initargs (class))
264 (defgeneric compute-discriminating-function (gf))
266 (defgeneric compute-discriminating-function-arglist-info (generic-function))
268 (defgeneric compute-slots (class))
270 (defgeneric finalize-inheritance (class))
272 (defgeneric function-keywords (method))
274 (defgeneric generic-function-argument-precedence-order (gf))
276 (defgeneric generic-function-lambda-list (gf))
278 (defgeneric generic-function-pretty-arglist (generic-function))
280 (defgeneric gf-fast-method-function-p (gf))
282 (defgeneric initialize-internal-slot-functions (slotd))
284 (defgeneric make-instances-obsolete (class))
286 (defgeneric method-function (method))
288 (defgeneric method-lambda-list (m))
290 (defgeneric method-pretty-arglist (method))
292 (defgeneric method-qualifiers (m))
294 (defgeneric method-specializers (m))
296 (defgeneric raw-instance-allocator (class))
298 (defgeneric slot-definition-allocation (slotd))
300 (defgeneric slots-fetcher (class))
302 (defgeneric specializer-class (specializer))
304 (defgeneric specializer-direct-generic-functions (specializer))
306 (defgeneric specializer-direct-methods (specializer))
308 (defgeneric specializer-method-table (specializer))
310 (defgeneric update-constructors (class))
312 (defgeneric wrapper-fetcher (class))
314 ;;;; 2 arguments
316 (defgeneric add-dependent (metaobject dependent))
318 (defgeneric add-direct-method (specializer method))
320 (defgeneric add-direct-subclass (class subclass))
322 (defgeneric add-method (generic-function method))
324 (defgeneric class-slot-value (class slot-name))
326 (defgeneric compatible-meta-class-change-p (class proto-new-class))
328 (defgeneric compute-applicable-methods (generic-function arguments))
330 (defgeneric compute-applicable-methods-using-classes
331 (generic-function classes))
333 (defgeneric compute-effective-slot-definition-initargs (class direct-slotds))
335 (defgeneric describe-object (object stream))
337 (defgeneric direct-slot-definition-class (class &rest initargs))
339 (defgeneric effective-slot-definition-class (class &rest initargs))
341 (defgeneric legal-documentation-p (object x))
343 (defgeneric legal-method-function-p (object x))
345 (defgeneric legal-qualifier-p (object x))
347 (defgeneric legal-qualifiers-p (object x))
349 (defgeneric legal-slot-name-p (object x))
351 (defgeneric legal-specializer-p (object x))
353 (defgeneric legal-specializers-p (object x))
355 (defgeneric make-boundp-method-function (class slot-name))
357 (defgeneric make-reader-method-function (class slot-name))
359 (defgeneric make-writer-method-function (class slot-name))
361 (defgeneric map-dependents (metaobject function))
363 (defgeneric remove-boundp-method (class generic-function))
365 (defgeneric remove-dependent (metaobject dependent))
367 (defgeneric remove-direct-method (specializer method))
369 (defgeneric remove-direct-subclass (class subclass))
371 (defgeneric remove-method (generic-function method))
373 (defgeneric remove-reader-method (class generic-function))
375 (defgeneric remove-writer-method (class generic-function))
377 (defgeneric same-specializer-p (specl1 specl2))
379 (defgeneric slot-accessor-function (slotd type))
381 (defgeneric slot-accessor-std-p (slotd type))
383 ;;; This controls DESCRIBE-OBJECT (SLOT-OBJECT STREAM) behavior.
384 (defgeneric slots-to-inspect (class object))
386 (defgeneric update-gf-dfun (class gf))
388 (defgeneric validate-superclass (fsc class))
390 (defgeneric (setf documentation) (new-value slotd doc-type)
391 (:argument-precedence-order doc-type slotd new-value))
393 (defgeneric documentation (slotd doc-type)
394 (:argument-precedence-order doc-type slotd))
396 ;;;; 3 arguments
398 (defgeneric add-boundp-method (class generic-function slot-name))
400 (defgeneric add-reader-method (class generic-function slot-name))
402 (defgeneric add-writer-method (class generic-function slot-name))
404 (defgeneric (setf class-slot-value) (nv class slot-name))
406 ;;; CMUCL comment (from Gerd Moellmann/Pierre Mai, 2002-10-19):
408 ;;; According to AMOP, COMPUTE-EFFECTIVE-METHOD should return two
409 ;;; values. Alas, the second value is only vaguely described in AMOP,
410 ;;; and, when asked on 2002-10-18, Gregor Kiczales said he couldn't
411 ;;; remember what the second value was supposed to be. So, PCL's
412 ;;; COMPUTE-EFFECTIVE-METHOD returns one value as do Allegro and
413 ;;; Lispworks.
414 (defgeneric compute-effective-method (generic-function
415 combin
416 applicable-methods))
418 (defgeneric compute-effective-slot-definition (class name dslotds))
420 (defgeneric compute-slot-accessor-info (slotd type gf))
422 (defgeneric default-initargs (class initargs defaults))
424 (defgeneric find-method-combination (generic-function type options))
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))
438 ;;;; 4 arguments
440 (defgeneric make-method-lambda (proto-generic-function
441 proto-method
442 lambda-expression
443 environment))
445 (defgeneric (setf slot-value-using-class) (new-value class object slotd))
447 ;;;; 5 arguments
449 (defgeneric make-method-initargs-form (proto-generic-function
450 proto-method
451 lambda-expression
452 lambda-list
453 environment))
455 ;;;; optional arguments
457 (defgeneric get-method (generic-function
458 qualifiers
459 specializers
460 &optional errorp))
462 (defgeneric find-method (generic-function
463 qualifiers
464 specializers
465 &optional errorp))
467 (defgeneric remove-named-method (generic-function-name
468 argument-specifiers
469 &optional extra))
471 (defgeneric slot-missing (class
472 instance
473 slot-name
474 operation
475 &optional new-value))
477 ;;;; &KEY arguments
479 (defgeneric allocate-instance (class &rest initargs))
481 (defgeneric ensure-class-using-class (class
482 name
483 &rest args
484 &key &allow-other-keys))
486 (defgeneric ensure-generic-function-using-class (generic-function
487 fun-name
488 &key &allow-other-keys))
490 (defgeneric initialize-instance (gf &key &allow-other-keys))
492 (defgeneric make-instance (class &rest initargs &key &allow-other-keys))
494 (defgeneric change-class (instance new-class-name &rest initargs &key &allow-other-keys))
496 (defgeneric no-applicable-method (generic-function &rest args))
498 (defgeneric no-next-method (generic-function method &rest args))
500 (defgeneric no-primary-method (generic-function &rest args))
502 (defgeneric reader-method-class (class direct-slot &rest initargs))
504 (defgeneric reinitialize-instance (gf &rest args &key &allow-other-keys))
506 (defgeneric shared-initialize (generic-function
507 slot-names
508 &key &allow-other-keys))
510 (defgeneric update-dependent (metaobject dependent &rest initargs))
512 (defgeneric update-instance-for-different-class (previous
513 current
514 &rest initargs))
516 (defgeneric update-instance-for-redefined-class (instance
517 added-slots
518 discarded-slots
519 property-list
520 &rest initargs))
522 (defgeneric writer-method-class (class direct-slot &rest initargs))