[gme-users] getting a BON object from an implementation object

Zoltan Molnar zolmol at isis.vanderbilt.edu
Fri May 12 10:37:38 CDT 2006

Did you try this:
void g( BON::FCO& par)
    // ...
void f( BON::FCOImpl* impl)
    g( BON::FCO( impl));
I saw that there is a constructor like: FCO( FCOImpl *).

-----Original Message-----
From: gme-users-bounces at list.isis.vanderbilt.edu
[mailto:gme-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Matthew
J. Emerson
Sent: Thursday, May 11, 2006 5:55 PM
To: gme-users
Subject: [gme-users] getting a BON object from an implementation object

In a BON 2 interpreter, I have written a stand-along function that takes
as a parameter a BON::FCO:


            void writeNEDFCOPropertyAssn(const BON::FCO &fco, const
std::string &indent, std::ostringstream &out);


There are many places in the interpreter when I can call it and pass it
an actual BON::FCO:


            std::set<Node> nodes(this->getNode());

      std::set<Node>::const_iterator npos(nodes.begin());

for( ; npos != nodes.end(); ++npos)


            std::ostringstream nodeParams;

      writeNEDFCOPropertyAssn(node, "\t\t\t\t", nodeParams)




However, inside the definition of a method of one of my -Impl classes, I
need to call this stand-along function and basically pass it the "this"
pointer. Except "this" is an Impl object and not a BON object:


            writeNEDFCOPropertyAssn(this, "\t\t", nodeParams); 


Except...this is not a BON::FCO. It's a BON::FCOImpl. But the function
will do the exact same thing anyway, so I don't want to have to write it
twice just because in one case I'm passing in a wrapper and in another
case I'm passing in the implementation object.


How do I get a wrapped version of an Impl object on demand without
messing up the reference counting mechanism?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.isis.vanderbilt.edu/pipermail/gme-users/attachments/20060512/7494abe5/attachment.htm

More information about the gme-users mailing list