[luna] ダイアモンド継承時 のスロット
ARISAWA Akihiro <[email protected]> Sat, 28 Mar 2009 07:02:47 +0900
| Newsgroups | gmane.mail.emacs.mime.japanese |
|---|---|
| Message-ID | <[email protected]> |
--=-=-=
Content-Type: text/plain; charset=iso-2022-jp
luna $B$G0J2<$N$h$&$K%@%$%"%b%s%I7Q>5$r$7$?;~$K!"(Bparent2 $BB&$N%9%m%C%H$r(B
$B;H$($J$$$H$$$&LdBj$,$"$j$^$9!#(B
--=-=-=
Content-Type: image/png
Content-Disposition: inline; filename=luna.png
Content-Transfer-Encoding: base64
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
/wOV6P/f/HG1GQAAAABJRU5ErkJggg==
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
(require 'luna)
(luna-define-class base () (slot0))
(luna-define-class parent1 (base) (slot1))
(luna-define-class parent2 (base) (slot2))
(luna-define-class derived (parent1 parent2) ())
(let ((entity (luna-make-entity 'derived)))
(luna-slot-value entity 'slot2))
Debugger entered--Lisp error: (args-out-of-range [derived [0 0 0 0 0 0 0] n=
il nil nil] 5)
luna-slot-value([derived [0 0 0 0 0 0 0] nil nil nil] slot2)
(let ((entity ...)) (luna-slot-value entity (quote slot2)))
--=-=-=
Content-Type: text/plain; charset=iso-2022-jp
Content-Disposition: inline
$B$3$l$O!"(Bslot-index $B$,(B number-of-slots $B$r1[$($F$7$^$&$?$a$G$9!#(B
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: inline
(let ((class (luna-find-class 'derived)))
(cons (luna-class-number-of-slots class)
(luna-class-slot-index class 'slot2)))
=> (5 . 5)
--=-=-=
Content-Type: text/plain; charset=iso-2022-jp
Content-Disposition: inline
$B$H$$$&$3$H$G!"(Bnumber-of-slots $B$r(B($BL5BL$O$"$k$b$N$N(B)$B?F%/%i%9$N%9%m%C%H?t$r(B
$BA4$FB-$7$?$b$N$K$7$?$$$N$G$9$,!"$$$+$,$G$7$g$&$+!#(B
--
$BM-Bt(B $BL@9((B
--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=luna-slot-num.patch
2009-03-27 ARISAWA Akihiro <[email protected]>
* luna.el (luna-define-class-function): Fix number of slots
of the diamond inheritance.
Index: luna.el
===================================================================
RCS file: /cvs/root/flim/luna.el,v
retrieving revision 1.2.6.8
diff -u -r1.2.6.8 luna.el
--- luna.el 6 Jul 2005 02:09:04 -0000 1.2.6.8
+++ luna.el 27 Mar 2009 21:38:09 -0000
@@ -79,8 +79,8 @@
(when (setq j (get sym 'luna-slot-index))
(setq name (symbol-name sym))
(unless (intern-soft name oa)
- (put (intern name oa) 'luna-slot-index (+ j b))
- (setq i (1+ i)))))
+ (put (intern name oa) 'luna-slot-index (+ j b)))
+ (setq i (1+ i))))
(luna-class-obarray (luna-find-class parent))))
(setq rest slots)
(while rest
--=-=-=--