Common Lisp Package: IT.BESE.ARNESI.MOPP

A MOP compatabilitly layer. This package wraps the various similar but slightly different MOP APIs. All the MOP symbols are exported (even those which are normally exported from the common-lisp package) though not all maybe be properly defined on all lisps. The name of the library in an acronym for "the Meta Object Protocol Package". This package is nominally part of the arnesi utility library but has been written so that this single file can be included in other applications without requiring the rest of the arnesi library. Implementation Notes: 1) The mopp package also exports the function SLOT-DEFINITION-DOCUMENTATION which while not strictly part of the MOP specification really should be and is implementened on most systems. 2) On Lispworks (tested only lightly) the MOPP package implementes an eql-specializer class and defines a version of method-specializers built upon clos:method-specializers which returns them.

README:

FUNCTION

Public

Undocumented

ENSURE-GENERIC-FUNCTION (FUN-NAME &REST ALL-KEYS &KEY ENVIRONMENT DEFINITION-SOURCE &ALLOW-OTHER-KEYS)

EXTRACT-LAMBDA-LIST (SPECIALIZED-LAMBDA-LIST)

EXTRACT-SPECIALIZER-NAMES (SPECIALIZED-LAMBDA-LIST)

FUNCALLABLE-STANDARD-INSTANCE-ACCESS (INSTANCE LOCATION)

SETFFUNCALLABLE-STANDARD-INSTANCE-ACCESS (NEW-VALUE INSTANCE LOCATION)

INTERN-EQL-SPECIALIZER (OBJECT)

SET-FUNCALLABLE-INSTANCE-FUNCTION (FIN NEW-VALUE)

SLOT-DEFINITION-DOCUMENTATION (SLOT)

STANDARD-INSTANCE-ACCESS (INSTANCE LOCATION)

SETFSTANDARD-INSTANCE-ACCESS (NEW-VALUE INSTANCE LOCATION)

GENERIC-FUNCTION

Public

Undocumented

ADD-DEPENDENT (METAOBJECT DEPENDENT)

ADD-DIRECT-METHOD (SPECIALIZER METHOD)

ADD-DIRECT-SUBCLASS (CLASS SUBCLASS)

ADD-METHOD (GENERIC-FUNCTION METHOD)

ALLOCATE-INSTANCE (CLASS &REST INITARGS)

CLASS-DEFAULT-INITARGS (CLASS)

CLASS-DIRECT-DEFAULT-INITARGS (CLASS)

SETFCLASS-DIRECT-SLOTS (NEW-VALUE SLOT-CLASS)

SETFCLASS-NAME (NEW-VALUE CLASS)

SETFCLASS-SLOTS (NEW-VALUE SLOT-CLASS)

COMPUTE-APPLICABLE-METHODS (GENERIC-FUNCTION ARGUMENTS)

COMPUTE-APPLICABLE-METHODS-USING-CLASSES (GENERIC-FUNCTION CLASSES)

COMPUTE-CLASS-PRECEDENCE-LIST (ROOT)

COMPUTE-DEFAULT-INITARGS (CLASS)

COMPUTE-DISCRIMINATING-FUNCTION (GF)

COMPUTE-EFFECTIVE-METHOD (GENERIC-FUNCTION COMBIN APPLICABLE-METHODS)

COMPUTE-EFFECTIVE-SLOT-DEFINITION (CLASS NAME DSLOTDS)

COMPUTE-SLOTS (CLASS)

DIRECT-SLOT-DEFINITION-CLASS (CLASS &REST INITARGS)

EFFECTIVE-SLOT-DEFINITION-CLASS (CLASS &REST INITARGS)

ENSURE-CLASS-USING-CLASS (CLASS NAME &REST ARGS &ALLOW-OTHER-KEYS)

ENSURE-GENERIC-FUNCTION-USING-CLASS (GENERIC-FUNCTION FUN-NAME &KEY ENVIRONMENT GENERIC-FUNCTION-CLASS &ALLOW-OTHER-KEYS)

FINALIZE-INHERITANCE (CLASS)

FIND-METHOD-COMBINATION (GENERIC-FUNCTION TYPE OPTIONS)

GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER (GF)

GENERIC-FUNCTION-LAMBDA-LIST (GF)

SETFGENERIC-FUNCTION-NAME (NEW-VALUE STANDARD-GENERIC-FUNCTION)

MAKE-INSTANCE (CLASS &REST INITARGS &ALLOW-OTHER-KEYS)

MAKE-METHOD-LAMBDA (PROTO-GENERIC-FUNCTION PROTO-METHOD LAMBDA-EXPRESSION ENVIRONMENT)

MAP-DEPENDENTS (METAOBJECT FUNCTION)

READER-METHOD-CLASS (CLASS DIRECT-SLOT &REST INITARGS)

REMOVE-DEPENDENT (METAOBJECT DEPENDENT)

REMOVE-DIRECT-METHOD (SPECIALIZER METHOD)

REMOVE-DIRECT-SUBCLASS (CLASS SUBCLASS)

REMOVE-METHOD (GENERIC-FUNCTION METHOD)

SLOT-BOUNDP-USING-CLASS (CLASS OBJECT SLOTD)

SLOT-MAKUNBOUND-USING-CLASS (CLASS OBJECT SLOTD)

SLOT-VALUE-USING-CLASS (CLASS OBJECT SLOTD)

