📄 util.c
字号:
*(ptr) = (void *) 0; return SWIG_OK; } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */ if (!SvROK(sv)) { *(ptr) = (void *) 0; return SWIG_OK; } else { return SWIG_ERROR; } } else { /* Don't know what it is */ return SWIG_ERROR; } if (_t) { /* Now see if the types match */ char *_c = HvNAME(SvSTASH(SvRV(sv))); tc = SWIG_TypeProxyCheck(_c,_t); if (!tc) { return SWIG_ERROR; } *ptr = SWIG_TypeCast(tc,voidptr); } else { *ptr = voidptr; } /* * DISOWN implementation: we need a perl guru to check this one. */ if (tsv && (flags & SWIG_POINTER_DISOWN)) { /* * almost copy paste code from below SWIG_POINTER_OWN setting */ SV *obj = sv; HV *stash = SvSTASH(SvRV(obj)); GV *gv = *(GV**) hv_fetch(stash, "OWNER", 5, TRUE); if (isGV(gv)) { HV *hv = GvHVn(gv); /* * To set ownership (see below), a newSViv(1) entry is added. * Hence, to remove ownership, we delete the entry. */ if (hv_exists_ent(hv, obj, 0)) { hv_delete_ent(hv, obj, 0, 0); } } } return SWIG_OK;}SWIGRUNTIME voidSWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) { if (ptr && (flags & SWIG_SHADOW)) { SV *self; SV *obj=newSV(0); HV *hash=newHV(); HV *stash; sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr); stash=SvSTASH(SvRV(obj)); if (flags & SWIG_POINTER_OWN) { HV *hv; GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE); if (!isGV(gv)) gv_init(gv, stash, "OWNER", 5, FALSE); hv=GvHVn(gv); hv_store_ent(hv, obj, newSViv(1), 0); } sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0); SvREFCNT_dec(obj); self=newRV_noinc((SV *)hash); sv_setsv(sv, self); SvREFCNT_dec((SV *)self); sv_bless(sv, stash); } else { sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr); }}SWIGRUNTIMEINLINE SV *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); return result;}SWIGRUNTIME voidSWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) { char result[1024]; char *r = result; if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); strcpy(r,SWIG_Perl_TypeProxyName(type)); sv_setpv(sv, result);}SWIGRUNTIME SV *SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) { SV *result = sv_newmortal(); SWIG_Perl_MakePackedObj(result, ptr, sz, type); return result;}/* Convert a packed value value */SWIGRUNTIME intSWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) { swig_cast_info *tc; const char *c = 0; if ((!obj) || (!SvOK(obj))) return SWIG_ERROR; c = SvPV(obj, PL_na); /* Pointer values must start with leading underscore */ if (*c != '_') return SWIG_ERROR; c++; c = SWIG_UnpackData(c,ptr,sz); if (ty) { tc = SWIG_TypeCheck(c,ty); if (!tc) return SWIG_ERROR; } return SWIG_OK;}/* Macros for low-level exception handling */#define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }typedef XS(SwigPerlWrapper);typedef SwigPerlWrapper *SwigPerlWrapperPtr;/* Structure for command table */typedef struct { const char *name; SwigPerlWrapperPtr wrapper;} swig_command_info;/* Information for constant table */#define SWIG_INT 1#define SWIG_FLOAT 2#define SWIG_STRING 3#define SWIG_POINTER 4#define SWIG_BINARY 5/* Constant information structure */typedef struct swig_constant_info { int type; const char *name; long lvalue; double dvalue; void *pvalue; swig_type_info **ptype;} swig_constant_info;/* Structure for variable table */typedef struct { const char *name; SwigMagicFunc set; SwigMagicFunc get; swig_type_info **type;} swig_variable_info;/* Magic variable code */#ifndef PERL_OBJECT#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c) #ifndef MULTIPLICITY SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) #else SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) #endif#else# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) #endif{ MAGIC *mg; sv_magic(sv,sv,'U',(char *) name,strlen(name)); mg = mg_find(sv,'U'); 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;}SWIGRUNTIME swig_module_info *SWIG_Perl_GetModule(void) { static void *type_pointer = (void *)0; SV *pointer; /* first check if pointer already created */ if (!type_pointer) { 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;}SWIGRUNTIME voidSWIG_Perl_SetModule(swig_module_info *module) { SV *pointer; /* 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));}#ifdef __cplusplus}#endif/* Workaround perl5 global namespace pollution. Note that undefining library * functions like fopen will not solve the problem on all platforms as fopen * might be a macro on Windows but not necessarily on other operating systems. */#ifdef do_open #undef do_open#endif#ifdef do_close #undef do_close#endif#ifdef scalar #undef scalar#endif#ifdef list #undef list#endif#ifdef apply #undef apply#endif#ifdef convert #undef convert#endif#ifdef Error #undef Error#endif#ifdef form #undef form#endif#ifdef vform #undef vform#endif#ifdef LABEL #undef LABEL#endif#ifdef METHOD #undef METHOD#endif#ifdef Move #undef Move#endif#ifdef yylex #undef yylex#endif#ifdef yyparse #undef yyparse#endif#ifdef yyerror #undef yyerror#endif#ifdef invert #undef invert#endif#ifdef ref #undef ref#endif#ifdef read #undef read#endif#ifdef write #undef write#endif#ifdef eof #undef eof#endif#ifdef bool #undef bool#endif#ifdef close #undef close#endif#ifdef rewind #undef rewind#endif#ifdef free #undef free#endif#ifdef malloc #undef malloc#endif#ifdef calloc #undef calloc#endif#ifdef Stat #undef Stat#endif#ifdef check #undef check#endif#ifdef seekdir #undef seekdir#endif#ifdef open #undef open#endif#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else #define SWIG_exception(code, msg) do { SWIG_Error(code, msg);; } while(0) /* -------- TYPES TABLE (BEGIN) -------- */#define SWIGTYPE_p_char swig_types[0]#define SWIGTYPE_p_double swig_types[1]#define SWIGTYPE_p_float swig_types[2]#define SWIGTYPE_p_int swig_types[3]#define SWIGTYPE_p_unsigned_char swig_types[4]static swig_type_info *swig_types[6];static swig_module_info swig_module = {swig_types, 5, 0, 0, 0, 0};#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)/* -------- TYPES TABLE (END) -------- */#define SWIG_init boot_Amanda__Util#define SWIG_name "Amanda::Utilc::boot_Amanda__Util"#define SWIG_prefix "Amanda::Utilc::"#define SWIGVERSION 0x010331 #define SWIG_VERSION SWIGVERSION#define SWIG_as_voidptr(a) (void *)((const void *)(a)) #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) #ifdef __cplusplusextern "C"#endif#ifndef PERL_OBJECT#ifndef MULTIPLICITYSWIGEXPORT void SWIG_init (CV* cv);#elseSWIGEXPORT void SWIG_init (pTHXo_ CV* cv);#endif#elseSWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);#endif#include "amglue.h"#include "amglue.h"#include "amglue.h"#include "debug.h"/* use a relative path here to avoid conflicting with Perl's util.h. */#include "../common-src/util.h"#include "file.h"SWIGINTERNINLINE SV *SWIG_From_long SWIG_PERL_DECL_ARGS_1(long value){ SV *obj = sv_newmortal(); sv_setiv(obj, (IV) value); return obj;}SWIGINTERNINLINE SV *SWIG_From_int SWIG_PERL_DECL_ARGS_1(int value){ return SWIG_From_long SWIG_PERL_CALL_ARGS_1(value);}SWIGINTERN swig_type_info*SWIG_pchar_descriptor(void){ static int init = 0; static swig_type_info* info = 0; if (!init) { info = SWIG_TypeQuery("_p_char"); init = 1; } return info;}SWIGINTERN intSWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc){ if (SvPOK(obj)) { STRLEN len = 0; char *cstr = SvPV(obj, len); size_t size = len + 1; if (cptr) { if (alloc) { if (*alloc == SWIG_NEWOBJ) { *cptr = (char *)memcpy((char *)malloc((size)*sizeof(char)), cstr, sizeof(char)*(size)); } else { *cptr = cstr; *alloc = SWIG_OLDOBJ; } } } if (psize) *psize = size; return SWIG_OK; } else { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); if (pchar_descriptor) { char* vptr = 0; if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) { if (cptr) *cptr = vptr; if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0; if (alloc) *alloc = SWIG_OLDOBJ; return SWIG_OK; } } } return SWIG_TypeError;}#include <limits.h>#ifndef LLONG_MIN# define LLONG_MIN LONG_LONG_MIN#endif#ifndef LLONG_MAX# define LLONG_MAX LONG_LONG_MAX#endif#ifndef ULLONG_MAX# define ULLONG_MAX ULONG_LONG_MAX#endifSWIGINTERN intSWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val){ if (SvNIOK(obj)) { if (val) *val = SvNV(obj); return SWIG_OK; } else if (SvIOK(obj)) { if (val) *val = (double) SvIV(obj); return SWIG_AddCast(SWIG_OK); } else { const char *nptr = SvPV(obj, PL_na); if (nptr) { char *endptr; double v = strtod(nptr, &endptr); if (errno == ERANGE) { errno = 0; return SWIG_OverflowError; } else { if (*endptr == '\0') { if (val) *val = v; return SWIG_Str2NumCast(SWIG_OK); } } } } return SWIG_TypeError;}#include <float.h>#include <math.h>SWIGINTERNINLINE intSWIG_CanCastAsInteger(double *d, double min, double max) { double x = *d; if ((min <= x && x <= max)) { double fx = floor(x); double cx = ceil(x); double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ if ((errno == EDOM) || (errno == ERANGE)) { errno = 0; } else { double summ, reps, diff; if (rd < x) { diff = x - rd; } else if (rd > x) { diff = rd - x; } else { return 1; } summ = rd + x; reps = diff/summ; if (reps < 8*DBL_EPSILON) { *d = rd; return 1; } } } return 0;}SWIGINTERN intSWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val){ if (SvIOK(obj)) { if (val) *val = SvIV(obj); return SWIG_OK; } else { int dispatch = 0; const char *nptr = SvPV(obj, PL_na); if (nptr) { char *endptr; long v = strtol(nptr, &endptr,0); if (errno == ERANGE) { errno = 0; return SWIG_OverflowError; } else { if (*endptr == '\0') { if (val) *val = v; return SWIG_Str2NumCast(SWIG_OK); } } } if (!dispatch) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -