Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Re: Passing a very large string by reference to a c library

by dino (Sexton)
on Jul 12, 2001 at 17:19 UTC ( [id://96021]=note: print w/replies, xml ) Need Help??


in reply to Re: Passing a very large string by reference to a c library
in thread Passing a very large string by reference to a c library

Thks,

This is what I've been looking at. The example doesn't use references, though example 6 does. I can try to meld both together so that I can call:

find_index($key, \$data);

I guess a lot depends on how SvPV works. If it copies the data then I need another method.

dino

  • Comment on Re: Re: Passing a very large string by reference to a c library

Replies are listed 'Best First'.
Re: Re: Re: Passing a very large string by reference to a c library
by dino (Sexton) on Jul 12, 2001 at 18:37 UTC
    I've got it to work with:

    unsigned long
    find_index (key, data)
            unsigned long         key
            SV    *               data
        INIT:
           STRLEN          datalen;
           char * s;
           if ((!SvROK(data))
              || (SvTYPE(SvRV(data)) != SVt_PV))
           {
              XSRETURN_UNDEF;
           }
           s = SvPV(SvRV(data), datalen);
        CODE:
          RETVAL = find_index (key, s, datalen);
        OUTPUT:
          RETVAL
    

    I'm still not sure if SvPV copies its internal data somewhere or just returns a pointer to it.

    Comments please

    dino

      And finally,

      from the perlapi manpage:

       SvPV    Returns a pointer to the string in the SV, or a
               stringified form of the SV if the SV does not con-
               tain a string.  Handles 'get' magic.
       
               char*   SvPV(SV* sv, STRLEN len)
      

      so that should do it

      dino

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://96021]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2024-04-25 15:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found