Update to CEDET 1.0's version of EIEIO.
commita2930e438b2a70726e6d5b09de8b2a9658505c4e
authorEric M. Ludlam <zappo@gnu.org>
Sun, 19 Sep 2010 04:23:57 +0000 (19 00:23 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 19 Sep 2010 04:23:57 +0000 (19 00:23 -0400)
treef4fe13d1ea2291de213838578057e77d1e8afe11
parentdd9af436d98d87c8c214a80e728c68cc02674ca0
Update to CEDET 1.0's version of EIEIO.

* emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key): New
function.
(eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it.
(eieio-default-eval-maybe): Eval val instead of unquoting only.
(class-precedence-list): If class is nil, return nil.
(eieio-generic-call): If class of first input arg is nil, don't
look up static methods, and do check for primary methods.
(initialize-instance): See if the default needs to be evaluated
during the constructor.
(eieio-perform-slot-validation-for-default): Don't do the check
for values that will eventually be evaluated.
(eieio-eval-default-p): New function.
(eieio-default-eval-maybe): Use it.

* emacs-lisp/eieio.el (eieio-defclass): Allow :c3
method-invocation-order.
(eieio-c3-candidate, eieio-c3-merge-lists): New functions.
(eieio-class-precedence-dfs): Compute class precedence list using
dfs algorithm.
(eieio-class-precedence-bfs): Compute class precedence list using
bfs algorithm.
(eieio-class-precedence-c3): compute class precedence list using
c3 algorithm.
(class-precedence-list): New function.
(eieiomt-method-list, eieiomt-sym-optimize): Use it.
(inconsistent-class-hierarchy): New error symbol.
(call-next-method): Stow the replacement argument list for future
call-next-method invocations.
lisp/ChangeLog
lisp/emacs-lisp/eieio.el