RE: perl binding for C++ ref-counted object

[email protected] (YangXi)
Newsgroups perl.xs
Message-ID <[email protected]>
> Date: Thu, 20 Oct 2011 08:42:13 +0200
> From: [email protected]
> To: [email protected]
> CC: [email protected]
> Subject: Re: perl binding for C++ ref-counted object
> 
> Hi YanXi,
> 
> On 10/17/2011 05:25 AM, YangXi wrote:
> > I'm asking a question about how to wrapping a refcounted class inside perl.
> >
> > I have some experience on embedding perl in C++, but have little
> > knowledge on perl XS, and I found perldoc perlxs really puzzled.
> >
> > Firstly, I have an simple refcounted C++ base class like this:
> 
> I'm sorry that this isn't a solution for your problem, but maybe it's 
> helpful nonetheless. Object ownership and refcounts are something 
> extremely nasty to deal with when interfacing between two languages that 
> have a very different view of it. For this reason, it's easiest not to 
> have C++ do the refcounting at all. I understand that this might not be 
> possible in your case.
> 
> If you just have a regular, non-refcounting object in C++, you can 
> easily use typemaps like O_OBJECT from
> 
> http://cpansearch.perl.org/src/MBARBON/ExtUtils-XSpp-0.1602/examples/Object-WithIntAndString/perlobject.map
> 
> to have the object wrapped into a Perl scalar. The C++ object will be 
> owned by that scalar and the refcount will be perl's refcount of the 
> SV*. In that case a simple DESTROY XS method will suffice along the 
> lines of the DESTROY here:
> 
> http://cpansearch.perl.org/src/SMUELLER/Math-SimpleHisto-XS-1.23/XS.xs
> 
> The macro in that case can often be replaced by "delete self" for C++ 
> objects.
> 
> I hope this has some general pointers that help a bit.
> 
> Best regards,
> Steffen

I've got a more nasty idea: all I need is refcount and garbage collection, so I can just embed an perl HV inside my object, and use the reference count of that HV.
Woo! Too ugly!
I'll try the C++ part this weekend.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.