diff options
| author | David Engster | 2013-07-29 22:28:22 +0200 |
|---|---|---|
| committer | David Engster | 2013-07-29 22:28:22 +0200 |
| commit | 86b192c1479d167c13edb9cdaa026c231c8a0442 (patch) | |
| tree | 11eaea65e24ad6c9fd4db7d1b1c166ac0356bd20 /doc/misc | |
| parent | 218e063750a79e79651eb41f67c0b07209980056 (diff) | |
| parent | 18657165bb88252b8285c4655e907dd4fc29a0f7 (diff) | |
| download | emacs-86b192c1479d167c13edb9cdaa026c231c8a0442.tar.gz emacs-86b192c1479d167c13edb9cdaa026c231c8a0442.zip | |
Merge CEDET upstream (rev. 8579)
Diffstat (limited to 'doc/misc')
| -rw-r--r-- | doc/misc/ChangeLog | 8 | ||||
| -rw-r--r-- | doc/misc/eieio.texi | 58 |
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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-07-29 Michael Albinus <michael.albinus@gmx.de> | 9 | 2013-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'') |
| 50 | a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp. | 50 | provides an Object Oriented layer for Emacs Lisp, following the basic |
| 51 | It provides a framework for writing object-oriented applications in | 51 | concepts of the Common Lisp Object System (CLOS). It provides a |
| 52 | Emacs. | 52 | framework 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 |
| 202 | Help system extensions for classes and methods. | 202 | Help system extensions for classes and methods. |
| 203 | @item | 203 | @item |
| 204 | Automatic texinfo documentation generator. | ||
| 205 | @item | ||
| 206 | Several base classes for interesting tasks. | 204 | Several base classes for interesting tasks. |
| 207 | @item | 205 | @item |
| 208 | Simple test suite. | 206 | Simple test suite. |
| @@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS) | |||
| 212 | Customization support in a class (extension to CLOS) | 210 | Customization support in a class (extension to CLOS) |
| 213 | @end enumerate | 211 | @end enumerate |
| 214 | 212 | ||
| 215 | Here are some CLOS features that @eieio{} presently lacks: | 213 | Here are some important CLOS features that @eieio{} presently lacks: |
| 216 | 214 | ||
| 217 | @table @asis | 215 | @table @asis |
| 218 | @item Complete @code{defclass} tag support | ||
| 219 | All CLOS tags are currently supported, but the following are not | ||
| 220 | currently implemented correctly: | ||
| 221 | 216 | ||
| 222 | @table @code | 217 | @item Method dispatch |
| 223 | @item :metaclass | 218 | EIEO does not support method dispatch for built-in types and multiple |
| 224 | There is only one base superclass for all @eieio{} classes, which is | 219 | arguments types. In other words, method dispatch only looks at the |
| 225 | the @code{eieio-default-superclass}. | 220 | first argument, and this one must be an @eieio{} type. |
| 226 | @item :default-initargs | 221 | |
| 222 | @item Support for metaclasses | ||
| 223 | There is just one default metaclass, @code{eieio-default-superclass}, | ||
| 224 | and 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 | ||
| 227 | differently in @eieio{} in that they return symbols or plain structures | ||
| 228 | instead. | ||
| 229 | |||
| 230 | @item EQL specialization | ||
| 231 | EIEIO does not support it. | ||
| 232 | |||
| 233 | @item @code{:around} method tag | ||
| 234 | This CLOS method tag is non-functional. | ||
| 235 | |||
| 236 | @item :default-initargs in @code{defclass} | ||
| 227 | Each slot has an @code{:initarg} tag, so this is not really necessary. | 237 | Each 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 |
| 231 | Each class contains a mock object used for fast initialization of | 240 | Each class contains a mock object used for fast initialization of |
| @@ -233,15 +242,23 @@ instantiated objects. Using functions with side effects on object slot | |||
| 233 | values can potentially cause modifications in the mock object. @eieio{} | 242 | values can potentially cause modifications in the mock object. @eieio{} |
| 234 | should use a deep copy but currently does not. | 243 | should use a deep copy but currently does not. |
| 235 | 244 | ||
| 236 | @item @code{:around} method tag | ||
| 237 | This 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 | ||
| 251 | First off, please note that this manual cannot serve as a complete | ||
| 252 | introduction to object oriented programming and generic functions in | ||
| 253 | LISP. Although EIEIO is not a complete CLOS implementation and also | ||
| 254 | differs from CLOS in several aspects, it follows the same basic | ||
| 255 | concepts. Therefore, it is highly recommended to learn these from a | ||
| 256 | textbook or tutorial first, especially if you only know OOP from | ||
| 257 | languages like C++ or Java. If on the other hand you are already | ||
| 258 | familiar with CLOS, you should be aware that @eieio{} does not implement | ||
| 259 | the full CLOS specificiation and also differs in some other aspects | ||
| 260 | (@xref{Introduction}, and @ref{CLOS compatibility}). | ||
| 261 | |||
| 245 | A @dfn{class} is a definition for organizing data and methods | 262 | A @dfn{class} is a definition for organizing data and methods |
| 246 | together. An @eieio{} class has structures similar to the classes | 263 | together. An @eieio{} class has structures similar to the classes |
| 247 | found in other object-oriented (OO) languages. | 264 | found 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 |
| 1950 | Support for metaclasses and EQL specialization. | ||
| 1951 | @item | ||
| 1933 | @code{:around} method key. | 1952 | @code{:around} method key. |
| 1934 | |||
| 1935 | @item | 1953 | @item |
| 1936 | Method dispatch for built-in types. | 1954 | Method dispatch for built-in types. |
| 1937 | @item | 1955 | @item |