SETFSLOT-VALUE-USING-CLASS (NEW-VALUE CLASS OBJECT SLOTD)

SPECIALIZER-DIRECT-GENERIC-FUNCTIONS (SPECIALIZER)

SPECIALIZER-DIRECT-METHODS (SPECIALIZER)

UPDATE-DEPENDENT (METAOBJECT DEPENDENT &REST INITARGS)

VALIDATE-SUPERCLASS (CLASS SUPERCLASS)

WRITER-METHOD-CLASS (CLASS DIRECT-SLOT &REST INITARGS)

SLOT-ACCESSOR

Public

Undocumented

ACCESSOR-METHOD-SLOT-DEFINITION (STANDARD-ACCESSOR-METHOD)

CLASS-DIRECT-SLOTS (CLASS)

CLASS-DIRECT-SUBCLASSES (CLASS)

CLASS-DIRECT-SUPERCLASSES (CLASS)

CLASS-FINALIZED-P (CLASS)

CLASS-NAME (CLASS)

CLASS-PRECEDENCE-LIST (PCL-CLASS)

CLASS-PROTOTYPE (CLASS)

CLASS-SLOTS (CLASS)

EQL-SPECIALIZER-OBJECT (EQL-SPECIALIZER)

GENERIC-FUNCTION-DECLARATIONS (STANDARD-GENERIC-FUNCTION)

SETFGENERIC-FUNCTION-DECLARATIONS (NEW-VALUE STANDARD-GENERIC-FUNCTION)

GENERIC-FUNCTION-METHOD-CLASS (STANDARD-GENERIC-FUNCTION)

SETFGENERIC-FUNCTION-METHOD-CLASS (NEW-VALUE STANDARD-GENERIC-FUNCTION)

GENERIC-FUNCTION-METHOD-COMBINATION (STANDARD-GENERIC-FUNCTION)

SETFGENERIC-FUNCTION-METHOD-COMBINATION (NEW-VALUE STANDARD-GENERIC-FUNCTION)

GENERIC-FUNCTION-METHODS (STANDARD-GENERIC-FUNCTION)

SETFGENERIC-FUNCTION-METHODS (NEW-VALUE STANDARD-GENERIC-FUNCTION)

GENERIC-FUNCTION-NAME (STANDARD-GENERIC-FUNCTION)

METHOD-FUNCTION (METHOD)

METHOD-GENERIC-FUNCTION (STANDARD-METHOD)

SETFMETHOD-GENERIC-FUNCTION (NEW-VALUE STANDARD-METHOD)

METHOD-LAMBDA-LIST (M)

METHOD-QUALIFIERS (M)

METHOD-SPECIALIZERS (M)

SLOT-DEFINITION-ALLOCATION (SLOTD)

SETFSLOT-DEFINITION-ALLOCATION (NEW-VALUE STANDARD-SLOT-DEFINITION)

SLOT-DEFINITION-INITARGS (SLOT-DEFINITION)

SETFSLOT-DEFINITION-INITARGS (NEW-VALUE SLOT-DEFINITION)

SLOT-DEFINITION-INITFORM (SLOT-DEFINITION)

SETFSLOT-DEFINITION-INITFORM (NEW-VALUE SLOT-DEFINITION)

SLOT-DEFINITION-INITFUNCTION (SLOT-DEFINITION)

SETFSLOT-DEFINITION-INITFUNCTION (NEW-VALUE SLOT-DEFINITION)

SLOT-DEFINITION-LOCATION (STANDARD-EFFECTIVE-SLOT-DEFINITION)

SETFSLOT-DEFINITION-LOCATION (NEW-VALUE STANDARD-EFFECTIVE-SLOT-DEFINITION)

SLOT-DEFINITION-NAME (SLOT-DEFINITION)

SETFSLOT-DEFINITION-NAME (NEW-VALUE SLOT-DEFINITION)

SLOT-DEFINITION-READERS (SLOT-DEFINITION)

SETFSLOT-DEFINITION-READERS (NEW-VALUE SLOT-DEFINITION)

SLOT-DEFINITION-TYPE (SLOT-DEFINITION)

SETFSLOT-DEFINITION-TYPE (NEW-VALUE SLOT-DEFINITION)

SLOT-DEFINITION-WRITERS (SLOT-DEFINITION)

SETFSLOT-DEFINITION-WRITERS (NEW-VALUE SLOT-DEFINITION)

CLASS

Public

Undocumented

BUILT-IN-CLASS

CLASS

DIRECT-SLOT-DEFINITION

EFFECTIVE-SLOT-DEFINITION

EQL-SPECIALIZER

FORWARD-REFERENCED-CLASS

FUNCALLABLE-STANDARD-CLASS

FUNCALLABLE-STANDARD-OBJECT

GENERIC-FUNCTION

METAOBJECT

METHOD

METHOD-COMBINATION

SLOT-DEFINITION

SPECIALIZER

STANDARD-ACCESSOR-METHOD

STANDARD-CLASS

STANDARD-DIRECT-SLOT-DEFINITION

STANDARD-EFFECTIVE-SLOT-DEFINITION

STANDARD-GENERIC-FUNCTION

STANDARD-METHOD

STANDARD-OBJECT

STANDARD-READER-METHOD

STANDARD-SLOT-DEFINITION

STANDARD-WRITER-METHOD