in reply to Re^6: XS/Inline::C concat *any* two SVs.
in thread XS/Inline::C concat *any* two SVs.

IMO dealing with NVs, IVs, UVs should be left to perl, its algorithms were tuned by years of everyday use and tons of bugreports. So instead of inserting your own "if numerix then stringify" better just do nothing and perl will DWIM. (let days of its DWIMery and TIMTOWTDI will be countless :)

I applause to your intentions on deal efficiently with SV. This is very doable. I will gladly share my knowledge, in addition to what I already shared (try pure-XS w/o Inline::C and you need reference to SV to be able to modify SV passed to sub).

  • Comment on Re^7: XS/Inline::C concat *any* two SVs.

Replies are listed 'Best First'.
Re^8: XS/Inline::C concat *any* two SVs.
by BrowserUk (Patriarch) on May 30, 2006 at 05:59 UTC
    IMO dealing with NVs, IVs, UVs should be left to perl, its algorithms were tuned by years of everyday use and tons of bugreports. So instead of inserting your own "if numerix then stringify" better just do nothing and perl will DWIM.

    I didn't start this for the fun of doing it. Believe me, nothing would please me more if that were the case, but it simply isn't. If I just use the API provided for concatenating 2 SVs, the result is no output--except a warning:

    #! perl -slw use strict; use Inline C => << '__C__', NAME => 'test', CLEAN_AFTER_BUILD => 0; #include <stdio.h> SV* test( SV *a, SV *b ) { sv_catsv( a, b ); return a; } __C__ for ( 1 .. 1e7 ) { print test( 'bill', 'fred' ); my( $p, $q ) = ( 'fred' ); print test( $q, $p ); $q = 'bill'; print test( $q, $p ); $q = 1; print test( $q, $p ); $p = 1; print test( $q, $p ); } __END__ c:\test>test Modification of a read-only value attempted at c:\test\test.pl line 25 +. c:\test>

    Try it. Nothing! No output at all from *any* of the tests. DWIM? Right.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.