[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A metaclass for classes which want to keep track of their instances



The file instance-interning-class.lisp in the contrib directory (see
file reference) implements a CLOS metaclass to be used for defining
classes which will record all of their instances.


;;; A metaclass for classes which want to keep track of their instances.
;;; 1992, 1993, Mark Nahabedian, Cambridge MA.  naha@mit.edu

;;; This file implements a metaclass called INSTANCE-INTERNING-CLASS.
;;; All instances which are created for a class whose metaclass is
;;; INSTANCE-INTERNING-CLASS are recorded in an instance registry object
;;; (defined below).

;;; When you make a new instance of a class whose metaclass is
;;; INSTANCE-INTERNING-CLASS, MAKE-INSTANCE first checks to see if an
;;; existing instance matches the initialization arguments based on
;;; criteria which can be controlled by specializing the
;;; INSTANCE-INITARGS-MATCH method.

;;; MCL doesn't implement VALIDATE-SUPERCLASS.  It is therefore up to
;;; the programmer to make sure that all subclasses of a class which is
;;; of metaclass INSTANCE-INTERNING-CLASS are also of metalcass
;;; INSTANCE-INTERNING-CLASS.

;;; Any instance-interning-class can be given its own instance registry.
;;; By default, an instance registry is only created for the outermost
;;; instance-interning-class on a class's precedence list.