Differences between current version and previous revision of perlxs(1).
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 2 | Last edited on Monday, June 3, 2002 6:50:53 pm | by perry | |
Older page: | version 1 | Last edited on Monday, June 3, 2002 6:50:53 pm | by perry | Revert |
@@ -152,10 +152,10 @@
package RPC;
require Exporter;
-require DynaLoader;
-@ISA = qw(Exporter DynaLoader);
+require !
DynaLoader;
+@ISA = qw(Exporter !
DynaLoader);
@EXPORT = qw( rpcb_gettime );
bootstrap RPC;
1;
Throughout this document a variety of interfaces to the ''rpcb_gettime()'' XSUB will be explored. The XSUBs will take their parameters in different orders or will take different numbers of parameters. In each case the XSUB is an abstraction between Perl and the real C ''rpcb_gettime()'' function, and the XSUB must always ensure that the real ''rpcb_gettime()'' function is called with the correct parameters. This abstraction will allow the programmer to create a more Perl-like interface to the C function.
@@ -672,17 +672,17 @@
char *host =
The ability to put additional declarations before the typemap entries are processed is very handy in the cases when typemap conversions manipulate some global state:
- MyObject
+ !
MyObject
mutate(o)
PREINIT:
-MyState st = global_state;
+!
MyState st = global_state;
INPUT:
-MyObject o;
+!
MyObject o;
CLEANUP:
reset_to(global_state, st);
-Here we suppose that conversion to MyObject in the INPUT: section and from MyObject when processing RETVAL will modify a global variable global_state. After these conversions are performed, we restore the old value of global_state (to avoid memory leaks, for example).
+Here we suppose that conversion to !
MyObject in the INPUT: section and from !
MyObject when processing RETVAL will modify a global variable global_state. After these conversions are performed, we restore the old value of global_state (to avoid memory leaks, for example).
There is another way to trade clarity for compactness:
INPUT sections allow declaration of C
@@ -690,12 +690,12 @@
subroutine. Thus the above code for ''mutate()'' can be
rewritten as
- MyObject
+ !
MyObject
mutate(o)
-MyState st = global_state;
-MyObject o;
+!
MyState st = global_state;
+!
MyObject o;
CLEANUP:
reset_to(global_state, st);
and the code for ''rpcb_gettime()'' can be rewritten as
@@ -1746,9 +1746,9 @@
MODULE = RPC PACKAGE = RPC
Netconfig *
getnetconfigent(netid)
char *netid
- MODULE = RPC PACKAGE = NetconfigPtr PREFIX = rpcb_
+ MODULE = RPC PACKAGE = !
NetconfigPtr PREFIX = rpcb_
void
rpcb_DESTROY(netconf)
Netconfig *netconf
CODE:
@@ -1787,9 +1787,9 @@
begin in the first column on a line by themselves, and must
be in uppercase.
-The default typemap in the lib/ExtUtils directory
+The default typemap in the lib/!
ExtUtils directory
of the Perl source contains many useful types which can be
used by Perl extensions. Some extensions define additional
typemaps which they keep in their own directory. These
additional typemaps may reference INPUT and
@@ -1843,9 +1843,9 @@
SV *
rpcb_gettime(host=
Netconfig *
getnetconfigent(netid=
- MODULE = RPC PACKAGE = NetconfigPtr PREFIX = rpcb_
+ MODULE = RPC PACKAGE = !
NetconfigPtr PREFIX = rpcb_
void
rpcb_DESTROY(netconf)
Netconfig *netconf
CODE:
@@ -1859,10 +1859,10 @@
package RPC;
require Exporter;
-require DynaLoader;
-@ISA = qw(Exporter DynaLoader);
+require !
DynaLoader;
+@ISA = qw(Exporter !
DynaLoader);
@EXPORT = qw(rpcb_gettime getnetconfigent);
bootstrap RPC;
1;
File rpctest.pl: Perl test program for the RPC extension.