📄 util.c
字号:
We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list.*/SWIGRUNTIME swig_type_info *SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { /* STEP 1: Search the name field using binary search */ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); if (ret) { return ret; } else { /* STEP 2: If the type hasn't been found, do a complete search of the str field (the human readable name) */ swig_module_info *iter = start; do { register size_t i = 0; for (; i < iter->size; ++i) { if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) return iter->types[i]; } iter = iter->next; } while (iter != end); } /* neither found a match */ return 0;}/* Pack binary data into a string*/SWIGRUNTIME char *SWIG_PackData(char *c, void *ptr, size_t sz) { static const char hex[17] = "0123456789abcdef"; register const unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register unsigned char uu = *u; *(c++) = hex[(uu & 0xf0) >> 4]; *(c++) = hex[uu & 0xf]; } return c;}/* Unpack binary data from a string*/SWIGRUNTIME const char *SWIG_UnpackData(const char *c, void *ptr, size_t sz) { register unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register char d = *(c++); register unsigned char uu; if ((d >= '0') && (d <= '9')) uu = ((d - '0') << 4); else if ((d >= 'a') && (d <= 'f')) uu = ((d - ('a'-10)) << 4); else return (char *) 0; d = *(c++); if ((d >= '0') && (d <= '9')) uu |= (d - '0'); else if ((d >= 'a') && (d <= 'f')) uu |= (d - ('a'-10)); else return (char *) 0; *u = uu; } return c;}/* Pack 'void *' into a string buffer.*/SWIGRUNTIME char *SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { char *r = buff; if ((2*sizeof(void *) + 2) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,&ptr,sizeof(void *)); if (strlen(name) + 1 > (bsz - (r - buff))) return 0; strcpy(r,name); return buff;}SWIGRUNTIME const char *SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { *ptr = (void *) 0; return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sizeof(void *));}SWIGRUNTIME char *SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { char *r = buff; size_t lname = (name ? strlen(name) : 0); if ((2*sz + 2 + lname) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); if (lname) { strncpy(r,name,lname+1); } else { *r = 0; } return buff;}SWIGRUNTIME const char *SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { memset(ptr,0,sz); return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sz);}#ifdef __cplusplus}#endif/* Errors in SWIG */#define SWIG_UnknownError -1 #define SWIG_IOError -2 #define SWIG_RuntimeError -3 #define SWIG_IndexError -4 #define SWIG_TypeError -5 #define SWIG_DivisionByZero -6 #define SWIG_OverflowError -7 #define SWIG_SyntaxError -8 #define SWIG_ValueError -9 #define SWIG_SystemError -10#define SWIG_AttributeError -11#define SWIG_MemoryError -12 #define SWIG_NullReferenceError -13#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 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/* ----------------------------------------------------------------------------- * error manipulation * ----------------------------------------------------------------------------- */SWIGINTERN const char*SWIG_Perl_ErrorType(int code) { const char* type = 0; switch(code) { case SWIG_MemoryError: type = "MemoryError"; break; case SWIG_IOError: type = "IOError"; break; case SWIG_RuntimeError: type = "RuntimeError"; break; case SWIG_IndexError: type = "IndexError"; break; case SWIG_TypeError: type = "TypeError"; break; case SWIG_DivisionByZero: type = "ZeroDivisionError"; break; case SWIG_OverflowError: type = "OverflowError"; break; case SWIG_SyntaxError: type = "SyntaxError"; break; case SWIG_ValueError: type = "ValueError"; break; case SWIG_SystemError: type = "SystemError"; break; case SWIG_AttributeError: type = "AttributeError"; break; default: type = "RuntimeError"; } return type;}/* ----------------------------------------------------------------------------- * perlrun.swg * * This file contains the runtime support for Perl modules * and includes code for managing global variables and pointer * type checking. * ----------------------------------------------------------------------------- */#ifdef PERL_OBJECT#define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl),#define SWIG_PERL_OBJECT_CALL pPerl,#else#define SWIG_PERL_OBJECT_DECL#define SWIG_PERL_OBJECT_CALL#endif/* Common SWIG API *//* for raw pointers */#define SWIG_ConvertPtr(obj, pp, type, flags) SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags)#define SWIG_NewPointerObj(p, type, flags) SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags)/* for raw packed data */#define SWIG_ConvertPacked(obj, p, s, type) SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type)#define SWIG_NewPackedObj(p, s, type) SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type)/* for class or struct pointers */#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags)#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags)/* for C or C++ function pointers */#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0)#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0)/* for C++ member pointers, ie, member methods */#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_ConvertPacked(obj, ptr, sz, ty)#define SWIG_NewMemberObj(ptr, sz, type) SWIG_NewPackedObj(ptr, sz, type)/* Runtime API */#define SWIG_GetModule(clientdata) SWIG_Perl_GetModule()#define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer)/* Error manipulation */#define SWIG_ErrorType(code) SWIG_Perl_ErrorType(code) #define SWIG_Error(code, msg) sv_setpvf(GvSV(PL_errgv),"%s %s\n", SWIG_ErrorType(code), msg)#define SWIG_fail goto fail /* Perl-specific SWIG API */#define SWIG_MakePtr(sv, ptr, type, flags) SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags)#define SWIG_MakePackedObj(sv, p, s, type) SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type)#define SWIG_SetError(str) SWIG_Error(SWIG_RuntimeError, str)#define SWIG_PERL_DECL_ARGS_1(arg1) (SWIG_PERL_OBJECT_DECL arg1)#define SWIG_PERL_CALL_ARGS_1(arg1) (SWIG_PERL_OBJECT_CALL arg1)#define SWIG_PERL_DECL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_DECL arg1, arg2)#define SWIG_PERL_CALL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_CALL arg1, arg2)/* ----------------------------------------------------------------------------- * pointers/data manipulation * ----------------------------------------------------------------------------- *//* For backward compatibility only */#define SWIG_POINTER_EXCEPTION 0#ifdef __cplusplusextern "C" {#endif#define SWIG_OWNER SWIG_POINTER_OWN#define SWIG_SHADOW SWIG_OWNER << 1#define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL/* SWIG Perl macros *//* Macro to call an XS function */#ifdef PERL_OBJECT # define SWIG_CALLXS(_name) _name(cv,pPerl) #else # ifndef MULTIPLICITY # define SWIG_CALLXS(_name) _name(cv) # else # define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) # endif #endif /* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */#ifdef PERL_OBJECT#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this;typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);#ifdef __cplusplusextern "C" {#endiftypedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);#ifdef __cplusplus}#endif#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)#define SWIGCLASS_STATIC#else#define MAGIC_PPERL#define SWIGCLASS_STATIC static SWIGUNUSED#ifndef MULTIPLICITY#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)typedef int (*SwigMagicFunc)(SV *, MAGIC *);#ifdef __cplusplusextern "C" {#endiftypedef int (*SwigMagicFuncHack)(SV *, MAGIC *);#ifdef __cplusplus}#endif#else#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);#ifdef __cplusplusextern "C" {#endiftypedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);#ifdef __cplusplus}#endif#endif#endif/* Workaround for bug in perl 5.6.x croak and earlier */#if (PERL_VERSION < 8)# ifdef PERL_OBJECT# define SWIG_croak_null() SWIG_Perl_croak_null(pPerl)static void SWIG_Perl_croak_null(CPerlObj *pPerl)# elsestatic void SWIG_croak_null()# endif{ SV *err=ERRSV;# if (PERL_VERSION < 6) croak("%_", err);# else if (SvOK(err) && !SvROK(err)) croak("%_", err); croak(Nullch);# endif}#else# define SWIG_croak_null() croak(Nullch)#endif/* Define how strict is the cast between strings and integers/doubles when overloading between these types occurs. The default is making it as strict as possible by using SWIG_AddCast when needed. You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to disable the SWIG_AddCast, making the casting between string and numbers less strict. In the end, we try to solve the overloading between strings and numerical types in the more natural way, but if you can avoid it, well, avoid it using %rename, for example.*/#ifndef SWIG_PERL_NO_STRICT_STR2NUM# ifndef SWIG_PERL_STRICT_STR2NUM# define SWIG_PERL_STRICT_STR2NUM# endif#endif#ifdef SWIG_PERL_STRICT_STR2NUM/* string takes precedence */#define SWIG_Str2NumCast(x) SWIG_AddCast(x) #else/* number takes precedence */#define SWIG_Str2NumCast(x) x#endif#include <stdlib.h>SWIGRUNTIME const char *SWIG_Perl_TypeProxyName(const swig_type_info *type) { if (!type) return NULL; if (type->clientdata != NULL) { return (const char*) type->clientdata; } else { return type->name; }}SWIGRUNTIME swig_cast_info *SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) { SWIG_TypeCheck_Template(( (!iter->type->clientdata && (strcmp((char*)iter->type->name, c) == 0)) || (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0))), ty);}/* Function for getting a pointer value */SWIGRUNTIME intSWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) { swig_cast_info *tc; void *voidptr = (void *)0; SV *tsv = 0; /* If magical, apply more magic */ if (SvGMAGICAL(sv)) mg_get(sv); /* Check to see if this is an object */ if (sv_isobject(sv)) { IV tmp = 0; tsv = (SV*) SvRV(sv); if ((SvTYPE(tsv) == SVt_PVHV)) { MAGIC *mg; if (SvMAGICAL(tsv)) { mg = mg_find(tsv,'P'); if (mg) { sv = mg->mg_obj; if (sv_isobject(sv)) { tsv = (SV*)SvRV(sv); tmp = SvIV(tsv); } } } else { return SWIG_ERROR; } } else { tmp = SvIV(tsv); } voidptr = INT2PTR(void *,tmp); } else if (! SvOK(sv)) { /* Check for undef */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -