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