eieio: Class Options

 
 3.3 Class Options
 =================
 
 In the OPTIONS-AND-DOC arguments to ‘defclass’, the following class
 options may be specified:
 
 ‘:documentation’
      A documentation string for this class.
 
      If an Emacs-style documentation string is also provided, then this
      option is ignored.  An Emacs-style documentation string is not
      prefixed by the ‘:documentation’ tag, and appears after the list of
      slots, and before the options.
 
 ‘:allow-nil-initform’
      If this option is non-‘nil’, and the ‘:initform’ is ‘nil’, but the
      ‘:type’ is specifies something such as ‘string’ then allow this to
      pass.  The default is to have this option be off.  This is
      implemented as an alternative to unbound slots.
 
      This options is specific to Emacs, and is not in the CLOS spec.
 
 ‘:abstract’
      A class which is ‘:abstract’ cannot be instantiated, and instead is
      used to define an interface which subclasses should implement.
 
      This option is specific to Emacs, and is not in the CLOS spec.
 
 ‘:custom-groups’
      This is a list of groups that can be customized within this class.
      This slot is auto-generated when a class is created and need not be
      specified.  It can be retrieved with the ‘class-option’ command,
      however, to see what groups are available.
 
      This option is specific to Emacs, and is not in the CLOS spec.
 
 ‘:method-invocation-order’
      This controls the order in which method resolution occurs for
      ‘:primary’ methods in cases of multiple inheritance.  The order
      affects which method is called first in a tree, and if
      ‘call-next-method’ is used, it controls the order in which the
      stack of methods are run.
 
      Valid values are:
 
      ‘:breadth-first’
           Search for methods in the class hierarchy in breadth first
           order.  This is the default.
      ‘:depth-first’
           Search for methods in the class hierarchy in a depth first
           order.
      ‘:c3’
           Searches for methods in a linearized way that most closely
           matches what CLOS does when a monotonic class structure is
           defined.
 
      SeeMethod Invocation, for more on method invocation order.
 
 ‘:metaclass’
      Unsupported CLOS option.  Enables the use of a different base class
      other than ‘standard-class’.
 
 ‘:default-initargs’
      Unsupported CLOS option.  Specifies a list of initargs to be used
      when creating new objects.  As far as I can tell, this duplicates
      the function of ‘:initform’.
 
    SeeCLOS compatibility, for more details on CLOS tags versus
 EIEIO-specific tags.