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