in reply to Re^5: How get PV address?
in thread How get PV address?

Hence a plain integer gets upgraded to an IV/UV before being assigned to the SV.

That's what I thought before, but as above, in typemap, unsigned int also use sv_setnv function. Does it mean sv_setnv function wouldn't upgrade an IV to UV silently if it get a unsigned integer?




I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction

Replies are listed 'Best First'.
Re^7: How get PV address?
by dave_the_m (Monsignor) on Aug 06, 2019 at 10:03 UTC
    I don't understand why you are now talking about sv_setnv(): this doesn't appear in the typemap you showed above.

    The standard typemap for outputting integer values will do either sv_setiv($arg, (IV)$var) or sv_setuv($arg, (UV)$var) depending on whether the integer type is signed or not. The IV or UV types are usually defined as being the largest integer type that the compiler supports: they're large enough to hold a pointer, and often larger than a plain int (8 bytes versus 4 bytes).

    Dave.

      I don't understand why you are now talking about sv_setnv(): this doesn't appear in the typemap you showed above.

      Sorry, I mean sv_setuv.

      The standard typemap for outputting integer values will do either sv_setiv($arg, (IV)$var) or sv_setuv($arg, (UV)$var) depending on whether the integer type is signed or not. The IV or UV types are usually defined as being the largest integer type that the compiler supports: they're large enough to hold a pointer, and often larger than a plain int (8 bytes versus 4 bytes).

      Oh, I fully understand it! Thanks so much for your patient answer!





      I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction