Chapter 29. Meta-Object Protocol

Adapted from chapters 5 and 6 of [AMOP]

Table of Contents

29.1. Introduction
29.1.1. Notation
29.1.2. Package
29.2. Overview
29.2.1. Metaobjects
29.2.1.1. Classes
29.2.1.2. Slot Definitions
29.2.1.3. Generic Functions
29.2.1.4. Methods
29.2.1.5. Specializers
29.2.1.6. Method Combinations
29.2.2. Inheritance Structure of Metaobject Classes
29.2.2.1. Implementation and User Specialization
29.2.3. Processing of the User Interface Macros
29.2.3.1. Compile-file Processing of the User Interface Macros
29.2.3.2. Compile-file Processing of Specific User Interface Macros
29.2.4. Metaobject Initialization Protocol
29.3. Classes
29.3.1. Macro DEFCLASS
29.3.2. Inheritance Structure of class metaobject Classes
29.3.3. Introspection: Readers for class metaobjects
29.3.3.1. Generic Function CLASS-NAME
29.3.3.2. Generic Function CLOS:CLASS-DIRECT-SUPERCLASSES
29.3.3.3. Generic Function CLOS:CLASS-DIRECT-SLOTS
29.3.3.4. Generic Function CLOS:CLASS-DIRECT-DEFAULT-INITARGS
29.3.3.5. Generic Function CLOS:CLASS-PRECEDENCE-LIST
29.3.3.6. Generic Function CLOS:CLASS-DIRECT-SUBCLASSES
29.3.3.7. Generic Function CLOS:CLASS-SLOTS
29.3.3.8. Generic Function CLOS:CLASS-DEFAULT-INITARGS
29.3.3.9. Generic Function CLOS:CLASS-FINALIZED-P
29.3.3.10. Generic Function CLOS:CLASS-PROTOTYPE
29.3.3.11. Methods
29.3.4. Class Finalization Protocol
29.3.5. Class Initialization
29.3.5.1. Initialization of class metaobjects
29.3.5.2. Reinitialization of class metaobjects
29.3.6. Customization
29.3.6.1. Generic Function (SETF CLASS-NAME)
29.3.6.2. Generic Function CLOS:ENSURE-CLASS
29.3.6.3. Generic Function CLOS:ENSURE-CLASS-USING-CLASS
29.3.6.4. Generic Function CLOS:FINALIZE-INHERITANCE
29.3.6.5. Generic Function MAKE-INSTANCE
29.3.6.6. Generic Function ALLOCATE-INSTANCE
29.3.6.7. Generic Function CLOS:VALIDATE-SUPERCLASS
29.3.6.8. Generic Function CLOS:COMPUTE-DIRECT-SLOT-DEFINITION-INITARGS
29.3.6.9. Generic Function CLOS:DIRECT-SLOT-DEFINITION-CLASS
29.3.6.10. Generic Function CLOS:COMPUTE-CLASS-PRECEDENCE-LIST
29.3.6.11. Generic Function CLOS:COMPUTE-SLOTS
29.3.6.12. Generic Function CLOS:COMPUTE-EFFECTIVE-SLOT-DEFINITION
29.3.6.13. Generic Function CLOS:COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS
29.3.6.14. Generic Function CLOS:EFFECTIVE-SLOT-DEFINITION-CLASS
29.3.6.15. Generic Function CLOS:COMPUTE-DEFAULT-INITARGS
29.3.7. Updating Dependencies
29.3.7.1. Generic Function CLOS:ADD-DIRECT-SUBCLASS
29.3.7.2. Generic Function CLOS:REMOVE-DIRECT-SUBCLASS
29.4. Slot Definitions
29.4.1. Inheritance Structure of slot definition metaobject Classes
29.4.2. Introspection: Readers for slot definition metaobjects
29.4.2.1. Generic Functions
29.4.2.2. Methods
29.4.2.3. Readers for direct slot definition metaobjects
29.4.2.4. Readers for effective slot definition metaobjects
29.4.3. Initialization of slot definition metaobjects
29.4.3.1. Methods
29.5. Generic Functions
29.5.1. Inheritance Structure of generic function metaobject Classes
29.5.2. Introspection: Readers for generic function metaobjects
29.5.2.1. Generic Function CLOS:GENERIC-FUNCTION-NAME
29.5.2.2. Generic Function CLOS:GENERIC-FUNCTION-METHODS
29.5.2.3. Generic Function CLOS:GENERIC-FUNCTION-LAMBDA-LIST
29.5.2.4. Generic Function CLOS:GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER
29.5.2.5. Generic Function CLOS:GENERIC-FUNCTION-DECLARATIONS
29.5.2.6. Generic Function CLOS:GENERIC-FUNCTION-METHOD-CLASS
29.5.2.7. Generic Function CLOS:GENERIC-FUNCTION-METHOD-COMBINATION
29.5.2.8. Methods
29.5.3. Initialization of Generic Functions
29.5.3.1. Macro DEFGENERIC
29.5.3.2. Generic Function Invocation Protocol
29.5.3.3. Initialization of generic function metaobjects
29.5.4. Customization
29.5.4.1. Generic Function (SETF CLOS:GENERIC-FUNCTION-NAME)
29.5.4.2. Generic Function ENSURE-GENERIC-FUNCTION
29.5.4.3. Generic Function CLOS:ENSURE-GENERIC-FUNCTION-USING-CLASS
29.5.4.4. Generic Function ADD-METHOD
29.5.4.5. Generic Function REMOVE-METHOD
29.5.4.6. Generic Function CLOS:COMPUTE-APPLICABLE-METHODS
29.5.4.7. Generic Function CLOS:COMPUTE-APPLICABLE-METHODS-USING-CLASSES
29.5.4.8. Generic Function CLOS:COMPUTE-EFFECTIVE-METHOD
29.5.4.9. Function CLOS:COMPUTE-EFFECTIVE-METHOD-AS-FUNCTION
29.5.4.10. Generic Function CLOS:MAKE-METHOD-LAMBDA
29.5.4.11. Generic Function CLOS:COMPUTE-DISCRIMINATING-FUNCTION
29.6. Methods
29.6.1. Inheritance Structure of method metaobject Classes
29.6.2. Introspection: Readers for method metaobjects
29.6.2.1. Generic Function CLOS:METHOD-SPECIALIZERS
29.6.2.2. Generic Function METHOD-QUALIFIERS
29.6.2.3. Generic Function CLOS:METHOD-LAMBDA-LIST
29.6.2.4. Generic Function CLOS:METHOD-GENERIC-FUNCTION
29.6.2.5. Generic Function CLOS:METHOD-FUNCTION
29.6.2.6. Methods
29.6.3. Initialization of Methods
29.6.3.1. Macro DEFMETHOD
29.6.3.2. Initialization of method metaobjects
29.6.4. Customization
29.6.4.1. Function CLOS:EXTRACT-LAMBDA-LIST
29.6.4.2. Function CLOS:EXTRACT-SPECIALIZER-NAMES
29.7. Accessor Methods
29.7.1. Introspection
29.7.1.1. Generic Function CLOS:ACCESSOR-METHOD-SLOT-DEFINITION
29.7.2. Customization
29.7.2.1. Generic Function CLOS:READER-METHOD-CLASS
29.7.2.2. Generic Function CLOS:WRITER-METHOD-CLASS
29.8. Specializers
29.8.1. Inheritance Structure of Specializer Metaobject Classes
29.8.2. Introspection
29.8.2.1. Function CLOS:EQL-SPECIALIZER-OBJECT
29.8.3. Initialization
29.8.3.1. Function CLOS:INTERN-EQL-SPECIALIZER
29.8.4. Updating Dependencies
29.8.4.1. Generic Function CLOS:SPECIALIZER-DIRECT-METHODS
29.8.4.2. Generic Function CLOS:SPECIALIZER-DIRECT-GENERIC-FUNCTIONS
29.8.4.3. Generic Function CLOS:ADD-DIRECT-METHOD
29.8.4.4. Generic Function CLOS:REMOVE-DIRECT-METHOD
29.9. Method Combinations
29.9.1. Inheritance Structure of method combination metaobject Classes
29.9.2. Customization
29.9.2.1. Generic Function CLOS:FIND-METHOD-COMBINATION
29.10. Slot Access
29.10.1. Instance Structure Protocol
29.10.2. Funcallable Instances
29.10.3. Customization
29.10.3.1. Function CLOS:STANDARD-INSTANCE-ACCESS
29.10.3.2. Function CLOS:FUNCALLABLE-STANDARD-INSTANCE-ACCESS
29.10.3.3. Function CLOS:SET-FUNCALLABLE-INSTANCE-FUNCTION
29.10.3.4. Generic Function CLOS:SLOT-VALUE-USING-CLASS
29.10.3.5. Generic Function (SETF CLOS:SLOT-VALUE-USING-CLASS)
29.10.3.6. Generic Function CLOS:SLOT-BOUNDP-USING-CLASS
29.10.3.7. Generic Function CLOS:SLOT-MAKUNBOUND-USING-CLASS
29.11. Dependent Maintenance
29.11.1. Protocol
29.11.1.1. Generic Function CLOS:UPDATE-DEPENDENT
29.11.1.2. Generic Function CLOS:ADD-DEPENDENT
29.11.1.3. Generic Function CLOS:REMOVE-DEPENDENT
29.11.1.4. Generic Function CLOS:MAP-DEPENDENTS
29.12. Deviations from AMOP
29.12.1. Warning CLOS:CLOS-WARNING
29.12.1.1. Warning CLOS:GF-ALREADY-CALLED-WARNING
29.12.1.2. Warning CLOS:GF-REPLACING-METHOD-WARNING
29.12.1.3. Warning CLOS:CLASS-OBSOLESCENCE-WARNING

These notes document CLISP version 2.49.60+Last modified: 2017-11-21