/* Copyright (c) 1997-2000 Graham Barr <gbarr@pobox.com>. All rights reserved.
* modify it under the same terms as Perl itself.
*/
#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>
#ifndef PERL_VERSION
# include <patchlevel.h>
# include <could_not_find_Perl_patchlevel.h>
# endif
# define PERL_REVISION 5
# define PERL_VERSION PATCHLEVEL
# define PERL_SUBVERSION SUBVERSION
#endif
#ifndef aTHX
# define aTHX
# define pTHX
#endif
/* Some platforms have strict exports. And before 5.7.3 cxinc (or Perl_cxinc)
was not exported. Therefore platforms like win32, VMS etc have problems
so we redefine it here -- GMB
*/
#if PERL_VERSION < 7
/* Not in 5.6.1. */
# ifdef cxinc
# endif
static I32
{
return cxstack_ix + 1;
}
#endif
#if PERL_VERSION < 6
# define NV double
#endif
#ifdef SVf_IVisUV
# define slu_sv_value(sv) (SvIOK(sv)) ? (SvIOK_UV(sv)) ? (NV)(SvUVX(sv)) : (NV)(SvIVX(sv)) : (SvNV(sv))
#else
#endif
#ifndef Drand01
#endif
#if PERL_VERSION < 5
# ifndef gv_stashpvn
# define gv_stashpvn(n,l,c) gv_stashpv(n,c)
# endif
# ifndef SvTAINTED
static bool
{
return TRUE;
}
return FALSE;
}
# endif
# define CALLRUNOPS runops
# define PL_sv_undef sv_undef
# define PERL_CONTEXT struct context
#endif
# ifndef PL_tainting
# define PL_tainting tainting
# endif
# ifndef PL_stack_base
# define PL_stack_base stack_base
# endif
# ifndef PL_stack_sp
# define PL_stack_sp stack_sp
# endif
# ifndef PL_ppaddr
# endif
#endif
#ifndef PTR2UV
#endif
void
min(...)
PROTOTYPE: @
min = 0
max = 1
CODE:
{
int index;
if(!items) {
}
}
}
XSRETURN(1);
}
sum(...)
PROTOTYPE: @
CODE:
{
int index;
if(!items) {
}
}
}
void
minstr(...)
PROTOTYPE: @
minstr = 2
maxstr = 0
CODE:
{
int index;
if(!items) {
}
/*
sv_cmp & sv_cmp_locale return 1,0,-1 for gt,eq,lt
so we set ix to the value we are looking for
xsubpp does not allow -ve values, so we start with 0,2 and subtract 1
*/
ix -= 1;
#ifdef OPpLOCALE
}
}
else {
#endif
}
#ifdef OPpLOCALE
}
#endif
XSRETURN(1);
}
void
PROTOTYPE: &@
CODE:
{
int index;
if(items <= 1) {
}
#ifdef PAD_SET_CUR
#else
#endif
(void)SvREFCNT_inc(cv);
}
XSRETURN(1);
}
void
PROTOTYPE: &@
CODE:
{
int index;
if(items <= 1) {
}
#ifdef PAD_SET_CUR
#else
#endif
(void)SvREFCNT_inc(cv);
if (SvTRUE(*PL_stack_sp)) {
XSRETURN(1);
}
}
}
void
shuffle(...)
PROTOTYPE: @
CODE:
{
int index;
/* We call pp_rand here so that Drand01 get initialized if rand()
or srand() has not already been called
*/
/* we let pp_rand() borrow the TARG allocated for this XS sub */
}
}
void
PROTOTYPE: $$
CODE:
{
ST(0) = sv_newmortal();
}
#ifdef SVf_IVisUV
}
#endif
else {
}
SvTAINTED_on(ST(0));
XSRETURN(1);
}
char *
PROTOTYPE: $
CODE:
{
if(!sv_isobject(sv)) {
}
}
char *
PROTOTYPE: $
CODE:
{
}
}
PROTOTYPE: $
CODE:
{
}
}
void
PROTOTYPE: $
CODE:
#ifdef SvWEAKREF
#else
croak("weak references are not implemented in this release of perl");
#endif
void
PROTOTYPE: $
CODE:
#ifdef SvWEAKREF
XSRETURN(1);
#else
croak("weak references are not implemented in this release of perl");
#endif
int
PROTOTYPE: $
CODE:
int
PROTOTYPE: $
CODE:
void
PROTOTYPE: $
CODE:
#ifdef SvVOK
XSRETURN(1);
#else
croak("vstrings are not implemented in this release of perl");
#endif
int
PROTOTYPE: $
CODE:
void
PROTOTYPE: &$
CODE:
{
/* not a subroutine reference */
croak("set_prototype: not a subroutine reference");
}
/* set the prototype */
}
else {
/* delete the prototype */
}
}
else {
croak("set_prototype: not a reference");
}
XSRETURN(1);
}
BOOT:
{
#endif
#ifndef SvWEAKREF
#endif
#ifndef SvVOK
#endif
}