aboutsummaryrefslogtreecommitdiffstats
path: root/doc/misc
diff options
context:
space:
mode:
authorDavid Engster2013-07-29 22:28:22 +0200
committerDavid Engster2013-07-29 22:28:22 +0200
commit86b192c1479d167c13edb9cdaa026c231c8a0442 (patch)
tree11eaea65e24ad6c9fd4db7d1b1c166ac0356bd20 /doc/misc
parent218e063750a79e79651eb41f67c0b07209980056 (diff)
parent18657165bb88252b8285c4655e907dd4fc29a0f7 (diff)
downloademacs-86b192c1479d167c13edb9cdaa026c231c8a0442.tar.gz
emacs-86b192c1479d167c13edb9cdaa026c231c8a0442.zip
Merge CEDET upstream (rev. 8579)
Diffstat (limited to 'doc/misc')
-rw-r--r--doc/misc/ChangeLog8
-rw-r--r--doc/misc/eieio.texi58
2 files changed, 46 insertions, 20 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index b4cd73bda08..b306ce5ba0a 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,11 @@
12013-07-29 David Engster <deng@randomsample.de>
2
3 * eieio.texi (top): Make clear that EIEIO is not a full CLOS
4 implementation.
5 (Introduction): Add further missing features.
6 (Building Classes): Add introductory paragraph.
7 (Wish List): Add metaclasses and EQL specialization.
8
12013-07-29 Michael Albinus <michael.albinus@gmx.de> 92013-07-29 Michael Albinus <michael.albinus@gmx.de>
2 10
3 * tramp.texi (Frequently Asked Questions): Mention 11 * tramp.texi (Frequently Asked Questions): Mention
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index b16144e98a2..c8e8fb6d2e2 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -46,10 +46,10 @@ modify this GNU manual.''
46@comment node-name, next, previous, up 46@comment node-name, next, previous, up
47@top EIEIO 47@top EIEIO
48 48
49@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is 49@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'')
50a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp. 50provides an Object Oriented layer for Emacs Lisp, following the basic
51It provides a framework for writing object-oriented applications in 51concepts of the Common Lisp Object System (CLOS). It provides a
52Emacs. 52framework for writing object-oriented applications in Emacs.
53 53
54@ifnottex 54@ifnottex
55@insertcopying 55@insertcopying
@@ -201,8 +201,6 @@ Byte compilation support of methods.
201@item 201@item
202Help system extensions for classes and methods. 202Help system extensions for classes and methods.
203@item 203@item
204Automatic texinfo documentation generator.
205@item
206Several base classes for interesting tasks. 204Several base classes for interesting tasks.
207@item 205@item
208Simple test suite. 206Simple test suite.
@@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS)
212Customization support in a class (extension to CLOS) 210Customization support in a class (extension to CLOS)
213@end enumerate 211@end enumerate
214 212
215Here are some CLOS features that @eieio{} presently lacks: 213Here are some important CLOS features that @eieio{} presently lacks:
216 214
217@table @asis 215@table @asis
218@item Complete @code{defclass} tag support
219All CLOS tags are currently supported, but the following are not
220currently implemented correctly:
221 216
222@table @code 217@item Method dispatch
223@item :metaclass 218EIEO does not support method dispatch for built-in types and multiple
224There is only one base superclass for all @eieio{} classes, which is 219arguments types. In other words, method dispatch only looks at the
225the @code{eieio-default-superclass}. 220first argument, and this one must be an @eieio{} type.
226@item :default-initargs 221
222@item Support for metaclasses
223There is just one default metaclass, @code{eieio-default-superclass},
224and you cannot define your own. The @code{:metaclass} tag in
225@code{defclass} is ignored. Also, functions like `class-of' and
226`find-class', which should return instances of the metaclass, behave
227differently in @eieio{} in that they return symbols or plain structures
228instead.
229
230@item EQL specialization
231EIEIO does not support it.
232
233@item @code{:around} method tag
234This CLOS method tag is non-functional.
235
236@item :default-initargs in @code{defclass}
227Each slot has an @code{:initarg} tag, so this is not really necessary. 237Each slot has an @code{:initarg} tag, so this is not really necessary.
228@end table
229 238
230@item Mock object initializers 239@item Mock object initializers
231Each class contains a mock object used for fast initialization of 240Each class contains a mock object used for fast initialization of
@@ -233,15 +242,23 @@ instantiated objects. Using functions with side effects on object slot
233values can potentially cause modifications in the mock object. @eieio{} 242values can potentially cause modifications in the mock object. @eieio{}
234should use a deep copy but currently does not. 243should use a deep copy but currently does not.
235 244
236@item @code{:around} method tag
237This CLOS method tag is non-functional.
238
239@end table 245@end table
240 246
241@node Building Classes 247@node Building Classes
242@comment node-name, next, previous, up 248@comment node-name, next, previous, up
243@chapter Building Classes 249@chapter Building Classes
244 250
251First off, please note that this manual cannot serve as a complete
252introduction to object oriented programming and generic functions in
253LISP. Although EIEIO is not a complete CLOS implementation and also
254differs from CLOS in several aspects, it follows the same basic
255concepts. Therefore, it is highly recommended to learn these from a
256textbook or tutorial first, especially if you only know OOP from
257languages like C++ or Java. If on the other hand you are already
258familiar with CLOS, you should be aware that @eieio{} does not implement
259the full CLOS specificiation and also differs in some other aspects
260(@xref{Introduction}, and @ref{CLOS compatibility}).
261
245A @dfn{class} is a definition for organizing data and methods 262A @dfn{class} is a definition for organizing data and methods
246together. An @eieio{} class has structures similar to the classes 263together. An @eieio{} class has structures similar to the classes
247found in other object-oriented (OO) languages. 264found in other object-oriented (OO) languages.
@@ -1930,8 +1947,9 @@ Some important compatibility features that would be good to add are:
1930 1947
1931@enumerate 1948@enumerate
1932@item 1949@item
1950Support for metaclasses and EQL specialization.
1951@item
1933@code{:around} method key. 1952@code{:around} method key.
1934
1935@item 1953@item
1936Method dispatch for built-in types. 1954Method dispatch for built-in types.
1937@item 1955@item