Hello All,

I'm writing an app which uses perl as it's scripting langauge and I've 
just gotten around to using magic to link the C variables for my app's 
preferences to variables in the embedded perl so scripts can change the 
preferences. Magic for SVs turned out to be simpler than I expected, 
but  magic for HVs ans AVs looks like it's going to be much more 
complicated.

For arrays and hashes, am I going to have to manually set magic for 
each  individual SV element? And for arrays of arrays or arrays of 
hashes,  too?

I don't quite understand what the hv_magic() function is supposed to 
do.  In perlguts "Assigning Magic" it just says "This simply calls 
sv_magic  and coerces the gv argument into an SV." But hv_magic() 
doesn't have the  last 2 parameters that sv_magic() does. Can I do 
something like this:

        av = get_av("my_array", TRUE);
        sv_magic((SV *)av, NULL, 'U', (char *)data, sizeof(data));
        mg = mg_find((SV *)av, 'U');
        mg->mg_virtual = (MGVTBL *)calloc(1, sizeof(MGVTBL));
        mg->mg_virtual->svt_get = GetLinkedVar;
        mg->mg_virtual->svt_get = SetLinkedVar;

and if yes, then in GetLinkedVar() and SetLinkedVar() how do I tell 
what  element of the array I am accessing? It would be nice if there 
was a  function av_magic() that had all the parameters of sv_magic(), 
but when  mg_virtual->svt_get was called for this AV, in addition to 
the SV * and  MAGIC * paramters there would be a third one indicating 
the actual array  element that SV * is. Doing that coudl remove the 
necessity for have to  set magic on each inidvidual SV in an array.

I'd really appreciate it if anybody could point me to any examples of 
using magic to link perl arrays/hashes to C/C++ variables, or fuller 
documentation/examples than exist in perlguts.

Thanks in advance.
--
Cory C. Albrecht
Access denied - nah nah na nah nah!



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to