<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=773322114-17062004><FONT face=Arial color=#0000ff 
size=2>Hi,</FONT></SPAN></DIV><SPAN class=773322114-17062004><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>
<DIV></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff>I<SPAN 
class=773322114-17062004>&nbsp;would question first the metamodeling: if you are 
connecting the attributes to the derived model as well, why do you use interface 
inheritance? The regular inheritance or implementation inheritance would do 
this.</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT><FONT 
face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>If you definitely want to&nbsp;keep unchanged this 
metamodel, then i suggest a human intervention&nbsp;(removing the getters in the 
private part).</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>Regarding the implementation inheritance the current 
version of BonExtender lacks a feature: producing compilable code. Since this 
kind of inheritance is mapped to private 
inheritance</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>like "class DerivedImpl : private BaseImpl"&nbsp; 
this&nbsp;derivation makes the upcast to ObjectImpl impossible (in general each 
class declared with the DECLARE... macros has to be castable to 
ObjectImpl).</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>The next version of BonExtender will solve this by 
</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>"class DerivedImpl: 
</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private 
BaseImpl</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>&nbsp;&nbsp;&nbsp; , <FONT color=#ff00ff>virtual public 
BON::Model</FONT>" </SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>So in such cases each implementation inherited class 
will be derived publicly from its BON::&lt;kind&gt; 
class.</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT><FONT 
face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>Regards, Zoli</SPAN></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004></SPAN></FONT></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=773322114-17062004>&nbsp;</SPAN></FONT></FONT>-----Original 
Message-----<BR><B>From:</B> gme-users-bounces@list.isis.vanderbilt.edu 
[mailto:gme-users-bounces@list.isis.vanderbilt.edu] <B>On Behalf Of </B>Sujata 
Mujumdar<BR><B>Sent:</B> Wednesday, June 16, 2004 9:45 PM<BR><B>To:</B> 
gme-users<BR><B>Subject:</B> [gme-users] BONExtender related 
problem<BR><BR></DIV></FONT></FONT>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV>
  <DIV><SPAN class=863594923-16062004><FONT face=Arial size=2>Dear 
  all,</FONT></SPAN></DIV>
  <DIV>
  <P><FONT face=Arial size=2>I have a doubt regarding the BonExtender 
  Interpreter wrt to its treatment of the "Interface Inheritance"<SPAN 
  class=347543202-17062004> and "Implementation 
  Inheritance"</SPAN>.&nbsp;</FONT><FONT size=+0><FONT face=Arial><FONT 
  size=2><SPAN class=863594923-16062004>After running the interpreter on the 
  trial meta (attached to this mail) t</SPAN>he *BonExtension.cpp &amp; 
  *BonExtension.h files that are generate<SPAN class=347543202-17062004>d , when 
  compiled, gave </SPAN>errors. </FONT></FONT></FONT></P>
  <P><FONT size=+0><FONT size=+0><FONT face=Arial size=2>Precisely, if both the 
  classes&nbsp;<SPAN class=347543202-17062004>(Base and Derived) </SPAN>share 
  the same attributes, then in the case of the Derived class, a class is 
  generated&nbsp;<SPAN class=347543202-17062004>with the </SPAN>name&nbsp;<SPAN 
  class=347543202-17062004>'</SPAN>DerivedImpl<SPAN 
  class=347543202-17062004>'</SPAN>. This class has multiple definitions for the 
  "get" method of the common attribute<SPAN class=347543202-17062004> (common 
  attribute to both Derived and Base classes) </SPAN>: one is a public 
  definition while the other is a private definition, leading to compilation 
  errors.</FONT></FONT></FONT></P>
  <P><FONT face=Arial size=2>Note that this doesn&#8217;t occur in case&nbsp;<SPAN 
  class=863594923-16062004>when using </SPAN>the generic inheritance.&nbsp;<SPAN 
  class=863594923-16062004>Any&nbsp;<SPAN class=347543202-17062004>inputs 
  </SPAN>to what I can </SPAN><SPAN class=863594923-16062004>do </SPAN>to 
  resolve this?</FONT></P>
  <P><FONT face=Arial><FONT size=2>Thanks<SPAN class=863594923-16062004> and 
  Regards,</SPAN></FONT></FONT></P>
  <P><FONT face=Arial><FONT size=2><SPAN 
  class=863594923-16062004></SPAN></FONT></FONT><FONT face=Arial><FONT 
  size=2><SPAN 
  class=863594923-16062004>--Sujata</SPAN></FONT></FONT></P></DIV></DIV></BLOCKQUOTE></BODY></HTML>