123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #ifdef __cplusplus
- /* Needed on some windows machines---since MS plays funny games with the header files under C++ */
- #include <math.h>
- #include <stdlib.h>
- extern "C" {
- #endif
- #include "EXTERN.h"
- #include "perl.h"
- #include "XSUB.h"
- /* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */
- /* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */
- #ifndef PERL_REVISION
- # if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
- # define PERL_PATCHLEVEL_H_IMPLICIT
- # include <patchlevel.h>
- # endif
- # if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
- # include <could_not_find_Perl_patchlevel.h>
- # endif
- # ifndef PERL_REVISION
- # define PERL_REVISION (5)
- # define PERL_VERSION PATCHLEVEL
- # define PERL_SUBVERSION SUBVERSION
- # endif
- #endif
- #if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
- #define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
- #endif
- #ifndef SvIOK_UV
- # define SvIOK_UV(sv) (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv)))
- #endif
- #ifndef SvUOK
- # define SvUOK(sv) SvIOK_UV(sv)
- #endif
- #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)))
- # define PL_sv_undef sv_undef
- # define PL_na na
- # define PL_errgv errgv
- # define PL_sv_no sv_no
- # define PL_sv_yes sv_yes
- # define PL_markstack_ptr markstack_ptr
- #endif
- #ifndef IVSIZE
- # ifdef LONGSIZE
- # define IVSIZE LONGSIZE
- # else
- # define IVSIZE 4 /* A bold guess, but the best we can make. */
- # endif
- #endif
- #ifndef INT2PTR
- # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
- # define PTRV UV
- # define INT2PTR(any,d) (any)(d)
- # else
- # if PTRSIZE == LONGSIZE
- # define PTRV unsigned long
- # else
- # define PTRV unsigned
- # endif
- # define INT2PTR(any,d) (any)(PTRV)(d)
- # endif
- # define NUM2PTR(any,d) (any)(PTRV)(d)
- # define PTR2IV(p) INT2PTR(IV,p)
- # define PTR2UV(p) INT2PTR(UV,p)
- # define PTR2NV(p) NUM2PTR(NV,p)
- # if PTRSIZE == LONGSIZE
- # define PTR2ul(p) (unsigned long)(p)
- # else
- # define PTR2ul(p) INT2PTR(unsigned long,p)
- # endif
- #endif /* !INT2PTR */
- #ifndef SvPV_nolen
- # define SvPV_nolen(x) SvPV(x,PL_na)
- #endif
- #ifndef get_sv
- # define get_sv perl_get_sv
- #endif
- #ifndef ERRSV
- # define ERRSV get_sv("@",FALSE)
- #endif
- #ifndef pTHX_
- #define pTHX_
- #endif
- #include <string.h>
- #ifdef __cplusplus
- }
- #endif
|