Next: , Previous: Quick Start, Up: Top

2 Introduction

Due to restrictions in the Emacs Lisp language, CLOS cannot be completely supported, and a few functions have been added in place of setf.

EIEIO supports the following features:

  1. A structured framework for the creation of basic classes with attributes and methods using singular inheritance similar to CLOS.
  2. Type checking, and slot unbinding.
  3. Method definitions similar to CLOS.
  4. Simple and complex class browsers.
  5. Edebug support for methods.
  6. Imenu updates.
  7. Byte compilation support of methods.
  8. Help system extensions for classes and methods.
  9. Automatic texinfo documentation generator.
  10. Several base classes for interesting tasks.
  11. Simple test suite.
  12. Public and private classifications for slots (extensions to CLOS)
  13. Customization support in a class (extension to CLOS)

Here are some CLOS features that EIEIO presently lacks:

Complete defclass tag support
All CLOS tags are currently supported, but the following are not currently implemented correctly:
:metaclass
There is only one base superclass for all EIEIO classes, which is the eieio-default-superclass.
:default-initargs
Each slot has an :initarg tag, so this is not really necessary.

Mock object initializers
Each class contains a mock object used for fast initialization of instantiated objects. Using functions with side effects on object slot values can potentially cause modifications in the mock object. EIEIO should use a deep copy but currently does not.
:around method tag
This CLOS method tag is non-functional.