<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word"><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.2900.2873" name=GENERATOR>
<STYLE>@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.EmailStyle17 {
        COLOR: windowtext; FONT-FAMILY: Arial; mso-style-type: personal-compose
}
DIV.Section1 {
        page: Section1
}
</STYLE>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]--></HEAD>
<BODY lang=EN-US vLink=purple link=blue>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff size=2>Did 
you try this:</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff size=2>void 
g( BON::FCO&amp; par)</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2>{</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; // ...</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2>}</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff size=2>void 
f( BON::FCOImpl* impl)</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2>{</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006>&nbsp;&nbsp;&nbsp; <FONT face=Arial 
color=#0000ff size=2>g( BON::FCO( impl));</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2>}</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff size=2>I saw 
that there is a constructor like: FCO( FCOImpl *).</FONT></SPAN></DIV>
<DIV><SPAN class=552403514-12052006><FONT face=Arial color=#0000ff 
size=2>Zoli</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV></DIV>
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
  face=Tahoma size=2>-----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>Matthew J. Emerson<BR><B>Sent:</B> Thursday, May 11, 2006 5:55 
  PM<BR><B>To:</B> gme-users<BR><B>Subject:</B> [gme-users] getting a BON object 
  from an implementation object<BR><BR></FONT></DIV>
  <DIV class=Section1>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">In a BON 2 interpreter, I have 
  written a stand-along function that takes as a parameter a 
  BON::FCO:<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN></FONT><FONT face="Courier New" color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">void</SPAN></FONT><FONT 
  face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> 
  writeNEDFCOPropertyAssn(<FONT color=blue><SPAN 
  style="COLOR: blue">const</SPAN></FONT> BON::FCO &amp;fco, <FONT 
  color=blue><SPAN style="COLOR: blue">const</SPAN></FONT> std::string 
  &amp;indent, std::ostringstream &amp;out);<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">There are many places in the 
  interpreter when I can call it and pass it an actual 
  BON::FCO:<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN></FONT><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">std::set&lt;Node&gt; 
  nodes(<FONT color=blue><SPAN 
  style="COLOR: blue">this</SPAN></FONT>-&gt;getNode());<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  std::set&lt;Node&gt;::const_iterator 
  npos(nodes.begin());<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal style="TEXT-INDENT: 0.5in"><FONT face="Courier New" 
  color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">for</SPAN></FONT><FONT 
  face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">( ; npos != nodes.end(); 
  ++npos)<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal style="TEXT-INDENT: 0.5in"><FONT face="Courier New" 
  size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">{<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::ostringstream 
  nodeParams;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal style="TEXT-INDENT: 0.5in"><FONT face="Courier New" 
  size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  writeNEDFCOPropertyAssn(node, "\t\t\t\t", 
  nodeParams)<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal style="TEXT-INDENT: 0.5in"><FONT face="Courier New" 
  size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ...<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal style="TEXT-INDENT: 0.5in"><FONT face="Courier New" 
  size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">}</SPAN></FONT><FONT 
  face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">However, inside the definition of 
  a method of one of my &#8211;Impl classes, I need to call this stand-along function 
  and basically pass it the &#8220;this&#8221; pointer. Except &#8220;this&#8221; is an Impl object and 
  not a BON object:<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN></FONT><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">writeNEDFCOPropertyAssn(<FONT 
  color=blue><SPAN style="COLOR: blue">this</SPAN></FONT>, "\t\t", nodeParams); 
  <o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Except&#8230;</SPAN></FONT><FONT 
  face="Courier New" color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">this</SPAN></FONT><FONT 
  face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> is not a 
  BON::FCO. It&#8217;s a BON::FCOImpl. But the function will do the exact same thing 
  anyway, so I don&#8217;t want to have to write it twice just because in one case I&#8217;m 
  passing in a wrapper and in another case I&#8217;m passing in the implementation 
  object.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">How do I get a wrapped version of 
  an Impl object on demand without messing up the reference counting 
  mechanism?<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P></DIV></BLOCKQUOTE></BODY></HTML>