diff options
Diffstat (limited to 'contrib/perl5/pod/perlxs.pod')
-rw-r--r-- | contrib/perl5/pod/perlxs.pod | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/contrib/perl5/pod/perlxs.pod b/contrib/perl5/pod/perlxs.pod index c578a2e..98a9834 100644 --- a/contrib/perl5/pod/perlxs.pod +++ b/contrib/perl5/pod/perlxs.pod @@ -181,10 +181,10 @@ directive is used which sets ST(0) explicitly. Older versions of this document recommended to use C<void> return value in such cases. It was discovered that this could lead to -segfaults in cases when XSUB was I<truely> C<void>. This practice is +segfaults in cases when XSUB was I<truly> C<void>. This practice is now deprecated, and may be not supported at some future version. Use the return value C<SV *> in such cases. (Currently C<xsubpp> contains -some heuristic code which tries to disambiguate between "truely-void" +some heuristic code which tries to disambiguate between "truly-void" and "old-practice-declared-as-void" functions. Hence your code is at mercy of this heuristics unless you use C<SV *> as return value.) @@ -387,9 +387,9 @@ the same line where the input variable is declared. If the initialization begins with C<;> or C<+>, then it is output after all of the input variables have been declared. The C<=> and C<;> cases replace the initialization normally supplied from the typemap. -For the C<+> case, the initialization from the typemap will preceed +For the C<+> case, the initialization from the typemap will precede the initialization code included after the C<+>. A global -variable, C<%v>, is available for the truely rare case where +variable, C<%v>, is available for the truly rare case where information from one initialization is needed in another initialization. @@ -553,9 +553,10 @@ The XS code, with ellipsis, follows. time_t timep = NO_INIT PREINIT: char *host = "localhost"; + STRLEN n_a; CODE: if( items > 1 ) - host = (char *)SvPV(ST(1), PL_na); + host = (char *)SvPV(ST(1), n_a); RETVAL = rpcb_gettime( host, &timep ); OUTPUT: timep @@ -786,9 +787,10 @@ prototypes. PROTOTYPE: $;$ PREINIT: char *host = "localhost"; + STRLEN n_a; CODE: if( items > 1 ) - host = (char *)SvPV(ST(1), PL_na); + host = (char *)SvPV(ST(1), n_a); RETVAL = rpcb_gettime( host, &timep ); OUTPUT: timep @@ -1212,13 +1214,15 @@ getnetconfigent() XSUB and an object created by a normal Perl subroutine. The typemap is a collection of code fragments which are used by the B<xsubpp> compiler to map C function parameters and values to Perl values. The typemap file may consist of three sections labeled C<TYPEMAP>, C<INPUT>, and -C<OUTPUT>. The INPUT section tells the compiler how to translate Perl values +C<OUTPUT>. Any unlabelled initial section is assumed to be a C<TYPEMAP> +section if a name is not explicitly specified. The INPUT section tells +the compiler how to translate Perl values into variables of certain C types. The OUTPUT section tells the compiler how to translate the values from certain C types into values Perl can understand. The TYPEMAP section tells the compiler which of the INPUT and OUTPUT code fragments should be used to map a given C type to a Perl value. -Each of the sections of the typemap must be preceded by one of the TYPEMAP, -INPUT, or OUTPUT keywords. +The section labels C<TYPEMAP>, C<INPUT>, or C<OUTPUT> must begin +in the first column on a line by themselves, and must be in uppercase. The default typemap in the C<ext> directory of the Perl source contains many useful types which can be used by Perl extensions. Some extensions define |