1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 4.0.1
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 SWIGPERL
13 #define SWIGPERL
14 #endif
15 
16 #define SWIG_CASTRANK_MODE
17 
18 /* -----------------------------------------------------------------------------
19  *  This section contains generic SWIG labels for method/variable
20  *  declarations/attributes, and other compiler dependent labels.
21  * ----------------------------------------------------------------------------- */
22 
23 /* template workaround for compilers that cannot correctly implement the C++ standard */
24 #ifndef SWIGTEMPLATEDISAMBIGUATOR
25 # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
26 #  define SWIGTEMPLATEDISAMBIGUATOR template
27 # elif defined(__HP_aCC)
28 /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
29 /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
30 #  define SWIGTEMPLATEDISAMBIGUATOR template
31 # else
32 #  define SWIGTEMPLATEDISAMBIGUATOR
33 # endif
34 #endif
35 
36 /* inline attribute */
37 #ifndef SWIGINLINE
38 # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
39 #   define SWIGINLINE inline
40 # else
41 #   define SWIGINLINE
42 # endif
43 #endif
44 
45 /* attribute recognised by some compilers to avoid 'unused' warnings */
46 #ifndef SWIGUNUSED
47 # if defined(__GNUC__)
48 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
49 #     define SWIGUNUSED __attribute__ ((__unused__))
50 #   else
51 #     define SWIGUNUSED
52 #   endif
53 # elif defined(__ICC)
54 #   define SWIGUNUSED __attribute__ ((__unused__))
55 # else
56 #   define SWIGUNUSED
57 # endif
58 #endif
59 
60 #ifndef SWIG_MSC_UNSUPPRESS_4505
61 # if defined(_MSC_VER)
62 #   pragma warning(disable : 4505) /* unreferenced local function has been removed */
63 # endif
64 #endif
65 
66 #ifndef SWIGUNUSEDPARM
67 # ifdef __cplusplus
68 #   define SWIGUNUSEDPARM(p)
69 # else
70 #   define SWIGUNUSEDPARM(p) p SWIGUNUSED
71 # endif
72 #endif
73 
74 /* internal SWIG method */
75 #ifndef SWIGINTERN
76 # define SWIGINTERN static SWIGUNUSED
77 #endif
78 
79 /* internal inline SWIG method */
80 #ifndef SWIGINTERNINLINE
81 # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
82 #endif
83 
84 /* exporting methods */
85 #if defined(__GNUC__)
86 #  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
87 #    ifndef GCC_HASCLASSVISIBILITY
88 #      define GCC_HASCLASSVISIBILITY
89 #    endif
90 #  endif
91 #endif
92 
93 #ifndef SWIGEXPORT
94 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
95 #   if defined(STATIC_LINKED)
96 #     define SWIGEXPORT
97 #   else
98 #     define SWIGEXPORT __declspec(dllexport)
99 #   endif
100 # else
101 #   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
102 #     define SWIGEXPORT __attribute__ ((visibility("default")))
103 #   else
104 #     define SWIGEXPORT
105 #   endif
106 # endif
107 #endif
108 
109 /* calling conventions for Windows */
110 #ifndef SWIGSTDCALL
111 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
112 #   define SWIGSTDCALL __stdcall
113 # else
114 #   define SWIGSTDCALL
115 # endif
116 #endif
117 
118 /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
119 #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
120 # define _CRT_SECURE_NO_DEPRECATE
121 #endif
122 
123 /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
124 #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
125 # define _SCL_SECURE_NO_DEPRECATE
126 #endif
127 
128 /* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */
129 #if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES)
130 # define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
131 #endif
132 
133 /* Intel's compiler complains if a variable which was never initialised is
134  * cast to void, which is a common idiom which we use to indicate that we
135  * are aware a variable isn't used.  So we just silence that warning.
136  * See: https://github.com/swig/swig/issues/192 for more discussion.
137  */
138 #ifdef __INTEL_COMPILER
139 # pragma warning disable 592
140 #endif
141 
142 /* -----------------------------------------------------------------------------
143  * swigrun.swg
144  *
145  * This file contains generic C API SWIG runtime support for pointer
146  * type checking.
147  * ----------------------------------------------------------------------------- */
148 
149 /* This should only be incremented when either the layout of swig_type_info changes,
150    or for whatever reason, the runtime changes incompatibly */
151 #define SWIG_RUNTIME_VERSION "4"
152 
153 /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
154 #ifdef SWIG_TYPE_TABLE
155 # define SWIG_QUOTE_STRING(x) #x
156 # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
157 # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
158 #else
159 # define SWIG_TYPE_TABLE_NAME
160 #endif
161 
162 /*
163   You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
164   creating a static or dynamic library from the SWIG runtime code.
165   In 99.9% of the cases, SWIG just needs to declare them as 'static'.
166 
167   But only do this if strictly necessary, ie, if you have problems
168   with your compiler or suchlike.
169 */
170 
171 #ifndef SWIGRUNTIME
172 # define SWIGRUNTIME SWIGINTERN
173 #endif
174 
175 #ifndef SWIGRUNTIMEINLINE
176 # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
177 #endif
178 
179 /*  Generic buffer size */
180 #ifndef SWIG_BUFFER_SIZE
181 # define SWIG_BUFFER_SIZE 1024
182 #endif
183 
184 /* Flags for pointer conversions */
185 #define SWIG_POINTER_DISOWN        0x1
186 #define SWIG_CAST_NEW_MEMORY       0x2
187 #define SWIG_POINTER_NO_NULL       0x4
188 
189 /* Flags for new pointer objects */
190 #define SWIG_POINTER_OWN           0x1
191 
192 
193 /*
194    Flags/methods for returning states.
195 
196    The SWIG conversion methods, as ConvertPtr, return an integer
197    that tells if the conversion was successful or not. And if not,
198    an error code can be returned (see swigerrors.swg for the codes).
199 
200    Use the following macros/flags to set or process the returning
201    states.
202 
203    In old versions of SWIG, code such as the following was usually written:
204 
205      if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
206        // success code
207      } else {
208        //fail code
209      }
210 
211    Now you can be more explicit:
212 
213     int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
214     if (SWIG_IsOK(res)) {
215       // success code
216     } else {
217       // fail code
218     }
219 
220    which is the same really, but now you can also do
221 
222     Type *ptr;
223     int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
224     if (SWIG_IsOK(res)) {
225       // success code
226       if (SWIG_IsNewObj(res) {
227         ...
228 	delete *ptr;
229       } else {
230         ...
231       }
232     } else {
233       // fail code
234     }
235 
236    I.e., now SWIG_ConvertPtr can return new objects and you can
237    identify the case and take care of the deallocation. Of course that
238    also requires SWIG_ConvertPtr to return new result values, such as
239 
240       int SWIG_ConvertPtr(obj, ptr,...) {
241         if (<obj is ok>) {
242           if (<need new object>) {
243             *ptr = <ptr to new allocated object>;
244             return SWIG_NEWOBJ;
245           } else {
246             *ptr = <ptr to old object>;
247             return SWIG_OLDOBJ;
248           }
249         } else {
250           return SWIG_BADOBJ;
251         }
252       }
253 
254    Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
255    more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
256    SWIG errors code.
257 
258    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
259    allows to return the 'cast rank', for example, if you have this
260 
261        int food(double)
262        int fooi(int);
263 
264    and you call
265 
266       food(1)   // cast rank '1'  (1 -> 1.0)
267       fooi(1)   // cast rank '0'
268 
269    just use the SWIG_AddCast()/SWIG_CheckState()
270 */
271 
272 #define SWIG_OK                    (0)
273 #define SWIG_ERROR                 (-1)
274 #define SWIG_IsOK(r)               (r >= 0)
275 #define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)
276 
277 /* The CastRankLimit says how many bits are used for the cast rank */
278 #define SWIG_CASTRANKLIMIT         (1 << 8)
279 /* The NewMask denotes the object was created (using new/malloc) */
280 #define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
281 /* The TmpMask is for in/out typemaps that use temporal objects */
282 #define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
283 /* Simple returning values */
284 #define SWIG_BADOBJ                (SWIG_ERROR)
285 #define SWIG_OLDOBJ                (SWIG_OK)
286 #define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
287 #define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
288 /* Check, add and del mask methods */
289 #define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
290 #define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
291 #define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
292 #define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
293 #define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
294 #define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
295 
296 /* Cast-Rank Mode */
297 #if defined(SWIG_CASTRANK_MODE)
298 #  ifndef SWIG_TypeRank
299 #    define SWIG_TypeRank             unsigned long
300 #  endif
301 #  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
302 #    define SWIG_MAXCASTRANK          (2)
303 #  endif
304 #  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
305 #  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
SWIG_AddCast(int r)306 SWIGINTERNINLINE int SWIG_AddCast(int r) {
307   return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
308 }
SWIG_CheckState(int r)309 SWIGINTERNINLINE int SWIG_CheckState(int r) {
310   return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
311 }
312 #else /* no cast-rank mode */
313 #  define SWIG_AddCast(r) (r)
314 #  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
315 #endif
316 
317 
318 #include <string.h>
319 
320 #ifdef __cplusplus
321 extern "C" {
322 #endif
323 
324 typedef void *(*swig_converter_func)(void *, int *);
325 typedef struct swig_type_info *(*swig_dycast_func)(void **);
326 
327 /* Structure to store information on one type */
328 typedef struct swig_type_info {
329   const char             *name;			/* mangled name of this type */
330   const char             *str;			/* human readable name of this type */
331   swig_dycast_func        dcast;		/* dynamic cast function down a hierarchy */
332   struct swig_cast_info  *cast;			/* linked list of types that can cast into this type */
333   void                   *clientdata;		/* language specific type data */
334   int                    owndata;		/* flag if the structure owns the clientdata */
335 } swig_type_info;
336 
337 /* Structure to store a type and conversion function used for casting */
338 typedef struct swig_cast_info {
339   swig_type_info         *type;			/* pointer to type that is equivalent to this type */
340   swig_converter_func     converter;		/* function to cast the void pointers */
341   struct swig_cast_info  *next;			/* pointer to next cast in linked list */
342   struct swig_cast_info  *prev;			/* pointer to the previous cast */
343 } swig_cast_info;
344 
345 /* Structure used to store module information
346  * Each module generates one structure like this, and the runtime collects
347  * all of these structures and stores them in a circularly linked list.*/
348 typedef struct swig_module_info {
349   swig_type_info         **types;		/* Array of pointers to swig_type_info structures that are in this module */
350   size_t                 size;		        /* Number of types in this module */
351   struct swig_module_info *next;		/* Pointer to next element in circularly linked list */
352   swig_type_info         **type_initial;	/* Array of initially generated type structures */
353   swig_cast_info         **cast_initial;	/* Array of initially generated casting structures */
354   void                    *clientdata;		/* Language specific module data */
355 } swig_module_info;
356 
357 /*
358   Compare two type names skipping the space characters, therefore
359   "char*" == "char *" and "Class<int>" == "Class<int >", etc.
360 
361   Return 0 when the two name types are equivalent, as in
362   strncmp, but skipping ' '.
363 */
364 SWIGRUNTIME int
SWIG_TypeNameComp(const char * f1,const char * l1,const char * f2,const char * l2)365 SWIG_TypeNameComp(const char *f1, const char *l1,
366 		  const char *f2, const char *l2) {
367   for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
368     while ((*f1 == ' ') && (f1 != l1)) ++f1;
369     while ((*f2 == ' ') && (f2 != l2)) ++f2;
370     if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
371   }
372   return (int)((l1 - f1) - (l2 - f2));
373 }
374 
375 /*
376   Check type equivalence in a name list like <name1>|<name2>|...
377   Return 0 if equal, -1 if nb < tb, 1 if nb > tb
378 */
379 SWIGRUNTIME int
SWIG_TypeCmp(const char * nb,const char * tb)380 SWIG_TypeCmp(const char *nb, const char *tb) {
381   int equiv = 1;
382   const char* te = tb + strlen(tb);
383   const char* ne = nb;
384   while (equiv != 0 && *ne) {
385     for (nb = ne; *ne; ++ne) {
386       if (*ne == '|') break;
387     }
388     equiv = SWIG_TypeNameComp(nb, ne, tb, te);
389     if (*ne) ++ne;
390   }
391   return equiv;
392 }
393 
394 /*
395   Check type equivalence in a name list like <name1>|<name2>|...
396   Return 0 if not equal, 1 if equal
397 */
398 SWIGRUNTIME int
SWIG_TypeEquiv(const char * nb,const char * tb)399 SWIG_TypeEquiv(const char *nb, const char *tb) {
400   return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
401 }
402 
403 /*
404   Check the typename
405 */
406 SWIGRUNTIME swig_cast_info *
SWIG_TypeCheck(const char * c,swig_type_info * ty)407 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
408   if (ty) {
409     swig_cast_info *iter = ty->cast;
410     while (iter) {
411       if (strcmp(iter->type->name, c) == 0) {
412         if (iter == ty->cast)
413           return iter;
414         /* Move iter to the top of the linked list */
415         iter->prev->next = iter->next;
416         if (iter->next)
417           iter->next->prev = iter->prev;
418         iter->next = ty->cast;
419         iter->prev = 0;
420         if (ty->cast) ty->cast->prev = iter;
421         ty->cast = iter;
422         return iter;
423       }
424       iter = iter->next;
425     }
426   }
427   return 0;
428 }
429 
430 /*
431   Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
432 */
433 SWIGRUNTIME swig_cast_info *
SWIG_TypeCheckStruct(swig_type_info * from,swig_type_info * ty)434 SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
435   if (ty) {
436     swig_cast_info *iter = ty->cast;
437     while (iter) {
438       if (iter->type == from) {
439         if (iter == ty->cast)
440           return iter;
441         /* Move iter to the top of the linked list */
442         iter->prev->next = iter->next;
443         if (iter->next)
444           iter->next->prev = iter->prev;
445         iter->next = ty->cast;
446         iter->prev = 0;
447         if (ty->cast) ty->cast->prev = iter;
448         ty->cast = iter;
449         return iter;
450       }
451       iter = iter->next;
452     }
453   }
454   return 0;
455 }
456 
457 /*
458   Cast a pointer up an inheritance hierarchy
459 */
460 SWIGRUNTIMEINLINE void *
SWIG_TypeCast(swig_cast_info * ty,void * ptr,int * newmemory)461 SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
462   return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
463 }
464 
465 /*
466    Dynamic pointer casting. Down an inheritance hierarchy
467 */
468 SWIGRUNTIME swig_type_info *
SWIG_TypeDynamicCast(swig_type_info * ty,void ** ptr)469 SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
470   swig_type_info *lastty = ty;
471   if (!ty || !ty->dcast) return ty;
472   while (ty && (ty->dcast)) {
473     ty = (*ty->dcast)(ptr);
474     if (ty) lastty = ty;
475   }
476   return lastty;
477 }
478 
479 /*
480   Return the name associated with this type
481 */
482 SWIGRUNTIMEINLINE const char *
SWIG_TypeName(const swig_type_info * ty)483 SWIG_TypeName(const swig_type_info *ty) {
484   return ty->name;
485 }
486 
487 /*
488   Return the pretty name associated with this type,
489   that is an unmangled type name in a form presentable to the user.
490 */
491 SWIGRUNTIME const char *
SWIG_TypePrettyName(const swig_type_info * type)492 SWIG_TypePrettyName(const swig_type_info *type) {
493   /* The "str" field contains the equivalent pretty names of the
494      type, separated by vertical-bar characters.  We choose
495      to print the last name, as it is often (?) the most
496      specific. */
497   if (!type) return NULL;
498   if (type->str != NULL) {
499     const char *last_name = type->str;
500     const char *s;
501     for (s = type->str; *s; s++)
502       if (*s == '|') last_name = s+1;
503     return last_name;
504   }
505   else
506     return type->name;
507 }
508 
509 /*
510    Set the clientdata field for a type
511 */
512 SWIGRUNTIME void
SWIG_TypeClientData(swig_type_info * ti,void * clientdata)513 SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
514   swig_cast_info *cast = ti->cast;
515   /* if (ti->clientdata == clientdata) return; */
516   ti->clientdata = clientdata;
517 
518   while (cast) {
519     if (!cast->converter) {
520       swig_type_info *tc = cast->type;
521       if (!tc->clientdata) {
522 	SWIG_TypeClientData(tc, clientdata);
523       }
524     }
525     cast = cast->next;
526   }
527 }
528 SWIGRUNTIME void
SWIG_TypeNewClientData(swig_type_info * ti,void * clientdata)529 SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
530   SWIG_TypeClientData(ti, clientdata);
531   ti->owndata = 1;
532 }
533 
534 /*
535   Search for a swig_type_info structure only by mangled name
536   Search is a O(log #types)
537 
538   We start searching at module start, and finish searching when start == end.
539   Note: if start == end at the beginning of the function, we go all the way around
540   the circular list.
541 */
542 SWIGRUNTIME swig_type_info *
SWIG_MangledTypeQueryModule(swig_module_info * start,swig_module_info * end,const char * name)543 SWIG_MangledTypeQueryModule(swig_module_info *start,
544                             swig_module_info *end,
545 		            const char *name) {
546   swig_module_info *iter = start;
547   do {
548     if (iter->size) {
549       size_t l = 0;
550       size_t r = iter->size - 1;
551       do {
552 	/* since l+r >= 0, we can (>> 1) instead (/ 2) */
553 	size_t i = (l + r) >> 1;
554 	const char *iname = iter->types[i]->name;
555 	if (iname) {
556 	  int compare = strcmp(name, iname);
557 	  if (compare == 0) {
558 	    return iter->types[i];
559 	  } else if (compare < 0) {
560 	    if (i) {
561 	      r = i - 1;
562 	    } else {
563 	      break;
564 	    }
565 	  } else if (compare > 0) {
566 	    l = i + 1;
567 	  }
568 	} else {
569 	  break; /* should never happen */
570 	}
571       } while (l <= r);
572     }
573     iter = iter->next;
574   } while (iter != end);
575   return 0;
576 }
577 
578 /*
579   Search for a swig_type_info structure for either a mangled name or a human readable name.
580   It first searches the mangled names of the types, which is a O(log #types)
581   If a type is not found it then searches the human readable names, which is O(#types).
582 
583   We start searching at module start, and finish searching when start == end.
584   Note: if start == end at the beginning of the function, we go all the way around
585   the circular list.
586 */
587 SWIGRUNTIME swig_type_info *
SWIG_TypeQueryModule(swig_module_info * start,swig_module_info * end,const char * name)588 SWIG_TypeQueryModule(swig_module_info *start,
589                      swig_module_info *end,
590 		     const char *name) {
591   /* STEP 1: Search the name field using binary search */
592   swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
593   if (ret) {
594     return ret;
595   } else {
596     /* STEP 2: If the type hasn't been found, do a complete search
597        of the str field (the human readable name) */
598     swig_module_info *iter = start;
599     do {
600       size_t i = 0;
601       for (; i < iter->size; ++i) {
602 	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
603 	  return iter->types[i];
604       }
605       iter = iter->next;
606     } while (iter != end);
607   }
608 
609   /* neither found a match */
610   return 0;
611 }
612 
613 /*
614    Pack binary data into a string
615 */
616 SWIGRUNTIME char *
SWIG_PackData(char * c,void * ptr,size_t sz)617 SWIG_PackData(char *c, void *ptr, size_t sz) {
618   static const char hex[17] = "0123456789abcdef";
619   const unsigned char *u = (unsigned char *) ptr;
620   const unsigned char *eu =  u + sz;
621   for (; u != eu; ++u) {
622     unsigned char uu = *u;
623     *(c++) = hex[(uu & 0xf0) >> 4];
624     *(c++) = hex[uu & 0xf];
625   }
626   return c;
627 }
628 
629 /*
630    Unpack binary data from a string
631 */
632 SWIGRUNTIME const char *
SWIG_UnpackData(const char * c,void * ptr,size_t sz)633 SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
634   unsigned char *u = (unsigned char *) ptr;
635   const unsigned char *eu = u + sz;
636   for (; u != eu; ++u) {
637     char d = *(c++);
638     unsigned char uu;
639     if ((d >= '0') && (d <= '9'))
640       uu = (unsigned char)((d - '0') << 4);
641     else if ((d >= 'a') && (d <= 'f'))
642       uu = (unsigned char)((d - ('a'-10)) << 4);
643     else
644       return (char *) 0;
645     d = *(c++);
646     if ((d >= '0') && (d <= '9'))
647       uu |= (unsigned char)(d - '0');
648     else if ((d >= 'a') && (d <= 'f'))
649       uu |= (unsigned char)(d - ('a'-10));
650     else
651       return (char *) 0;
652     *u = uu;
653   }
654   return c;
655 }
656 
657 /*
658    Pack 'void *' into a string buffer.
659 */
660 SWIGRUNTIME char *
SWIG_PackVoidPtr(char * buff,void * ptr,const char * name,size_t bsz)661 SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
662   char *r = buff;
663   if ((2*sizeof(void *) + 2) > bsz) return 0;
664   *(r++) = '_';
665   r = SWIG_PackData(r,&ptr,sizeof(void *));
666   if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
667   strcpy(r,name);
668   return buff;
669 }
670 
671 SWIGRUNTIME const char *
SWIG_UnpackVoidPtr(const char * c,void ** ptr,const char * name)672 SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
673   if (*c != '_') {
674     if (strcmp(c,"NULL") == 0) {
675       *ptr = (void *) 0;
676       return name;
677     } else {
678       return 0;
679     }
680   }
681   return SWIG_UnpackData(++c,ptr,sizeof(void *));
682 }
683 
684 SWIGRUNTIME char *
SWIG_PackDataName(char * buff,void * ptr,size_t sz,const char * name,size_t bsz)685 SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
686   char *r = buff;
687   size_t lname = (name ? strlen(name) : 0);
688   if ((2*sz + 2 + lname) > bsz) return 0;
689   *(r++) = '_';
690   r = SWIG_PackData(r,ptr,sz);
691   if (lname) {
692     strncpy(r,name,lname+1);
693   } else {
694     *r = 0;
695   }
696   return buff;
697 }
698 
699 SWIGRUNTIME const char *
SWIG_UnpackDataName(const char * c,void * ptr,size_t sz,const char * name)700 SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
701   if (*c != '_') {
702     if (strcmp(c,"NULL") == 0) {
703       memset(ptr,0,sz);
704       return name;
705     } else {
706       return 0;
707     }
708   }
709   return SWIG_UnpackData(++c,ptr,sz);
710 }
711 
712 #ifdef __cplusplus
713 }
714 #endif
715 
716 /*  Errors in SWIG */
717 #define  SWIG_UnknownError    	   -1
718 #define  SWIG_IOError        	   -2
719 #define  SWIG_RuntimeError   	   -3
720 #define  SWIG_IndexError     	   -4
721 #define  SWIG_TypeError      	   -5
722 #define  SWIG_DivisionByZero 	   -6
723 #define  SWIG_OverflowError  	   -7
724 #define  SWIG_SyntaxError    	   -8
725 #define  SWIG_ValueError     	   -9
726 #define  SWIG_SystemError    	   -10
727 #define  SWIG_AttributeError 	   -11
728 #define  SWIG_MemoryError    	   -12
729 #define  SWIG_NullReferenceError   -13
730 
731 
732 
733 #ifdef __cplusplus
734 /* Needed on some windows machines---since MS plays funny games with the header files under C++ */
735 #include <math.h>
736 #include <stdlib.h>
737 extern "C" {
738 #endif
739 #include "EXTERN.h"
740 #include "perl.h"
741 #include "XSUB.h"
742 
743 /* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */
744 
745 /* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */
746 #ifndef PERL_REVISION
747 #  if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
748 #    define PERL_PATCHLEVEL_H_IMPLICIT
749 #    include <patchlevel.h>
750 #  endif
751 #  if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
752 #    include <could_not_find_Perl_patchlevel.h>
753 #  endif
754 #  ifndef PERL_REVISION
755 #    define PERL_REVISION       (5)
756 #    define PERL_VERSION        PATCHLEVEL
757 #    define PERL_SUBVERSION     SUBVERSION
758 #  endif
759 #endif
760 
761 #if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
762 #define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
763 #endif
764 
765 #ifndef SvIOK_UV
766 # define SvIOK_UV(sv)       (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv)))
767 #endif
768 
769 #ifndef SvUOK
770 # define SvUOK(sv)           SvIOK_UV(sv)
771 #endif
772 
773 #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)))
774 #  define PL_sv_undef               sv_undef
775 #  define PL_na	                    na
776 #  define PL_errgv                  errgv
777 #  define PL_sv_no                  sv_no
778 #  define PL_sv_yes                 sv_yes
779 #  define PL_markstack_ptr          markstack_ptr
780 #endif
781 
782 #ifndef IVSIZE
783 #  ifdef LONGSIZE
784 #    define IVSIZE LONGSIZE
785 #  else
786 #    define IVSIZE 4 /* A bold guess, but the best we can make. */
787 #  endif
788 #endif
789 
790 #ifndef INT2PTR
791 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
792 #    define PTRV                  UV
793 #    define INT2PTR(any,d)        (any)(d)
794 #  else
795 #    if PTRSIZE == LONGSIZE
796 #      define PTRV                unsigned long
797 #    else
798 #      define PTRV                unsigned
799 #    endif
800 #    define INT2PTR(any,d)        (any)(PTRV)(d)
801 #  endif
802 
803 #  define NUM2PTR(any,d)  (any)(PTRV)(d)
804 #  define PTR2IV(p)       INT2PTR(IV,p)
805 #  define PTR2UV(p)       INT2PTR(UV,p)
806 #  define PTR2NV(p)       NUM2PTR(NV,p)
807 
808 #  if PTRSIZE == LONGSIZE
809 #    define PTR2ul(p)     (unsigned long)(p)
810 #  else
811 #    define PTR2ul(p)     INT2PTR(unsigned long,p)
812 #  endif
813 #endif /* !INT2PTR */
814 
815 #ifndef SvPV_nolen
816 # define SvPV_nolen(x) SvPV(x,PL_na)
817 #endif
818 
819 #ifndef get_sv
820 #  define get_sv perl_get_sv
821 #endif
822 
823 #ifndef ERRSV
824 #  define ERRSV get_sv("@",FALSE)
825 #endif
826 
827 #ifndef pTHX_
828 #define pTHX_
829 #endif
830 
831 #include <string.h>
832 #ifdef __cplusplus
833 }
834 #endif
835 
836 /* -----------------------------------------------------------------------------
837  * error manipulation
838  * ----------------------------------------------------------------------------- */
839 
840 SWIGINTERN const char*
SWIG_Perl_ErrorType(int code)841 SWIG_Perl_ErrorType(int code) {
842   switch(code) {
843   case SWIG_MemoryError:
844     return "MemoryError";
845   case SWIG_IOError:
846     return "IOError";
847   case SWIG_RuntimeError:
848     return "RuntimeError";
849   case SWIG_IndexError:
850     return "IndexError";
851   case SWIG_TypeError:
852     return "TypeError";
853   case SWIG_DivisionByZero:
854     return "ZeroDivisionError";
855   case SWIG_OverflowError:
856     return "OverflowError";
857   case SWIG_SyntaxError:
858     return "SyntaxError";
859   case SWIG_ValueError:
860     return "ValueError";
861   case SWIG_SystemError:
862     return "SystemError";
863   case SWIG_AttributeError:
864     return "AttributeError";
865   default:
866     return "RuntimeError";
867   }
868 }
869 
870 
871 /* -----------------------------------------------------------------------------
872  * perlrun.swg
873  *
874  * This file contains the runtime support for Perl modules
875  * and includes code for managing global variables and pointer
876  * type checking.
877  * ----------------------------------------------------------------------------- */
878 
879 #ifdef PERL_OBJECT
880 #define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl),
881 #define SWIG_PERL_OBJECT_CALL pPerl,
882 #else
883 #define SWIG_PERL_OBJECT_DECL
884 #define SWIG_PERL_OBJECT_CALL
885 #endif
886 
887 /* Common SWIG API */
888 
889 /* for raw pointers */
890 #define SWIG_ConvertPtr(obj, pp, type, flags)           SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags)
891 #define SWIG_ConvertPtrAndOwn(obj, pp, type, flags,own) SWIG_Perl_ConvertPtrAndOwn(SWIG_PERL_OBJECT_CALL obj, pp, type, flags, own)
892 #define SWIG_NewPointerObj(p, type, flags)              SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags)
893 #define SWIG_AcquirePtr(ptr, src)                       SWIG_Perl_AcquirePtr(ptr, src)
894 #define swig_owntype                                    int
895 
896 /* for raw packed data */
897 #define SWIG_ConvertPacked(obj, p, s, type)             SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type)
898 #define SWIG_NewPackedObj(p, s, type)	                SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type)
899 
900 /* for class or struct pointers */
901 #define SWIG_ConvertInstance(obj, pptr, type, flags)    SWIG_ConvertPtr(obj, pptr, type, flags)
902 #define SWIG_NewInstanceObj(ptr, type, flags)           SWIG_NewPointerObj(ptr, type, flags)
903 
904 /* for C or C++ function pointers */
905 #define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_ConvertPtr(obj, pptr, type, 0)
906 #define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_NewPointerObj(ptr, type, 0)
907 
908 /* for C++ member pointers, ie, member methods */
909 #define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_ConvertPacked(obj, ptr, sz, ty)
910 #define SWIG_NewMemberObj(ptr, sz, type)                SWIG_NewPackedObj(ptr, sz, type)
911 
912 
913 /* Runtime API */
914 
915 #define SWIG_GetModule(clientdata)                      SWIG_Perl_GetModule(clientdata)
916 #define SWIG_SetModule(clientdata, pointer)             SWIG_Perl_SetModule(pointer)
917 
918 
919 /* Error manipulation */
920 
921 #define SWIG_ErrorType(code)                            SWIG_Perl_ErrorType(code)
922 #define SWIG_Error(code, msg)            		sv_setpvf(get_sv("@", GV_ADD), "%s %s", SWIG_ErrorType(code), msg)
923 #define SWIG_fail                        		goto fail
924 
925 /* Perl-specific SWIG API */
926 
927 #define SWIG_MakePtr(sv, ptr, type, flags)              SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags)
928 #define SWIG_MakePackedObj(sv, p, s, type)	        SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type)
929 #define SWIG_SetError(str)                              SWIG_Error(SWIG_RuntimeError, str)
930 
931 
932 #define SWIG_PERL_DECL_ARGS_1(arg1)                     (SWIG_PERL_OBJECT_DECL arg1)
933 #define SWIG_PERL_CALL_ARGS_1(arg1)                     (SWIG_PERL_OBJECT_CALL arg1)
934 #define SWIG_PERL_DECL_ARGS_2(arg1, arg2)               (SWIG_PERL_OBJECT_DECL arg1, arg2)
935 #define SWIG_PERL_CALL_ARGS_2(arg1, arg2)               (SWIG_PERL_OBJECT_CALL arg1, arg2)
936 
937 /* -----------------------------------------------------------------------------
938  * pointers/data manipulation
939  * ----------------------------------------------------------------------------- */
940 
941 /* For backward compatibility only */
942 #define SWIG_POINTER_EXCEPTION  0
943 
944 #ifdef __cplusplus
945 extern "C" {
946 #endif
947 
948 #define SWIG_OWNER   SWIG_POINTER_OWN
949 #define SWIG_SHADOW  SWIG_OWNER << 1
950 
951 #define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL
952 
953 /* SWIG Perl macros */
954 
955 /* Macro to declare an XS function */
956 #ifndef XSPROTO
957 #   define XSPROTO(name) void name(pTHX_ CV* cv)
958 #endif
959 
960 /* Macro to call an XS function */
961 #ifdef PERL_OBJECT
962 #  define SWIG_CALLXS(_name) _name(cv,pPerl)
963 #else
964 #  ifndef MULTIPLICITY
965 #    define SWIG_CALLXS(_name) _name(cv)
966 #  else
967 #    define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
968 #  endif
969 #endif
970 
971 #ifdef PERL_OBJECT
972 #define MAGIC_PPERL  CPerlObj *pPerl = (CPerlObj *) this;
973 
974 #ifdef __cplusplus
975 extern "C" {
976 #endif
977 typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
978 #ifdef __cplusplus
979 }
980 #endif
981 
982 #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
983 #define SWIGCLASS_STATIC
984 
985 #else /* PERL_OBJECT */
986 
987 #define MAGIC_PPERL
988 #define SWIGCLASS_STATIC static SWIGUNUSED
989 
990 #ifndef MULTIPLICITY
991 #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
992 
993 #ifdef __cplusplus
994 extern "C" {
995 #endif
996 typedef int (*SwigMagicFunc)(SV *, MAGIC *);
997 #ifdef __cplusplus
998 }
999 #endif
1000 
1001 #else /* MULTIPLICITY */
1002 
1003 #define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
1004 
1005 #ifdef __cplusplus
1006 extern "C" {
1007 #endif
1008 typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
1009 #ifdef __cplusplus
1010 }
1011 #endif
1012 
1013 #endif /* MULTIPLICITY */
1014 #endif /* PERL_OBJECT */
1015 
1016 #  ifdef PERL_OBJECT
1017 #    define SWIG_croak_null() SWIG_Perl_croak_null(pPerl)
SWIG_Perl_croak_null(CPerlObj * pPerl)1018 static void SWIGUNUSED SWIG_Perl_croak_null(CPerlObj *pPerl)
1019 #  else
1020 static void SWIGUNUSED SWIG_croak_null()
1021 #  endif
1022 {
1023   SV *err = get_sv("@", GV_ADD);
1024 #  if (PERL_VERSION < 6)
1025   croak("%_", err);
1026 #  else
1027   if (sv_isobject(err))
1028     croak(0);
1029   else
1030     croak("%s", SvPV_nolen(err));
1031 #  endif
1032 }
1033 
1034 
1035 /*
1036    Define how strict is the cast between strings and integers/doubles
1037    when overloading between these types occurs.
1038 
1039    The default is making it as strict as possible by using SWIG_AddCast
1040    when needed.
1041 
1042    You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to
1043    disable the SWIG_AddCast, making the casting between string and
1044    numbers less strict.
1045 
1046    In the end, we try to solve the overloading between strings and
1047    numerical types in the more natural way, but if you can avoid it,
1048    well, avoid it using %rename, for example.
1049 */
1050 #ifndef SWIG_PERL_NO_STRICT_STR2NUM
1051 # ifndef SWIG_PERL_STRICT_STR2NUM
1052 #  define SWIG_PERL_STRICT_STR2NUM
1053 # endif
1054 #endif
1055 #ifdef SWIG_PERL_STRICT_STR2NUM
1056 /* string takes precedence */
1057 #define SWIG_Str2NumCast(x) SWIG_AddCast(x)
1058 #else
1059 /* number takes precedence */
1060 #define SWIG_Str2NumCast(x) x
1061 #endif
1062 
1063 
1064 
1065 #include <stdlib.h>
1066 
1067 SWIGRUNTIME const char *
SWIG_Perl_TypeProxyName(const swig_type_info * type)1068 SWIG_Perl_TypeProxyName(const swig_type_info *type) {
1069   if (!type) return NULL;
1070   if (type->clientdata != NULL) {
1071     return (const char*) type->clientdata;
1072   }
1073   else {
1074     return type->name;
1075   }
1076 }
1077 
1078 /* Identical to SWIG_TypeCheck, except for strcmp comparison */
1079 SWIGRUNTIME swig_cast_info *
SWIG_TypeProxyCheck(const char * c,swig_type_info * ty)1080 SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
1081   if (ty) {
1082     swig_cast_info *iter = ty->cast;
1083     while (iter) {
1084       if (strcmp(SWIG_Perl_TypeProxyName(iter->type), c) == 0) {
1085         if (iter == ty->cast)
1086           return iter;
1087         /* Move iter to the top of the linked list */
1088         iter->prev->next = iter->next;
1089         if (iter->next)
1090           iter->next->prev = iter->prev;
1091         iter->next = ty->cast;
1092         iter->prev = 0;
1093         if (ty->cast) ty->cast->prev = iter;
1094         ty->cast = iter;
1095         return iter;
1096       }
1097       iter = iter->next;
1098     }
1099   }
1100   return 0;
1101 }
1102 
1103 /* Acquire a pointer value */
1104 
1105 SWIGRUNTIME int
SWIG_Perl_AcquirePtr(SWIG_MAYBE_PERL_OBJECT SV * sv,int own)1106 SWIG_Perl_AcquirePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, int own) {
1107   /* TODO */
1108   return 0;
1109 }
1110 
1111 /* Function for getting a pointer value */
1112 
1113 SWIGRUNTIME int
SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV * sv,void ** ptr,swig_type_info * _t,int flags,int * own)1114 SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags, int *own) {
1115   swig_cast_info *tc;
1116   void *voidptr = (void *)0;
1117   SV *tsv = 0;
1118 
1119   if (own)
1120     *own = 0;
1121 
1122   /* If magical, apply more magic */
1123   if (SvGMAGICAL(sv))
1124     mg_get(sv);
1125 
1126   /* Check to see if this is an object */
1127   if (sv_isobject(sv)) {
1128     IV tmp = 0;
1129     tsv = (SV*) SvRV(sv);
1130     if ((SvTYPE(tsv) == SVt_PVHV)) {
1131       MAGIC *mg;
1132       if (SvMAGICAL(tsv)) {
1133         mg = mg_find(tsv,'P');
1134         if (mg) {
1135           sv = mg->mg_obj;
1136           if (sv_isobject(sv)) {
1137 	    tsv = (SV*)SvRV(sv);
1138             tmp = SvIV(tsv);
1139           }
1140         }
1141       } else {
1142         return SWIG_ERROR;
1143       }
1144     } else {
1145       tmp = SvIV(tsv);
1146     }
1147     voidptr = INT2PTR(void *,tmp);
1148   } else if (! SvOK(sv)) {            /* Check for undef */
1149     *(ptr) = (void *) 0;
1150     return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
1151   } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
1152     if (!SvROK(sv)) {
1153       /* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value.  */
1154       if (SvIOK(sv)) {
1155         return SWIG_ERROR;
1156       } else {
1157         /* NULL pointer (reference to undef). */
1158         *(ptr) = (void *) 0;
1159         return SWIG_OK;
1160       }
1161     } else {
1162       return SWIG_ERROR;
1163     }
1164   } else {                            /* Don't know what it is */
1165     return SWIG_ERROR;
1166   }
1167   if (_t) {
1168     /* Now see if the types match */
1169     char *_c = HvNAME(SvSTASH(SvRV(sv)));
1170     tc = SWIG_TypeProxyCheck(_c,_t);
1171 #ifdef SWIG_DIRECTORS
1172     if (!tc && !sv_derived_from(sv,SWIG_Perl_TypeProxyName(_t))) {
1173 #else
1174     if (!tc) {
1175 #endif
1176       return SWIG_ERROR;
1177     }
1178     {
1179       int newmemory = 0;
1180       *ptr = SWIG_TypeCast(tc,voidptr,&newmemory);
1181       if (newmemory == SWIG_CAST_NEW_MEMORY) {
1182         assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
1183         if (own)
1184           *own = *own | SWIG_CAST_NEW_MEMORY;
1185       }
1186     }
1187   } else {
1188     *ptr = voidptr;
1189   }
1190 
1191   /*
1192    *  DISOWN implementation: we need a perl guru to check this one.
1193    */
1194   if (tsv && (flags & SWIG_POINTER_DISOWN)) {
1195     /*
1196      *  almost copy paste code from below SWIG_POINTER_OWN setting
1197      */
1198     SV *obj = sv;
1199     HV *stash = SvSTASH(SvRV(obj));
1200     GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
1201     if (isGV(gv)) {
1202       HV *hv = GvHVn(gv);
1203       /*
1204        * To set ownership (see below), a newSViv(1) entry is added.
1205        * Hence, to remove ownership, we delete the entry.
1206        */
1207       if (hv_exists_ent(hv, obj, 0)) {
1208 	hv_delete_ent(hv, obj, 0, 0);
1209       }
1210     }
1211   }
1212   return SWIG_OK;
1213 }
1214 
1215 SWIGRUNTIME int
1216 SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
1217   return SWIG_Perl_ConvertPtrAndOwn(sv, ptr, _t, flags, 0);
1218 }
1219 
1220 SWIGRUNTIME void
1221 SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
1222   if (ptr && (flags & (SWIG_SHADOW | SWIG_POINTER_OWN))) {
1223     SV *self;
1224     SV *obj=newSV(0);
1225     HV *hash=newHV();
1226     HV *stash;
1227     sv_setref_pv(obj, SWIG_Perl_TypeProxyName(t), ptr);
1228     stash=SvSTASH(SvRV(obj));
1229     if (flags & SWIG_POINTER_OWN) {
1230       HV *hv;
1231       GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
1232       if (!isGV(gv))
1233         gv_init(gv, stash, "OWNER", 5, FALSE);
1234       hv=GvHVn(gv);
1235       hv_store_ent(hv, obj, newSViv(1), 0);
1236     }
1237     sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
1238     SvREFCNT_dec(obj);
1239     self=newRV_noinc((SV *)hash);
1240     sv_setsv(sv, self);
1241     SvREFCNT_dec((SV *)self);
1242     sv_bless(sv, stash);
1243   }
1244   else {
1245     sv_setref_pv(sv, SWIG_Perl_TypeProxyName(t), ptr);
1246   }
1247 }
1248 
1249 SWIGRUNTIMEINLINE SV *
1250 SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
1251   SV *result = sv_newmortal();
1252   SWIG_MakePtr(result, ptr, t, flags);
1253   return result;
1254 }
1255 
1256 SWIGRUNTIME void
1257 SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
1258   char result[1024];
1259   char *r = result;
1260   if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return;
1261   *(r++) = '_';
1262   r = SWIG_PackData(r,ptr,sz);
1263   strcpy(r,SWIG_Perl_TypeProxyName(type));
1264   sv_setpv(sv, result);
1265 }
1266 
1267 SWIGRUNTIME SV *
1268 SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) {
1269   SV *result = sv_newmortal();
1270   SWIG_Perl_MakePackedObj(result, ptr, sz, type);
1271   return result;
1272 }
1273 
1274 /* Convert a packed pointer value */
1275 SWIGRUNTIME int
1276 SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) {
1277   swig_cast_info *tc;
1278   const char  *c = 0;
1279 
1280   if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
1281   c = SvPV_nolen(obj);
1282   /* Pointer values must start with leading underscore */
1283   if (*c != '_') return SWIG_ERROR;
1284   c++;
1285   c = SWIG_UnpackData(c,ptr,sz);
1286   if (ty) {
1287     tc = SWIG_TypeCheck(c,ty);
1288     if (!tc) return SWIG_ERROR;
1289   }
1290   return SWIG_OK;
1291 }
1292 
1293 
1294 /* Macros for low-level exception handling */
1295 #define SWIG_croak(x)    { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }
1296 
1297 
1298 typedef XSPROTO(SwigPerlWrapper);
1299 typedef SwigPerlWrapper *SwigPerlWrapperPtr;
1300 
1301 /* Structure for command table */
1302 typedef struct {
1303   const char         *name;
1304   SwigPerlWrapperPtr  wrapper;
1305 } swig_command_info;
1306 
1307 /* Information for constant table */
1308 
1309 #define SWIG_INT     1
1310 #define SWIG_FLOAT   2
1311 #define SWIG_STRING  3
1312 #define SWIG_POINTER 4
1313 #define SWIG_BINARY  5
1314 
1315 /* Constant information structure */
1316 typedef struct swig_constant_info {
1317     int              type;
1318     const char      *name;
1319     long             lvalue;
1320     double           dvalue;
1321     void            *pvalue;
1322     swig_type_info **ptype;
1323 } swig_constant_info;
1324 
1325 
1326 /* Structure for variable table */
1327 typedef struct {
1328   const char   *name;
1329   SwigMagicFunc   set;
1330   SwigMagicFunc   get;
1331   swig_type_info  **type;
1332 } swig_variable_info;
1333 
1334 /* Magic variable code */
1335 #ifndef PERL_OBJECT
1336 # ifdef __cplusplus
1337 #  define swig_create_magic(s,a,b,c) _swig_create_magic(s,const_cast<char*>(a),b,c)
1338 # else
1339 #  define swig_create_magic(s,a,b,c) _swig_create_magic(s,(char*)(a),b,c)
1340 # endif
1341 # ifndef MULTIPLICITY
1342 SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *))
1343 # else
1344 SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *))
1345 # endif
1346 #else
1347 #  define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
1348 SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *))
1349 #endif
1350 {
1351   MAGIC *mg;
1352   sv_magic(sv,sv,'U',name,strlen(name));
1353   mg = mg_find(sv,'U');
1354   mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
1355   mg->mg_virtual->svt_get = (SwigMagicFunc) get;
1356   mg->mg_virtual->svt_set = (SwigMagicFunc) set;
1357   mg->mg_virtual->svt_len = 0;
1358   mg->mg_virtual->svt_clear = 0;
1359   mg->mg_virtual->svt_free = 0;
1360 }
1361 
1362 
1363 SWIGRUNTIME swig_module_info *
1364 SWIG_Perl_GetModule(void *SWIGUNUSEDPARM(clientdata)) {
1365   static void *type_pointer = (void *)0;
1366   SV *pointer;
1367 
1368   /* first check if pointer already created */
1369   if (!type_pointer) {
1370     pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI);
1371     if (pointer && SvOK(pointer)) {
1372       type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
1373     }
1374   }
1375 
1376   return (swig_module_info *) type_pointer;
1377 }
1378 
1379 SWIGRUNTIME void
1380 SWIG_Perl_SetModule(swig_module_info *module) {
1381   SV *pointer;
1382 
1383   /* create a new pointer */
1384   pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI);
1385   sv_setiv(pointer, PTR2IV(module));
1386 }
1387 
1388 #ifdef __cplusplus
1389 }
1390 #endif
1391 
1392 /* Workaround perl5 global namespace pollution. Note that undefining library
1393  * functions like fopen will not solve the problem on all platforms as fopen
1394  * might be a macro on Windows but not necessarily on other operating systems. */
1395 #ifdef do_open
1396   #undef do_open
1397 #endif
1398 #ifdef do_close
1399   #undef do_close
1400 #endif
1401 #ifdef do_exec
1402   #undef do_exec
1403 #endif
1404 #ifdef scalar
1405   #undef scalar
1406 #endif
1407 #ifdef list
1408   #undef list
1409 #endif
1410 #ifdef apply
1411   #undef apply
1412 #endif
1413 #ifdef convert
1414   #undef convert
1415 #endif
1416 #ifdef Error
1417   #undef Error
1418 #endif
1419 #ifdef form
1420   #undef form
1421 #endif
1422 #ifdef vform
1423   #undef vform
1424 #endif
1425 #ifdef LABEL
1426   #undef LABEL
1427 #endif
1428 #ifdef METHOD
1429   #undef METHOD
1430 #endif
1431 #ifdef Move
1432   #undef Move
1433 #endif
1434 #ifdef yylex
1435   #undef yylex
1436 #endif
1437 #ifdef yyparse
1438   #undef yyparse
1439 #endif
1440 #ifdef yyerror
1441   #undef yyerror
1442 #endif
1443 #ifdef invert
1444   #undef invert
1445 #endif
1446 #ifdef ref
1447   #undef ref
1448 #endif
1449 #ifdef read
1450   #undef read
1451 #endif
1452 #ifdef write
1453   #undef write
1454 #endif
1455 #ifdef eof
1456   #undef eof
1457 #endif
1458 #ifdef close
1459   #undef close
1460 #endif
1461 #ifdef rewind
1462   #undef rewind
1463 #endif
1464 #ifdef free
1465   #undef free
1466 #endif
1467 #ifdef malloc
1468   #undef malloc
1469 #endif
1470 #ifdef calloc
1471   #undef calloc
1472 #endif
1473 #ifdef Stat
1474   #undef Stat
1475 #endif
1476 #ifdef check
1477   #undef check
1478 #endif
1479 #ifdef seekdir
1480   #undef seekdir
1481 #endif
1482 #ifdef open
1483   #undef open
1484 #endif
1485 #ifdef readdir
1486   #undef readdir
1487 #endif
1488 #ifdef bind
1489   #undef bind
1490 #endif
1491 #ifdef access
1492   #undef access
1493 #endif
1494 #ifdef stat
1495   #undef stat
1496 #endif
1497 #ifdef seed
1498   #undef seed
1499 #endif
1500 
1501 #ifdef bool
1502   /* Leave if macro is from C99 stdbool.h */
1503   #ifndef __bool_true_false_are_defined
1504     #undef bool
1505   #endif
1506 #endif
1507 
1508 
1509 
1510 
1511 #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0)
1512 
1513 #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else
1514 
1515 
1516 
1517 /* -------- TYPES TABLE (BEGIN) -------- */
1518 
1519 #define SWIGTYPE_p_FILE swig_types[0]
1520 #define SWIGTYPE_p_char swig_types[1]
1521 #define SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_int__void swig_types[2]
1522 #define SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void swig_types[3]
1523 static swig_type_info *swig_types[5];
1524 static swig_module_info swig_module = {swig_types, 4, 0, 0, 0, 0};
1525 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
1526 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
1527 
1528 /* -------- TYPES TABLE (END) -------- */
1529 
1530 #define SWIG_init    boot_Math__GSL__Machine
1531 
1532 #define SWIG_name   "Math::GSL::Machinec::boot_Math__GSL__Machine"
1533 #define SWIG_prefix "Math::GSL::Machinec::"
1534 
1535 #define SWIGVERSION 0x040001
1536 #define SWIG_VERSION SWIGVERSION
1537 
1538 
1539 #define SWIG_as_voidptr(a) (void *)((const void *)(a))
1540 #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a))
1541 
1542 
1543 #ifdef __cplusplus
1544 extern "C"
1545 #endif
1546 #ifndef PERL_OBJECT
1547 #ifndef MULTIPLICITY
1548 SWIGEXPORT void SWIG_init (CV* cv);
1549 #else
1550 SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);
1551 #endif
1552 #else
1553 SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
1554 #endif
1555 
1556 
1557     #include "gsl/gsl_machine.h"
1558 
1559 
1560 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(double value)1561 SWIG_From_double  SWIG_PERL_DECL_ARGS_1(double value)
1562 {
1563   return sv_2mortal(newSVnv(value));
1564 }
1565 
1566 
1567 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(long value)1568 SWIG_From_long  SWIG_PERL_DECL_ARGS_1(long value)
1569 {
1570   SV *sv;
1571   if (IVSIZE >= sizeof(value) || (value >= IV_MIN && value <= IV_MAX))
1572     sv = newSViv(value);
1573   else
1574     sv = newSVpvf("%ld", value);
1575   return sv_2mortal(sv);
1576 }
1577 
1578 
1579 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(int value)1580 SWIG_From_int  SWIG_PERL_DECL_ARGS_1(int value)
1581 {
1582   return SWIG_From_long  SWIG_PERL_CALL_ARGS_1(value);
1583 }
1584 
1585 
1586 SWIGINTERN swig_type_info*
SWIG_pchar_descriptor(void)1587 SWIG_pchar_descriptor(void)
1588 {
1589   static int init = 0;
1590   static swig_type_info* info = 0;
1591   if (!init) {
1592     info = SWIG_TypeQuery("_p_char");
1593     init = 1;
1594   }
1595   return info;
1596 }
1597 
1598 
1599 SWIGINTERN int
SWIG_AsCharPtrAndSize(SV * obj,char ** cptr,size_t * psize,int * alloc)1600 SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
1601 {
1602   if (SvMAGICAL(obj)) {
1603      SV *tmp = sv_newmortal();
1604      SvSetSV(tmp, obj);
1605      obj = tmp;
1606   }
1607   if (SvPOK(obj)) {
1608     STRLEN len = 0;
1609     char *cstr = SvPV(obj, len);
1610     size_t size = len + 1;
1611     if (cptr)  {
1612       if (alloc) {
1613 	if (*alloc == SWIG_NEWOBJ) {
1614 	  *cptr = (char *)memcpy(malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));
1615 	} else {
1616 	  *cptr = cstr;
1617 	  *alloc = SWIG_OLDOBJ;
1618 	}
1619       }
1620     }
1621     if (psize) *psize = size;
1622     return SWIG_OK;
1623   } else {
1624     swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
1625     if (pchar_descriptor) {
1626       char* vptr = 0;
1627       if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
1628 	if (cptr) *cptr = vptr;
1629 	if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
1630 	if (alloc) *alloc = SWIG_OLDOBJ;
1631 	return SWIG_OK;
1632       }
1633     }
1634   }
1635   return SWIG_TypeError;
1636 }
1637 
1638 
1639 
1640 
1641 
1642 #include <limits.h>
1643 #if !defined(SWIG_NO_LLONG_MAX)
1644 # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
1645 #   define LLONG_MAX __LONG_LONG_MAX__
1646 #   define LLONG_MIN (-LLONG_MAX - 1LL)
1647 #   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
1648 # endif
1649 #endif
1650 
1651 
1652 #include <stdlib.h>
1653 #ifdef _MSC_VER
1654 # ifndef strtoull
1655 #  define strtoull _strtoui64
1656 # endif
1657 # ifndef strtoll
1658 #  define strtoll _strtoi64
1659 # endif
1660 #endif
1661 
1662 
1663 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,double * val)1664 SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val)
1665 {
1666   if (SvNIOK(obj)) {
1667     if (val) *val = SvNV(obj);
1668     return SWIG_OK;
1669   } else if (SvIOK(obj)) {
1670     if (val) *val = (double) SvIV(obj);
1671     return SWIG_AddCast(SWIG_OK);
1672   } else {
1673     const char *nptr = SvPV_nolen(obj);
1674     if (nptr) {
1675       char *endptr;
1676       double v;
1677       errno = 0;
1678       v = strtod(nptr, &endptr);
1679       if (errno == ERANGE) {
1680 	errno = 0;
1681 	return SWIG_OverflowError;
1682       } else {
1683 	if (*endptr == '\0') {
1684 	  if (val) *val = v;
1685 	  return SWIG_Str2NumCast(SWIG_OK);
1686 	}
1687       }
1688     }
1689   }
1690   return SWIG_TypeError;
1691 }
1692 
1693 
1694 #include <float.h>
1695 
1696 
1697 #include <math.h>
1698 
1699 
1700 SWIGINTERNINLINE int
SWIG_CanCastAsInteger(double * d,double min,double max)1701 SWIG_CanCastAsInteger(double *d, double min, double max) {
1702   double x = *d;
1703   if ((min <= x && x <= max)) {
1704    double fx = floor(x);
1705    double cx = ceil(x);
1706    double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
1707    if ((errno == EDOM) || (errno == ERANGE)) {
1708      errno = 0;
1709    } else {
1710      double summ, reps, diff;
1711      if (rd < x) {
1712        diff = x - rd;
1713      } else if (rd > x) {
1714        diff = rd - x;
1715      } else {
1716        return 1;
1717      }
1718      summ = rd + x;
1719      reps = diff/summ;
1720      if (reps < 8*DBL_EPSILON) {
1721        *d = rd;
1722        return 1;
1723      }
1724    }
1725   }
1726   return 0;
1727 }
1728 
1729 
1730 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,long * val)1731 SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val)
1732 {
1733   if (SvUOK(obj)) {
1734     UV v = SvUV(obj);
1735     if (UVSIZE < sizeof(*val) || v <= LONG_MAX) {
1736       if (val) *val = v;
1737       return SWIG_OK;
1738     }
1739     return SWIG_OverflowError;
1740   } else if (SvIOK(obj)) {
1741     IV v = SvIV(obj);
1742     if (IVSIZE <= sizeof(*val) || (v >= LONG_MIN && v <= LONG_MAX)) {
1743       if(val) *val = v;
1744       return SWIG_OK;
1745     }
1746     return SWIG_OverflowError;
1747   } else {
1748     int dispatch = 0;
1749     const char *nptr = SvPV_nolen(obj);
1750     if (nptr) {
1751       char *endptr;
1752       long v;
1753       errno = 0;
1754       v = strtol(nptr, &endptr,0);
1755       if (errno == ERANGE) {
1756 	errno = 0;
1757 	return SWIG_OverflowError;
1758       } else {
1759 	if (*endptr == '\0') {
1760 	  if (val) *val = v;
1761 	  return SWIG_Str2NumCast(SWIG_OK);
1762 	}
1763       }
1764     }
1765     if (!dispatch) {
1766       double d;
1767       int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
1768       if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
1769 	if (val) *val = (long)(d);
1770 	return res;
1771       }
1772     }
1773   }
1774   return SWIG_TypeError;
1775 }
1776 
1777 
1778 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,int * val)1779 SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val)
1780 {
1781   long v;
1782   int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v);
1783   if (SWIG_IsOK(res)) {
1784     if ((v < INT_MIN || v > INT_MAX)) {
1785       return SWIG_OverflowError;
1786     } else {
1787       if (val) *val = (int)(v);
1788     }
1789   }
1790   return res;
1791 }
1792 
1793 
1794 SWIGINTERNINLINE SV *
SWIG_FromCharPtrAndSize(const char * carray,size_t size)1795 SWIG_FromCharPtrAndSize(const char* carray, size_t size)
1796 {
1797   SV *obj = sv_newmortal();
1798   if (carray) {
1799     sv_setpvn(obj, carray, size);
1800   } else {
1801     sv_setsv(obj, &PL_sv_undef);
1802   }
1803   return obj;
1804 }
1805 
1806 
1807 SWIGINTERNINLINE SV *
SWIG_FromCharPtr(const char * cptr)1808 SWIG_FromCharPtr(const char *cptr)
1809 {
1810   return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
1811 }
1812 
1813 
1814     #include "gsl/gsl_nan.h"
1815     #include "gsl/gsl_errno.h"
1816     #include "gsl/gsl_math.h"
1817     #include "gsl/gsl_monte.h"
1818 
1819 
1820     struct perl_array {
1821         I32 len;
1822         AV *array;
1823     };
1824 
1825 
1826 
1827 enum awType { awDouble, awFloat, awInt, awUnsigned };
1828 
1829 typedef struct {
1830     I32 size;
1831     enum awType type;
1832     void * data;
1833 } array_wrapper;
1834 
array_wrapper_alloc(int numelem,enum awType type)1835 array_wrapper * array_wrapper_alloc(int numelem, enum awType type){
1836     array_wrapper * rv =  malloc(sizeof(array_wrapper));
1837 
1838     if (rv == NULL)
1839         croak("array_wrapper_alloc: can't malloc wrapper\n");
1840 
1841     switch (type){
1842         case awDouble:
1843             rv->data = malloc(sizeof(double) * numelem);
1844             break;
1845         case awFloat:
1846             rv->data = malloc(sizeof(float) * numelem);
1847             break;
1848         case awInt:
1849             rv->data = malloc(sizeof(int) * numelem);
1850             break;
1851         case awUnsigned:
1852             rv->data = malloc(sizeof(unsigned int) * numelem);
1853             break;
1854         default:
1855             croak("array_wrapper_alloc: type should be awDouble, awFloat, awInt, or awUnsigned");
1856     }
1857 
1858     if (rv->data == NULL)
1859         croak("array_wrapper_alloc: can't malloc data");
1860 
1861     rv->size = numelem;
1862     rv->type = type;
1863     return rv;
1864 }
1865 
array_wrapper_free(array_wrapper * daw)1866 void array_wrapper_free(array_wrapper * daw){
1867     free(daw->data);
1868     free(daw);
1869 }
1870 
1871 
1872     /* structure to hold required information while the gsl function call
1873        for each callback
1874      */
1875     struct gsl_function_perl {
1876         gsl_function C_gsl_function;
1877         SV * function;
1878         SV * params;
1879     };
1880 
1881     struct gsl_function_fdf_perl {
1882         gsl_function_fdf C_gsl_function_fdf;
1883         SV * f;
1884         SV * df;
1885         SV * fdf;
1886         SV * params;
1887     };
1888 
1889     struct gsl_monte_function_perl {
1890         gsl_monte_function C_gsl_monte_function;
1891         SV * f;
1892         SV * dim;
1893         SV * params;
1894     };
1895 
gsl_function_perl_free(struct gsl_function_perl * perl_f)1896     void gsl_function_perl_free(struct gsl_function_perl * perl_f){
1897         if (perl_f != NULL) {
1898             SvREFCNT_dec(perl_f->function);
1899             SvREFCNT_dec(perl_f->params);
1900             Safefree(perl_f);
1901         }
1902     }
1903 
gsl_function_fdf_perl_free(struct gsl_function_fdf_perl * perl_fdf)1904     void gsl_function_fdf_perl_free(struct gsl_function_fdf_perl * perl_fdf){
1905         if (perl_fdf != NULL) {
1906 	  SvREFCNT_dec(perl_fdf->f);
1907 	  SvREFCNT_dec(perl_fdf->df);
1908 	  SvREFCNT_dec(perl_fdf->fdf);
1909 	  SvREFCNT_dec(perl_fdf->params);
1910 	  Safefree(perl_fdf);
1911         }
1912     }
1913 
1914     /* These functions (C callbacks) calls the perl callbacks.
1915        Info for perl callback can be found using the 'void*params' parameter
1916     */
call_gsl_function_x_params(SV * function,double x,SV * params)1917     double call_gsl_function_x_params(SV* function, double x, SV *params){
1918         unsigned int count;
1919         double y;
1920         dSP;
1921 
1922         //fprintf(stderr, "LOOKUP CALLBACK\n");
1923         ENTER;
1924         SAVETMPS;
1925 
1926         PUSHMARK(SP);
1927         XPUSHs(sv_2mortal(newSVnv((double)x)));
1928         XPUSHs(params);
1929         PUTBACK;                                /* make local stack pointer global */
1930 
1931         count = call_sv(function, G_SCALAR);
1932         SPAGAIN;
1933 
1934         if (count != 1)
1935                 croak("Expected to call subroutine in scalar context!");
1936 
1937         y = POPn;
1938 
1939         PUTBACK;                                /* make local stack pointer global */
1940         FREETMPS;
1941         LEAVE;
1942 
1943         return y;
1944     }
1945 
call_gsl_function(double x,void * params)1946     double call_gsl_function(double x , void *params){
1947         struct gsl_function_perl *F=(struct gsl_function_perl*)params;
1948 	return call_gsl_function_x_params( F->function, x, F->params );
1949     }
1950 
call_gsl_function_fdf_f(double x,void * params)1951     double call_gsl_function_fdf_f(double x , void *params){
1952         struct gsl_function_fdf_perl *F=(struct gsl_function_fdf_perl*)params;
1953 	return call_gsl_function_x_params( F->f, x, F->params );
1954     }
1955 
call_gsl_function_fdf_df(double x,void * params)1956     double call_gsl_function_fdf_df(double x , void *params){
1957         struct gsl_function_fdf_perl *F=(struct gsl_function_fdf_perl*)params;
1958 	return call_gsl_function_x_params( F->df, x, F->params );
1959     }
1960 
call_gsl_function_fdf_fdf(double x,void * params,double * f,double * df)1961     void call_gsl_function_fdf_fdf(double x , void *params, double *f, double *df ){
1962         struct gsl_function_fdf_perl *F=(struct gsl_function_fdf_perl*)params;
1963 
1964         dSP;
1965 
1966         ENTER;
1967         SAVETMPS;
1968 
1969         PUSHMARK(SP);
1970 	EXTEND(SP, 2);
1971         PUSHs(sv_2mortal(newSVnv((double)x)));
1972         PUSHs(F->params);
1973         PUTBACK;                                /* make local stack pointer global */
1974 
1975 	{
1976 	  unsigned int count = call_sv(F->fdf, G_ARRAY);
1977 	  SPAGAIN;
1978 
1979 	  if (count != 2)
1980 	    croak( "Expected two return values, got %d", count );
1981 	}
1982 
1983 	*df = POPn;
1984         *f = POPn;
1985 
1986         PUTBACK;                                /* make local stack pointer global */
1987         FREETMPS;
1988         LEAVE;
1989     }
1990 
call_gsl_monte_function(double * x_array,size_t dim,void * params)1991     double call_gsl_monte_function(double *x_array , size_t dim, void *params){
1992         struct gsl_monte_function_perl *F=(struct gsl_monte_function_perl*)params;
1993         unsigned int count;
1994         unsigned int i;
1995         AV* perl_array;
1996         double y;
1997         dSP;
1998 
1999         //fprintf(stderr, "LOOKUP CALLBACK\n");
2000         ENTER;
2001         SAVETMPS;
2002 
2003         PUSHMARK(SP);
2004         perl_array=newAV();
2005         sv_2mortal((SV*)perl_array);
2006         XPUSHs(sv_2mortal(newRV((SV *)perl_array)));
2007         for(i=0; i<dim; i++) {
2008                 /* no mortal : it is referenced by the array */
2009                 av_push(perl_array, newSVnv(x_array[i]));
2010         }
2011         XPUSHs(sv_2mortal(newSViv(dim)));
2012         XPUSHs(F->params);
2013         PUTBACK;                                /* make local stack pointer global */
2014 
2015         count = call_sv(F->f, G_SCALAR);
2016         SPAGAIN;
2017 
2018         if (count != 1)
2019                 croak("Expected to call subroutine in scalar context!");
2020 
2021         y = POPn;
2022 
2023         PUTBACK;                                /* make local stack pointer global */
2024         FREETMPS;
2025         LEAVE;
2026 
2027         return y;
2028     }
2029 
2030 
gsl_function_fdf_extract(char * param_name,HV * hash,SV * func[])2031   void gsl_function_fdf_extract( char* param_name, HV* hash, SV* func[] ) {
2032     static const char *keys[3] = { "f", "df", "fdf" };
2033 
2034     int ikey;
2035 
2036     for ( ikey = 0 ; ikey < 3 ; ++ikey ) {
2037       func[ikey] = 0;
2038       const char* key = keys[ikey];
2039       /* it just so happens that strlen(keys[ikey]) == ikey + 1 */
2040       SV** pp_sv = hv_fetch( hash, key, ikey+1, 0 );
2041       SV* function;
2042 
2043       if ( !pp_sv )
2044 	croak("Math::GSL : %s: missing key %s!", param_name, key);
2045 
2046       function = *pp_sv;
2047 
2048       if ( SvPOK(function) || ( SvROK( function ) && SvTYPE(SvRV(function)) == SVt_PVCV ) ) {
2049         /* hold on to SV after the enclosing hash goes away */
2050         SvREFCNT_inc( function );
2051 	func[ikey] = function;
2052       }
2053       else {
2054 	croak( "Math::GSL : %s:  key %s is not a reference to code!", param_name, key);
2055       }
2056     }
2057   }
2058 
2059 
2060 #ifdef __cplusplus
2061 extern "C" {
2062 #endif
2063 
2064 #ifdef PERL_OBJECT
2065 #define MAGIC_CLASS _wrap_Math__GSL__Machine_var::
2066 class _wrap_Math__GSL__Machine_var : public CPerlObj {
2067 public:
2068 #else
2069 #define MAGIC_CLASS
2070 #endif
swig_magic_readonly(pTHX_ SV * SWIGUNUSEDPARM (sv),MAGIC * SWIGUNUSEDPARM (mg))2071 SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) {
2072     MAGIC_PPERL
2073     croak("Value is read-only.");
2074     return 0;
2075 }
2076 
2077 
2078 #ifdef PERL_OBJECT
2079 };
2080 #endif
2081 
2082 #ifdef __cplusplus
2083 }
2084 #endif
2085 
2086 #ifdef __cplusplus
2087 extern "C" {
2088 #endif
XS(_wrap_gsl_error)2089 XS(_wrap_gsl_error) {
2090   {
2091     char *arg1 = (char *) 0 ;
2092     char *arg2 = (char *) 0 ;
2093     int arg3 ;
2094     int arg4 ;
2095     int res1 ;
2096     char *buf1 = 0 ;
2097     int alloc1 = 0 ;
2098     int res2 ;
2099     char *buf2 = 0 ;
2100     int alloc2 = 0 ;
2101     int val3 ;
2102     int ecode3 = 0 ;
2103     int val4 ;
2104     int ecode4 = 0 ;
2105     int argvi = 0;
2106     dXSARGS;
2107 
2108     if ((items < 4) || (items > 4)) {
2109       SWIG_croak("Usage: gsl_error(reason,file,line,gsl_errno);");
2110     }
2111     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2112     if (!SWIG_IsOK(res1)) {
2113       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gsl_error" "', argument " "1"" of type '" "char const *""'");
2114     }
2115     arg1 = (char *)(buf1);
2116     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
2117     if (!SWIG_IsOK(res2)) {
2118       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gsl_error" "', argument " "2"" of type '" "char const *""'");
2119     }
2120     arg2 = (char *)(buf2);
2121     ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
2122     if (!SWIG_IsOK(ecode3)) {
2123       SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "gsl_error" "', argument " "3"" of type '" "int""'");
2124     }
2125     arg3 = (int)(val3);
2126     ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
2127     if (!SWIG_IsOK(ecode4)) {
2128       SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "gsl_error" "', argument " "4"" of type '" "int""'");
2129     }
2130     arg4 = (int)(val4);
2131     gsl_error((char const *)arg1,(char const *)arg2,arg3,arg4);
2132     ST(argvi) = &PL_sv_undef;
2133     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2134     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
2135 
2136 
2137     XSRETURN(argvi);
2138   fail:
2139     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2140     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
2141 
2142 
2143     SWIG_croak_null();
2144   }
2145 }
2146 
2147 
XS(_wrap_gsl_stream_printf)2148 XS(_wrap_gsl_stream_printf) {
2149   {
2150     char *arg1 = (char *) 0 ;
2151     char *arg2 = (char *) 0 ;
2152     int arg3 ;
2153     char *arg4 = (char *) 0 ;
2154     int res1 ;
2155     char *buf1 = 0 ;
2156     int alloc1 = 0 ;
2157     int res2 ;
2158     char *buf2 = 0 ;
2159     int alloc2 = 0 ;
2160     int val3 ;
2161     int ecode3 = 0 ;
2162     int res4 ;
2163     char *buf4 = 0 ;
2164     int alloc4 = 0 ;
2165     int argvi = 0;
2166     dXSARGS;
2167 
2168     if ((items < 4) || (items > 4)) {
2169       SWIG_croak("Usage: gsl_stream_printf(label,file,line,reason);");
2170     }
2171     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2172     if (!SWIG_IsOK(res1)) {
2173       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gsl_stream_printf" "', argument " "1"" of type '" "char const *""'");
2174     }
2175     arg1 = (char *)(buf1);
2176     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
2177     if (!SWIG_IsOK(res2)) {
2178       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gsl_stream_printf" "', argument " "2"" of type '" "char const *""'");
2179     }
2180     arg2 = (char *)(buf2);
2181     ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
2182     if (!SWIG_IsOK(ecode3)) {
2183       SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "gsl_stream_printf" "', argument " "3"" of type '" "int""'");
2184     }
2185     arg3 = (int)(val3);
2186     res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
2187     if (!SWIG_IsOK(res4)) {
2188       SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "gsl_stream_printf" "', argument " "4"" of type '" "char const *""'");
2189     }
2190     arg4 = (char *)(buf4);
2191     gsl_stream_printf((char const *)arg1,(char const *)arg2,arg3,(char const *)arg4);
2192     ST(argvi) = &PL_sv_undef;
2193     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2194     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
2195 
2196     if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
2197     XSRETURN(argvi);
2198   fail:
2199     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2200     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
2201 
2202     if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
2203     SWIG_croak_null();
2204   }
2205 }
2206 
2207 
XS(_wrap_gsl_strerror)2208 XS(_wrap_gsl_strerror) {
2209   {
2210     int arg1 ;
2211     int val1 ;
2212     int ecode1 = 0 ;
2213     int argvi = 0;
2214     char *result = 0 ;
2215     dXSARGS;
2216 
2217     if ((items < 1) || (items > 1)) {
2218       SWIG_croak("Usage: gsl_strerror(gsl_errno);");
2219     }
2220     ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
2221     if (!SWIG_IsOK(ecode1)) {
2222       SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "gsl_strerror" "', argument " "1"" of type '" "int""'");
2223     }
2224     arg1 = (int)(val1);
2225     result = (char *)gsl_strerror(arg1);
2226     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2227 
2228     XSRETURN(argvi);
2229   fail:
2230 
2231     SWIG_croak_null();
2232   }
2233 }
2234 
2235 
XS(_wrap_gsl_set_error_handler)2236 XS(_wrap_gsl_set_error_handler) {
2237   {
2238     gsl_error_handler_t *arg1 = (gsl_error_handler_t *) 0 ;
2239     int argvi = 0;
2240     gsl_error_handler_t *result = 0 ;
2241     dXSARGS;
2242 
2243     if ((items < 1) || (items > 1)) {
2244       SWIG_croak("Usage: gsl_set_error_handler(new_handler);");
2245     }
2246     {
2247       int res = SWIG_ConvertFunctionPtr(ST(0), (void**)(&arg1), SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_int__void);
2248       if (!SWIG_IsOK(res)) {
2249         SWIG_exception_fail(SWIG_ArgError(res), "in method '" "gsl_set_error_handler" "', argument " "1"" of type '" "gsl_error_handler_t *""'");
2250       }
2251     }
2252     result = (gsl_error_handler_t *)gsl_set_error_handler(arg1);
2253     ST(argvi) = SWIG_NewFunctionPtrObj((void *)(result), SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_int__void); argvi++ ;
2254 
2255     XSRETURN(argvi);
2256   fail:
2257 
2258     SWIG_croak_null();
2259   }
2260 }
2261 
2262 
XS(_wrap_gsl_set_error_handler_off)2263 XS(_wrap_gsl_set_error_handler_off) {
2264   {
2265     int argvi = 0;
2266     gsl_error_handler_t *result = 0 ;
2267     dXSARGS;
2268 
2269     if ((items < 0) || (items > 0)) {
2270       SWIG_croak("Usage: gsl_set_error_handler_off();");
2271     }
2272     result = (gsl_error_handler_t *)gsl_set_error_handler_off();
2273     ST(argvi) = SWIG_NewFunctionPtrObj((void *)(result), SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_int__void); argvi++ ;
2274     XSRETURN(argvi);
2275   fail:
2276     SWIG_croak_null();
2277   }
2278 }
2279 
2280 
XS(_wrap_gsl_set_stream_handler)2281 XS(_wrap_gsl_set_stream_handler) {
2282   {
2283     gsl_stream_handler_t *arg1 = (gsl_stream_handler_t *) 0 ;
2284     int argvi = 0;
2285     gsl_stream_handler_t *result = 0 ;
2286     dXSARGS;
2287 
2288     if ((items < 1) || (items > 1)) {
2289       SWIG_croak("Usage: gsl_set_stream_handler(new_handler);");
2290     }
2291     {
2292       int res = SWIG_ConvertFunctionPtr(ST(0), (void**)(&arg1), SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void);
2293       if (!SWIG_IsOK(res)) {
2294         SWIG_exception_fail(SWIG_ArgError(res), "in method '" "gsl_set_stream_handler" "', argument " "1"" of type '" "gsl_stream_handler_t *""'");
2295       }
2296     }
2297     result = (gsl_stream_handler_t *)gsl_set_stream_handler(arg1);
2298     ST(argvi) = SWIG_NewFunctionPtrObj((void *)(result), SWIGTYPE_p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void); argvi++ ;
2299 
2300     XSRETURN(argvi);
2301   fail:
2302 
2303     SWIG_croak_null();
2304   }
2305 }
2306 
2307 
XS(_wrap_gsl_set_stream)2308 XS(_wrap_gsl_set_stream) {
2309   {
2310     FILE *arg1 = (FILE *) 0 ;
2311     void *argp1 = 0 ;
2312     int res1 = 0 ;
2313     int argvi = 0;
2314     FILE *result = 0 ;
2315     dXSARGS;
2316 
2317     if ((items < 1) || (items > 1)) {
2318       SWIG_croak("Usage: gsl_set_stream(new_stream);");
2319     }
2320     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FILE, 0 |  0 );
2321     if (!SWIG_IsOK(res1)) {
2322       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gsl_set_stream" "', argument " "1"" of type '" "FILE *""'");
2323     }
2324     arg1 = (FILE *)(argp1);
2325     result = (FILE *)gsl_set_stream(arg1);
2326     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FILE, 0 | 0); argvi++ ;
2327 
2328     XSRETURN(argvi);
2329   fail:
2330 
2331     SWIG_croak_null();
2332   }
2333 }
2334 
2335 
2336 
2337 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
2338 
2339 static swig_type_info _swigt__p_FILE = {"_p_FILE", "FILE *", 0, 0, (void*)0, 0};
2340 static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
2341 static swig_type_info _swigt__p_f_p_q_const__char_p_q_const__char_int_int__void = {"_p_f_p_q_const__char_p_q_const__char_int_int__void", "void (*)(char const *,char const *,int,int)|gsl_error_handler_t *", 0, 0, (void*)0, 0};
2342 static swig_type_info _swigt__p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void = {"_p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void", "gsl_stream_handler_t *|void (*)(char const *,char const *,int,char const *)", 0, 0, (void*)0, 0};
2343 
2344 static swig_type_info *swig_type_initial[] = {
2345   &_swigt__p_FILE,
2346   &_swigt__p_char,
2347   &_swigt__p_f_p_q_const__char_p_q_const__char_int_int__void,
2348   &_swigt__p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void,
2349 };
2350 
2351 static swig_cast_info _swigc__p_FILE[] = {  {&_swigt__p_FILE, 0, 0, 0},{0, 0, 0, 0}};
2352 static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
2353 static swig_cast_info _swigc__p_f_p_q_const__char_p_q_const__char_int_int__void[] = {  {&_swigt__p_f_p_q_const__char_p_q_const__char_int_int__void, 0, 0, 0},{0, 0, 0, 0}};
2354 static swig_cast_info _swigc__p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void[] = {  {&_swigt__p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void, 0, 0, 0},{0, 0, 0, 0}};
2355 
2356 static swig_cast_info *swig_cast_initial[] = {
2357   _swigc__p_FILE,
2358   _swigc__p_char,
2359   _swigc__p_f_p_q_const__char_p_q_const__char_int_int__void,
2360   _swigc__p_f_p_q_const__char_p_q_const__char_int_p_q_const__char__void,
2361 };
2362 
2363 
2364 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
2365 
2366 static swig_constant_info swig_constants[] = {
2367 {0,0,0,0,0,0}
2368 };
2369 #ifdef __cplusplus
2370 }
2371 #endif
2372 static swig_variable_info swig_variables[] = {
2373 {0,0,0,0}
2374 };
2375 static swig_command_info swig_commands[] = {
2376 {"Math::GSL::Machinec::gsl_error", _wrap_gsl_error},
2377 {"Math::GSL::Machinec::gsl_stream_printf", _wrap_gsl_stream_printf},
2378 {"Math::GSL::Machinec::gsl_strerror", _wrap_gsl_strerror},
2379 {"Math::GSL::Machinec::gsl_set_error_handler", _wrap_gsl_set_error_handler},
2380 {"Math::GSL::Machinec::gsl_set_error_handler_off", _wrap_gsl_set_error_handler_off},
2381 {"Math::GSL::Machinec::gsl_set_stream_handler", _wrap_gsl_set_stream_handler},
2382 {"Math::GSL::Machinec::gsl_set_stream", _wrap_gsl_set_stream},
2383 {0,0}
2384 };
2385 /* -----------------------------------------------------------------------------
2386  * Type initialization:
2387  * This problem is tough by the requirement that no dynamic
2388  * memory is used. Also, since swig_type_info structures store pointers to
2389  * swig_cast_info structures and swig_cast_info structures store pointers back
2390  * to swig_type_info structures, we need some lookup code at initialization.
2391  * The idea is that swig generates all the structures that are needed.
2392  * The runtime then collects these partially filled structures.
2393  * The SWIG_InitializeModule function takes these initial arrays out of
2394  * swig_module, and does all the lookup, filling in the swig_module.types
2395  * array with the correct data and linking the correct swig_cast_info
2396  * structures together.
2397  *
2398  * The generated swig_type_info structures are assigned statically to an initial
2399  * array. We just loop through that array, and handle each type individually.
2400  * First we lookup if this type has been already loaded, and if so, use the
2401  * loaded structure instead of the generated one. Then we have to fill in the
2402  * cast linked list. The cast data is initially stored in something like a
2403  * two-dimensional array. Each row corresponds to a type (there are the same
2404  * number of rows as there are in the swig_type_initial array). Each entry in
2405  * a column is one of the swig_cast_info structures for that type.
2406  * The cast_initial array is actually an array of arrays, because each row has
2407  * a variable number of columns. So to actually build the cast linked list,
2408  * we find the array of casts associated with the type, and loop through it
2409  * adding the casts to the list. The one last trick we need to do is making
2410  * sure the type pointer in the swig_cast_info struct is correct.
2411  *
2412  * First off, we lookup the cast->type name to see if it is already loaded.
2413  * There are three cases to handle:
2414  *  1) If the cast->type has already been loaded AND the type we are adding
2415  *     casting info to has not been loaded (it is in this module), THEN we
2416  *     replace the cast->type pointer with the type pointer that has already
2417  *     been loaded.
2418  *  2) If BOTH types (the one we are adding casting info to, and the
2419  *     cast->type) are loaded, THEN the cast info has already been loaded by
2420  *     the previous module so we just ignore it.
2421  *  3) Finally, if cast->type has not already been loaded, then we add that
2422  *     swig_cast_info to the linked list (because the cast->type) pointer will
2423  *     be correct.
2424  * ----------------------------------------------------------------------------- */
2425 
2426 #ifdef __cplusplus
2427 extern "C" {
2428 #if 0
2429 } /* c-mode */
2430 #endif
2431 #endif
2432 
2433 #if 0
2434 #define SWIGRUNTIME_DEBUG
2435 #endif
2436 
2437 
2438 SWIGRUNTIME void
SWIG_InitializeModule(void * clientdata)2439 SWIG_InitializeModule(void *clientdata) {
2440   size_t i;
2441   swig_module_info *module_head, *iter;
2442   int init;
2443 
2444   /* check to see if the circular list has been setup, if not, set it up */
2445   if (swig_module.next==0) {
2446     /* Initialize the swig_module */
2447     swig_module.type_initial = swig_type_initial;
2448     swig_module.cast_initial = swig_cast_initial;
2449     swig_module.next = &swig_module;
2450     init = 1;
2451   } else {
2452     init = 0;
2453   }
2454 
2455   /* Try and load any already created modules */
2456   module_head = SWIG_GetModule(clientdata);
2457   if (!module_head) {
2458     /* This is the first module loaded for this interpreter */
2459     /* so set the swig module into the interpreter */
2460     SWIG_SetModule(clientdata, &swig_module);
2461   } else {
2462     /* the interpreter has loaded a SWIG module, but has it loaded this one? */
2463     iter=module_head;
2464     do {
2465       if (iter==&swig_module) {
2466         /* Our module is already in the list, so there's nothing more to do. */
2467         return;
2468       }
2469       iter=iter->next;
2470     } while (iter!= module_head);
2471 
2472     /* otherwise we must add our module into the list */
2473     swig_module.next = module_head->next;
2474     module_head->next = &swig_module;
2475   }
2476 
2477   /* When multiple interpreters are used, a module could have already been initialized in
2478        a different interpreter, but not yet have a pointer in this interpreter.
2479        In this case, we do not want to continue adding types... everything should be
2480        set up already */
2481   if (init == 0) return;
2482 
2483   /* Now work on filling in swig_module.types */
2484 #ifdef SWIGRUNTIME_DEBUG
2485   printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
2486 #endif
2487   for (i = 0; i < swig_module.size; ++i) {
2488     swig_type_info *type = 0;
2489     swig_type_info *ret;
2490     swig_cast_info *cast;
2491 
2492 #ifdef SWIGRUNTIME_DEBUG
2493     printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
2494 #endif
2495 
2496     /* if there is another module already loaded */
2497     if (swig_module.next != &swig_module) {
2498       type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
2499     }
2500     if (type) {
2501       /* Overwrite clientdata field */
2502 #ifdef SWIGRUNTIME_DEBUG
2503       printf("SWIG_InitializeModule: found type %s\n", type->name);
2504 #endif
2505       if (swig_module.type_initial[i]->clientdata) {
2506         type->clientdata = swig_module.type_initial[i]->clientdata;
2507 #ifdef SWIGRUNTIME_DEBUG
2508         printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
2509 #endif
2510       }
2511     } else {
2512       type = swig_module.type_initial[i];
2513     }
2514 
2515     /* Insert casting types */
2516     cast = swig_module.cast_initial[i];
2517     while (cast->type) {
2518       /* Don't need to add information already in the list */
2519       ret = 0;
2520 #ifdef SWIGRUNTIME_DEBUG
2521       printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
2522 #endif
2523       if (swig_module.next != &swig_module) {
2524         ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
2525 #ifdef SWIGRUNTIME_DEBUG
2526         if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
2527 #endif
2528       }
2529       if (ret) {
2530         if (type == swig_module.type_initial[i]) {
2531 #ifdef SWIGRUNTIME_DEBUG
2532           printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
2533 #endif
2534           cast->type = ret;
2535           ret = 0;
2536         } else {
2537           /* Check for casting already in the list */
2538           swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
2539 #ifdef SWIGRUNTIME_DEBUG
2540           if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
2541 #endif
2542           if (!ocast) ret = 0;
2543         }
2544       }
2545 
2546       if (!ret) {
2547 #ifdef SWIGRUNTIME_DEBUG
2548         printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
2549 #endif
2550         if (type->cast) {
2551           type->cast->prev = cast;
2552           cast->next = type->cast;
2553         }
2554         type->cast = cast;
2555       }
2556       cast++;
2557     }
2558     /* Set entry in modules->types array equal to the type */
2559     swig_module.types[i] = type;
2560   }
2561   swig_module.types[i] = 0;
2562 
2563 #ifdef SWIGRUNTIME_DEBUG
2564   printf("**** SWIG_InitializeModule: Cast List ******\n");
2565   for (i = 0; i < swig_module.size; ++i) {
2566     int j = 0;
2567     swig_cast_info *cast = swig_module.cast_initial[i];
2568     printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
2569     while (cast->type) {
2570       printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
2571       cast++;
2572       ++j;
2573     }
2574     printf("---- Total casts: %d\n",j);
2575   }
2576   printf("**** SWIG_InitializeModule: Cast List ******\n");
2577 #endif
2578 }
2579 
2580 /* This function will propagate the clientdata field of type to
2581 * any new swig_type_info structures that have been added into the list
2582 * of equivalent types.  It is like calling
2583 * SWIG_TypeClientData(type, clientdata) a second time.
2584 */
2585 SWIGRUNTIME void
SWIG_PropagateClientData(void)2586 SWIG_PropagateClientData(void) {
2587   size_t i;
2588   swig_cast_info *equiv;
2589   static int init_run = 0;
2590 
2591   if (init_run) return;
2592   init_run = 1;
2593 
2594   for (i = 0; i < swig_module.size; i++) {
2595     if (swig_module.types[i]->clientdata) {
2596       equiv = swig_module.types[i]->cast;
2597       while (equiv) {
2598         if (!equiv->converter) {
2599           if (equiv->type && !equiv->type->clientdata)
2600           SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
2601         }
2602         equiv = equiv->next;
2603       }
2604     }
2605   }
2606 }
2607 
2608 #ifdef __cplusplus
2609 #if 0
2610 {
2611   /* c-mode */
2612 #endif
2613 }
2614 #endif
2615 
2616 
2617 
2618 #if defined(__cplusplus) && ! defined(XSPROTO)
2619 extern "C"
2620 #endif
2621 
XS(SWIG_init)2622 XS(SWIG_init) {
2623   dXSARGS;
2624   int i;
2625   (void)items;
2626 
2627   SWIG_InitializeModule(0);
2628 
2629   /* Install commands */
2630   for (i = 0; swig_commands[i].name; i++) {
2631     /* Casts only needed for Perl < 5.10. */
2632 #ifdef __cplusplus
2633     newXS(const_cast<char*>(swig_commands[i].name), swig_commands[i].wrapper, const_cast<char*>(__FILE__));
2634 #else
2635     newXS((char*)swig_commands[i].name, swig_commands[i].wrapper, (char*)__FILE__);
2636 #endif
2637   }
2638 
2639   /* Install variables */
2640   for (i = 0; swig_variables[i].name; i++) {
2641     SV *sv;
2642     sv = get_sv(swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI);
2643     if (swig_variables[i].type) {
2644       SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
2645     } else {
2646       sv_setiv(sv,(IV) 0);
2647     }
2648     swig_create_magic(sv, swig_variables[i].name, swig_variables[i].set, swig_variables[i].get);
2649   }
2650 
2651   /* Install constant */
2652   for (i = 0; swig_constants[i].type; i++) {
2653     SV *sv;
2654     sv = get_sv(swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI);
2655     switch(swig_constants[i].type) {
2656     case SWIG_INT:
2657       sv_setiv(sv, (IV) swig_constants[i].lvalue);
2658       break;
2659     case SWIG_FLOAT:
2660       sv_setnv(sv, (double) swig_constants[i].dvalue);
2661       break;
2662     case SWIG_STRING:
2663       sv_setpv(sv, (const char *) swig_constants[i].pvalue);
2664       break;
2665     case SWIG_POINTER:
2666       SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
2667       break;
2668     case SWIG_BINARY:
2669       SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
2670       break;
2671     default:
2672       break;
2673     }
2674     SvREADONLY_on(sv);
2675   }
2676 
2677   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2678     SV *sv = get_sv((char*) SWIG_prefix "GSL_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2679     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.2204460492503131e-16)));
2680     SvREADONLY_on(sv);
2681   } while(0) /*@SWIG@*/;
2682   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2683     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2684     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.4901161193847656e-08)));
2685     SvREADONLY_on(sv);
2686   } while(0) /*@SWIG@*/;
2687   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2688     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2689     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(6.0554544523933429e-06)));
2690     SvREADONLY_on(sv);
2691   } while(0) /*@SWIG@*/;
2692   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2693     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2694     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.2207031250000000e-04)));
2695     SvREADONLY_on(sv);
2696   } while(0) /*@SWIG@*/;
2697   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2698     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2699     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(7.4009597974140505e-04)));
2700     SvREADONLY_on(sv);
2701   } while(0) /*@SWIG@*/;
2702   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2703     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2704     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.4607833005759251e-03)));
2705     SvREADONLY_on(sv);
2706   } while(0) /*@SWIG@*/;
2707   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2708     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_DBL_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2709     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-3.6043653389117154e+01))));
2710     SvREADONLY_on(sv);
2711   } while(0) /*@SWIG@*/;
2712   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2713     SV *sv = get_sv((char*) SWIG_prefix "GSL_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2714     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.2250738585072014e-308)));
2715     SvREADONLY_on(sv);
2716   } while(0) /*@SWIG@*/;
2717   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2718     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2719     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.4916681462400413e-154)));
2720     SvREADONLY_on(sv);
2721   } while(0) /*@SWIG@*/;
2722   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2723     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2724     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.8126442852362996e-103)));
2725     SvREADONLY_on(sv);
2726   } while(0) /*@SWIG@*/;
2727   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2728     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2729     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.2213386697554620e-77)));
2730     SvREADONLY_on(sv);
2731   } while(0) /*@SWIG@*/;
2732   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2733     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2734     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.9476022969691763e-62)));
2735     SvREADONLY_on(sv);
2736   } while(0) /*@SWIG@*/;
2737   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2738     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2739     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(5.3034368905798218e-52)));
2740     SvREADONLY_on(sv);
2741   } while(0) /*@SWIG@*/;
2742   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2743     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_DBL_MIN", TRUE | 0x2 | GV_ADDMULTI);
2744     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-7.0839641853226408e+02))));
2745     SvREADONLY_on(sv);
2746   } while(0) /*@SWIG@*/;
2747   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2748     SV *sv = get_sv((char*) SWIG_prefix "GSL_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2749     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.7976931348623157e+308)));
2750     SvREADONLY_on(sv);
2751   } while(0) /*@SWIG@*/;
2752   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2753     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2754     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.3407807929942596e+154)));
2755     SvREADONLY_on(sv);
2756   } while(0) /*@SWIG@*/;
2757   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2758     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2759     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(5.6438030941222897e+102)));
2760     SvREADONLY_on(sv);
2761   } while(0) /*@SWIG@*/;
2762   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2763     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2764     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.1579208923731620e+77)));
2765     SvREADONLY_on(sv);
2766   } while(0) /*@SWIG@*/;
2767   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2768     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2769     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(4.4765466227572707e+61)));
2770     SvREADONLY_on(sv);
2771   } while(0) /*@SWIG@*/;
2772   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2773     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2774     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.3756689782295612e+51)));
2775     SvREADONLY_on(sv);
2776   } while(0) /*@SWIG@*/;
2777   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2778     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_DBL_MAX", TRUE | 0x2 | GV_ADDMULTI);
2779     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(7.0978271289338397e+02)));
2780     SvREADONLY_on(sv);
2781   } while(0) /*@SWIG@*/;
2782   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2783     SV *sv = get_sv((char*) SWIG_prefix "GSL_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2784     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.1920928955078125e-07)));
2785     SvREADONLY_on(sv);
2786   } while(0) /*@SWIG@*/;
2787   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2788     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2789     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(3.4526698300124393e-04)));
2790     SvREADONLY_on(sv);
2791   } while(0) /*@SWIG@*/;
2792   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2793     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2794     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(4.9215666011518501e-03)));
2795     SvREADONLY_on(sv);
2796   } while(0) /*@SWIG@*/;
2797   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2798     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2799     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.8581361171917516e-02)));
2800     SvREADONLY_on(sv);
2801   } while(0) /*@SWIG@*/;
2802   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2803     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2804     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(4.1234622211652937e-02)));
2805     SvREADONLY_on(sv);
2806   } while(0) /*@SWIG@*/;
2807   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2808     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2809     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(7.0153878019335827e-02)));
2810     SvREADONLY_on(sv);
2811   } while(0) /*@SWIG@*/;
2812   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2813     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_FLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2814     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-1.5942385152878742e+01))));
2815     SvREADONLY_on(sv);
2816   } while(0) /*@SWIG@*/;
2817   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2818     SV *sv = get_sv((char*) SWIG_prefix "GSL_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2819     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.1754943508222875e-38)));
2820     SvREADONLY_on(sv);
2821   } while(0) /*@SWIG@*/;
2822   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2823     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2824     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.0842021724855044e-19)));
2825     SvREADONLY_on(sv);
2826   } while(0) /*@SWIG@*/;
2827   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2828     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2829     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.2737367544323241e-13)));
2830     SvREADONLY_on(sv);
2831   } while(0) /*@SWIG@*/;
2832   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2833     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2834     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(3.2927225399135965e-10)));
2835     SvREADONLY_on(sv);
2836   } while(0) /*@SWIG@*/;
2837   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2838     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2839     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.5944428542140822e-08)));
2840     SvREADONLY_on(sv);
2841   } while(0) /*@SWIG@*/;
2842   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2843     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2844     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(4.7683715820312542e-07)));
2845     SvREADONLY_on(sv);
2846   } while(0) /*@SWIG@*/;
2847   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2848     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_FLT_MIN", TRUE | 0x2 | GV_ADDMULTI);
2849     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-8.7336544750553102e+01))));
2850     SvREADONLY_on(sv);
2851   } while(0) /*@SWIG@*/;
2852   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2853     SV *sv = get_sv((char*) SWIG_prefix "GSL_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2854     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(3.4028234663852886e+38)));
2855     SvREADONLY_on(sv);
2856   } while(0) /*@SWIG@*/;
2857   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2858     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2859     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.8446743523953730e+19)));
2860     SvREADONLY_on(sv);
2861   } while(0) /*@SWIG@*/;
2862   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2863     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2864     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(6.9814635196223242e+12)));
2865     SvREADONLY_on(sv);
2866   } while(0) /*@SWIG@*/;
2867   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2868     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2869     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(4.2949672319999986e+09)));
2870     SvREADONLY_on(sv);
2871   } while(0) /*@SWIG@*/;
2872   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2873     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2874     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(5.0859007855960041e+07)));
2875     SvREADONLY_on(sv);
2876   } while(0) /*@SWIG@*/;
2877   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2878     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2879     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.6422459233807749e+06)));
2880     SvREADONLY_on(sv);
2881   } while(0) /*@SWIG@*/;
2882   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2883     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_FLT_MAX", TRUE | 0x2 | GV_ADDMULTI);
2884     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(8.8722839052068352e+01)));
2885     SvREADONLY_on(sv);
2886   } while(0) /*@SWIG@*/;
2887   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2888     SV *sv = get_sv((char*) SWIG_prefix "GSL_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2889     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(4.8828125000000000e-04)));
2890     SvREADONLY_on(sv);
2891   } while(0) /*@SWIG@*/;
2892   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2893     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2894     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.2097086912079612e-02)));
2895     SvREADONLY_on(sv);
2896   } while(0) /*@SWIG@*/;
2897   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2898     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2899     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(7.8745065618429588e-02)));
2900     SvREADONLY_on(sv);
2901   } while(0) /*@SWIG@*/;
2902   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2903     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2904     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.4865088937534013e-01)));
2905     SvREADONLY_on(sv);
2906   } while(0) /*@SWIG@*/;
2907   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2908     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2909     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.1763764082403100e-01)));
2910     SvREADONLY_on(sv);
2911   } while(0) /*@SWIG@*/;
2912   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2913     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2914     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.8061551207734325e-01)));
2915     SvREADONLY_on(sv);
2916   } while(0) /*@SWIG@*/;
2917   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2918     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_SFLT_EPSILON", TRUE | 0x2 | GV_ADDMULTI);
2919     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-7.6246189861593985e+00))));
2920     SvREADONLY_on(sv);
2921   } while(0) /*@SWIG@*/;
2922   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2923     SV *sv = get_sv((char*) SWIG_prefix "GSL_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2924     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.2204460492503131e-16)));
2925     SvREADONLY_on(sv);
2926   } while(0) /*@SWIG@*/;
2927   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2928     SV *sv = get_sv((char*) SWIG_prefix "GSL_SQRT_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2929     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(3.2e-08)));
2930     SvREADONLY_on(sv);
2931   } while(0) /*@SWIG@*/;
2932   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2933     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT3_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2934     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(1.0e-05)));
2935     SvREADONLY_on(sv);
2936   } while(0) /*@SWIG@*/;
2937   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2938     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT4_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2939     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(0.000178)));
2940     SvREADONLY_on(sv);
2941   } while(0) /*@SWIG@*/;
2942   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2943     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT5_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2944     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(0.00100)));
2945     SvREADONLY_on(sv);
2946   } while(0) /*@SWIG@*/;
2947   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2948     SV *sv = get_sv((char*) SWIG_prefix "GSL_ROOT6_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2949     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(0.00316)));
2950     SvREADONLY_on(sv);
2951   } while(0) /*@SWIG@*/;
2952   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2953     SV *sv = get_sv((char*) SWIG_prefix "GSL_LOG_MACH_EPS", TRUE | 0x2 | GV_ADDMULTI);
2954     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-34.54))));
2955     SvREADONLY_on(sv);
2956   } while(0) /*@SWIG@*/;
2957   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2958     SV *sv = get_sv((char*) SWIG_prefix "GSL_VERSION", TRUE | 0x2 | GV_ADDMULTI);
2959     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(2.7)));
2960     SvREADONLY_on(sv);
2961   } while(0) /*@SWIG@*/;
2962   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2963     SV *sv = get_sv((char*) SWIG_prefix "GSL_MAJOR_VERSION", TRUE | 0x2 | GV_ADDMULTI);
2964     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(2)));
2965     SvREADONLY_on(sv);
2966   } while(0) /*@SWIG@*/;
2967   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2968     SV *sv = get_sv((char*) SWIG_prefix "GSL_MINOR_VERSION", TRUE | 0x2 | GV_ADDMULTI);
2969     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(7)));
2970     SvREADONLY_on(sv);
2971   } while(0) /*@SWIG@*/;
2972   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2973     SV *sv = get_sv((char*) SWIG_prefix "GSL_POSZERO", TRUE | 0x2 | GV_ADDMULTI);
2974     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((+0.0))));
2975     SvREADONLY_on(sv);
2976   } while(0) /*@SWIG@*/;
2977   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2978     SV *sv = get_sv((char*) SWIG_prefix "GSL_NEGZERO", TRUE | 0x2 | GV_ADDMULTI);
2979     sv_setsv(sv, SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)((-0.0))));
2980     SvREADONLY_on(sv);
2981   } while(0) /*@SWIG@*/;
2982   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2983     SV *sv = get_sv((char*) SWIG_prefix "GSL_SUCCESS", TRUE | 0x2 | GV_ADDMULTI);
2984     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_SUCCESS)));
2985     SvREADONLY_on(sv);
2986   } while(0) /*@SWIG@*/;
2987   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2988     SV *sv = get_sv((char*) SWIG_prefix "GSL_FAILURE", TRUE | 0x2 | GV_ADDMULTI);
2989     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_FAILURE)));
2990     SvREADONLY_on(sv);
2991   } while(0) /*@SWIG@*/;
2992   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2993     SV *sv = get_sv((char*) SWIG_prefix "GSL_CONTINUE", TRUE | 0x2 | GV_ADDMULTI);
2994     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_CONTINUE)));
2995     SvREADONLY_on(sv);
2996   } while(0) /*@SWIG@*/;
2997   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
2998     SV *sv = get_sv((char*) SWIG_prefix "GSL_EDOM", TRUE | 0x2 | GV_ADDMULTI);
2999     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EDOM)));
3000     SvREADONLY_on(sv);
3001   } while(0) /*@SWIG@*/;
3002   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3003     SV *sv = get_sv((char*) SWIG_prefix "GSL_ERANGE", TRUE | 0x2 | GV_ADDMULTI);
3004     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ERANGE)));
3005     SvREADONLY_on(sv);
3006   } while(0) /*@SWIG@*/;
3007   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3008     SV *sv = get_sv((char*) SWIG_prefix "GSL_EFAULT", TRUE | 0x2 | GV_ADDMULTI);
3009     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EFAULT)));
3010     SvREADONLY_on(sv);
3011   } while(0) /*@SWIG@*/;
3012   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3013     SV *sv = get_sv((char*) SWIG_prefix "GSL_EINVAL", TRUE | 0x2 | GV_ADDMULTI);
3014     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EINVAL)));
3015     SvREADONLY_on(sv);
3016   } while(0) /*@SWIG@*/;
3017   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3018     SV *sv = get_sv((char*) SWIG_prefix "GSL_EFAILED", TRUE | 0x2 | GV_ADDMULTI);
3019     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EFAILED)));
3020     SvREADONLY_on(sv);
3021   } while(0) /*@SWIG@*/;
3022   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3023     SV *sv = get_sv((char*) SWIG_prefix "GSL_EFACTOR", TRUE | 0x2 | GV_ADDMULTI);
3024     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EFACTOR)));
3025     SvREADONLY_on(sv);
3026   } while(0) /*@SWIG@*/;
3027   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3028     SV *sv = get_sv((char*) SWIG_prefix "GSL_ESANITY", TRUE | 0x2 | GV_ADDMULTI);
3029     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ESANITY)));
3030     SvREADONLY_on(sv);
3031   } while(0) /*@SWIG@*/;
3032   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3033     SV *sv = get_sv((char*) SWIG_prefix "GSL_ENOMEM", TRUE | 0x2 | GV_ADDMULTI);
3034     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ENOMEM)));
3035     SvREADONLY_on(sv);
3036   } while(0) /*@SWIG@*/;
3037   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3038     SV *sv = get_sv((char*) SWIG_prefix "GSL_EBADFUNC", TRUE | 0x2 | GV_ADDMULTI);
3039     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EBADFUNC)));
3040     SvREADONLY_on(sv);
3041   } while(0) /*@SWIG@*/;
3042   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3043     SV *sv = get_sv((char*) SWIG_prefix "GSL_ERUNAWAY", TRUE | 0x2 | GV_ADDMULTI);
3044     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ERUNAWAY)));
3045     SvREADONLY_on(sv);
3046   } while(0) /*@SWIG@*/;
3047   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3048     SV *sv = get_sv((char*) SWIG_prefix "GSL_EMAXITER", TRUE | 0x2 | GV_ADDMULTI);
3049     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EMAXITER)));
3050     SvREADONLY_on(sv);
3051   } while(0) /*@SWIG@*/;
3052   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3053     SV *sv = get_sv((char*) SWIG_prefix "GSL_EZERODIV", TRUE | 0x2 | GV_ADDMULTI);
3054     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EZERODIV)));
3055     SvREADONLY_on(sv);
3056   } while(0) /*@SWIG@*/;
3057   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3058     SV *sv = get_sv((char*) SWIG_prefix "GSL_EBADTOL", TRUE | 0x2 | GV_ADDMULTI);
3059     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EBADTOL)));
3060     SvREADONLY_on(sv);
3061   } while(0) /*@SWIG@*/;
3062   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3063     SV *sv = get_sv((char*) SWIG_prefix "GSL_ETOL", TRUE | 0x2 | GV_ADDMULTI);
3064     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ETOL)));
3065     SvREADONLY_on(sv);
3066   } while(0) /*@SWIG@*/;
3067   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3068     SV *sv = get_sv((char*) SWIG_prefix "GSL_EUNDRFLW", TRUE | 0x2 | GV_ADDMULTI);
3069     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EUNDRFLW)));
3070     SvREADONLY_on(sv);
3071   } while(0) /*@SWIG@*/;
3072   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3073     SV *sv = get_sv((char*) SWIG_prefix "GSL_EOVRFLW", TRUE | 0x2 | GV_ADDMULTI);
3074     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EOVRFLW)));
3075     SvREADONLY_on(sv);
3076   } while(0) /*@SWIG@*/;
3077   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3078     SV *sv = get_sv((char*) SWIG_prefix "GSL_ELOSS", TRUE | 0x2 | GV_ADDMULTI);
3079     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ELOSS)));
3080     SvREADONLY_on(sv);
3081   } while(0) /*@SWIG@*/;
3082   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3083     SV *sv = get_sv((char*) SWIG_prefix "GSL_EROUND", TRUE | 0x2 | GV_ADDMULTI);
3084     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EROUND)));
3085     SvREADONLY_on(sv);
3086   } while(0) /*@SWIG@*/;
3087   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3088     SV *sv = get_sv((char*) SWIG_prefix "GSL_EBADLEN", TRUE | 0x2 | GV_ADDMULTI);
3089     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EBADLEN)));
3090     SvREADONLY_on(sv);
3091   } while(0) /*@SWIG@*/;
3092   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3093     SV *sv = get_sv((char*) SWIG_prefix "GSL_ENOTSQR", TRUE | 0x2 | GV_ADDMULTI);
3094     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ENOTSQR)));
3095     SvREADONLY_on(sv);
3096   } while(0) /*@SWIG@*/;
3097   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3098     SV *sv = get_sv((char*) SWIG_prefix "GSL_ESING", TRUE | 0x2 | GV_ADDMULTI);
3099     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ESING)));
3100     SvREADONLY_on(sv);
3101   } while(0) /*@SWIG@*/;
3102   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3103     SV *sv = get_sv((char*) SWIG_prefix "GSL_EDIVERGE", TRUE | 0x2 | GV_ADDMULTI);
3104     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EDIVERGE)));
3105     SvREADONLY_on(sv);
3106   } while(0) /*@SWIG@*/;
3107   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3108     SV *sv = get_sv((char*) SWIG_prefix "GSL_EUNSUP", TRUE | 0x2 | GV_ADDMULTI);
3109     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EUNSUP)));
3110     SvREADONLY_on(sv);
3111   } while(0) /*@SWIG@*/;
3112   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3113     SV *sv = get_sv((char*) SWIG_prefix "GSL_EUNIMPL", TRUE | 0x2 | GV_ADDMULTI);
3114     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EUNIMPL)));
3115     SvREADONLY_on(sv);
3116   } while(0) /*@SWIG@*/;
3117   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3118     SV *sv = get_sv((char*) SWIG_prefix "GSL_ECACHE", TRUE | 0x2 | GV_ADDMULTI);
3119     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ECACHE)));
3120     SvREADONLY_on(sv);
3121   } while(0) /*@SWIG@*/;
3122   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3123     SV *sv = get_sv((char*) SWIG_prefix "GSL_ETABLE", TRUE | 0x2 | GV_ADDMULTI);
3124     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ETABLE)));
3125     SvREADONLY_on(sv);
3126   } while(0) /*@SWIG@*/;
3127   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3128     SV *sv = get_sv((char*) SWIG_prefix "GSL_ENOPROG", TRUE | 0x2 | GV_ADDMULTI);
3129     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ENOPROG)));
3130     SvREADONLY_on(sv);
3131   } while(0) /*@SWIG@*/;
3132   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3133     SV *sv = get_sv((char*) SWIG_prefix "GSL_ENOPROGJ", TRUE | 0x2 | GV_ADDMULTI);
3134     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ENOPROGJ)));
3135     SvREADONLY_on(sv);
3136   } while(0) /*@SWIG@*/;
3137   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3138     SV *sv = get_sv((char*) SWIG_prefix "GSL_ETOLF", TRUE | 0x2 | GV_ADDMULTI);
3139     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ETOLF)));
3140     SvREADONLY_on(sv);
3141   } while(0) /*@SWIG@*/;
3142   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3143     SV *sv = get_sv((char*) SWIG_prefix "GSL_ETOLX", TRUE | 0x2 | GV_ADDMULTI);
3144     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ETOLX)));
3145     SvREADONLY_on(sv);
3146   } while(0) /*@SWIG@*/;
3147   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3148     SV *sv = get_sv((char*) SWIG_prefix "GSL_ETOLG", TRUE | 0x2 | GV_ADDMULTI);
3149     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_ETOLG)));
3150     SvREADONLY_on(sv);
3151   } while(0) /*@SWIG@*/;
3152   /*@SWIG:/usr/share/swig4.0/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3153     SV *sv = get_sv((char*) SWIG_prefix "GSL_EOF", TRUE | 0x2 | GV_ADDMULTI);
3154     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(GSL_EOF)));
3155     SvREADONLY_on(sv);
3156   } while(0) /*@SWIG@*/;
3157   ST(0) = &PL_sv_yes;
3158   XSRETURN(1);
3159 }
3160 
3161