Hi,
I have a collection of Perl objects in an application.
I want a C program to have access to the data in these objects.
The objects are implemented as a package
The C application wants an object handle with which it can make C
function calls and pass the object handle.
I have limited experience writing to the PerlApi, etc. I was hoping that
each perl SV has some unique identifier (UID). The goal is to retrieve
the UID, pass it as an integer or void * so I don't need to manage my
own list of Perl objects.
I realize I could create new SV * and increment the reference count.
I would then need to keep track of these SV pointers in order to clean
them up later.
I would hoping I could use a UID to create temporary SV * objects,
perform a data access then decrement the reference count.
void get_dataInt(FOO * foo, int * value)
{
// abbreviated Perl stack stuff
SV * pOjbect = newSV_VooDoo((someVooDooCast)foo); // a 32 bit value
if I am lucky
XPUSHs(sv_2mortal(pObject));
PUTBACK;
count = call_method("getData", G_EVAL | G_SCALAR);
// error checking stuff
*value = POPi;
}
Or something conceptually like that.
With out this I need to allocate my own C object with which to capture a
reference to the underlying Perl objects.
Thanks,
J.R.