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

Re: XS: returning a 64-bit unsigned int?

by Anonymous Monk
on Sep 27, 2011 at 06:49 UTC ( #928021=note: print w/replies, xml ) Need Help??


in reply to XS: returning a 64-bit unsigned int?

Petition p5p?

It seems you can't get an IV no matter what you do

SV* bob() PREINIT: SV* temp; //~ unsigned int uncle = 42; unsigned long long uncle = 42; CODE: //~ temp = newSVuv( 42 ); temp = newSVuv( uncle ); SvIOK_only_UV( temp ); warn("we got em %p SvIOK_UV(%b)SvUVX(%u)", temp, SvIOK_UV(temp +), SvUVX(temp) ); RETVAL = temp; OUTPUT: RETVAL

Always gives

we got em 3f8d14 SvIOK_UV(0)SvUVX(42) at -e line 1. SV = IV(0x3f8d10) at 0x3f8d14 REFCNT = 1 FLAGS = (TEMP,IOK,pIOK) IV = 42

Replies are listed 'Best First'.
Re^2: XS: returning a 64-bit unsigned int?
by BrowserUk (Pope) on Sep 27, 2011 at 06:57 UTC

    Seems you can, provided you look in the wrong part of the manual for the api. :(


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Right, but shouldn't newSVuv make a UV and not an IV? Talk about false advertising :)
        shouldn't newSVuv make a UV and not an IV? Talk about false advertising :)

        I concur completely. But you think that ones bad, what d'ya think newSVrv( rv ) does?


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        Perl claims the right to convert among equivalent representations. It's an optimisation that an UV isn't used unless needed since UVs require extra handling.

        >perl -MDevel::Peek -e"Dump(0x7FFFFFFF)" SV = IV(0x1de9d00) at 0x1de9d04 REFCNT = 1 FLAGS = (PADTMP,IOK,READONLY,pIOK) IV = 2147483647 >perl -MDevel::Peek -e"Dump(0x80000000)" SV = IV(0x4a9d00) at 0x4a9d04 REFCNT = 1 FLAGS = (PADTMP,IOK,READONLY,pIOK,IsUV) UV = 2147483648

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://928021]
help
Chatterbox?
[Marshall]: stevieb wish you well with water problems, my water was off all day Monday for repairs. Any more progress on .exe info problem?.
[stevieb]: Marshall: no. I commented on the thread yesterday. Visual Studio updates the tags ok, but corrupts the exe
[stevieb]: I advised the OP that a possible workaround would be to add a version function/flag that displays the required copyright/license info instead
[Marshall]: Darn! I'll look at the thread. Must not be updatinga byte count somewhere. The .exe format is a complex critter.
[stevieb]: that way, it's still "hard coded" into the exe at least, despite not being visible via Properties
[Marshall]: I also looked into PerlApp from Active State, but they don't sell their Dev Kit independent of a very expensive ($1,200) per year license anymore.
[Corion]: I would assume that the PE format hasn't changed that much since the days of yore, but it seems that I would be wrong in that assumption
[Marshall]: When I bought my copy 15+ years ago, it was just a couple hundred bucks.

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2016-12-08 18:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (144 votes). Check out past polls.