⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 开源备份软件源码 AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that a
💻 C
📖 第 1 页 / 共 4 页
字号:
    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 + -