Go to the first, previous, next, last section, table of contents.


XS の使用例

ファイル `RPC.xs' : いくつかの ONC+ RPC 結合ライブラリ関数へのインタフェース

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include <rpc/rpc.h>

typedef struct netconfig Netconfig;

MODULE = RPC  PACKAGE = RPC

void
rpcb_gettime(host="localhost")
     char *  host
     CODE:
     {
     time_t  timep;
     ST(0) = sv_newmortal();
     if( rpcb_gettime( host, &timep ) )
          sv_setnv( ST(0), (double)timep );
     }

Netconfig *
getnetconfigent(netid="udp")
     char *  netid

MODULE = RPC  PACKAGE = NetconfigPtr  PREFIX = rpcb_

void
rpcb_DESTROY(netconf)
     Netconfig *  netconf
     CODE:
     printf("NetconfigPtr::DESTROY\n");
     free( netconf );

ファイル `typemap' : `RPC.xs' のための独自 typemap。

TYPEMAP
Netconfig *  T_PTROBJ

ファイル `RPC.pm' : RPC 拡張のための Perl モジュール。

package RPC;

require Exporter;
require DynaLoader;
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(rpcb_gettime getnetconfigent);

bootstrap RPC;
1;

ファイル `rpctest.pl' : RPC 拡張のための Perl テストプログラム。

use RPC;

$netconf = getnetconfigent();
$a = rpcb_gettime();
print "time = $a\n";
print "netconf = $netconf\n";

$netconf = getnetconfigent("tcp");
$a = rpcb_gettime("poplar");
print "time = $a\n";
print "netconf = $netconf\n";


Go to the first, previous, next, last section, table of contents.

検索式: