1/* ----------------------------------------------------------------------------
2 * This file was automatically generated by SWIG (http://www.swig.org).
3 * Version 1.3.24
4 *
5 * This file is not intended to be easily readable and contains a number of
6 * coding conventions designed to improve portability and efficiency. Do not make
7 * changes to this file unless you know what you are doing--modify the SWIG
8 * interface file instead.
9 * ----------------------------------------------------------------------------- */
10
11
12#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
13#  if defined(__SUNPRO_CC)
14#    define SWIG_TEMPLATE_DISAMBIGUATOR template
15#  else
16#    define SWIG_TEMPLATE_DISAMBIGUATOR
17#  endif
18#endif
19
20/***********************************************************************
21 * swigrun.swg
22 *
23 *     This file contains generic CAPI SWIG runtime support for pointer
24 *     type checking.
25 *
26 ************************************************************************/
27
28/* This should only be incremented when either the layout of swig_type_info changes,
29   or for whatever reason, the runtime changes incompatibly */
30#define SWIG_RUNTIME_VERSION "1"
31
32/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
33#ifdef SWIG_TYPE_TABLE
34#define SWIG_QUOTE_STRING(x) #x
35#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
36#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
37#else
38#define SWIG_TYPE_TABLE_NAME
39#endif
40
41#include <string.h>
42
43#ifndef SWIGINLINE
44#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
45#  define SWIGINLINE inline
46#else
47#  define SWIGINLINE
48#endif
49#endif
50
51/*
52  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
53  creating a static or dynamic library from the swig runtime code.
54  In 99.9% of the cases, swig just needs to declare them as 'static'.
55
56  But only do this if is strictly necessary, ie, if you have problems
57  with your compiler or so.
58*/
59#ifndef SWIGRUNTIME
60#define SWIGRUNTIME static
61#endif
62#ifndef SWIGRUNTIMEINLINE
63#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
64#endif
65
66#ifdef __cplusplus
67extern "C" {
68#endif
69
70typedef void *(*swig_converter_func)(void *);
71typedef struct swig_type_info *(*swig_dycast_func)(void **);
72
73typedef struct swig_type_info {
74  const char             *name;
75  swig_converter_func     converter;
76  const char             *str;
77  void                   *clientdata;
78  swig_dycast_func        dcast;
79  struct swig_type_info  *next;
80  struct swig_type_info  *prev;
81} swig_type_info;
82
83/*
84  Compare two type names skipping the space characters, therefore
85  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
86
87  Return 0 when the two name types are equivalent, as in
88  strncmp, but skipping ' '.
89*/
90SWIGRUNTIME int
91SWIG_TypeNameComp(const char *f1, const char *l1,
92                  const char *f2, const char *l2) {
93  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
94    while ((*f1 == ' ') && (f1 != l1)) ++f1;
95    while ((*f2 == ' ') && (f2 != l2)) ++f2;
96    if (*f1 != *f2) return *f1 - *f2;
97  }
98  return (l1 - f1) - (l2 - f2);
99}
100
101/*
102  Check type equivalence in a name list like <name1>|<name2>|...
103*/
104SWIGRUNTIME int
105SWIG_TypeEquiv(const char *nb, const char *tb) {
106  int equiv = 0;
107  const char* te = tb + strlen(tb);
108  const char* ne = nb;
109  while (!equiv && *ne) {
110    for (nb = ne; *ne; ++ne) {
111      if (*ne == '|') break;
112    }
113    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
114    if (*ne) ++ne;
115  }
116  return equiv;
117}
118
119/*
120  Register a type mapping with the type-checking
121*/
122SWIGRUNTIME swig_type_info *
123SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
124  swig_type_info *tc, *head, *ret, *next;
125  /* Check to see if this type has already been registered */
126  tc = *tl;
127  while (tc) {
128    /* check simple type equivalence */
129    int typeequiv = (strcmp(tc->name, ti->name) == 0);
130    /* check full type equivalence, resolving typedefs */
131    if (!typeequiv) {
132      /* only if tc is not a typedef (no '|' on it) */
133      if (tc->str && ti->str && !strstr(tc->str,"|")) {
134        typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
135      }
136    }
137    if (typeequiv) {
138      /* Already exists in the table.  Just add additional types to the list */
139      if (ti->clientdata) tc->clientdata = ti->clientdata;
140      head = tc;
141      next = tc->next;
142      goto l1;
143    }
144    tc = tc->prev;
145  }
146  head = ti;
147  next = 0;
148
149  /* Place in list */
150  ti->prev = *tl;
151  *tl = ti;
152
153  /* Build linked lists */
154  l1:
155  ret = head;
156  tc = ti + 1;
157  /* Patch up the rest of the links */
158  while (tc->name) {
159    head->next = tc;
160    tc->prev = head;
161    head = tc;
162    tc++;
163  }
164  if (next) next->prev = head;
165  head->next = next;
166
167  return ret;
168}
169
170/*
171  Check the typename
172*/
173SWIGRUNTIME swig_type_info *
174SWIG_TypeCheck(const char *c, swig_type_info *ty) {
175  swig_type_info *s;
176  if (!ty) return 0;        /* Void pointer */
177  s = ty->next;             /* First element always just a name */
178  do {
179    if (strcmp(s->name,c) == 0) {
180      if (s == ty->next) return s;
181      /* Move s to the top of the linked list */
182      s->prev->next = s->next;
183      if (s->next) {
184        s->next->prev = s->prev;
185      }
186      /* Insert s as second element in the list */
187      s->next = ty->next;
188      if (ty->next) ty->next->prev = s;
189      ty->next = s;
190      s->prev = ty;
191      return s;
192    }
193    s = s->next;
194  } while (s && (s != ty->next));
195  return 0;
196}
197
198/*
199  Cast a pointer up an inheritance hierarchy
200*/
201SWIGRUNTIMEINLINE void *
202SWIG_TypeCast(swig_type_info *ty, void *ptr) {
203  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
204}
205
206/*
207   Dynamic pointer casting. Down an inheritance hierarchy
208*/
209SWIGRUNTIME swig_type_info *
210SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
211  swig_type_info *lastty = ty;
212  if (!ty || !ty->dcast) return ty;
213  while (ty && (ty->dcast)) {
214    ty = (*ty->dcast)(ptr);
215    if (ty) lastty = ty;
216  }
217  return lastty;
218}
219
220/*
221  Return the name associated with this type
222*/
223SWIGRUNTIMEINLINE const char *
224SWIG_TypeName(const swig_type_info *ty) {
225  return ty->name;
226}
227
228/*
229  Return the pretty name associated with this type,
230  that is an unmangled type name in a form presentable to the user.
231*/
232SWIGRUNTIME const char *
233SWIG_TypePrettyName(const swig_type_info *type) {
234  /* The "str" field contains the equivalent pretty names of the
235     type, separated by vertical-bar characters.  We choose
236     to print the last name, as it is often (?) the most
237     specific. */
238  if (type->str != NULL) {
239    const char *last_name = type->str;
240    const char *s;
241    for (s = type->str; *s; s++)
242      if (*s == '|') last_name = s+1;
243    return last_name;
244  }
245  else
246    return type->name;
247}
248
249/*
250  Search for a swig_type_info structure
251*/
252SWIGRUNTIME swig_type_info *
253SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
254  swig_type_info *ty = tl;
255  while (ty) {
256    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
257    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
258    ty = ty->prev;
259  }
260  return 0;
261}
262
263/*
264   Set the clientdata field for a type
265*/
266SWIGRUNTIME void
267SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
268  swig_type_info *tc, *equiv;
269  if (ti->clientdata) return;
270  /* if (ti->clientdata == clientdata) return; */
271  ti->clientdata = clientdata;
272  equiv = ti->next;
273  while (equiv) {
274    if (!equiv->converter) {
275      tc = tl;
276      while (tc) {
277        if ((strcmp(tc->name, equiv->name) == 0))
278          SWIG_TypeClientDataTL(tl,tc,clientdata);
279        tc = tc->prev;
280      }
281    }
282    equiv = equiv->next;
283  }
284}
285
286/*
287   Pack binary data into a string
288*/
289SWIGRUNTIME char *
290SWIG_PackData(char *c, void *ptr, size_t sz) {
291  static char hex[17] = "0123456789abcdef";
292  unsigned char *u = (unsigned char *) ptr;
293  const unsigned char *eu =  u + sz;
294  register unsigned char uu;
295  for (; u != eu; ++u) {
296    uu = *u;
297    *(c++) = hex[(uu & 0xf0) >> 4];
298    *(c++) = hex[uu & 0xf];
299  }
300  return c;
301}
302
303/*
304   Unpack binary data from a string
305*/
306SWIGRUNTIME const char *
307SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
308  register unsigned char *u = (unsigned char *) ptr;
309  register const unsigned char *eu =  u + sz;
310  for (; u != eu; ++u) {
311    register int d = *(c++);
312    register unsigned char uu = 0;
313    if ((d >= '0') && (d <= '9'))
314      uu = ((d - '0') << 4);
315    else if ((d >= 'a') && (d <= 'f'))
316      uu = ((d - ('a'-10)) << 4);
317    else
318      return (char *) 0;
319    d = *(c++);
320    if ((d >= '0') && (d <= '9'))
321      uu |= (d - '0');
322    else if ((d >= 'a') && (d <= 'f'))
323      uu |= (d - ('a'-10));
324    else
325      return (char *) 0;
326    *u = uu;
327  }
328  return c;
329}
330
331/*
332  This function will propagate the clientdata field of type to any new
333  swig_type_info structures that have been added into the list of
334  equivalent types.  It is like calling SWIG_TypeClientData(type,
335  clientdata) a second time.
336*/
337SWIGRUNTIME void
338SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
339  swig_type_info *equiv = type->next;
340  swig_type_info *tc;
341  if (!type->clientdata) return;
342  while (equiv) {
343    if (!equiv->converter) {
344      tc = tl;
345      while (tc) {
346        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
347          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
348        tc = tc->prev;
349      }
350    }
351    equiv = equiv->next;
352  }
353}
354
355/*
356   Pack 'void *' into a string buffer.
357*/
358SWIGRUNTIME char *
359SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
360  char *r = buff;
361  if ((2*sizeof(void *) + 2) > bsz) return 0;
362  *(r++) = '_';
363  r = SWIG_PackData(r,&ptr,sizeof(void *));
364  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
365  strcpy(r,name);
366  return buff;
367}
368
369SWIGRUNTIME const char *
370SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
371  if (*c != '_') {
372    if (strcmp(c,"NULL") == 0) {
373      *ptr = (void *) 0;
374      return name;
375    } else {
376      return 0;
377    }
378  }
379  return SWIG_UnpackData(++c,ptr,sizeof(void *));
380}
381
382SWIGRUNTIME char *
383SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
384  char *r = buff;
385  size_t lname = (name ? strlen(name) : 0);
386  if ((2*sz + 2 + lname) > bsz) return 0;
387  *(r++) = '_';
388  r = SWIG_PackData(r,ptr,sz);
389  if (lname) {
390    strncpy(r,name,lname+1);
391  } else {
392    *r = 0;
393  }
394  return buff;
395}
396
397SWIGRUNTIME const char *
398SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
399  if (*c != '_') {
400    if (strcmp(c,"NULL") == 0) {
401      memset(ptr,0,sz);
402      return name;
403    } else {
404      return 0;
405    }
406  }
407  return SWIG_UnpackData(++c,ptr,sz);
408}
409
410#ifdef __cplusplus
411}
412#endif
413
414/***********************************************************************
415 * common.swg
416 *
417 *     This file contains generic SWIG runtime support for pointer
418 *     type checking as well as a few commonly used macros to control
419 *     external linkage.
420 *
421 * Author : David Beazley (beazley@cs.uchicago.edu)
422 *
423 * Copyright (c) 1999-2000, The University of Chicago
424 *
425 * This file may be freely redistributed without license or fee provided
426 * this copyright message remains intact.
427 ************************************************************************/
428
429
430#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
431#  if !defined(STATIC_LINKED)
432#    define SWIGEXPORT(a) __declspec(dllexport) a
433#  else
434#    define SWIGEXPORT(a) a
435#  endif
436#else
437#  define SWIGEXPORT(a) a
438#endif
439
440#ifdef __cplusplus
441extern "C" {
442#endif
443
444
445/*************************************************************************/
446
447
448/* The static type info list */
449
450static swig_type_info *swig_type_list = 0;
451static swig_type_info **swig_type_list_handle = &swig_type_list;
452
453
454/* Register a type mapping with the type-checking */
455static swig_type_info *
456SWIG_TypeRegister(swig_type_info *ti) {
457  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
458}
459
460/* Search for a swig_type_info structure */
461static swig_type_info *
462SWIG_TypeQuery(const char *name) {
463  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
464}
465
466/* Set the clientdata field for a type */
467static void
468SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
469  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
470}
471
472/* This function will propagate the clientdata field of type to
473* any new swig_type_info structures that have been added into the list
474* of equivalent types.  It is like calling
475* SWIG_TypeClientData(type, clientdata) a second time.
476*/
477static void
478SWIG_PropagateClientData(swig_type_info *type) {
479  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
480}
481
482#ifdef __cplusplus
483}
484#endif
485
486/* ---------------------------------------------------------------------- -*- c -*-
487 * perl5.swg
488 *
489 * Perl5 runtime library
490 * $Header: /cvsroot/swig/SWIG/Lib/perl5/perlrun.swg,v 1.20 2004/11/29 23:13:57 wuzzeb Exp $
491 * ----------------------------------------------------------------------------- */
492
493#define SWIGPERL
494#define SWIGPERL5
495#ifdef __cplusplus
496/* Needed on some windows machines---since MS plays funny games with the header files under C++ */
497#include <math.h>
498#include <stdlib.h>
499extern "C" {
500#endif
501#include "EXTERN.h"
502#include "perl.h"
503#include "XSUB.h"
504
505/* Get rid of free and malloc defined by perl */
506#undef free
507#undef malloc
508
509#ifndef pTHX_
510#define pTHX_
511#endif
512
513#include <string.h>
514#ifdef __cplusplus
515}
516#endif
517
518/* Macro to call an XS function */
519
520#ifdef PERL_OBJECT
521#  define SWIG_CALLXS(_name) _name(cv,pPerl)
522#else
523#  ifndef MULTIPLICITY
524#    define SWIG_CALLXS(_name) _name(cv)
525#  else
526#    define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
527#  endif
528#endif
529
530/* Contract support */
531
532#define SWIG_contract_assert(expr,msg) if (!(expr)) { SWIG_croak(msg); } else
533
534/* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */
535
536#ifdef PERL_OBJECT
537#define MAGIC_PPERL  CPerlObj *pPerl = (CPerlObj *) this;
538typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
539
540#ifdef __cplusplus
541extern "C" {
542#endif
543typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
544#ifdef __cplusplus
545}
546#endif
547
548#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
549#define SWIGCLASS_STATIC
550#else
551#define MAGIC_PPERL
552#define SWIGCLASS_STATIC static
553#ifndef MULTIPLICITY
554#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
555typedef int (*SwigMagicFunc)(SV *, MAGIC *);
556
557#ifdef __cplusplus
558extern "C" {
559#endif
560typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
561#ifdef __cplusplus
562}
563#endif
564
565
566#else
567#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
568typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
569#ifdef __cplusplus
570extern "C" {
571#endif
572typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
573#ifdef __cplusplus
574}
575#endif
576
577#endif
578#endif
579
580#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
581#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
582#endif
583
584/* Modifications for newer Perl 5.005 releases */
585
586#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
587#  ifndef PL_sv_yes
588#    define PL_sv_yes sv_yes
589#  endif
590#  ifndef PL_sv_undef
591#    define PL_sv_undef sv_undef
592#  endif
593#  ifndef PL_na
594#    define PL_na na
595#  endif
596#endif
597
598#include <stdlib.h>
599
600#ifdef __cplusplus
601extern "C" {
602#endif
603
604#define SWIG_OWNER 1
605#define SWIG_SHADOW 2
606
607/* Common SWIG API */
608
609#ifdef PERL_OBJECT
610#  define SWIG_ConvertPtr(obj, pp, type, flags) \
611     SWIG_Perl_ConvertPtr(pPerl, obj, pp, type, flags)
612#  define SWIG_NewPointerObj(p, type, flags) \
613     SWIG_Perl_NewPointerObj(pPerl, p, type, flags)
614#  define SWIG_MakePackedObj(sv, p, s, type) \
615     SWIG_Perl_MakePackedObj(pPerl, sv, p, s, type)
616#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
617     SWIG_Perl_ConvertPacked(pPerl, obj, p, s, type, flags)
618
619#else
620#  define SWIG_ConvertPtr(obj, pp, type, flags) \
621     SWIG_Perl_ConvertPtr(obj, pp, type, flags)
622#  define SWIG_NewPointerObj(p, type, flags) \
623     SWIG_Perl_NewPointerObj(p, type, flags)
624#  define SWIG_MakePackedObj(sv, p, s, type) \
625     SWIG_Perl_MakePackedObj(sv, p, s, type )
626#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
627     SWIG_Perl_ConvertPacked(obj, p, s, type, flags)
628#endif
629
630/* Perl-specific API */
631#ifdef PERL_OBJECT
632#  define SWIG_MakePtr(sv, ptr, type, flags) \
633     SWIG_Perl_MakePtr(pPerl, sv, ptr, type, flags)
634#  define SWIG_SetError(str) \
635     SWIG_Perl_SetError(pPerl, str)
636#else
637#  define SWIG_MakePtr(sv, ptr, type, flags) \
638     SWIG_Perl_MakePtr(sv, ptr, type, flags)
639#  define SWIG_SetError(str) \
640     SWIG_Perl_SetError(str)
641#  define SWIG_SetErrorSV(str) \
642     SWIG_Perl_SetErrorSV(str)
643#endif
644
645#define SWIG_SetErrorf SWIG_Perl_SetErrorf
646
647
648#ifdef PERL_OBJECT
649#  define SWIG_MAYBE_PERL_OBJECT CPerlObj *pPerl,
650#else
651#  define SWIG_MAYBE_PERL_OBJECT
652#endif
653
654static swig_type_info **
655SWIG_Perl_GetTypeListHandle() {
656  static void *type_pointer = (void *)0;
657  SV *pointer;
658
659  /* first check if pointer already created */
660  if (!type_pointer) {
661    pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);
662    if (pointer && SvOK(pointer)) {
663      type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
664    }
665  }
666
667  return (swig_type_info **) type_pointer;
668}
669
670/*
671  Search for a swig_type_info structure
672 */
673SWIGRUNTIMEINLINE swig_type_info *
674SWIG_Perl_GetTypeList() {
675  swig_type_info **tlh = SWIG_Perl_GetTypeListHandle();
676  return tlh ? *tlh : (swig_type_info*)0;
677}
678
679#define SWIG_Runtime_GetTypeList SWIG_Perl_GetTypeList
680
681static swig_type_info *
682SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty) {
683  swig_type_info *s;
684  if (!ty) return 0;        /* Void pointer */
685  s = ty->next;             /* First element always just a name */
686  do {
687    if (sv_derived_from(rv, (char *) s->name)) {
688      if (s == ty->next) return s;
689      /* Move s to the top of the linked list */
690      s->prev->next = s->next;
691      if (s->next) {
692        s->next->prev = s->prev;
693      }
694      /* Insert s as second element in the list */
695      s->next = ty->next;
696      if (ty->next) ty->next->prev = s;
697      ty->next = s;
698      s->prev = ty;
699      return s;
700    }
701    s = s->next;
702  } while (s && (s != ty->next));
703  return 0;
704}
705
706/* Function for getting a pointer value */
707
708static int
709SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
710  swig_type_info *tc;
711  void *voidptr = (void *)0;
712
713  /* If magical, apply more magic */
714  if (SvGMAGICAL(sv))
715    mg_get(sv);
716
717  /* Check to see if this is an object */
718  if (sv_isobject(sv)) {
719    SV *tsv = (SV*) SvRV(sv);
720    IV tmp = 0;
721    if ((SvTYPE(tsv) == SVt_PVHV)) {
722      MAGIC *mg;
723      if (SvMAGICAL(tsv)) {
724        mg = mg_find(tsv,'P');
725        if (mg) {
726          sv = mg->mg_obj;
727          if (sv_isobject(sv)) {
728            tmp = SvIV((SV*)SvRV(sv));
729          }
730        }
731      } else {
732        return -1;
733      }
734    } else {
735      tmp = SvIV((SV*)SvRV(sv));
736    }
737    voidptr = (void *)tmp;
738    if (!_t) {
739      *(ptr) = voidptr;
740      return 0;
741    }
742  } else if (! SvOK(sv)) {            /* Check for undef */
743    *(ptr) = (void *) 0;
744    return 0;
745  } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
746    *(ptr) = (void *) 0;
747    if (!SvROK(sv))
748      return 0;
749    else
750      return -1;
751  } else {                            /* Don't know what it is */
752    *(ptr) = (void *) 0;
753    return -1;
754  }
755  if (_t) {
756    /* Now see if the types match */
757    char *_c = HvNAME(SvSTASH(SvRV(sv)));
758    tc = SWIG_TypeCheck(_c,_t);
759    if (!tc) {
760      *ptr = voidptr;
761      return -1;
762    }
763    *ptr = SWIG_TypeCast(tc,voidptr);
764    return 0;
765  }
766  *ptr = voidptr;
767  return 0;
768}
769
770static void
771SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
772  if (ptr && (flags & SWIG_SHADOW)) {
773    SV *self;
774    SV *obj=newSV(0);
775    HV *hash=newHV();
776    HV *stash;
777    sv_setref_pv(obj, (char *) t->name, ptr);
778    stash=SvSTASH(SvRV(obj));
779    if (flags & SWIG_OWNER) {
780      HV *hv;
781      GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
782      if (!isGV(gv))
783        gv_init(gv, stash, "OWNER", 5, FALSE);
784      hv=GvHVn(gv);
785      hv_store_ent(hv, obj, newSViv(1), 0);
786    }
787    sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
788    SvREFCNT_dec(obj);
789    self=newRV_noinc((SV *)hash);
790    sv_setsv(sv, self);
791    SvREFCNT_dec((SV *)self);
792    sv_bless(sv, stash);
793  }
794  else {
795    sv_setref_pv(sv, (char *) t->name, ptr);
796  }
797}
798
799static SWIGINLINE SV *
800SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
801  SV *result = sv_newmortal();
802  SWIG_MakePtr(result, ptr, t, flags);
803  return result;
804}
805
806static void
807  SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
808  char result[1024];
809  char *r = result;
810  if ((2*sz + 1 + strlen(type->name)) > 1000) return;
811  *(r++) = '_';
812  r = SWIG_PackData(r,ptr,sz);
813  strcpy(r,type->name);
814  sv_setpv(sv, result);
815}
816
817/* Convert a packed value value */
818static int
819SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
820  swig_type_info *tc;
821  const char  *c = 0;
822
823  if ((!obj) || (!SvOK(obj))) return -1;
824  c = SvPV(obj, PL_na);
825  /* Pointer values must start with leading underscore */
826  if (*c != '_') return -1;
827  c++;
828  c = SWIG_UnpackData(c,ptr,sz);
829  if (ty) {
830    tc = SWIG_TypeCheck(c,ty);
831    if (!tc) return -1;
832  }
833  return 0;
834}
835
836static SWIGINLINE void
837SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT const char *error) {
838  if (error) sv_setpv(perl_get_sv("@", TRUE), error);
839}
840
841static SWIGINLINE void
842SWIG_Perl_SetErrorSV(SWIG_MAYBE_PERL_OBJECT SV *error) {
843  if (error) sv_setsv(perl_get_sv("@", TRUE), error);
844}
845
846static void
847SWIG_Perl_SetErrorf(const char *fmt, ...) {
848  va_list args;
849  va_start(args, fmt);
850  sv_vsetpvfn(perl_get_sv("@", TRUE), fmt, strlen(fmt), &args, Null(SV**), 0, Null(bool*));
851  va_end(args);
852}
853
854/* Macros for low-level exception handling */
855#define SWIG_fail       goto fail
856#define SWIG_croak(x)   { SWIG_SetError(x); goto fail; }
857#define SWIG_croakSV(x) { SWIG_SetErrorSV(x); goto fail; }
858/* most preprocessors do not support vararg macros :-( */
859/* #define SWIG_croakf(x...) { SWIG_SetErrorf(x); goto fail; } */
860
861
862typedef XS(SwigPerlWrapper);
863typedef SwigPerlWrapper *SwigPerlWrapperPtr;
864
865/* Structure for command table */
866typedef struct {
867  const char         *name;
868  SwigPerlWrapperPtr  wrapper;
869} swig_command_info;
870
871/* Information for constant table */
872
873#define SWIG_INT     1
874#define SWIG_FLOAT   2
875#define SWIG_STRING  3
876#define SWIG_POINTER 4
877#define SWIG_BINARY  5
878
879/* Constant information structure */
880typedef struct swig_constant_info {
881    int              type;
882    const char      *name;
883    long             lvalue;
884    double           dvalue;
885    void            *pvalue;
886    swig_type_info **ptype;
887} swig_constant_info;
888
889#ifdef __cplusplus
890}
891#endif
892
893/* Structure for variable table */
894typedef struct {
895  const char   *name;
896  SwigMagicFunc   set;
897  SwigMagicFunc   get;
898  swig_type_info  **type;
899} swig_variable_info;
900
901/* Magic variable code */
902#ifndef PERL_OBJECT
903#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
904  #ifndef MULTIPLICITY
905     static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) {
906  #else
907     static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) {
908  #endif
909#else
910#  define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
911static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
912#endif
913  MAGIC *mg;
914  sv_magic(sv,sv,'U',(char *) name,strlen(name));
915  mg = mg_find(sv,'U');
916  mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
917  mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
918  mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
919  mg->mg_virtual->svt_len = 0;
920  mg->mg_virtual->svt_clear = 0;
921  mg->mg_virtual->svt_free = 0;
922}
923
924
925
926
927
928
929#ifdef do_open
930  #undef do_open
931#endif
932#ifdef do_close
933  #undef do_close
934#endif
935#ifdef scalar
936  #undef scalar
937#endif
938#ifdef list
939  #undef list
940#endif
941#ifdef apply
942  #undef apply
943#endif
944#ifdef convert
945  #undef convert
946#endif
947#ifdef Error
948  #undef Error
949#endif
950#ifdef form
951  #undef form
952#endif
953#ifdef vform
954  #undef vform
955#endif
956#ifdef LABEL
957  #undef LABEL
958#endif
959#ifdef METHOD
960  #undef METHOD
961#endif
962#ifdef Move
963  #undef Move
964#endif
965#ifdef yylex
966  #undef yylex
967#endif
968#ifdef yyparse
969  #undef yyparse
970#endif
971#ifdef yyerror
972  #undef yyerror
973#endif
974#ifdef invert
975  #undef invert
976#endif
977#ifdef ref
978  #undef ref
979#endif
980#ifdef ENTER
981  #undef ENTER
982#endif
983
984
985/* -------- TYPES TABLE (BEGIN) -------- */
986
987static swig_type_info *swig_types[1];
988
989/* -------- TYPES TABLE (END) -------- */
990
991#define SWIG_init    boot_DumpRenderTreeSupport
992
993#define SWIG_name   "DumpRenderTreeSupportc::boot_DumpRenderTreeSupport"
994#define SWIG_prefix "DumpRenderTreeSupportc::"
995
996#ifdef __cplusplus
997extern "C"
998#endif
999#ifndef PERL_OBJECT
1000#ifndef MULTIPLICITY
1001SWIGEXPORT(void) SWIG_init (CV* cv);
1002#else
1003SWIGEXPORT(void) SWIG_init (pTHXo_ CV* cv);
1004#endif
1005#else
1006SWIGEXPORT(void) SWIG_init (CV *cv, CPerlObj *);
1007#endif
1008
1009int processIsCrashing(int);
1010#ifdef PERL_OBJECT
1011#define MAGIC_CLASS _wrap_DumpRenderTreeSupport_var::
1012class _wrap_DumpRenderTreeSupport_var : public CPerlObj {
1013public:
1014#else
1015#define MAGIC_CLASS
1016#endif
1017SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *sv, MAGIC *mg) {
1018    MAGIC_PPERL
1019    sv = sv; mg = mg;
1020    croak("Value is read-only.");
1021    return 0;
1022}
1023
1024
1025#ifdef PERL_OBJECT
1026};
1027#endif
1028
1029#ifdef __cplusplus
1030extern "C" {
1031#endif
1032XS(_wrap_processIsCrashing) {
1033    {
1034        int arg1 ;
1035        int result;
1036        int argvi = 0;
1037        dXSARGS;
1038
1039        if ((items < 1) || (items > 1)) {
1040            SWIG_croak("Usage: processIsCrashing(pid);");
1041        }
1042        arg1 = (int) SvIV(ST(0));
1043        result = (int)processIsCrashing(arg1);
1044
1045        ST(argvi) = sv_newmortal();
1046        sv_setiv(ST(argvi++), (IV) result);
1047        XSRETURN(argvi);
1048        fail:
1049        ;
1050    }
1051    croak(Nullch);
1052}
1053
1054
1055
1056/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
1057
1058
1059static swig_type_info *swig_types_initial[] = {
10600
1061};
1062
1063
1064/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
1065
1066static swig_constant_info swig_constants[] = {
1067{0,0,0,0,0,0}
1068};
1069#ifdef __cplusplus
1070}
1071#endif
1072static swig_variable_info swig_variables[] = {
1073{0,0,0,0}
1074};
1075static swig_command_info swig_commands[] = {
1076{"DumpRenderTreeSupportc::processIsCrashing", _wrap_processIsCrashing},
1077{0,0}
1078};
1079
1080
1081static void SWIG_Perl_SetTypeListHandle(swig_type_info **handle) {
1082    SV *pointer;
1083
1084    /* create a new pointer */
1085    pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);
1086    sv_setiv(pointer, PTR2IV(swig_type_list_handle));
1087}
1088
1089static swig_type_info **
1090SWIG_Perl_LookupTypePointer(swig_type_info **type_list_handle) {
1091    swig_type_info **type_pointer;
1092
1093    /* first check if module already created */
1094    type_pointer = SWIG_Perl_GetTypeListHandle();
1095    if (type_pointer) {
1096        return type_pointer;
1097    } else {
1098        /* create a new module and variable */
1099        SWIG_Perl_SetTypeListHandle(type_list_handle);
1100        return type_list_handle;
1101    }
1102}
1103
1104
1105#ifdef __cplusplus
1106extern "C"
1107#endif
1108
1109XS(SWIG_init) {
1110    dXSARGS;
1111    int i;
1112    static int _init = 0;
1113    if (!_init) {
1114        swig_type_list_handle = SWIG_Perl_LookupTypePointer(swig_type_list_handle);
1115        for (i = 0; swig_types_initial[i]; i++) {
1116            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
1117        }
1118        _init = 1;
1119    }
1120
1121    /* Install commands */
1122    for (i = 0; swig_commands[i].name; i++) {
1123        newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
1124    }
1125
1126    /* Install variables */
1127    for (i = 0; swig_variables[i].name; i++) {
1128        SV *sv;
1129        sv = perl_get_sv((char*) swig_variables[i].name, TRUE | 0x2);
1130        if (swig_variables[i].type) {
1131            SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
1132        } else {
1133            sv_setiv(sv,(IV) 0);
1134        }
1135        swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get);
1136    }
1137
1138    /* Install constant */
1139    for (i = 0; swig_constants[i].type; i++) {
1140        SV *sv;
1141        sv = perl_get_sv((char*)swig_constants[i].name, TRUE | 0x2);
1142        switch(swig_constants[i].type) {
1143            case SWIG_INT:
1144            sv_setiv(sv, (IV) swig_constants[i].lvalue);
1145            break;
1146            case SWIG_FLOAT:
1147            sv_setnv(sv, (double) swig_constants[i].dvalue);
1148            break;
1149            case SWIG_STRING:
1150            sv_setpv(sv, (char *) swig_constants[i].pvalue);
1151            break;
1152            case SWIG_POINTER:
1153            SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
1154            break;
1155            case SWIG_BINARY:
1156            SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
1157            break;
1158            default:
1159            break;
1160        }
1161        SvREADONLY_on(sv);
1162    }
1163
1164    ST(0) = &PL_sv_yes;
1165    XSRETURN(1);
1166}
1167
1168