/* ---------------------------------------------------------------------- -*- c -*-
* $Header: /cvsroot/swig/SWIG/Lib/perl5/perlrun.swg,v 1.21 2005/02/01 00:08:17 wuzzeb Exp $
* ----------------------------------------------------------------------------- */
/* Needed on some windows machines---since MS plays funny games with the header files under C++ */
/* Get rid of free and malloc defined by perl */
/* Macro to call an XS function */
# define SWIG_CALLXS(_name) _name(cv,pPerl)
# define SWIG_CALLXS(_name) _name(cv)
# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
#define SWIG_contract_assert(expr,msg) if (!(expr)) { SWIG_croak(msg); } else
/* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */
#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this;
typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
#define SWIGCLASS_STATIC static
#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
typedef int (*SwigMagicFunc)(SV *, MAGIC *);
typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
/* Modifications for newer Perl 5.005 releases */
#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
# define PL_sv_yes sv_yes
# define PL_sv_undef sv_undef
# define SWIG_ConvertPtr(obj, pp, type, flags) \
SWIG_Perl_ConvertPtr(pPerl, obj, pp, type, flags)
# define SWIG_NewPointerObj(p, type, flags) \
SWIG_Perl_NewPointerObj(pPerl, p, type, flags)
# define SWIG_MakePackedObj(sv, p, s, type) \
SWIG_Perl_MakePackedObj(pPerl, sv, p, s, type)
# define SWIG_ConvertPacked(obj, p, s, type, flags) \
SWIG_Perl_ConvertPacked(pPerl, obj, p, s, type, flags)
# define SWIG_ConvertPtr(obj, pp, type, flags) \
SWIG_Perl_ConvertPtr(obj, pp, type, flags)
# define SWIG_NewPointerObj(p, type, flags) \
SWIG_Perl_NewPointerObj(p, type, flags)
# define SWIG_MakePackedObj(sv, p, s, type) \
SWIG_Perl_MakePackedObj(sv, p, s, type )
# define SWIG_ConvertPacked(obj, p, s, type, flags) \
SWIG_Perl_ConvertPacked(obj, p, s, type, flags)
#define SWIG_GetModule(clientdata) SWIG_Perl_GetModule()
#define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer)
# define SWIG_MakePtr(sv, ptr, type, flags) \
SWIG_Perl_MakePtr(pPerl, sv, ptr, type, flags)
# define SWIG_SetError(str) \
SWIG_Perl_SetError(pPerl, str)
# define SWIG_MakePtr(sv, ptr, type, flags) \
SWIG_Perl_MakePtr(sv, ptr, type, flags)
# define SWIG_SetError(str) \
# define SWIG_SetErrorSV(str) \
SWIG_Perl_SetErrorSV(str)
#define SWIG_SetErrorf SWIG_Perl_SetErrorf
# define SWIG_MAYBE_PERL_OBJECT CPerlObj *pPerl,
# define SWIG_MAYBE_PERL_OBJECT
SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty) {
SWIG_TypeCheck_Template(sv_derived_from(rv, (char *) iter->type->name), ty);
/* Function for getting a pointer value */
SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
void *voidptr = (void *)0;
/* If magical, apply more magic */
/* Check to see if this is an object */
SV *tsv = (SV*) SvRV(sv);
if ((SvTYPE(tsv) == SVt_PVHV)) {
tmp = SvIV((SV*)SvRV(sv));
tmp = SvIV((SV*)SvRV(sv));
} else if (! SvOK(sv)) { /* Check for undef */
} else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */
} else { /* Don't know what it is */
/* Now see if the types match */
char *_c = HvNAME(SvSTASH(SvRV(sv)));
tc = SWIG_TypeCheck(_c,_t);
*ptr = SWIG_TypeCast(tc,voidptr);
SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
if (ptr && (flags & SWIG_SHADOW)) {
sv_setref_pv(obj, (char *) t->name, ptr);
stash=SvSTASH(SvRV(obj));
if (flags & SWIG_OWNER) {
GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
gv_init(gv, stash, "OWNER", 5, FALSE);
hv_store_ent(hv, obj, newSViv(1), 0);
sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
self=newRV_noinc((SV *)hash);
SvREFCNT_dec((SV *)self);
sv_setref_pv(sv, (char *) t->name, ptr);
SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
SV *result = sv_newmortal();
SWIG_MakePtr(result, ptr, t, flags);
SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
if ((2*sz + 1 + strlen(type->name)) > 1000) return;
r = SWIG_PackData(r,ptr,sz);
/* Convert a packed value value */
SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
if ((!obj) || (!SvOK(obj))) return -1;
/* Pointer values must start with leading underscore */
if (*c != '_') return -1;
c = SWIG_UnpackData(c,ptr,sz);
tc = SWIG_TypeCheck(c,ty);
SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT const char *error) {
if (error) sv_setpv(perl_get_sv("@", TRUE), error);
SWIG_Perl_SetErrorSV(SWIG_MAYBE_PERL_OBJECT SV *error) {
if (error) sv_setsv(perl_get_sv("@", TRUE), error);
SWIG_Perl_SetErrorf(const char *fmt, ...) {
sv_vsetpvfn(perl_get_sv("@", TRUE), fmt, strlen(fmt), &args, Null(SV**), 0, Null(bool*));
/* Macros for low-level exception handling */
#define SWIG_fail goto fail
#define SWIG_croak(x) { SWIG_SetError(x); goto fail; }
#define SWIG_croakSV(x) { SWIG_SetErrorSV(x); goto fail; }
/* most preprocessors do not support vararg macros :-( */
/* #define SWIG_croakf(x...) { SWIG_SetErrorf(x); goto fail; } */
typedef XS(SwigPerlWrapper);
typedef SwigPerlWrapper *SwigPerlWrapperPtr;
/* Structure for command table */
SwigPerlWrapperPtr wrapper;
/* Information for constant table */
/* Constant information structure */
typedef struct swig_constant_info {
/* Structure for variable table */
/* Magic variable code */
#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) {
static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) {
# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
sv_magic(sv,sv,'U',(char *) name,strlen(name));
mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
mg->mg_virtual->svt_len = 0;
mg->mg_virtual->svt_clear = 0;
mg->mg_virtual->svt_free = 0;
static swig_module_info *
static void *type_pointer = (void *)0;
/* first check if pointer already created */
pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);
if (pointer && SvOK(pointer)) {
type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
return (swig_module_info *) type_pointer;
SWIG_Perl_SetModule(swig_module_info *module) {
/* create a new pointer */
pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);
sv_setiv(pointer, PTR2IV(module));