An obsoleted diagnostic.
[p5sagit/p5-mst-13.2.git] / pod / perlguts.pod
index 5255519..b1cd636 100644 (file)
@@ -34,8 +34,8 @@ as well.)
 =head2 Working with SVs
 
 An SV can be created and loaded with one command.  There are four types of
-values that can be loaded: an integer value (IV), a double (NV), a string,
-(PV), and another scalar (SV).
+values that can be loaded: an integer value (IV), a double (NV),
+a string (PV), and another scalar (SV).
 
 The six routines are:
 
@@ -1317,6 +1317,21 @@ destination starting points.  Perl will move, copy, or zero out C<number>
 instances of the size of the C<type> data structure (using the C<sizeof>
 function).
 
+Here is a handy table of equivalents between ordinary C and Perl's
+memory abstraction layer:
+
+    Instead Of:                Use:
+
+    malloc                     New
+    calloc                     Newz
+    realloc                    Renew
+    memcopy                    Copy
+    memmove                    Move
+    free                       Safefree
+    strdup                     savepv
+    strndup                    savepvn (Hey, strndup doesn't exist!)
+    memcpy/*(struct foo *)    StructCopy
+
 =head2 PerlIO
 
 The most recent development releases of Perl has been experimenting with
@@ -1862,6 +1877,27 @@ This function isn't exported out of the Perl core.
 If you edit F<embed.pl>, you will need to run C<make regen_headers> to
 force a rebuild of F<embed.h> and other auto-generated files.
 
+=head2 Formatted Printing of IVs, UVs, and NVs
+
+If you are printing IVs, UVs, or NVS instead of the stdio(3) style
+formatting codes like C<%d>, C<%ld>, C<%f>, you should use the
+following macros for portability
+
+       IVdf            IV in decimal
+       UVuf            UV in decimal
+       UVof            UV in octal
+       UVxf            UV in hexadecimal
+       NVef            NV %e-like
+       NVff            NV %f-like
+       NVgf            NV %g-like
+
+These will take care of 64-bit integers and long doubles.
+For example:
+
+       printf("IV is %"IVdf"\n", iv);
+
+The IVdf will expand to whatever is the correct format for the IVs.
+
 =head2 Source Documentation
 
 There's an effort going on to document the internal functions and