Imported Upstream version 3.3.3
[debian/amanda] / perl / Amanda / Device.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_Device swig_types[0]
1510 #define SWIGTYPE_p_DevicePropertyBase swig_types[1]
1511 #define SWIGTYPE_p_DirectTCPConnection swig_types[2]
1512 #define SWIGTYPE_p_GSList swig_types[3]
1513 #define SWIGTYPE_p_GValue swig_types[4]
1514 #define SWIGTYPE_p_a_STRMAX__char swig_types[5]
1515 #define SWIGTYPE_p_char swig_types[6]
1516 #define SWIGTYPE_p_double swig_types[7]
1517 #define SWIGTYPE_p_dumpfile_t swig_types[8]
1518 #define SWIGTYPE_p_float swig_types[9]
1519 #define SWIGTYPE_p_guint swig_types[10]
1520 #define SWIGTYPE_p_guint32 swig_types[11]
1521 #define SWIGTYPE_p_guint64 swig_types[12]
1522 #define SWIGTYPE_p_int swig_types[13]
1523 #define SWIGTYPE_p_p_DirectTCPAddr swig_types[14]
1524 #define SWIGTYPE_p_unsigned_char swig_types[15]
1525 static swig_type_info *swig_types[17];
1526 static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0};
1527 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
1528 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
1529
1530 /* -------- TYPES TABLE (END) -------- */
1531
1532 #define SWIG_init    boot_Amanda__Device
1533
1534 #define SWIG_name   "Amanda::Devicec::boot_Amanda__Device"
1535 #define SWIG_prefix "Amanda::Devicec::"
1536
1537 #define SWIGVERSION 0x020004 
1538 #define SWIG_VERSION SWIGVERSION
1539
1540
1541 #define SWIG_as_voidptr(a) (void *)((const void *)(a)) 
1542 #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) 
1543
1544
1545 #ifdef __cplusplus
1546 extern "C"
1547 #endif
1548 #ifndef PERL_OBJECT
1549 #ifndef MULTIPLICITY
1550 SWIGEXPORT void SWIG_init (CV* cv);
1551 #else
1552 SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);
1553 #endif
1554 #else
1555 SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
1556 #endif
1557
1558
1559 #include "amglue.h"
1560
1561
1562 #include "amglue.h"
1563
1564
1565 #include "amglue.h"
1566
1567
1568 #include "device.h"
1569 #include "property.h"
1570 #include "fileheader.h"
1571 #include "glib-util.h"
1572 #include "simpleprng.h"
1573 #include "amanda.h"
1574 #include "sockaddr-util.h"
1575
1576
1577
1578 /* Utility functions for typemaps, below */
1579
1580 /* return a new, mortal SV corresponding to the given GValue
1581  *
1582  * @param value: the value to convert
1583  * @returns: a new, mortal SV
1584  */
1585 static SV *
1586 set_sv_from_gvalue(GValue *value)
1587 {
1588     GType fundamental = G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value));
1589     SV *sv = NULL;
1590
1591     /* complex reference types */
1592     switch (fundamental) {
1593         case G_TYPE_LONG:
1594             return sv_2mortal(amglue_newSVi64(g_value_get_long(value)));
1595
1596         case G_TYPE_ULONG:
1597             return sv_2mortal(amglue_newSVu64(g_value_get_ulong(value)));
1598
1599         case G_TYPE_INT64:
1600             return sv_2mortal(amglue_newSVi64(g_value_get_int64(value)));
1601
1602         case G_TYPE_UINT64:
1603             return sv_2mortal(amglue_newSVu64(g_value_get_uint64(value)));
1604     }
1605
1606     /* simple types that can be constructed with sv_set*v */
1607     sv = sv_newmortal();
1608     switch (fundamental) {
1609         case G_TYPE_CHAR:
1610             sv_setiv(sv, g_value_get_char(value));
1611             break;
1612
1613         case G_TYPE_UCHAR:
1614             sv_setuv(sv, g_value_get_uchar(value));
1615             break;
1616
1617         case G_TYPE_BOOLEAN:
1618             sv_setiv(sv, g_value_get_boolean(value));
1619             break;
1620
1621         case G_TYPE_INT:
1622             sv_setiv(sv, g_value_get_int(value));
1623             break;
1624
1625         case G_TYPE_UINT:
1626             sv_setuv(sv, g_value_get_uint(value));
1627             break;
1628
1629         case G_TYPE_FLOAT:
1630             sv_setnv(sv, g_value_get_float(value));
1631             break;
1632
1633         case G_TYPE_DOUBLE:
1634             sv_setnv(sv, g_value_get_double(value));
1635             break;
1636
1637         case G_TYPE_STRING:
1638             sv_setpv(sv, g_value_get_string(value));
1639             break;
1640
1641         case G_TYPE_ENUM:
1642             sv_setiv(sv, g_value_get_enum(value));
1643             break;
1644
1645         case G_TYPE_FLAGS:
1646             sv_setiv(sv, g_value_get_flags(value));
1647             break;
1648
1649         /* Unsupported */
1650         default:
1651         case G_TYPE_POINTER:
1652         case G_TYPE_INTERFACE:
1653         case G_TYPE_OBJECT:
1654         case G_TYPE_PARAM:
1655             warn("Unsupported fundamental property type #%d", (int)fundamental);
1656             sv_setsv(sv, &PL_sv_undef);
1657             break;
1658     }
1659
1660     return sv;
1661 }
1662
1663 /* Given an SV and an initialized GValue, set the GValue to the value
1664  * represented by the SV.  The GValue's type must already be set.
1665  *
1666  * For basic corresponding types (string -> string, integer -> integer),
1667  * the translation is straightforward.  However, if the GValue is not a
1668  * string, but the SV has a string value, then g_value_set_from_string will
1669  * be used to parse the string.
1670  *
1671  * @param sv: SV to convert
1672  * @param value: (input/output) destination
1673  * @returns: TRUE on success
1674  */
1675 static gboolean
1676 set_gvalue_from_sv(SV *sv, GValue *value)
1677 {
1678     GType fundamental = G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value));
1679
1680     /* if we got a string, use g_value_set_from_string to parse any funny
1681      * values or suffixes */
1682     if (SvPOK(sv)) {
1683         if (g_value_set_from_string(value, SvPV_nolen(sv)))
1684             return TRUE;
1685     }
1686
1687     /* otherwise, handle numeric types with SvIV, SvNV, or the amglue_* functions */
1688     switch (fundamental) {
1689         case G_TYPE_BOOLEAN:
1690             g_value_set_boolean(value, SvIV(sv));
1691             return TRUE;
1692
1693         case G_TYPE_CHAR:
1694             g_value_set_char(value, amglue_SvI8(sv));
1695             return TRUE;
1696
1697         case G_TYPE_UCHAR:
1698             g_value_set_uchar(value, amglue_SvU8(sv));
1699             return TRUE;
1700
1701         case G_TYPE_INT:
1702             g_value_set_int(value, amglue_SvI32(sv));
1703             return TRUE;
1704
1705         case G_TYPE_UINT:
1706             g_value_set_uint(value, amglue_SvU32(sv));
1707             return TRUE;
1708
1709         case G_TYPE_LONG:
1710             g_value_set_int64(value, amglue_SvI64(sv));
1711             return TRUE;
1712
1713         case G_TYPE_ULONG:
1714             g_value_set_uint64(value, amglue_SvU64(sv));
1715             return TRUE;
1716
1717         case G_TYPE_INT64:
1718             g_value_set_int64(value, amglue_SvI64(sv));
1719             return TRUE;
1720
1721         case G_TYPE_UINT64:
1722             g_value_set_uint64(value, amglue_SvU64(sv));
1723             return TRUE;
1724
1725         case G_TYPE_FLOAT:
1726             g_value_set_float(value, SvNV(sv));
1727             return TRUE;
1728
1729         case G_TYPE_DOUBLE:
1730             g_value_set_double(value, SvNV(sv));
1731             return TRUE;
1732
1733         case G_TYPE_ENUM:
1734             g_value_set_enum(value, SvIV(sv));
1735             return TRUE;
1736
1737         case G_TYPE_FLAGS:
1738             g_value_set_flags(value, SvIV(sv));
1739             return TRUE;
1740
1741         default:
1742             /* for anything else, let perl stringify it for us and try parsing it */
1743             return g_value_set_from_string(value, SvPV_nolen(sv));
1744     }
1745 }
1746
1747
1748 SWIGINTERN void delete_DirectTCPConnection(DirectTCPConnection *self){
1749             g_object_unref(self);
1750         }
1751 SWIGINTERN char *DirectTCPConnection_close(DirectTCPConnection *self){
1752             return directtcp_connection_close(self);
1753         }
1754
1755 SWIGINTERNINLINE SV *
1756 SWIG_FromCharPtrAndSize(const char* carray, size_t size)
1757 {
1758   SV *obj = sv_newmortal();
1759   if (carray) {
1760     sv_setpvn(obj, carray, size);
1761   } else {
1762     sv_setsv(obj, &PL_sv_undef);
1763   }
1764   return obj;
1765 }
1766
1767
1768 SWIGINTERNINLINE SV * 
1769 SWIG_FromCharPtr(const char *cptr)
1770
1771   return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
1772 }
1773
1774
1775 SWIGINTERN swig_type_info*
1776 SWIG_pchar_descriptor(void)
1777 {
1778   static int init = 0;
1779   static swig_type_info* info = 0;
1780   if (!init) {
1781     info = SWIG_TypeQuery("_p_char");
1782     init = 1;
1783   }
1784   return info;
1785 }
1786
1787
1788 SWIGINTERN int
1789 SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
1790 {
1791   if (SvMAGICAL(obj)) {
1792      SV *tmp = sv_newmortal();
1793      SvSetSV(tmp, obj);
1794      obj = tmp;
1795   }
1796   if (SvPOK(obj)) {
1797     STRLEN len = 0;
1798     char *cstr = SvPV(obj, len); 
1799     size_t size = len + 1;
1800     if (cptr)  {
1801       if (alloc) {
1802         if (*alloc == SWIG_NEWOBJ) {
1803           *cptr = (char *)memcpy((char *)malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));
1804         } else {
1805           *cptr = cstr;
1806           *alloc = SWIG_OLDOBJ;
1807         }
1808       }
1809     }
1810     if (psize) *psize = size;
1811     return SWIG_OK;
1812   } else {
1813     swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
1814     if (pchar_descriptor) {
1815       char* vptr = 0; 
1816       if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
1817         if (cptr) *cptr = vptr;
1818         if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
1819         if (alloc) *alloc = SWIG_OLDOBJ;
1820         return SWIG_OK;
1821       }
1822     }
1823   }
1824   return SWIG_TypeError;
1825 }
1826
1827
1828
1829
1830 SWIGINTERN Device *new_Device(char *device_name){
1831             return device_open(device_name);
1832         }
1833 SWIGINTERN void delete_Device(Device *self){
1834             g_object_unref(self);
1835         }
1836
1837 #include <limits.h>
1838 #if !defined(SWIG_NO_LLONG_MAX)
1839 # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
1840 #   define LLONG_MAX __LONG_LONG_MAX__
1841 #   define LLONG_MIN (-LLONG_MAX - 1LL)
1842 #   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
1843 # endif
1844 #endif
1845
1846
1847 SWIGINTERN int
1848 SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val)
1849 {
1850   if (SvNIOK(obj)) {
1851     if (val) *val = SvNV(obj);
1852     return SWIG_OK;
1853   } else if (SvIOK(obj)) {
1854     if (val) *val = (double) SvIV(obj);
1855     return SWIG_AddCast(SWIG_OK);
1856   } else {
1857     const char *nptr = SvPV_nolen(obj);
1858     if (nptr) {
1859       char *endptr;
1860       double v;
1861       errno = 0;
1862       v = strtod(nptr, &endptr);
1863       if (errno == ERANGE) {
1864         errno = 0;
1865         return SWIG_OverflowError;
1866       } else {
1867         if (*endptr == '\0') {
1868           if (val) *val = v;
1869           return SWIG_Str2NumCast(SWIG_OK);
1870         }
1871       }
1872     }
1873   }
1874   return SWIG_TypeError;
1875 }
1876
1877
1878 #include <float.h>
1879
1880
1881 #include <math.h>
1882
1883
1884 SWIGINTERNINLINE int
1885 SWIG_CanCastAsInteger(double *d, double min, double max) {
1886   double x = *d;
1887   if ((min <= x && x <= max)) {
1888    double fx = floor(x);
1889    double cx = ceil(x);
1890    double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
1891    if ((errno == EDOM) || (errno == ERANGE)) {
1892      errno = 0;
1893    } else {
1894      double summ, reps, diff;
1895      if (rd < x) {
1896        diff = x - rd;
1897      } else if (rd > x) {
1898        diff = rd - x;
1899      } else {
1900        return 1;
1901      }
1902      summ = rd + x;
1903      reps = diff/summ;
1904      if (reps < 8*DBL_EPSILON) {
1905        *d = rd;
1906        return 1;
1907      }
1908    }
1909   }
1910   return 0;
1911 }
1912
1913
1914 SWIGINTERN int
1915 SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val)
1916 {
1917   if (SvIOK(obj)) {
1918     if (val) *val = SvIV(obj);
1919     return SWIG_OK;
1920   } else {
1921     int dispatch = 0;
1922     const char *nptr = SvPV_nolen(obj);
1923     if (nptr) {
1924       char *endptr;
1925       long v;
1926       errno = 0;
1927       v = strtol(nptr, &endptr,0);
1928       if (errno == ERANGE) {
1929         errno = 0;
1930         return SWIG_OverflowError;
1931       } else {
1932         if (*endptr == '\0') {
1933           if (val) *val = v;
1934           return SWIG_Str2NumCast(SWIG_OK);
1935         }
1936       }
1937     }
1938     if (!dispatch) {
1939       double d;
1940       int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
1941       if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
1942         if (val) *val = (long)(d);
1943         return res;
1944       }
1945     }
1946   }
1947   return SWIG_TypeError;
1948 }
1949
1950
1951 SWIGINTERN int
1952 SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val)
1953 {
1954   long v;
1955   int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v);
1956   if (SWIG_IsOK(res)) {
1957     if ((v < INT_MIN || v > INT_MAX)) {
1958       return SWIG_OverflowError;
1959     } else {
1960       if (val) *val = (int)(v);
1961     }
1962   }  
1963   return res;
1964 }
1965
1966 SWIGINTERN gboolean Device_configure(Device *self,gboolean use_global_config){
1967             return device_configure(self, use_global_config);
1968         }
1969 SWIGINTERN char *Device_error(Device *self){
1970             return device_error(self);
1971         }
1972 SWIGINTERN char *Device_status_error(Device *self){
1973             return device_status_error(self);
1974         }
1975 SWIGINTERN char *Device_error_or_status(Device *self){
1976             return device_error_or_status(self);
1977         }
1978 SWIGINTERN DeviceStatusFlags Device_read_label(Device *self){
1979             return device_read_label(self);
1980         }
1981 SWIGINTERN gboolean Device_start(Device *self,DeviceAccessMode mode,char *label,char *timestamp){
1982             return device_start(self, mode, label, timestamp);
1983         }
1984 SWIGINTERN gboolean Device_finish(Device *self){
1985             return device_finish(self);
1986         }
1987 SWIGINTERN guint64 Device_get_bytes_read(Device *self){
1988             return device_get_bytes_read(self);
1989         }
1990 SWIGINTERN guint64 Device_get_bytes_written(Device *self){
1991             return device_get_bytes_written(self);
1992         }
1993 SWIGINTERN gboolean Device_start_file(Device *self,dumpfile_t *jobInfo){
1994             return device_start_file(self, jobInfo);
1995         }
1996 SWIGINTERN gboolean Device_write_block(Device *self,guint size,gpointer data){
1997             return device_write_block(self, size, data);
1998         }
1999 SWIGINTERN gboolean Device_finish_file(Device *self){
2000             return device_finish_file(self);
2001         }
2002 SWIGINTERN dumpfile_t *Device_seek_file(Device *self,guint file){
2003             return device_seek_file(self, file);
2004         }
2005 SWIGINTERN gboolean Device_seek_block(Device *self,guint64 block){
2006             return device_seek_block(self, block);
2007         }
2008 SWIGINTERN int Device_read_block(Device *self,gpointer buffer,int *size){
2009             return device_read_block(self, buffer, size);
2010         }
2011 SWIGINTERN gboolean Device_erase(Device *self){
2012             return device_erase(self);
2013         }
2014 SWIGINTERN gboolean Device_eject(Device *self){
2015             return device_eject(self);
2016         }
2017 SWIGINTERN gboolean Device_directtcp_supported(Device *self){
2018             return device_directtcp_supported(self);
2019         }
2020 SWIGINTERN void Device_listen(Device *self,gboolean for_writing,DirectTCPAddr **addrs){
2021             /* ensure that the addresses are empty if there was an error */
2022             if (!device_listen(self, for_writing, addrs))
2023                 *addrs = NULL;
2024         }
2025 SWIGINTERN gboolean Device_use_connection(Device *self,DirectTCPConnection *conn){
2026             return device_use_connection(self, conn);
2027         }
2028 SWIGINTERN GSList const *Device_property_list(Device *self){
2029             return device_property_get_list(self);
2030         }
2031 SWIGINTERN void Device_property_get(Device *self,DevicePropertyBase *pbase,GValue *out_val,PropertySurety *surety,PropertySource *source,gboolean *val_found){
2032             if (pbase) {
2033                 *val_found = device_property_get_ex(self, pbase->ID, out_val, surety, source);
2034             } else {
2035                 *val_found = FALSE;
2036             }
2037         }
2038 SWIGINTERN gboolean Device_property_set(Device *self,DevicePropertyBase *pbase,SV *sv){
2039             GValue gval;
2040
2041             if (!pbase)
2042                 goto fail;
2043             memset(&gval, 0, sizeof(gval));
2044             g_value_init(&gval, pbase->type);
2045             if (!set_gvalue_from_sv(sv, &gval))
2046                 goto failunset;
2047
2048             if (!device_property_set(self, pbase->ID, &gval))
2049                 goto failunset;
2050
2051             g_value_unset(&gval);
2052             return TRUE;
2053         failunset:
2054             g_value_unset(&gval);
2055         fail:
2056             return FALSE;
2057         }
2058 SWIGINTERN gboolean Device_property_set_ex(Device *self,DevicePropertyBase *pbase,SV *sv,PropertySurety surety,PropertySource source){
2059             GValue gval;
2060             memset(&gval, 0, sizeof(gval));
2061             g_value_init(&gval, pbase->type);
2062             if (!set_gvalue_from_sv(sv, &gval))
2063                 goto fail;
2064
2065             if (!device_property_set_ex(self, pbase->ID, &gval, surety, source))
2066                 goto fail;
2067
2068             g_value_unset(&gval);
2069             return TRUE;
2070         fail:
2071             g_value_unset(&gval);
2072             return FALSE;
2073         }
2074 SWIGINTERN gboolean Device_recycle_file(Device *self,guint filenum){
2075             return device_recycle_file(self, filenum);
2076         }
2077 SWIGINTERN int Device_file(Device *self){ return self->file; }
2078 SWIGINTERN guint64 Device_block(Device *self){ return self->block; }
2079 SWIGINTERN gboolean Device_in_file(Device *self){ return self->in_file; }
2080 SWIGINTERN char *Device_device_name(Device *self){ return self->device_name; }
2081 SWIGINTERN DeviceAccessMode Device_access_mode(Device *self){ return self->access_mode; }
2082 SWIGINTERN gboolean Device_is_eof(Device *self){ return self->is_eof; }
2083 SWIGINTERN gboolean Device_is_eom(Device *self){ return self->is_eom; }
2084 SWIGINTERN char *Device_volume_label(Device *self){ return self->volume_label; }
2085 SWIGINTERN char *Device_volume_time(Device *self){ return self->volume_time; }
2086 SWIGINTERN DeviceStatusFlags Device_status(Device *self){ return self->status; }
2087 SWIGINTERN gsize Device_min_block_size(Device *self){ return self->min_block_size; }
2088 SWIGINTERN gsize Device_max_block_size(Device *self){ return self->max_block_size; }
2089 SWIGINTERN gsize Device_block_size(Device *self){ return self->block_size; }
2090 SWIGINTERN gsize Device_header_block_size(Device *self){ return self->header_block_size; }
2091 SWIGINTERN dumpfile_t *Device_volume_header(Device *self){ return self->volume_header; }
2092
2093
2094 /* write LENGTH bytes of random data to FILENAME, seeded with SEED */
2095 gboolean
2096 write_random_to_device(guint32 seed, size_t length, Device *device) {
2097     simpleprng_state_t prng;
2098     char *buf;
2099     gsize block_size = device->block_size;
2100     g_assert(block_size < G_MAXUINT);
2101
2102     buf = g_malloc(block_size);
2103     simpleprng_seed(&prng, seed);
2104
2105     while (length) {
2106         size_t to_write = min(block_size, length);
2107
2108         simpleprng_fill_buffer(&prng, buf, to_write);
2109         if (!device_write_block(device, (guint)block_size, buf)) {
2110             g_free(buf);
2111             return FALSE;
2112         }
2113         length -= to_write;
2114     }
2115
2116     g_free(buf);
2117     return TRUE;
2118 }
2119
2120 /* read LENGTH bytes of random data from FILENAME verifying it against
2121  * a PRNG seeded with SEED.  Sends any error messages to stderr.
2122  */
2123 gboolean
2124 verify_random_from_device(guint32 seed, size_t length, Device *device) {
2125     simpleprng_state_t prng;
2126     char *buf = NULL; /* first device_read_block will get the size */
2127     int block_size = 0;
2128
2129     simpleprng_seed(&prng, seed);
2130
2131     while (length) {
2132         int bytes_read;
2133         int size = block_size;
2134
2135         bytes_read = device_read_block(device, buf, &size);
2136         if (bytes_read == 0 && size > block_size) {
2137             g_free(buf);
2138             block_size = size;
2139             buf = g_malloc(block_size);
2140             continue;
2141         }
2142         if (bytes_read == -1) {
2143             if (device->status == DEVICE_STATUS_SUCCESS) {
2144                 g_assert(device->is_eof);
2145                 g_debug("verify_random_from_device got unexpected EOF");
2146             }
2147             goto error;
2148         }
2149
2150         /* strip padding */
2151         bytes_read = min(bytes_read, length);
2152
2153         if (!simpleprng_verify_buffer(&prng, buf, bytes_read))
2154             goto error;
2155
2156         length -= bytes_read;
2157     }
2158
2159     g_free(buf);
2160     return TRUE;
2161
2162 error:
2163     g_free(buf);
2164     return FALSE;
2165 }
2166
2167
2168 SWIGINTERN int
2169 SWIG_AsVal_unsigned_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long *val) 
2170 {
2171   if (SvUOK(obj)) {
2172     if (val) *val = SvUV(obj);
2173     return SWIG_OK;
2174   } else  if (SvIOK(obj)) {
2175     long v = SvIV(obj);
2176     if (v >= 0) {
2177       if (val) *val = v;
2178       return SWIG_OK;
2179     } else {
2180       return SWIG_OverflowError;
2181     }
2182   } else {
2183     int dispatch = 0;
2184     const char *nptr = SvPV_nolen(obj);
2185     if (nptr) {
2186       char *endptr;
2187       unsigned long v;
2188       errno = 0;
2189       v = strtoul(nptr, &endptr,0);
2190       if (errno == ERANGE) {
2191         errno = 0;
2192         return SWIG_OverflowError;
2193       } else {
2194         if (*endptr == '\0') {
2195           if (val) *val = v;
2196           return SWIG_Str2NumCast(SWIG_OK);
2197         }
2198       }
2199     }
2200     if (!dispatch) {
2201       double d;
2202       int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
2203       if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) {
2204         if (val) *val = (unsigned long)(d);
2205         return res;
2206       }
2207     }
2208   }
2209   return SWIG_TypeError;
2210 }
2211
2212
2213 SWIGINTERNINLINE int
2214 SWIG_AsVal_size_t SWIG_PERL_DECL_ARGS_2(SV * obj, size_t *val)
2215 {
2216   unsigned long v;
2217   int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, val ? &v : 0);
2218   if (SWIG_IsOK(res) && val) *val = (size_t)(v);
2219   return res;
2220 }
2221
2222
2223 SWIGINTERNINLINE SV *
2224 SWIG_From_long  SWIG_PERL_DECL_ARGS_1(long value)
2225 {    
2226   SV *obj = sv_newmortal();
2227   sv_setiv(obj, (IV) value);
2228   return obj;
2229 }
2230
2231
2232 SWIGINTERNINLINE SV *
2233 SWIG_From_int  SWIG_PERL_DECL_ARGS_1(int value)
2234 {    
2235   return SWIG_From_long  SWIG_PERL_CALL_ARGS_1(value);
2236 }
2237
2238 #ifdef __cplusplus
2239 extern "C" {
2240 #endif
2241
2242 #ifdef PERL_OBJECT
2243 #define MAGIC_CLASS _wrap_Amanda__Device_var::
2244 class _wrap_Amanda__Device_var : public CPerlObj {
2245 public:
2246 #else
2247 #define MAGIC_CLASS
2248 #endif
2249 SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) {
2250     MAGIC_PPERL
2251     croak("Value is read-only.");
2252     return 0;
2253 }
2254
2255
2256 #ifdef PERL_OBJECT
2257 };
2258 #endif
2259
2260 #ifdef __cplusplus
2261 }
2262 #endif
2263
2264 #ifdef __cplusplus
2265 extern "C" {
2266 #endif
2267 XS(_wrap_delete_DirectTCPConnection) {
2268   {
2269     DirectTCPConnection *arg1 = (DirectTCPConnection *) 0 ;
2270     void *argp1 = 0 ;
2271     int res1 = 0 ;
2272     int argvi = 0;
2273     dXSARGS;
2274     
2275     if ((items < 1) || (items > 1)) {
2276       SWIG_croak("Usage: delete_DirectTCPConnection(self);");
2277     }
2278     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DirectTCPConnection, SWIG_POINTER_DISOWN |  0 );
2279     if (!SWIG_IsOK(res1)) {
2280       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_DirectTCPConnection" "', argument " "1"" of type '" "DirectTCPConnection *""'"); 
2281     }
2282     arg1 = (DirectTCPConnection *)(argp1);
2283     delete_DirectTCPConnection(arg1);
2284     ST(argvi) = sv_newmortal();
2285     
2286     XSRETURN(argvi);
2287   fail:
2288     
2289     SWIG_croak_null();
2290   }
2291 }
2292
2293
2294 XS(_wrap_DirectTCPConnection_close) {
2295   {
2296     DirectTCPConnection *arg1 = (DirectTCPConnection *) 0 ;
2297     void *argp1 = 0 ;
2298     int res1 = 0 ;
2299     int argvi = 0;
2300     char *result = 0 ;
2301     dXSARGS;
2302     
2303     if ((items < 1) || (items > 1)) {
2304       SWIG_croak("Usage: DirectTCPConnection_close(self);");
2305     }
2306     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DirectTCPConnection, 0 |  0 );
2307     if (!SWIG_IsOK(res1)) {
2308       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DirectTCPConnection_close" "', argument " "1"" of type '" "DirectTCPConnection *""'"); 
2309     }
2310     arg1 = (DirectTCPConnection *)(argp1);
2311     result = (char *)DirectTCPConnection_close(arg1);
2312     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2313     
2314     free((char*)result);
2315     XSRETURN(argvi);
2316   fail:
2317     
2318     SWIG_croak_null();
2319   }
2320 }
2321
2322
2323 XS(_wrap_new_DirectTCPConnection) {
2324   {
2325     int argvi = 0;
2326     DirectTCPConnection *result = 0 ;
2327     dXSARGS;
2328     
2329     if ((items < 0) || (items > 0)) {
2330       SWIG_croak("Usage: new_DirectTCPConnection();");
2331     }
2332     result = (DirectTCPConnection *)calloc(1, sizeof(DirectTCPConnection));
2333     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_DirectTCPConnection, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
2334     XSRETURN(argvi);
2335   fail:
2336     SWIG_croak_null();
2337   }
2338 }
2339
2340
2341 XS(_wrap_unaliased_name) {
2342   {
2343     char *arg1 = (char *) 0 ;
2344     int res1 ;
2345     char *buf1 = 0 ;
2346     int alloc1 = 0 ;
2347     int argvi = 0;
2348     char *result = 0 ;
2349     dXSARGS;
2350     
2351     if ((items < 1) || (items > 1)) {
2352       SWIG_croak("Usage: unaliased_name(char *);");
2353     }
2354     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2355     if (!SWIG_IsOK(res1)) {
2356       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "unaliased_name" "', argument " "1"" of type '" "char *""'");
2357     }
2358     arg1 = (char *)(buf1);
2359     result = (char *)device_unaliased_name(arg1);
2360     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2361     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2362     XSRETURN(argvi);
2363   fail:
2364     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2365     SWIG_croak_null();
2366   }
2367 }
2368
2369
2370 XS(_wrap_new_Device) {
2371   {
2372     char *arg1 = (char *) 0 ;
2373     int res1 ;
2374     char *buf1 = 0 ;
2375     int alloc1 = 0 ;
2376     int argvi = 0;
2377     Device *result = 0 ;
2378     dXSARGS;
2379     
2380     if ((items < 1) || (items > 1)) {
2381       SWIG_croak("Usage: new_Device(device_name);");
2382     }
2383     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2384     if (!SWIG_IsOK(res1)) {
2385       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Device" "', argument " "1"" of type '" "char *""'");
2386     }
2387     arg1 = (char *)(buf1);
2388     result = (Device *)new_Device(arg1);
2389     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Device, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
2390     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2391     XSRETURN(argvi);
2392   fail:
2393     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2394     SWIG_croak_null();
2395   }
2396 }
2397
2398
2399 XS(_wrap_delete_Device) {
2400   {
2401     Device *arg1 = (Device *) 0 ;
2402     void *argp1 = 0 ;
2403     int res1 = 0 ;
2404     int argvi = 0;
2405     dXSARGS;
2406     
2407     if ((items < 1) || (items > 1)) {
2408       SWIG_croak("Usage: delete_Device(self);");
2409     }
2410     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, SWIG_POINTER_DISOWN |  0 );
2411     if (!SWIG_IsOK(res1)) {
2412       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Device" "', argument " "1"" of type '" "Device *""'"); 
2413     }
2414     arg1 = (Device *)(argp1);
2415     delete_Device(arg1);
2416     ST(argvi) = sv_newmortal();
2417     
2418     XSRETURN(argvi);
2419   fail:
2420     
2421     SWIG_croak_null();
2422   }
2423 }
2424
2425
2426 XS(_wrap_Device_configure) {
2427   {
2428     Device *arg1 = (Device *) 0 ;
2429     gboolean arg2 ;
2430     void *argp1 = 0 ;
2431     int res1 = 0 ;
2432     int argvi = 0;
2433     gboolean result;
2434     dXSARGS;
2435     
2436     if ((items < 2) || (items > 2)) {
2437       SWIG_croak("Usage: Device_configure(self,use_global_config);");
2438     }
2439     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2440     if (!SWIG_IsOK(res1)) {
2441       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_configure" "', argument " "1"" of type '" "Device *""'"); 
2442     }
2443     arg1 = (Device *)(argp1);
2444     {
2445       arg2 = SvTRUE(ST(1));
2446     }
2447     result = (gboolean)Device_configure(arg1,arg2);
2448     {
2449       if (result)
2450       ST(argvi) = &PL_sv_yes;
2451       else
2452       ST(argvi) = &PL_sv_no;
2453       argvi++;
2454     }
2455     
2456     
2457     XSRETURN(argvi);
2458   fail:
2459     
2460     
2461     SWIG_croak_null();
2462   }
2463 }
2464
2465
2466 XS(_wrap_Device_error) {
2467   {
2468     Device *arg1 = (Device *) 0 ;
2469     void *argp1 = 0 ;
2470     int res1 = 0 ;
2471     int argvi = 0;
2472     char *result = 0 ;
2473     dXSARGS;
2474     
2475     if ((items < 1) || (items > 1)) {
2476       SWIG_croak("Usage: Device_error(self);");
2477     }
2478     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2479     if (!SWIG_IsOK(res1)) {
2480       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_error" "', argument " "1"" of type '" "Device *""'"); 
2481     }
2482     arg1 = (Device *)(argp1);
2483     result = (char *)Device_error(arg1);
2484     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2485     
2486     XSRETURN(argvi);
2487   fail:
2488     
2489     SWIG_croak_null();
2490   }
2491 }
2492
2493
2494 XS(_wrap_Device_status_error) {
2495   {
2496     Device *arg1 = (Device *) 0 ;
2497     void *argp1 = 0 ;
2498     int res1 = 0 ;
2499     int argvi = 0;
2500     char *result = 0 ;
2501     dXSARGS;
2502     
2503     if ((items < 1) || (items > 1)) {
2504       SWIG_croak("Usage: Device_status_error(self);");
2505     }
2506     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2507     if (!SWIG_IsOK(res1)) {
2508       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_status_error" "', argument " "1"" of type '" "Device *""'"); 
2509     }
2510     arg1 = (Device *)(argp1);
2511     result = (char *)Device_status_error(arg1);
2512     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2513     
2514     XSRETURN(argvi);
2515   fail:
2516     
2517     SWIG_croak_null();
2518   }
2519 }
2520
2521
2522 XS(_wrap_Device_error_or_status) {
2523   {
2524     Device *arg1 = (Device *) 0 ;
2525     void *argp1 = 0 ;
2526     int res1 = 0 ;
2527     int argvi = 0;
2528     char *result = 0 ;
2529     dXSARGS;
2530     
2531     if ((items < 1) || (items > 1)) {
2532       SWIG_croak("Usage: Device_error_or_status(self);");
2533     }
2534     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2535     if (!SWIG_IsOK(res1)) {
2536       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_error_or_status" "', argument " "1"" of type '" "Device *""'"); 
2537     }
2538     arg1 = (Device *)(argp1);
2539     result = (char *)Device_error_or_status(arg1);
2540     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2541     
2542     XSRETURN(argvi);
2543   fail:
2544     
2545     SWIG_croak_null();
2546   }
2547 }
2548
2549
2550 XS(_wrap_Device_read_label) {
2551   {
2552     Device *arg1 = (Device *) 0 ;
2553     void *argp1 = 0 ;
2554     int res1 = 0 ;
2555     int argvi = 0;
2556     DeviceStatusFlags result;
2557     dXSARGS;
2558     
2559     if ((items < 1) || (items > 1)) {
2560       SWIG_croak("Usage: Device_read_label(self);");
2561     }
2562     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2563     if (!SWIG_IsOK(res1)) {
2564       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_read_label" "', argument " "1"" of type '" "Device *""'"); 
2565     }
2566     arg1 = (Device *)(argp1);
2567     result = (DeviceStatusFlags)Device_read_label(arg1);
2568     {
2569       SV *for_stack;
2570       SP += argvi; PUTBACK;
2571       for_stack = sv_2mortal(amglue_newSVi64(result));
2572       SPAGAIN; SP -= argvi;
2573       ST(argvi) = for_stack;
2574       argvi++;
2575     }
2576     
2577     XSRETURN(argvi);
2578   fail:
2579     
2580     SWIG_croak_null();
2581   }
2582 }
2583
2584
2585 XS(_wrap_Device_start) {
2586   {
2587     Device *arg1 = (Device *) 0 ;
2588     DeviceAccessMode arg2 ;
2589     char *arg3 = (char *) 0 ;
2590     char *arg4 = (char *) 0 ;
2591     void *argp1 = 0 ;
2592     int res1 = 0 ;
2593     int res3 ;
2594     char *buf3 = 0 ;
2595     int alloc3 = 0 ;
2596     int res4 ;
2597     char *buf4 = 0 ;
2598     int alloc4 = 0 ;
2599     int argvi = 0;
2600     gboolean result;
2601     dXSARGS;
2602     
2603     if ((items < 4) || (items > 4)) {
2604       SWIG_croak("Usage: Device_start(self,mode,label,timestamp);");
2605     }
2606     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2607     if (!SWIG_IsOK(res1)) {
2608       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_start" "', argument " "1"" of type '" "Device *""'"); 
2609     }
2610     arg1 = (Device *)(argp1);
2611     {
2612       if (sizeof(signed int) == 1) {
2613         arg2 = amglue_SvI8(ST(1));
2614       } else if (sizeof(signed int) == 2) {
2615         arg2 = amglue_SvI16(ST(1));
2616       } else if (sizeof(signed int) == 4) {
2617         arg2 = amglue_SvI32(ST(1));
2618       } else if (sizeof(signed int) == 8) {
2619         arg2 = amglue_SvI64(ST(1));
2620       } else {
2621         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
2622       }
2623     }
2624     res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
2625     if (!SWIG_IsOK(res3)) {
2626       SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Device_start" "', argument " "3"" of type '" "char *""'");
2627     }
2628     arg3 = (char *)(buf3);
2629     res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
2630     if (!SWIG_IsOK(res4)) {
2631       SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Device_start" "', argument " "4"" of type '" "char *""'");
2632     }
2633     arg4 = (char *)(buf4);
2634     result = (gboolean)Device_start(arg1,arg2,arg3,arg4);
2635     {
2636       if (result)
2637       ST(argvi) = &PL_sv_yes;
2638       else
2639       ST(argvi) = &PL_sv_no;
2640       argvi++;
2641     }
2642     
2643     
2644     if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
2645     if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
2646     XSRETURN(argvi);
2647   fail:
2648     
2649     
2650     if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
2651     if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
2652     SWIG_croak_null();
2653   }
2654 }
2655
2656
2657 XS(_wrap_Device_finish) {
2658   {
2659     Device *arg1 = (Device *) 0 ;
2660     void *argp1 = 0 ;
2661     int res1 = 0 ;
2662     int argvi = 0;
2663     gboolean result;
2664     dXSARGS;
2665     
2666     if ((items < 1) || (items > 1)) {
2667       SWIG_croak("Usage: Device_finish(self);");
2668     }
2669     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2670     if (!SWIG_IsOK(res1)) {
2671       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_finish" "', argument " "1"" of type '" "Device *""'"); 
2672     }
2673     arg1 = (Device *)(argp1);
2674     result = (gboolean)Device_finish(arg1);
2675     {
2676       if (result)
2677       ST(argvi) = &PL_sv_yes;
2678       else
2679       ST(argvi) = &PL_sv_no;
2680       argvi++;
2681     }
2682     
2683     XSRETURN(argvi);
2684   fail:
2685     
2686     SWIG_croak_null();
2687   }
2688 }
2689
2690
2691 XS(_wrap_Device_get_bytes_read) {
2692   {
2693     Device *arg1 = (Device *) 0 ;
2694     void *argp1 = 0 ;
2695     int res1 = 0 ;
2696     int argvi = 0;
2697     guint64 result;
2698     dXSARGS;
2699     
2700     if ((items < 1) || (items > 1)) {
2701       SWIG_croak("Usage: Device_get_bytes_read(self);");
2702     }
2703     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2704     if (!SWIG_IsOK(res1)) {
2705       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_get_bytes_read" "', argument " "1"" of type '" "Device *""'"); 
2706     }
2707     arg1 = (Device *)(argp1);
2708     result = Device_get_bytes_read(arg1);
2709     {
2710       SV *for_stack;
2711       SP += argvi; PUTBACK;
2712       for_stack = sv_2mortal(amglue_newSVu64(result));
2713       SPAGAIN; SP -= argvi;
2714       ST(argvi) = for_stack;
2715       argvi++;
2716     }
2717     
2718     XSRETURN(argvi);
2719   fail:
2720     
2721     SWIG_croak_null();
2722   }
2723 }
2724
2725
2726 XS(_wrap_Device_get_bytes_written) {
2727   {
2728     Device *arg1 = (Device *) 0 ;
2729     void *argp1 = 0 ;
2730     int res1 = 0 ;
2731     int argvi = 0;
2732     guint64 result;
2733     dXSARGS;
2734     
2735     if ((items < 1) || (items > 1)) {
2736       SWIG_croak("Usage: Device_get_bytes_written(self);");
2737     }
2738     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2739     if (!SWIG_IsOK(res1)) {
2740       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_get_bytes_written" "', argument " "1"" of type '" "Device *""'"); 
2741     }
2742     arg1 = (Device *)(argp1);
2743     result = Device_get_bytes_written(arg1);
2744     {
2745       SV *for_stack;
2746       SP += argvi; PUTBACK;
2747       for_stack = sv_2mortal(amglue_newSVu64(result));
2748       SPAGAIN; SP -= argvi;
2749       ST(argvi) = for_stack;
2750       argvi++;
2751     }
2752     
2753     XSRETURN(argvi);
2754   fail:
2755     
2756     SWIG_croak_null();
2757   }
2758 }
2759
2760
2761 XS(_wrap_Device_start_file) {
2762   {
2763     Device *arg1 = (Device *) 0 ;
2764     dumpfile_t *arg2 = (dumpfile_t *) 0 ;
2765     void *argp1 = 0 ;
2766     int res1 = 0 ;
2767     void *argp2 = 0 ;
2768     int res2 = 0 ;
2769     int argvi = 0;
2770     gboolean result;
2771     dXSARGS;
2772     
2773     if ((items < 2) || (items > 2)) {
2774       SWIG_croak("Usage: Device_start_file(self,jobInfo);");
2775     }
2776     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2777     if (!SWIG_IsOK(res1)) {
2778       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_start_file" "', argument " "1"" of type '" "Device *""'"); 
2779     }
2780     arg1 = (Device *)(argp1);
2781     res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_dumpfile_t, 0 |  0 );
2782     if (!SWIG_IsOK(res2)) {
2783       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Device_start_file" "', argument " "2"" of type '" "dumpfile_t *""'"); 
2784     }
2785     arg2 = (dumpfile_t *)(argp2);
2786     result = (gboolean)Device_start_file(arg1,arg2);
2787     {
2788       if (result)
2789       ST(argvi) = &PL_sv_yes;
2790       else
2791       ST(argvi) = &PL_sv_no;
2792       argvi++;
2793     }
2794     
2795     
2796     XSRETURN(argvi);
2797   fail:
2798     
2799     
2800     SWIG_croak_null();
2801   }
2802 }
2803
2804
2805 XS(_wrap_Device_write_block) {
2806   {
2807     Device *arg1 = (Device *) 0 ;
2808     guint arg2 ;
2809     gpointer arg3 = (gpointer) 0 ;
2810     void *argp1 = 0 ;
2811     int res1 = 0 ;
2812     int res3 ;
2813     int argvi = 0;
2814     gboolean result;
2815     dXSARGS;
2816     
2817     if ((items < 3) || (items > 3)) {
2818       SWIG_croak("Usage: Device_write_block(self,size,data);");
2819     }
2820     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2821     if (!SWIG_IsOK(res1)) {
2822       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_write_block" "', argument " "1"" of type '" "Device *""'"); 
2823     }
2824     arg1 = (Device *)(argp1);
2825     {
2826       if (sizeof(guint) == 1) {
2827         arg2 = amglue_SvU8(ST(1));
2828       } else if (sizeof(guint) == 2) {
2829         arg2 = amglue_SvU16(ST(1));
2830       } else if (sizeof(guint) == 4) {
2831         arg2 = amglue_SvU32(ST(1));
2832       } else if (sizeof(guint) == 8) {
2833         arg2 = amglue_SvU64(ST(1));
2834       } else {
2835         croak("Unexpected guint >64 bits?"); /* should be optimized out unless sizeof(guint) > 8 */
2836       }
2837     }
2838     res3 = SWIG_ConvertPtr(ST(2),SWIG_as_voidptrptr(&arg3), 0, 0);
2839     if (!SWIG_IsOK(res3)) {
2840       SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Device_write_block" "', argument " "3"" of type '" "gpointer""'"); 
2841     }
2842     result = (gboolean)Device_write_block(arg1,arg2,arg3);
2843     {
2844       if (result)
2845       ST(argvi) = &PL_sv_yes;
2846       else
2847       ST(argvi) = &PL_sv_no;
2848       argvi++;
2849     }
2850     
2851     
2852     XSRETURN(argvi);
2853   fail:
2854     
2855     
2856     SWIG_croak_null();
2857   }
2858 }
2859
2860
2861 XS(_wrap_Device_finish_file) {
2862   {
2863     Device *arg1 = (Device *) 0 ;
2864     void *argp1 = 0 ;
2865     int res1 = 0 ;
2866     int argvi = 0;
2867     gboolean result;
2868     dXSARGS;
2869     
2870     if ((items < 1) || (items > 1)) {
2871       SWIG_croak("Usage: Device_finish_file(self);");
2872     }
2873     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2874     if (!SWIG_IsOK(res1)) {
2875       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_finish_file" "', argument " "1"" of type '" "Device *""'"); 
2876     }
2877     arg1 = (Device *)(argp1);
2878     result = (gboolean)Device_finish_file(arg1);
2879     {
2880       if (result)
2881       ST(argvi) = &PL_sv_yes;
2882       else
2883       ST(argvi) = &PL_sv_no;
2884       argvi++;
2885     }
2886     
2887     XSRETURN(argvi);
2888   fail:
2889     
2890     SWIG_croak_null();
2891   }
2892 }
2893
2894
2895 XS(_wrap_Device_seek_file) {
2896   {
2897     Device *arg1 = (Device *) 0 ;
2898     guint arg2 ;
2899     void *argp1 = 0 ;
2900     int res1 = 0 ;
2901     int argvi = 0;
2902     dumpfile_t *result = 0 ;
2903     dXSARGS;
2904     
2905     if ((items < 2) || (items > 2)) {
2906       SWIG_croak("Usage: Device_seek_file(self,file);");
2907     }
2908     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2909     if (!SWIG_IsOK(res1)) {
2910       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_seek_file" "', argument " "1"" of type '" "Device *""'"); 
2911     }
2912     arg1 = (Device *)(argp1);
2913     {
2914       if (sizeof(guint) == 1) {
2915         arg2 = amglue_SvU8(ST(1));
2916       } else if (sizeof(guint) == 2) {
2917         arg2 = amglue_SvU16(ST(1));
2918       } else if (sizeof(guint) == 4) {
2919         arg2 = amglue_SvU32(ST(1));
2920       } else if (sizeof(guint) == 8) {
2921         arg2 = amglue_SvU64(ST(1));
2922       } else {
2923         croak("Unexpected guint >64 bits?"); /* should be optimized out unless sizeof(guint) > 8 */
2924       }
2925     }
2926     result = (dumpfile_t *)Device_seek_file(arg1,arg2);
2927     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_dumpfile_t, 0 | SWIG_SHADOW); argvi++ ;
2928     
2929     XSRETURN(argvi);
2930   fail:
2931     
2932     SWIG_croak_null();
2933   }
2934 }
2935
2936
2937 XS(_wrap_Device_seek_block) {
2938   {
2939     Device *arg1 = (Device *) 0 ;
2940     guint64 arg2 ;
2941     void *argp1 = 0 ;
2942     int res1 = 0 ;
2943     int argvi = 0;
2944     gboolean result;
2945     dXSARGS;
2946     
2947     if ((items < 2) || (items > 2)) {
2948       SWIG_croak("Usage: Device_seek_block(self,block);");
2949     }
2950     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2951     if (!SWIG_IsOK(res1)) {
2952       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_seek_block" "', argument " "1"" of type '" "Device *""'"); 
2953     }
2954     arg1 = (Device *)(argp1);
2955     {
2956       arg2 = amglue_SvU64(ST(1));
2957     }
2958     result = (gboolean)Device_seek_block(arg1,arg2);
2959     {
2960       if (result)
2961       ST(argvi) = &PL_sv_yes;
2962       else
2963       ST(argvi) = &PL_sv_no;
2964       argvi++;
2965     }
2966     
2967     XSRETURN(argvi);
2968   fail:
2969     
2970     SWIG_croak_null();
2971   }
2972 }
2973
2974
2975 XS(_wrap_Device_read_block) {
2976   {
2977     Device *arg1 = (Device *) 0 ;
2978     gpointer arg2 = (gpointer) 0 ;
2979     int *arg3 = (int *) 0 ;
2980     void *argp1 = 0 ;
2981     int res1 = 0 ;
2982     int res2 ;
2983     void *argp3 = 0 ;
2984     int res3 = 0 ;
2985     int argvi = 0;
2986     int result;
2987     dXSARGS;
2988     
2989     if ((items < 3) || (items > 3)) {
2990       SWIG_croak("Usage: Device_read_block(self,buffer,size);");
2991     }
2992     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
2993     if (!SWIG_IsOK(res1)) {
2994       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_read_block" "', argument " "1"" of type '" "Device *""'"); 
2995     }
2996     arg1 = (Device *)(argp1);
2997     res2 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg2), 0, 0);
2998     if (!SWIG_IsOK(res2)) {
2999       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Device_read_block" "', argument " "2"" of type '" "gpointer""'"); 
3000     }
3001     res3 = SWIG_ConvertPtr(ST(2), &argp3,SWIGTYPE_p_int, 0 |  0 );
3002     if (!SWIG_IsOK(res3)) {
3003       SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Device_read_block" "', argument " "3"" of type '" "int *""'"); 
3004     }
3005     arg3 = (int *)(argp3);
3006     result = (int)Device_read_block(arg1,arg2,arg3);
3007     {
3008       SV *for_stack;
3009       SP += argvi; PUTBACK;
3010       for_stack = sv_2mortal(amglue_newSVi64(result));
3011       SPAGAIN; SP -= argvi;
3012       ST(argvi) = for_stack;
3013       argvi++;
3014     }
3015     
3016     
3017     
3018     XSRETURN(argvi);
3019   fail:
3020     
3021     
3022     
3023     SWIG_croak_null();
3024   }
3025 }
3026
3027
3028 XS(_wrap_Device_erase) {
3029   {
3030     Device *arg1 = (Device *) 0 ;
3031     void *argp1 = 0 ;
3032     int res1 = 0 ;
3033     int argvi = 0;
3034     gboolean result;
3035     dXSARGS;
3036     
3037     if ((items < 1) || (items > 1)) {
3038       SWIG_croak("Usage: Device_erase(self);");
3039     }
3040     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3041     if (!SWIG_IsOK(res1)) {
3042       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_erase" "', argument " "1"" of type '" "Device *""'"); 
3043     }
3044     arg1 = (Device *)(argp1);
3045     result = (gboolean)Device_erase(arg1);
3046     {
3047       if (result)
3048       ST(argvi) = &PL_sv_yes;
3049       else
3050       ST(argvi) = &PL_sv_no;
3051       argvi++;
3052     }
3053     
3054     XSRETURN(argvi);
3055   fail:
3056     
3057     SWIG_croak_null();
3058   }
3059 }
3060
3061
3062 XS(_wrap_Device_eject) {
3063   {
3064     Device *arg1 = (Device *) 0 ;
3065     void *argp1 = 0 ;
3066     int res1 = 0 ;
3067     int argvi = 0;
3068     gboolean result;
3069     dXSARGS;
3070     
3071     if ((items < 1) || (items > 1)) {
3072       SWIG_croak("Usage: Device_eject(self);");
3073     }
3074     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3075     if (!SWIG_IsOK(res1)) {
3076       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_eject" "', argument " "1"" of type '" "Device *""'"); 
3077     }
3078     arg1 = (Device *)(argp1);
3079     result = (gboolean)Device_eject(arg1);
3080     {
3081       if (result)
3082       ST(argvi) = &PL_sv_yes;
3083       else
3084       ST(argvi) = &PL_sv_no;
3085       argvi++;
3086     }
3087     
3088     XSRETURN(argvi);
3089   fail:
3090     
3091     SWIG_croak_null();
3092   }
3093 }
3094
3095
3096 XS(_wrap_Device_directtcp_supported) {
3097   {
3098     Device *arg1 = (Device *) 0 ;
3099     void *argp1 = 0 ;
3100     int res1 = 0 ;
3101     int argvi = 0;
3102     gboolean result;
3103     dXSARGS;
3104     
3105     if ((items < 1) || (items > 1)) {
3106       SWIG_croak("Usage: Device_directtcp_supported(self);");
3107     }
3108     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3109     if (!SWIG_IsOK(res1)) {
3110       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_directtcp_supported" "', argument " "1"" of type '" "Device *""'"); 
3111     }
3112     arg1 = (Device *)(argp1);
3113     result = (gboolean)Device_directtcp_supported(arg1);
3114     {
3115       if (result)
3116       ST(argvi) = &PL_sv_yes;
3117       else
3118       ST(argvi) = &PL_sv_no;
3119       argvi++;
3120     }
3121     
3122     XSRETURN(argvi);
3123   fail:
3124     
3125     SWIG_croak_null();
3126   }
3127 }
3128
3129
3130 XS(_wrap_Device_listen) {
3131   {
3132     Device *arg1 = (Device *) 0 ;
3133     gboolean arg2 ;
3134     DirectTCPAddr **arg3 = (DirectTCPAddr **) 0 ;
3135     void *argp1 = 0 ;
3136     int res1 = 0 ;
3137     DirectTCPAddr *addrs3 ;
3138     int argvi = 0;
3139     dXSARGS;
3140     
3141     {
3142       addrs3 = NULL;
3143       arg3 = &addrs3;
3144     }
3145     if ((items < 2) || (items > 2)) {
3146       SWIG_croak("Usage: Device_listen(self,for_writing);");
3147     }
3148     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3149     if (!SWIG_IsOK(res1)) {
3150       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_listen" "', argument " "1"" of type '" "Device *""'"); 
3151     }
3152     arg1 = (Device *)(argp1);
3153     {
3154       arg2 = SvTRUE(ST(1));
3155     }
3156     Device_listen(arg1,arg2,arg3);
3157     ST(argvi) = sv_newmortal();
3158     {
3159       if (arg3 && *arg3) {
3160         DirectTCPAddr *iter = *arg3;
3161         AV *av = newAV();
3162         int i = 0;
3163         
3164         while (iter && SU_GET_FAMILY(iter) != 0) {
3165           char *addr = str_sockaddr_no_port(iter);
3166           AV *tuple = newAV();
3167           
3168           g_assert(NULL != av_store(tuple, 0, newSVpv(addr, 0)));
3169           g_assert(NULL != av_store(tuple, 1, newSViv(SU_GET_PORT(iter))));
3170           g_assert(NULL != av_store(av, i++, newRV_noinc((SV *)tuple)));
3171           iter++;
3172         }
3173         
3174         ST(argvi) = newRV_noinc((SV *)av);
3175         argvi++;
3176       }
3177     }
3178     
3179     
3180     
3181     XSRETURN(argvi);
3182   fail:
3183     
3184     
3185     
3186     SWIG_croak_null();
3187   }
3188 }
3189
3190
3191 XS(_wrap_Device_use_connection) {
3192   {
3193     Device *arg1 = (Device *) 0 ;
3194     DirectTCPConnection *arg2 = (DirectTCPConnection *) 0 ;
3195     void *argp1 = 0 ;
3196     int res1 = 0 ;
3197     void *argp2 = 0 ;
3198     int res2 = 0 ;
3199     int argvi = 0;
3200     gboolean result;
3201     dXSARGS;
3202     
3203     if ((items < 2) || (items > 2)) {
3204       SWIG_croak("Usage: Device_use_connection(self,conn);");
3205     }
3206     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3207     if (!SWIG_IsOK(res1)) {
3208       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_use_connection" "', argument " "1"" of type '" "Device *""'"); 
3209     }
3210     arg1 = (Device *)(argp1);
3211     res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_DirectTCPConnection, 0 |  0 );
3212     if (!SWIG_IsOK(res2)) {
3213       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Device_use_connection" "', argument " "2"" of type '" "DirectTCPConnection *""'"); 
3214     }
3215     arg2 = (DirectTCPConnection *)(argp2);
3216     result = (gboolean)Device_use_connection(arg1,arg2);
3217     {
3218       if (result)
3219       ST(argvi) = &PL_sv_yes;
3220       else
3221       ST(argvi) = &PL_sv_no;
3222       argvi++;
3223     }
3224     
3225     
3226     XSRETURN(argvi);
3227   fail:
3228     
3229     
3230     SWIG_croak_null();
3231   }
3232 }
3233
3234
3235 XS(_wrap_Device_property_list) {
3236   {
3237     Device *arg1 = (Device *) 0 ;
3238     void *argp1 = 0 ;
3239     int res1 = 0 ;
3240     int argvi = 0;
3241     GSList *result = 0 ;
3242     dXSARGS;
3243     
3244     if ((items < 1) || (items > 1)) {
3245       SWIG_croak("Usage: Device_property_list(self);");
3246     }
3247     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3248     if (!SWIG_IsOK(res1)) {
3249       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_property_list" "', argument " "1"" of type '" "Device *""'"); 
3250     }
3251     arg1 = (Device *)(argp1);
3252     result = (GSList *)Device_property_list(arg1);
3253     {
3254       GSList *iter;
3255       
3256       /* Count the DeviceProperties */
3257       EXTEND(SP, g_slist_length(result)); /* make room for return values */
3258       
3259       /* Note that we set ST(argvi) several times. the nature of
3260              * SWIG's wrapping is such that incrementing argvi points
3261              * ST(argvi) to the next location in perl's argument stack.
3262                    */
3263       
3264       for (iter = result; iter; iter = g_slist_next(iter)) {
3265         DeviceProperty *prop = iter->data;
3266         HV *hash = newHV();
3267         SV *rv = newRV_noinc((SV *)hash);
3268         
3269         hv_store(hash, "name", 4,
3270           newSVpv(prop->base->name, 0), 0);
3271         hv_store(hash, "description", 11,
3272           newSVpv(prop->base->description, 0), 0);
3273         hv_store(hash, "access", 6,
3274           newSViv(prop->access), 0);
3275         ST(argvi) = sv_2mortal(rv);
3276         argvi++;
3277       }
3278     }
3279     
3280     XSRETURN(argvi);
3281   fail:
3282     
3283     SWIG_croak_null();
3284   }
3285 }
3286
3287
3288 XS(_wrap_Device_property_get) {
3289   {
3290     Device *arg1 = (Device *) 0 ;
3291     DevicePropertyBase *arg2 = (DevicePropertyBase *) 0 ;
3292     GValue *arg3 = (GValue *) 0 ;
3293     PropertySurety *arg4 = (PropertySurety *) 0 ;
3294     PropertySource *arg5 = (PropertySource *) 0 ;
3295     gboolean *arg6 = (gboolean *) 0 ;
3296     void *argp1 = 0 ;
3297     int res1 = 0 ;
3298     GValue val3 ;
3299     PropertySurety surety3 ;
3300     PropertySource source3 ;
3301     gboolean found3 ;
3302     int argvi = 0;
3303     dXSARGS;
3304     
3305     {
3306       memset(&val3, 0, sizeof(val3));
3307       arg3 = &val3;
3308       if (GIMME_V == G_ARRAY) {
3309         arg4 = &surety3;
3310         arg5 = &source3;
3311       }
3312       arg6 = &found3;
3313     }
3314     if ((items < 2) || (items > 2)) {
3315       SWIG_croak("Usage: Device_property_get(self,pbase,surety,source,val_found);");
3316     }
3317     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3318     if (!SWIG_IsOK(res1)) {
3319       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_property_get" "', argument " "1"" of type '" "Device *""'"); 
3320     }
3321     arg1 = (Device *)(argp1);
3322     {
3323       char *pname = NULL;
3324       
3325       if (SvPOK(ST(1)))
3326       pname = SvPV_nolen(ST(1));
3327       
3328       if (pname)
3329       arg2 = (DevicePropertyBase *)device_property_get_by_name(pname);
3330       else
3331       arg2 = NULL;
3332     }
3333     Device_property_get(arg1,arg2,arg3,arg4,arg5,arg6);
3334     ST(argvi) = sv_newmortal();
3335     {
3336       /* if the result is valid */
3337       if (*arg6) {
3338         /* move data from arg3 to ST(argvi), somehow, being careful to
3339                          * save the perl stack while doing so */
3340         SP += argvi; PUTBACK;
3341         ST(argvi) = set_sv_from_gvalue(arg3);
3342         SPAGAIN; SP -= argvi; argvi++;
3343         
3344         /* free any memory for the GValue */
3345         g_value_unset(arg3);
3346         
3347         if (GIMME_V == G_ARRAY) {
3348           ST(argvi) = newSViv(*arg4);
3349           argvi++;
3350           ST(argvi) = newSViv(*arg5);
3351           argvi++;
3352         }
3353       }
3354       /* otherwise, return nothing */
3355     }
3356     
3357     
3358     XSRETURN(argvi);
3359   fail:
3360     
3361     
3362     SWIG_croak_null();
3363   }
3364 }
3365
3366
3367 XS(_wrap_Device_property_set) {
3368   {
3369     Device *arg1 = (Device *) 0 ;
3370     DevicePropertyBase *arg2 = (DevicePropertyBase *) 0 ;
3371     SV *arg3 = (SV *) 0 ;
3372     void *argp1 = 0 ;
3373     int res1 = 0 ;
3374     int argvi = 0;
3375     gboolean result;
3376     dXSARGS;
3377     
3378     if ((items < 3) || (items > 3)) {
3379       SWIG_croak("Usage: Device_property_set(self,pbase,sv);");
3380     }
3381     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3382     if (!SWIG_IsOK(res1)) {
3383       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_property_set" "', argument " "1"" of type '" "Device *""'"); 
3384     }
3385     arg1 = (Device *)(argp1);
3386     {
3387       char *pname = NULL;
3388       
3389       if (SvPOK(ST(1)))
3390       pname = SvPV_nolen(ST(1));
3391       
3392       if (pname)
3393       arg2 = (DevicePropertyBase *)device_property_get_by_name(pname);
3394       else
3395       arg2 = NULL;
3396     }
3397     arg3 = ST(2);
3398     result = (gboolean)Device_property_set(arg1,arg2,arg3);
3399     {
3400       if (result)
3401       ST(argvi) = &PL_sv_yes;
3402       else
3403       ST(argvi) = &PL_sv_no;
3404       argvi++;
3405     }
3406     
3407     
3408     
3409     XSRETURN(argvi);
3410   fail:
3411     
3412     
3413     
3414     SWIG_croak_null();
3415   }
3416 }
3417
3418
3419 XS(_wrap_Device_property_set_ex) {
3420   {
3421     Device *arg1 = (Device *) 0 ;
3422     DevicePropertyBase *arg2 = (DevicePropertyBase *) 0 ;
3423     SV *arg3 = (SV *) 0 ;
3424     PropertySurety arg4 ;
3425     PropertySource arg5 ;
3426     void *argp1 = 0 ;
3427     int res1 = 0 ;
3428     int argvi = 0;
3429     gboolean result;
3430     dXSARGS;
3431     
3432     if ((items < 5) || (items > 5)) {
3433       SWIG_croak("Usage: Device_property_set_ex(self,pbase,sv,surety,source);");
3434     }
3435     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3436     if (!SWIG_IsOK(res1)) {
3437       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_property_set_ex" "', argument " "1"" of type '" "Device *""'"); 
3438     }
3439     arg1 = (Device *)(argp1);
3440     {
3441       char *pname = NULL;
3442       
3443       if (SvPOK(ST(1)))
3444       pname = SvPV_nolen(ST(1));
3445       
3446       if (pname)
3447       arg2 = (DevicePropertyBase *)device_property_get_by_name(pname);
3448       else
3449       arg2 = NULL;
3450     }
3451     arg3 = ST(2);
3452     {
3453       if (sizeof(signed int) == 1) {
3454         arg4 = amglue_SvI8(ST(3));
3455       } else if (sizeof(signed int) == 2) {
3456         arg4 = amglue_SvI16(ST(3));
3457       } else if (sizeof(signed int) == 4) {
3458         arg4 = amglue_SvI32(ST(3));
3459       } else if (sizeof(signed int) == 8) {
3460         arg4 = amglue_SvI64(ST(3));
3461       } else {
3462         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
3463       }
3464     }
3465     {
3466       if (sizeof(signed int) == 1) {
3467         arg5 = amglue_SvI8(ST(4));
3468       } else if (sizeof(signed int) == 2) {
3469         arg5 = amglue_SvI16(ST(4));
3470       } else if (sizeof(signed int) == 4) {
3471         arg5 = amglue_SvI32(ST(4));
3472       } else if (sizeof(signed int) == 8) {
3473         arg5 = amglue_SvI64(ST(4));
3474       } else {
3475         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
3476       }
3477     }
3478     result = (gboolean)Device_property_set_ex(arg1,arg2,arg3,arg4,arg5);
3479     {
3480       if (result)
3481       ST(argvi) = &PL_sv_yes;
3482       else
3483       ST(argvi) = &PL_sv_no;
3484       argvi++;
3485     }
3486     
3487     
3488     
3489     
3490     
3491     XSRETURN(argvi);
3492   fail:
3493     
3494     
3495     
3496     
3497     
3498     SWIG_croak_null();
3499   }
3500 }
3501
3502
3503 XS(_wrap_Device_recycle_file) {
3504   {
3505     Device *arg1 = (Device *) 0 ;
3506     guint arg2 ;
3507     void *argp1 = 0 ;
3508     int res1 = 0 ;
3509     int argvi = 0;
3510     gboolean result;
3511     dXSARGS;
3512     
3513     if ((items < 2) || (items > 2)) {
3514       SWIG_croak("Usage: Device_recycle_file(self,filenum);");
3515     }
3516     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3517     if (!SWIG_IsOK(res1)) {
3518       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_recycle_file" "', argument " "1"" of type '" "Device *""'"); 
3519     }
3520     arg1 = (Device *)(argp1);
3521     {
3522       if (sizeof(guint) == 1) {
3523         arg2 = amglue_SvU8(ST(1));
3524       } else if (sizeof(guint) == 2) {
3525         arg2 = amglue_SvU16(ST(1));
3526       } else if (sizeof(guint) == 4) {
3527         arg2 = amglue_SvU32(ST(1));
3528       } else if (sizeof(guint) == 8) {
3529         arg2 = amglue_SvU64(ST(1));
3530       } else {
3531         croak("Unexpected guint >64 bits?"); /* should be optimized out unless sizeof(guint) > 8 */
3532       }
3533     }
3534     result = (gboolean)Device_recycle_file(arg1,arg2);
3535     {
3536       if (result)
3537       ST(argvi) = &PL_sv_yes;
3538       else
3539       ST(argvi) = &PL_sv_no;
3540       argvi++;
3541     }
3542     
3543     XSRETURN(argvi);
3544   fail:
3545     
3546     SWIG_croak_null();
3547   }
3548 }
3549
3550
3551 XS(_wrap_Device_file) {
3552   {
3553     Device *arg1 = (Device *) 0 ;
3554     void *argp1 = 0 ;
3555     int res1 = 0 ;
3556     int argvi = 0;
3557     int result;
3558     dXSARGS;
3559     
3560     if ((items < 1) || (items > 1)) {
3561       SWIG_croak("Usage: Device_file(self);");
3562     }
3563     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3564     if (!SWIG_IsOK(res1)) {
3565       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_file" "', argument " "1"" of type '" "Device *""'"); 
3566     }
3567     arg1 = (Device *)(argp1);
3568     result = (int)Device_file(arg1);
3569     {
3570       SV *for_stack;
3571       SP += argvi; PUTBACK;
3572       for_stack = sv_2mortal(amglue_newSVi64(result));
3573       SPAGAIN; SP -= argvi;
3574       ST(argvi) = for_stack;
3575       argvi++;
3576     }
3577     
3578     XSRETURN(argvi);
3579   fail:
3580     
3581     SWIG_croak_null();
3582   }
3583 }
3584
3585
3586 XS(_wrap_Device_block) {
3587   {
3588     Device *arg1 = (Device *) 0 ;
3589     void *argp1 = 0 ;
3590     int res1 = 0 ;
3591     int argvi = 0;
3592     guint64 result;
3593     dXSARGS;
3594     
3595     if ((items < 1) || (items > 1)) {
3596       SWIG_croak("Usage: Device_block(self);");
3597     }
3598     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3599     if (!SWIG_IsOK(res1)) {
3600       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_block" "', argument " "1"" of type '" "Device *""'"); 
3601     }
3602     arg1 = (Device *)(argp1);
3603     result = Device_block(arg1);
3604     {
3605       SV *for_stack;
3606       SP += argvi; PUTBACK;
3607       for_stack = sv_2mortal(amglue_newSVu64(result));
3608       SPAGAIN; SP -= argvi;
3609       ST(argvi) = for_stack;
3610       argvi++;
3611     }
3612     
3613     XSRETURN(argvi);
3614   fail:
3615     
3616     SWIG_croak_null();
3617   }
3618 }
3619
3620
3621 XS(_wrap_Device_in_file) {
3622   {
3623     Device *arg1 = (Device *) 0 ;
3624     void *argp1 = 0 ;
3625     int res1 = 0 ;
3626     int argvi = 0;
3627     gboolean result;
3628     dXSARGS;
3629     
3630     if ((items < 1) || (items > 1)) {
3631       SWIG_croak("Usage: Device_in_file(self);");
3632     }
3633     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3634     if (!SWIG_IsOK(res1)) {
3635       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_in_file" "', argument " "1"" of type '" "Device *""'"); 
3636     }
3637     arg1 = (Device *)(argp1);
3638     result = (gboolean)Device_in_file(arg1);
3639     {
3640       if (result)
3641       ST(argvi) = &PL_sv_yes;
3642       else
3643       ST(argvi) = &PL_sv_no;
3644       argvi++;
3645     }
3646     
3647     XSRETURN(argvi);
3648   fail:
3649     
3650     SWIG_croak_null();
3651   }
3652 }
3653
3654
3655 XS(_wrap_Device_device_name) {
3656   {
3657     Device *arg1 = (Device *) 0 ;
3658     void *argp1 = 0 ;
3659     int res1 = 0 ;
3660     int argvi = 0;
3661     char *result = 0 ;
3662     dXSARGS;
3663     
3664     if ((items < 1) || (items > 1)) {
3665       SWIG_croak("Usage: Device_device_name(self);");
3666     }
3667     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3668     if (!SWIG_IsOK(res1)) {
3669       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_device_name" "', argument " "1"" of type '" "Device *""'"); 
3670     }
3671     arg1 = (Device *)(argp1);
3672     result = (char *)Device_device_name(arg1);
3673     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
3674     
3675     XSRETURN(argvi);
3676   fail:
3677     
3678     SWIG_croak_null();
3679   }
3680 }
3681
3682
3683 XS(_wrap_Device_access_mode) {
3684   {
3685     Device *arg1 = (Device *) 0 ;
3686     void *argp1 = 0 ;
3687     int res1 = 0 ;
3688     int argvi = 0;
3689     DeviceAccessMode result;
3690     dXSARGS;
3691     
3692     if ((items < 1) || (items > 1)) {
3693       SWIG_croak("Usage: Device_access_mode(self);");
3694     }
3695     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3696     if (!SWIG_IsOK(res1)) {
3697       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_access_mode" "', argument " "1"" of type '" "Device *""'"); 
3698     }
3699     arg1 = (Device *)(argp1);
3700     result = (DeviceAccessMode)Device_access_mode(arg1);
3701     {
3702       SV *for_stack;
3703       SP += argvi; PUTBACK;
3704       for_stack = sv_2mortal(amglue_newSVi64(result));
3705       SPAGAIN; SP -= argvi;
3706       ST(argvi) = for_stack;
3707       argvi++;
3708     }
3709     
3710     XSRETURN(argvi);
3711   fail:
3712     
3713     SWIG_croak_null();
3714   }
3715 }
3716
3717
3718 XS(_wrap_Device_is_eof) {
3719   {
3720     Device *arg1 = (Device *) 0 ;
3721     void *argp1 = 0 ;
3722     int res1 = 0 ;
3723     int argvi = 0;
3724     gboolean result;
3725     dXSARGS;
3726     
3727     if ((items < 1) || (items > 1)) {
3728       SWIG_croak("Usage: Device_is_eof(self);");
3729     }
3730     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3731     if (!SWIG_IsOK(res1)) {
3732       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_is_eof" "', argument " "1"" of type '" "Device *""'"); 
3733     }
3734     arg1 = (Device *)(argp1);
3735     result = (gboolean)Device_is_eof(arg1);
3736     {
3737       if (result)
3738       ST(argvi) = &PL_sv_yes;
3739       else
3740       ST(argvi) = &PL_sv_no;
3741       argvi++;
3742     }
3743     
3744     XSRETURN(argvi);
3745   fail:
3746     
3747     SWIG_croak_null();
3748   }
3749 }
3750
3751
3752 XS(_wrap_Device_is_eom) {
3753   {
3754     Device *arg1 = (Device *) 0 ;
3755     void *argp1 = 0 ;
3756     int res1 = 0 ;
3757     int argvi = 0;
3758     gboolean result;
3759     dXSARGS;
3760     
3761     if ((items < 1) || (items > 1)) {
3762       SWIG_croak("Usage: Device_is_eom(self);");
3763     }
3764     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3765     if (!SWIG_IsOK(res1)) {
3766       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_is_eom" "', argument " "1"" of type '" "Device *""'"); 
3767     }
3768     arg1 = (Device *)(argp1);
3769     result = (gboolean)Device_is_eom(arg1);
3770     {
3771       if (result)
3772       ST(argvi) = &PL_sv_yes;
3773       else
3774       ST(argvi) = &PL_sv_no;
3775       argvi++;
3776     }
3777     
3778     XSRETURN(argvi);
3779   fail:
3780     
3781     SWIG_croak_null();
3782   }
3783 }
3784
3785
3786 XS(_wrap_Device_volume_label) {
3787   {
3788     Device *arg1 = (Device *) 0 ;
3789     void *argp1 = 0 ;
3790     int res1 = 0 ;
3791     int argvi = 0;
3792     char *result = 0 ;
3793     dXSARGS;
3794     
3795     if ((items < 1) || (items > 1)) {
3796       SWIG_croak("Usage: Device_volume_label(self);");
3797     }
3798     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3799     if (!SWIG_IsOK(res1)) {
3800       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_volume_label" "', argument " "1"" of type '" "Device *""'"); 
3801     }
3802     arg1 = (Device *)(argp1);
3803     result = (char *)Device_volume_label(arg1);
3804     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
3805     
3806     XSRETURN(argvi);
3807   fail:
3808     
3809     SWIG_croak_null();
3810   }
3811 }
3812
3813
3814 XS(_wrap_Device_volume_time) {
3815   {
3816     Device *arg1 = (Device *) 0 ;
3817     void *argp1 = 0 ;
3818     int res1 = 0 ;
3819     int argvi = 0;
3820     char *result = 0 ;
3821     dXSARGS;
3822     
3823     if ((items < 1) || (items > 1)) {
3824       SWIG_croak("Usage: Device_volume_time(self);");
3825     }
3826     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3827     if (!SWIG_IsOK(res1)) {
3828       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_volume_time" "', argument " "1"" of type '" "Device *""'"); 
3829     }
3830     arg1 = (Device *)(argp1);
3831     result = (char *)Device_volume_time(arg1);
3832     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
3833     
3834     XSRETURN(argvi);
3835   fail:
3836     
3837     SWIG_croak_null();
3838   }
3839 }
3840
3841
3842 XS(_wrap_Device_status) {
3843   {
3844     Device *arg1 = (Device *) 0 ;
3845     void *argp1 = 0 ;
3846     int res1 = 0 ;
3847     int argvi = 0;
3848     DeviceStatusFlags result;
3849     dXSARGS;
3850     
3851     if ((items < 1) || (items > 1)) {
3852       SWIG_croak("Usage: Device_status(self);");
3853     }
3854     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3855     if (!SWIG_IsOK(res1)) {
3856       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_status" "', argument " "1"" of type '" "Device *""'"); 
3857     }
3858     arg1 = (Device *)(argp1);
3859     result = (DeviceStatusFlags)Device_status(arg1);
3860     {
3861       SV *for_stack;
3862       SP += argvi; PUTBACK;
3863       for_stack = sv_2mortal(amglue_newSVi64(result));
3864       SPAGAIN; SP -= argvi;
3865       ST(argvi) = for_stack;
3866       argvi++;
3867     }
3868     
3869     XSRETURN(argvi);
3870   fail:
3871     
3872     SWIG_croak_null();
3873   }
3874 }
3875
3876
3877 XS(_wrap_Device_min_block_size) {
3878   {
3879     Device *arg1 = (Device *) 0 ;
3880     void *argp1 = 0 ;
3881     int res1 = 0 ;
3882     int argvi = 0;
3883     gsize result;
3884     dXSARGS;
3885     
3886     if ((items < 1) || (items > 1)) {
3887       SWIG_croak("Usage: Device_min_block_size(self);");
3888     }
3889     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3890     if (!SWIG_IsOK(res1)) {
3891       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_min_block_size" "', argument " "1"" of type '" "Device *""'"); 
3892     }
3893     arg1 = (Device *)(argp1);
3894     result = Device_min_block_size(arg1);
3895     {
3896       SV *for_stack;
3897       SP += argvi; PUTBACK;
3898       for_stack = sv_2mortal(amglue_newSVu64(result));
3899       SPAGAIN; SP -= argvi;
3900       ST(argvi) = for_stack;
3901       argvi++;
3902     }
3903     
3904     XSRETURN(argvi);
3905   fail:
3906     
3907     SWIG_croak_null();
3908   }
3909 }
3910
3911
3912 XS(_wrap_Device_max_block_size) {
3913   {
3914     Device *arg1 = (Device *) 0 ;
3915     void *argp1 = 0 ;
3916     int res1 = 0 ;
3917     int argvi = 0;
3918     gsize result;
3919     dXSARGS;
3920     
3921     if ((items < 1) || (items > 1)) {
3922       SWIG_croak("Usage: Device_max_block_size(self);");
3923     }
3924     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3925     if (!SWIG_IsOK(res1)) {
3926       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_max_block_size" "', argument " "1"" of type '" "Device *""'"); 
3927     }
3928     arg1 = (Device *)(argp1);
3929     result = Device_max_block_size(arg1);
3930     {
3931       SV *for_stack;
3932       SP += argvi; PUTBACK;
3933       for_stack = sv_2mortal(amglue_newSVu64(result));
3934       SPAGAIN; SP -= argvi;
3935       ST(argvi) = for_stack;
3936       argvi++;
3937     }
3938     
3939     XSRETURN(argvi);
3940   fail:
3941     
3942     SWIG_croak_null();
3943   }
3944 }
3945
3946
3947 XS(_wrap_Device_block_size) {
3948   {
3949     Device *arg1 = (Device *) 0 ;
3950     void *argp1 = 0 ;
3951     int res1 = 0 ;
3952     int argvi = 0;
3953     gsize result;
3954     dXSARGS;
3955     
3956     if ((items < 1) || (items > 1)) {
3957       SWIG_croak("Usage: Device_block_size(self);");
3958     }
3959     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3960     if (!SWIG_IsOK(res1)) {
3961       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_block_size" "', argument " "1"" of type '" "Device *""'"); 
3962     }
3963     arg1 = (Device *)(argp1);
3964     result = Device_block_size(arg1);
3965     {
3966       SV *for_stack;
3967       SP += argvi; PUTBACK;
3968       for_stack = sv_2mortal(amglue_newSVu64(result));
3969       SPAGAIN; SP -= argvi;
3970       ST(argvi) = for_stack;
3971       argvi++;
3972     }
3973     
3974     XSRETURN(argvi);
3975   fail:
3976     
3977     SWIG_croak_null();
3978   }
3979 }
3980
3981
3982 XS(_wrap_Device_header_block_size) {
3983   {
3984     Device *arg1 = (Device *) 0 ;
3985     void *argp1 = 0 ;
3986     int res1 = 0 ;
3987     int argvi = 0;
3988     gsize result;
3989     dXSARGS;
3990     
3991     if ((items < 1) || (items > 1)) {
3992       SWIG_croak("Usage: Device_header_block_size(self);");
3993     }
3994     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
3995     if (!SWIG_IsOK(res1)) {
3996       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_header_block_size" "', argument " "1"" of type '" "Device *""'"); 
3997     }
3998     arg1 = (Device *)(argp1);
3999     result = Device_header_block_size(arg1);
4000     {
4001       SV *for_stack;
4002       SP += argvi; PUTBACK;
4003       for_stack = sv_2mortal(amglue_newSVu64(result));
4004       SPAGAIN; SP -= argvi;
4005       ST(argvi) = for_stack;
4006       argvi++;
4007     }
4008     
4009     XSRETURN(argvi);
4010   fail:
4011     
4012     SWIG_croak_null();
4013   }
4014 }
4015
4016
4017 XS(_wrap_Device_volume_header) {
4018   {
4019     Device *arg1 = (Device *) 0 ;
4020     void *argp1 = 0 ;
4021     int res1 = 0 ;
4022     int argvi = 0;
4023     dumpfile_t *result = 0 ;
4024     dXSARGS;
4025     
4026     if ((items < 1) || (items > 1)) {
4027       SWIG_croak("Usage: Device_volume_header(self);");
4028     }
4029     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Device, 0 |  0 );
4030     if (!SWIG_IsOK(res1)) {
4031       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Device_volume_header" "', argument " "1"" of type '" "Device *""'"); 
4032     }
4033     arg1 = (Device *)(argp1);
4034     result = (dumpfile_t *)Device_volume_header(arg1);
4035     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_dumpfile_t, 0 | SWIG_SHADOW); argvi++ ;
4036     
4037     XSRETURN(argvi);
4038   fail:
4039     
4040     SWIG_croak_null();
4041   }
4042 }
4043
4044
4045 XS(_wrap_rait_device_open_from_children) {
4046   {
4047     GSList *arg1 = (GSList *) 0 ;
4048     int argvi = 0;
4049     Device *result = 0 ;
4050     dXSARGS;
4051     
4052     if ((items < 1) || (items > 1)) {
4053       SWIG_croak("Usage: rait_device_open_from_children(child_devices);");
4054     }
4055     {
4056       AV *av;
4057       int i, len;
4058       
4059       if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV) {
4060         SWIG_exception(SWIG_TypeError, "Expected an arrayref");
4061       }
4062       av = (AV *)SvRV(ST(0));
4063       
4064       arg1 = NULL;
4065       len = av_len(av);
4066       for (i = 0; i <= len; i++) {
4067         SV **elt = av_fetch(av, i, 0);
4068         Device *d;
4069         
4070         if (elt && !SvOK(*elt)) {
4071           arg1 = g_slist_append(arg1, NULL); /* 'undef' => NULL */
4072         } else if (!elt || SWIG_ConvertPtr(*elt, (void **)&d, SWIGTYPE_p_Device, 0) == -1) {
4073           SWIG_exception(SWIG_TypeError, "array member is not a Device");
4074         } else {
4075           arg1 = g_slist_append(arg1, d);
4076         }
4077       }
4078     }
4079     result = (Device *)rait_device_open_from_children(arg1);
4080     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Device, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
4081     {
4082       g_slist_free(arg1);
4083     }
4084     XSRETURN(argvi);
4085   fail:
4086     {
4087       g_slist_free(arg1);
4088     }
4089     SWIG_croak_null();
4090   }
4091 }
4092
4093
4094 XS(_wrap_write_random_to_device) {
4095   {
4096     guint32 arg1 ;
4097     size_t arg2 ;
4098     Device *arg3 = (Device *) 0 ;
4099     void *argp3 = 0 ;
4100     int res3 = 0 ;
4101     int argvi = 0;
4102     gboolean result;
4103     dXSARGS;
4104     
4105     if ((items < 3) || (items > 3)) {
4106       SWIG_croak("Usage: write_random_to_device(seed,length,device);");
4107     }
4108     {
4109       arg1 = amglue_SvU32(ST(0));
4110     }
4111     {
4112       if (sizeof(size_t) == 1) {
4113         arg2 = amglue_SvU8(ST(1));
4114       } else if (sizeof(size_t) == 2) {
4115         arg2 = amglue_SvU16(ST(1));
4116       } else if (sizeof(size_t) == 4) {
4117         arg2 = amglue_SvU32(ST(1));
4118       } else if (sizeof(size_t) == 8) {
4119         arg2 = amglue_SvU64(ST(1));
4120       } else {
4121         croak("Unexpected size_t >64 bits?"); /* should be optimized out unless sizeof(size_t) > 8 */
4122       }
4123     }
4124     res3 = SWIG_ConvertPtr(ST(2), &argp3,SWIGTYPE_p_Device, 0 |  0 );
4125     if (!SWIG_IsOK(res3)) {
4126       SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "write_random_to_device" "', argument " "3"" of type '" "Device *""'"); 
4127     }
4128     arg3 = (Device *)(argp3);
4129     result = (gboolean)write_random_to_device(arg1,arg2,arg3);
4130     {
4131       if (result)
4132       ST(argvi) = &PL_sv_yes;
4133       else
4134       ST(argvi) = &PL_sv_no;
4135       argvi++;
4136     }
4137     
4138     
4139     XSRETURN(argvi);
4140   fail:
4141     
4142     
4143     SWIG_croak_null();
4144   }
4145 }
4146
4147
4148 XS(_wrap_verify_random_from_device) {
4149   {
4150     guint32 arg1 ;
4151     size_t arg2 ;
4152     Device *arg3 = (Device *) 0 ;
4153     void *argp3 = 0 ;
4154     int res3 = 0 ;
4155     int argvi = 0;
4156     gboolean result;
4157     dXSARGS;
4158     
4159     if ((items < 3) || (items > 3)) {
4160       SWIG_croak("Usage: verify_random_from_device(seed,length,device);");
4161     }
4162     {
4163       arg1 = amglue_SvU32(ST(0));
4164     }
4165     {
4166       if (sizeof(size_t) == 1) {
4167         arg2 = amglue_SvU8(ST(1));
4168       } else if (sizeof(size_t) == 2) {
4169         arg2 = amglue_SvU16(ST(1));
4170       } else if (sizeof(size_t) == 4) {
4171         arg2 = amglue_SvU32(ST(1));
4172       } else if (sizeof(size_t) == 8) {
4173         arg2 = amglue_SvU64(ST(1));
4174       } else {
4175         croak("Unexpected size_t >64 bits?"); /* should be optimized out unless sizeof(size_t) > 8 */
4176       }
4177     }
4178     res3 = SWIG_ConvertPtr(ST(2), &argp3,SWIGTYPE_p_Device, 0 |  0 );
4179     if (!SWIG_IsOK(res3)) {
4180       SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "verify_random_from_device" "', argument " "3"" of type '" "Device *""'"); 
4181     }
4182     arg3 = (Device *)(argp3);
4183     result = (gboolean)verify_random_from_device(arg1,arg2,arg3);
4184     {
4185       if (result)
4186       ST(argvi) = &PL_sv_yes;
4187       else
4188       ST(argvi) = &PL_sv_no;
4189       argvi++;
4190     }
4191     
4192     
4193     XSRETURN(argvi);
4194   fail:
4195     
4196     
4197     SWIG_croak_null();
4198   }
4199 }
4200
4201
4202 XS(_wrap_IS_WRITABLE_ACCESS_MODE) {
4203   {
4204     DeviceAccessMode arg1 ;
4205     int argvi = 0;
4206     gboolean result;
4207     dXSARGS;
4208     
4209     if ((items < 1) || (items > 1)) {
4210       SWIG_croak("Usage: IS_WRITABLE_ACCESS_MODE(mode);");
4211     }
4212     {
4213       if (sizeof(signed int) == 1) {
4214         arg1 = amglue_SvI8(ST(0));
4215       } else if (sizeof(signed int) == 2) {
4216         arg1 = amglue_SvI16(ST(0));
4217       } else if (sizeof(signed int) == 4) {
4218         arg1 = amglue_SvI32(ST(0));
4219       } else if (sizeof(signed int) == 8) {
4220         arg1 = amglue_SvI64(ST(0));
4221       } else {
4222         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
4223       }
4224     }
4225     result = (gboolean)IS_WRITABLE_ACCESS_MODE(arg1);
4226     {
4227       if (result)
4228       ST(argvi) = &PL_sv_yes;
4229       else
4230       ST(argvi) = &PL_sv_no;
4231       argvi++;
4232     }
4233     
4234     XSRETURN(argvi);
4235   fail:
4236     
4237     SWIG_croak_null();
4238   }
4239 }
4240
4241
4242
4243 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
4244
4245 static swig_type_info _swigt__p_Device = {"_p_Device", "struct Device *|Device *", 0, 0, (void*)"Amanda::Device::Device", 0};
4246 static swig_type_info _swigt__p_DevicePropertyBase = {"_p_DevicePropertyBase", "DevicePropertyBase *", 0, 0, (void*)0, 0};
4247 static swig_type_info _swigt__p_DirectTCPConnection = {"_p_DirectTCPConnection", "struct DirectTCPConnection *|DirectTCPConnection *", 0, 0, (void*)"Amanda::Device::DirectTCPConnection", 0};
4248 static swig_type_info _swigt__p_GSList = {"_p_GSList", "GSList *", 0, 0, (void*)0, 0};
4249 static swig_type_info _swigt__p_GValue = {"_p_GValue", "GValue *", 0, 0, (void*)0, 0};
4250 static swig_type_info _swigt__p_a_STRMAX__char = {"_p_a_STRMAX__char", "char (*)[STRMAX]|string_t *", 0, 0, (void*)0, 0};
4251 static swig_type_info _swigt__p_char = {"_p_char", "gchar *|char *", 0, 0, (void*)0, 0};
4252 static swig_type_info _swigt__p_double = {"_p_double", "double *|gdouble *", 0, 0, (void*)0, 0};
4253 static swig_type_info _swigt__p_dumpfile_t = {"_p_dumpfile_t", "dumpfile_t *", 0, 0, (void*)"Amanda::Header::Header", 0};
4254 static swig_type_info _swigt__p_float = {"_p_float", "float *|gfloat *", 0, 0, (void*)0, 0};
4255 static swig_type_info _swigt__p_guint = {"_p_guint", "guint *", 0, 0, (void*)0, 0};
4256 static swig_type_info _swigt__p_guint32 = {"_p_guint32", "guint32 *", 0, 0, (void*)0, 0};
4257 static swig_type_info _swigt__p_guint64 = {"_p_guint64", "guint64 *", 0, 0, (void*)0, 0};
4258 static swig_type_info _swigt__p_int = {"_p_int", "int *|PropertySurety *|ConcurrencyParadigm *|filetype_t *|PropertySource *|StreamingRequirement *|gboolean *|DeviceAccessMode *|MediaAccessMode *|DeviceStatusFlags *|PropertyPhaseFlags *|PropertyAccessFlags *", 0, 0, (void*)0, 0};
4259 static swig_type_info _swigt__p_p_DirectTCPAddr = {"_p_p_DirectTCPAddr", "DirectTCPAddr **", 0, 0, (void*)0, 0};
4260 static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "guchar *|unsigned char *", 0, 0, (void*)0, 0};
4261
4262 static swig_type_info *swig_type_initial[] = {
4263   &_swigt__p_Device,
4264   &_swigt__p_DevicePropertyBase,
4265   &_swigt__p_DirectTCPConnection,
4266   &_swigt__p_GSList,
4267   &_swigt__p_GValue,
4268   &_swigt__p_a_STRMAX__char,
4269   &_swigt__p_char,
4270   &_swigt__p_double,
4271   &_swigt__p_dumpfile_t,
4272   &_swigt__p_float,
4273   &_swigt__p_guint,
4274   &_swigt__p_guint32,
4275   &_swigt__p_guint64,
4276   &_swigt__p_int,
4277   &_swigt__p_p_DirectTCPAddr,
4278   &_swigt__p_unsigned_char,
4279 };
4280
4281 static swig_cast_info _swigc__p_Device[] = {  {&_swigt__p_Device, 0, 0, 0},{0, 0, 0, 0}};
4282 static swig_cast_info _swigc__p_DevicePropertyBase[] = {  {&_swigt__p_DevicePropertyBase, 0, 0, 0},{0, 0, 0, 0}};
4283 static swig_cast_info _swigc__p_DirectTCPConnection[] = {  {&_swigt__p_DirectTCPConnection, 0, 0, 0},{0, 0, 0, 0}};
4284 static swig_cast_info _swigc__p_GSList[] = {  {&_swigt__p_GSList, 0, 0, 0},{0, 0, 0, 0}};
4285 static swig_cast_info _swigc__p_GValue[] = {  {&_swigt__p_GValue, 0, 0, 0},{0, 0, 0, 0}};
4286 static swig_cast_info _swigc__p_a_STRMAX__char[] = {  {&_swigt__p_a_STRMAX__char, 0, 0, 0},{0, 0, 0, 0}};
4287 static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
4288 static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}};
4289 static swig_cast_info _swigc__p_dumpfile_t[] = {  {&_swigt__p_dumpfile_t, 0, 0, 0},{0, 0, 0, 0}};
4290 static swig_cast_info _swigc__p_float[] = {  {&_swigt__p_float, 0, 0, 0},{0, 0, 0, 0}};
4291 static swig_cast_info _swigc__p_guint[] = {  {&_swigt__p_guint, 0, 0, 0},{0, 0, 0, 0}};
4292 static swig_cast_info _swigc__p_guint32[] = {  {&_swigt__p_guint32, 0, 0, 0},{0, 0, 0, 0}};
4293 static swig_cast_info _swigc__p_guint64[] = {  {&_swigt__p_guint64, 0, 0, 0},{0, 0, 0, 0}};
4294 static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
4295 static swig_cast_info _swigc__p_p_DirectTCPAddr[] = {  {&_swigt__p_p_DirectTCPAddr, 0, 0, 0},{0, 0, 0, 0}};
4296 static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
4297
4298 static swig_cast_info *swig_cast_initial[] = {
4299   _swigc__p_Device,
4300   _swigc__p_DevicePropertyBase,
4301   _swigc__p_DirectTCPConnection,
4302   _swigc__p_GSList,
4303   _swigc__p_GValue,
4304   _swigc__p_a_STRMAX__char,
4305   _swigc__p_char,
4306   _swigc__p_double,
4307   _swigc__p_dumpfile_t,
4308   _swigc__p_float,
4309   _swigc__p_guint,
4310   _swigc__p_guint32,
4311   _swigc__p_guint64,
4312   _swigc__p_int,
4313   _swigc__p_p_DirectTCPAddr,
4314   _swigc__p_unsigned_char,
4315 };
4316
4317
4318 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
4319
4320 static swig_constant_info swig_constants[] = {
4321 {0,0,0,0,0,0}
4322 };
4323 #ifdef __cplusplus
4324 }
4325 #endif
4326 static swig_variable_info swig_variables[] = {
4327 {0,0,0,0}
4328 };
4329 static swig_command_info swig_commands[] = {
4330 {"Amanda::Devicec::delete_DirectTCPConnection", _wrap_delete_DirectTCPConnection},
4331 {"Amanda::Devicec::DirectTCPConnection_close", _wrap_DirectTCPConnection_close},
4332 {"Amanda::Devicec::new_DirectTCPConnection", _wrap_new_DirectTCPConnection},
4333 {"Amanda::Devicec::unaliased_name", _wrap_unaliased_name},
4334 {"Amanda::Devicec::new_Device", _wrap_new_Device},
4335 {"Amanda::Devicec::delete_Device", _wrap_delete_Device},
4336 {"Amanda::Devicec::Device_configure", _wrap_Device_configure},
4337 {"Amanda::Devicec::Device_error", _wrap_Device_error},
4338 {"Amanda::Devicec::Device_status_error", _wrap_Device_status_error},
4339 {"Amanda::Devicec::Device_error_or_status", _wrap_Device_error_or_status},
4340 {"Amanda::Devicec::Device_read_label", _wrap_Device_read_label},
4341 {"Amanda::Devicec::Device_start", _wrap_Device_start},
4342 {"Amanda::Devicec::Device_finish", _wrap_Device_finish},
4343 {"Amanda::Devicec::Device_get_bytes_read", _wrap_Device_get_bytes_read},
4344 {"Amanda::Devicec::Device_get_bytes_written", _wrap_Device_get_bytes_written},
4345 {"Amanda::Devicec::Device_start_file", _wrap_Device_start_file},
4346 {"Amanda::Devicec::Device_write_block", _wrap_Device_write_block},
4347 {"Amanda::Devicec::Device_finish_file", _wrap_Device_finish_file},
4348 {"Amanda::Devicec::Device_seek_file", _wrap_Device_seek_file},
4349 {"Amanda::Devicec::Device_seek_block", _wrap_Device_seek_block},
4350 {"Amanda::Devicec::Device_read_block", _wrap_Device_read_block},
4351 {"Amanda::Devicec::Device_erase", _wrap_Device_erase},
4352 {"Amanda::Devicec::Device_eject", _wrap_Device_eject},
4353 {"Amanda::Devicec::Device_directtcp_supported", _wrap_Device_directtcp_supported},
4354 {"Amanda::Devicec::Device_listen", _wrap_Device_listen},
4355 {"Amanda::Devicec::Device_use_connection", _wrap_Device_use_connection},
4356 {"Amanda::Devicec::Device_property_list", _wrap_Device_property_list},
4357 {"Amanda::Devicec::Device_property_get", _wrap_Device_property_get},
4358 {"Amanda::Devicec::Device_property_set", _wrap_Device_property_set},
4359 {"Amanda::Devicec::Device_property_set_ex", _wrap_Device_property_set_ex},
4360 {"Amanda::Devicec::Device_recycle_file", _wrap_Device_recycle_file},
4361 {"Amanda::Devicec::Device_file", _wrap_Device_file},
4362 {"Amanda::Devicec::Device_block", _wrap_Device_block},
4363 {"Amanda::Devicec::Device_in_file", _wrap_Device_in_file},
4364 {"Amanda::Devicec::Device_device_name", _wrap_Device_device_name},
4365 {"Amanda::Devicec::Device_access_mode", _wrap_Device_access_mode},
4366 {"Amanda::Devicec::Device_is_eof", _wrap_Device_is_eof},
4367 {"Amanda::Devicec::Device_is_eom", _wrap_Device_is_eom},
4368 {"Amanda::Devicec::Device_volume_label", _wrap_Device_volume_label},
4369 {"Amanda::Devicec::Device_volume_time", _wrap_Device_volume_time},
4370 {"Amanda::Devicec::Device_status", _wrap_Device_status},
4371 {"Amanda::Devicec::Device_min_block_size", _wrap_Device_min_block_size},
4372 {"Amanda::Devicec::Device_max_block_size", _wrap_Device_max_block_size},
4373 {"Amanda::Devicec::Device_block_size", _wrap_Device_block_size},
4374 {"Amanda::Devicec::Device_header_block_size", _wrap_Device_header_block_size},
4375 {"Amanda::Devicec::Device_volume_header", _wrap_Device_volume_header},
4376 {"Amanda::Devicec::rait_device_open_from_children", _wrap_rait_device_open_from_children},
4377 {"Amanda::Devicec::write_random_to_device", _wrap_write_random_to_device},
4378 {"Amanda::Devicec::verify_random_from_device", _wrap_verify_random_from_device},
4379 {"Amanda::Devicec::IS_WRITABLE_ACCESS_MODE", _wrap_IS_WRITABLE_ACCESS_MODE},
4380 {0,0}
4381 };
4382 /* -----------------------------------------------------------------------------
4383  * Type initialization:
4384  * This problem is tough by the requirement that no dynamic 
4385  * memory is used. Also, since swig_type_info structures store pointers to 
4386  * swig_cast_info structures and swig_cast_info structures store pointers back
4387  * to swig_type_info structures, we need some lookup code at initialization. 
4388  * The idea is that swig generates all the structures that are needed. 
4389  * The runtime then collects these partially filled structures. 
4390  * The SWIG_InitializeModule function takes these initial arrays out of 
4391  * swig_module, and does all the lookup, filling in the swig_module.types
4392  * array with the correct data and linking the correct swig_cast_info
4393  * structures together.
4394  *
4395  * The generated swig_type_info structures are assigned staticly to an initial 
4396  * array. We just loop through that array, and handle each type individually.
4397  * First we lookup if this type has been already loaded, and if so, use the
4398  * loaded structure instead of the generated one. Then we have to fill in the
4399  * cast linked list. The cast data is initially stored in something like a
4400  * two-dimensional array. Each row corresponds to a type (there are the same
4401  * number of rows as there are in the swig_type_initial array). Each entry in
4402  * a column is one of the swig_cast_info structures for that type.
4403  * The cast_initial array is actually an array of arrays, because each row has
4404  * a variable number of columns. So to actually build the cast linked list,
4405  * we find the array of casts associated with the type, and loop through it 
4406  * adding the casts to the list. The one last trick we need to do is making
4407  * sure the type pointer in the swig_cast_info struct is correct.
4408  *
4409  * First off, we lookup the cast->type name to see if it is already loaded. 
4410  * There are three cases to handle:
4411  *  1) If the cast->type has already been loaded AND the type we are adding
4412  *     casting info to has not been loaded (it is in this module), THEN we
4413  *     replace the cast->type pointer with the type pointer that has already
4414  *     been loaded.
4415  *  2) If BOTH types (the one we are adding casting info to, and the 
4416  *     cast->type) are loaded, THEN the cast info has already been loaded by
4417  *     the previous module so we just ignore it.
4418  *  3) Finally, if cast->type has not already been loaded, then we add that
4419  *     swig_cast_info to the linked list (because the cast->type) pointer will
4420  *     be correct.
4421  * ----------------------------------------------------------------------------- */
4422
4423 #ifdef __cplusplus
4424 extern "C" {
4425 #if 0
4426 } /* c-mode */
4427 #endif
4428 #endif
4429
4430 #if 0
4431 #define SWIGRUNTIME_DEBUG
4432 #endif
4433
4434
4435 SWIGRUNTIME void
4436 SWIG_InitializeModule(void *clientdata) {
4437   size_t i;
4438   swig_module_info *module_head, *iter;
4439   int found, init;
4440   
4441   clientdata = clientdata;
4442   
4443   /* check to see if the circular list has been setup, if not, set it up */
4444   if (swig_module.next==0) {
4445     /* Initialize the swig_module */
4446     swig_module.type_initial = swig_type_initial;
4447     swig_module.cast_initial = swig_cast_initial;
4448     swig_module.next = &swig_module;
4449     init = 1;
4450   } else {
4451     init = 0;
4452   }
4453   
4454   /* Try and load any already created modules */
4455   module_head = SWIG_GetModule(clientdata);
4456   if (!module_head) {
4457     /* This is the first module loaded for this interpreter */
4458     /* so set the swig module into the interpreter */
4459     SWIG_SetModule(clientdata, &swig_module);
4460     module_head = &swig_module;
4461   } else {
4462     /* the interpreter has loaded a SWIG module, but has it loaded this one? */
4463     found=0;
4464     iter=module_head;
4465     do {
4466       if (iter==&swig_module) {
4467         found=1;
4468         break;
4469       }
4470       iter=iter->next;
4471     } while (iter!= module_head);
4472     
4473     /* if the is found in the list, then all is done and we may leave */
4474     if (found) return;
4475     /* otherwise we must add out module into the list */
4476     swig_module.next = module_head->next;
4477     module_head->next = &swig_module;
4478   }
4479   
4480   /* When multiple interpeters are used, a module could have already been initialized in
4481        a different interpreter, but not yet have a pointer in this interpreter.
4482        In this case, we do not want to continue adding types... everything should be
4483        set up already */
4484   if (init == 0) return;
4485   
4486   /* Now work on filling in swig_module.types */
4487 #ifdef SWIGRUNTIME_DEBUG
4488   printf("SWIG_InitializeModule: size %d\n", swig_module.size);
4489 #endif
4490   for (i = 0; i < swig_module.size; ++i) {
4491     swig_type_info *type = 0;
4492     swig_type_info *ret;
4493     swig_cast_info *cast;
4494     
4495 #ifdef SWIGRUNTIME_DEBUG
4496     printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
4497 #endif
4498     
4499     /* if there is another module already loaded */
4500     if (swig_module.next != &swig_module) {
4501       type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
4502     }
4503     if (type) {
4504       /* Overwrite clientdata field */
4505 #ifdef SWIGRUNTIME_DEBUG
4506       printf("SWIG_InitializeModule: found type %s\n", type->name);
4507 #endif
4508       if (swig_module.type_initial[i]->clientdata) {
4509         type->clientdata = swig_module.type_initial[i]->clientdata;
4510 #ifdef SWIGRUNTIME_DEBUG
4511         printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
4512 #endif
4513       }
4514     } else {
4515       type = swig_module.type_initial[i];
4516     }
4517     
4518     /* Insert casting types */
4519     cast = swig_module.cast_initial[i];
4520     while (cast->type) {
4521       /* Don't need to add information already in the list */
4522       ret = 0;
4523 #ifdef SWIGRUNTIME_DEBUG
4524       printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
4525 #endif
4526       if (swig_module.next != &swig_module) {
4527         ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
4528 #ifdef SWIGRUNTIME_DEBUG
4529         if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
4530 #endif
4531       }
4532       if (ret) {
4533         if (type == swig_module.type_initial[i]) {
4534 #ifdef SWIGRUNTIME_DEBUG
4535           printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
4536 #endif
4537           cast->type = ret;
4538           ret = 0;
4539         } else {
4540           /* Check for casting already in the list */
4541           swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
4542 #ifdef SWIGRUNTIME_DEBUG
4543           if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
4544 #endif
4545           if (!ocast) ret = 0;
4546         }
4547       }
4548       
4549       if (!ret) {
4550 #ifdef SWIGRUNTIME_DEBUG
4551         printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
4552 #endif
4553         if (type->cast) {
4554           type->cast->prev = cast;
4555           cast->next = type->cast;
4556         }
4557         type->cast = cast;
4558       }
4559       cast++;
4560     }
4561     /* Set entry in modules->types array equal to the type */
4562     swig_module.types[i] = type;
4563   }
4564   swig_module.types[i] = 0;
4565   
4566 #ifdef SWIGRUNTIME_DEBUG
4567   printf("**** SWIG_InitializeModule: Cast List ******\n");
4568   for (i = 0; i < swig_module.size; ++i) {
4569     int j = 0;
4570     swig_cast_info *cast = swig_module.cast_initial[i];
4571     printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
4572     while (cast->type) {
4573       printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
4574       cast++;
4575       ++j;
4576     }
4577     printf("---- Total casts: %d\n",j);
4578   }
4579   printf("**** SWIG_InitializeModule: Cast List ******\n");
4580 #endif
4581 }
4582
4583 /* This function will propagate the clientdata field of type to
4584 * any new swig_type_info structures that have been added into the list
4585 * of equivalent types.  It is like calling
4586 * SWIG_TypeClientData(type, clientdata) a second time.
4587 */
4588 SWIGRUNTIME void
4589 SWIG_PropagateClientData(void) {
4590   size_t i;
4591   swig_cast_info *equiv;
4592   static int init_run = 0;
4593   
4594   if (init_run) return;
4595   init_run = 1;
4596   
4597   for (i = 0; i < swig_module.size; i++) {
4598     if (swig_module.types[i]->clientdata) {
4599       equiv = swig_module.types[i]->cast;
4600       while (equiv) {
4601         if (!equiv->converter) {
4602           if (equiv->type && !equiv->type->clientdata)
4603           SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
4604         }
4605         equiv = equiv->next;
4606       }
4607     }
4608   }
4609 }
4610
4611 #ifdef __cplusplus
4612 #if 0
4613 {
4614   /* c-mode */
4615 #endif
4616 }
4617 #endif
4618
4619
4620
4621 #ifdef __cplusplus
4622 extern "C"
4623 #endif
4624
4625 XS(SWIG_init) {
4626   dXSARGS;
4627   int i;
4628   
4629   SWIG_InitializeModule(0);
4630   
4631   /* Install commands */
4632   for (i = 0; swig_commands[i].name; i++) {
4633     newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
4634   }
4635   
4636   /* Install variables */
4637   for (i = 0; swig_variables[i].name; i++) {
4638     SV *sv;
4639     sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI);
4640     if (swig_variables[i].type) {
4641       SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
4642     } else {
4643       sv_setiv(sv,(IV) 0);
4644     }
4645     swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 
4646   }
4647   
4648   /* Install constant */
4649   for (i = 0; swig_constants[i].type; i++) {
4650     SV *sv;
4651     sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI);
4652     switch(swig_constants[i].type) {
4653     case SWIG_INT:
4654       sv_setiv(sv, (IV) swig_constants[i].lvalue);
4655       break;
4656     case SWIG_FLOAT:
4657       sv_setnv(sv, (double) swig_constants[i].dvalue);
4658       break;
4659     case SWIG_STRING:
4660       sv_setpv(sv, (char *) swig_constants[i].pvalue);
4661       break;
4662     case SWIG_POINTER:
4663       SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
4664       break;
4665     case SWIG_BINARY:
4666       SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
4667       break;
4668     default:
4669       break;
4670     }
4671     SvREADONLY_on(sv);
4672   }
4673   
4674   
4675   /* Initialize the Device API on load */
4676   device_api_init();
4677   
4678   SWIG_TypeClientData(SWIGTYPE_p_DirectTCPConnection, (void*) "Amanda::Device::DirectTCPConnection");
4679   SWIG_TypeClientData(SWIGTYPE_p_Device, (void*) "Amanda::Device::Device");
4680   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4681     SV *sv = get_sv((char*) SWIG_prefix "ACCESS_NULL", TRUE | 0x2 | GV_ADDMULTI);
4682     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ACCESS_NULL)));
4683     SvREADONLY_on(sv);
4684   } while(0) /*@SWIG@*/;
4685   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4686     SV *sv = get_sv((char*) SWIG_prefix "ACCESS_READ", TRUE | 0x2 | GV_ADDMULTI);
4687     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ACCESS_READ)));
4688     SvREADONLY_on(sv);
4689   } while(0) /*@SWIG@*/;
4690   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4691     SV *sv = get_sv((char*) SWIG_prefix "ACCESS_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4692     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ACCESS_WRITE)));
4693     SvREADONLY_on(sv);
4694   } while(0) /*@SWIG@*/;
4695   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4696     SV *sv = get_sv((char*) SWIG_prefix "ACCESS_APPEND", TRUE | 0x2 | GV_ADDMULTI);
4697     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ACCESS_APPEND)));
4698     SvREADONLY_on(sv);
4699   } while(0) /*@SWIG@*/;
4700   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4701     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_SUCCESS", TRUE | 0x2 | GV_ADDMULTI);
4702     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_SUCCESS)));
4703     SvREADONLY_on(sv);
4704   } while(0) /*@SWIG@*/;
4705   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4706     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_DEVICE_ERROR", TRUE | 0x2 | GV_ADDMULTI);
4707     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_DEVICE_ERROR)));
4708     SvREADONLY_on(sv);
4709   } while(0) /*@SWIG@*/;
4710   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4711     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_DEVICE_BUSY", TRUE | 0x2 | GV_ADDMULTI);
4712     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_DEVICE_BUSY)));
4713     SvREADONLY_on(sv);
4714   } while(0) /*@SWIG@*/;
4715   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4716     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_VOLUME_MISSING", TRUE | 0x2 | GV_ADDMULTI);
4717     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_VOLUME_MISSING)));
4718     SvREADONLY_on(sv);
4719   } while(0) /*@SWIG@*/;
4720   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4721     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_VOLUME_UNLABELED", TRUE | 0x2 | GV_ADDMULTI);
4722     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_VOLUME_UNLABELED)));
4723     SvREADONLY_on(sv);
4724   } while(0) /*@SWIG@*/;
4725   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4726     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_VOLUME_ERROR", TRUE | 0x2 | GV_ADDMULTI);
4727     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_VOLUME_ERROR)));
4728     SvREADONLY_on(sv);
4729   } while(0) /*@SWIG@*/;
4730   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4731     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_STATUS_FLAGS_MAX", TRUE | 0x2 | GV_ADDMULTI);
4732     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_STATUS_FLAGS_MAX)));
4733     SvREADONLY_on(sv);
4734   } while(0) /*@SWIG@*/;
4735   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4736     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_BEFORE_START", TRUE | 0x2 | GV_ADDMULTI);
4737     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_BEFORE_START)));
4738     SvREADONLY_on(sv);
4739   } while(0) /*@SWIG@*/;
4740   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4741     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_BETWEEN_FILE_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4742     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_BETWEEN_FILE_WRITE)));
4743     SvREADONLY_on(sv);
4744   } while(0) /*@SWIG@*/;
4745   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4746     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_INSIDE_FILE_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4747     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_INSIDE_FILE_WRITE)));
4748     SvREADONLY_on(sv);
4749   } while(0) /*@SWIG@*/;
4750   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4751     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_BETWEEN_FILE_READ", TRUE | 0x2 | GV_ADDMULTI);
4752     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_BETWEEN_FILE_READ)));
4753     SvREADONLY_on(sv);
4754   } while(0) /*@SWIG@*/;
4755   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4756     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_INSIDE_FILE_READ", TRUE | 0x2 | GV_ADDMULTI);
4757     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_INSIDE_FILE_READ)));
4758     SvREADONLY_on(sv);
4759   } while(0) /*@SWIG@*/;
4760   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4761     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_MAX", TRUE | 0x2 | GV_ADDMULTI);
4762     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_MAX)));
4763     SvREADONLY_on(sv);
4764   } while(0) /*@SWIG@*/;
4765   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4766     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_MASK", TRUE | 0x2 | GV_ADDMULTI);
4767     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_MASK)));
4768     SvREADONLY_on(sv);
4769   } while(0) /*@SWIG@*/;
4770   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4771     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_PHASE_SHIFT", TRUE | 0x2 | GV_ADDMULTI);
4772     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_PHASE_SHIFT)));
4773     SvREADONLY_on(sv);
4774   } while(0) /*@SWIG@*/;
4775   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4776     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_GET_BEFORE_START", TRUE | 0x2 | GV_ADDMULTI);
4777     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_GET_BEFORE_START)));
4778     SvREADONLY_on(sv);
4779   } while(0) /*@SWIG@*/;
4780   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4781     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_GET_BETWEEN_FILE_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4782     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_GET_BETWEEN_FILE_WRITE)));
4783     SvREADONLY_on(sv);
4784   } while(0) /*@SWIG@*/;
4785   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4786     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_GET_INSIDE_FILE_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4787     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_GET_INSIDE_FILE_WRITE)));
4788     SvREADONLY_on(sv);
4789   } while(0) /*@SWIG@*/;
4790   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4791     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_GET_BETWEEN_FILE_READ", TRUE | 0x2 | GV_ADDMULTI);
4792     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_GET_BETWEEN_FILE_READ)));
4793     SvREADONLY_on(sv);
4794   } while(0) /*@SWIG@*/;
4795   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4796     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_GET_INSIDE_FILE_READ", TRUE | 0x2 | GV_ADDMULTI);
4797     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_GET_INSIDE_FILE_READ)));
4798     SvREADONLY_on(sv);
4799   } while(0) /*@SWIG@*/;
4800   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4801     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_SET_BEFORE_START", TRUE | 0x2 | GV_ADDMULTI);
4802     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_SET_BEFORE_START)));
4803     SvREADONLY_on(sv);
4804   } while(0) /*@SWIG@*/;
4805   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4806     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_SET_BETWEEN_FILE_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4807     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_SET_BETWEEN_FILE_WRITE)));
4808     SvREADONLY_on(sv);
4809   } while(0) /*@SWIG@*/;
4810   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4811     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_SET_INSIDE_FILE_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4812     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_SET_INSIDE_FILE_WRITE)));
4813     SvREADONLY_on(sv);
4814   } while(0) /*@SWIG@*/;
4815   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4816     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_SET_BETWEEN_FILE_READ", TRUE | 0x2 | GV_ADDMULTI);
4817     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_SET_BETWEEN_FILE_READ)));
4818     SvREADONLY_on(sv);
4819   } while(0) /*@SWIG@*/;
4820   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4821     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_SET_INSIDE_FILE_READ", TRUE | 0x2 | GV_ADDMULTI);
4822     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_SET_INSIDE_FILE_READ)));
4823     SvREADONLY_on(sv);
4824   } while(0) /*@SWIG@*/;
4825   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4826     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_GET_MASK", TRUE | 0x2 | GV_ADDMULTI);
4827     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_GET_MASK)));
4828     SvREADONLY_on(sv);
4829   } while(0) /*@SWIG@*/;
4830   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4831     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_ACCESS_SET_MASK", TRUE | 0x2 | GV_ADDMULTI);
4832     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_ACCESS_SET_MASK)));
4833     SvREADONLY_on(sv);
4834   } while(0) /*@SWIG@*/;
4835   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4836     SV *sv = get_sv((char*) SWIG_prefix "CONCURRENCY_PARADIGM_EXCLUSIVE", TRUE | 0x2 | GV_ADDMULTI);
4837     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONCURRENCY_PARADIGM_EXCLUSIVE)));
4838     SvREADONLY_on(sv);
4839   } while(0) /*@SWIG@*/;
4840   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4841     SV *sv = get_sv((char*) SWIG_prefix "CONCURRENCY_PARADIGM_SHARED_READ", TRUE | 0x2 | GV_ADDMULTI);
4842     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONCURRENCY_PARADIGM_SHARED_READ)));
4843     SvREADONLY_on(sv);
4844   } while(0) /*@SWIG@*/;
4845   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4846     SV *sv = get_sv((char*) SWIG_prefix "CONCURRENCY_PARADIGM_RANDOM_ACCESS", TRUE | 0x2 | GV_ADDMULTI);
4847     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONCURRENCY_PARADIGM_RANDOM_ACCESS)));
4848     SvREADONLY_on(sv);
4849   } while(0) /*@SWIG@*/;
4850   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4851     SV *sv = get_sv((char*) SWIG_prefix "STREAMING_REQUIREMENT_NONE", TRUE | 0x2 | GV_ADDMULTI);
4852     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(STREAMING_REQUIREMENT_NONE)));
4853     SvREADONLY_on(sv);
4854   } while(0) /*@SWIG@*/;
4855   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4856     SV *sv = get_sv((char*) SWIG_prefix "STREAMING_REQUIREMENT_DESIRED", TRUE | 0x2 | GV_ADDMULTI);
4857     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(STREAMING_REQUIREMENT_DESIRED)));
4858     SvREADONLY_on(sv);
4859   } while(0) /*@SWIG@*/;
4860   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4861     SV *sv = get_sv((char*) SWIG_prefix "STREAMING_REQUIREMENT_REQUIRED", TRUE | 0x2 | GV_ADDMULTI);
4862     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(STREAMING_REQUIREMENT_REQUIRED)));
4863     SvREADONLY_on(sv);
4864   } while(0) /*@SWIG@*/;
4865   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4866     SV *sv = get_sv((char*) SWIG_prefix "MEDIA_ACCESS_MODE_READ_ONLY", TRUE | 0x2 | GV_ADDMULTI);
4867     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(MEDIA_ACCESS_MODE_READ_ONLY)));
4868     SvREADONLY_on(sv);
4869   } while(0) /*@SWIG@*/;
4870   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4871     SV *sv = get_sv((char*) SWIG_prefix "MEDIA_ACCESS_MODE_WORM", TRUE | 0x2 | GV_ADDMULTI);
4872     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(MEDIA_ACCESS_MODE_WORM)));
4873     SvREADONLY_on(sv);
4874   } while(0) /*@SWIG@*/;
4875   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4876     SV *sv = get_sv((char*) SWIG_prefix "MEDIA_ACCESS_MODE_READ_WRITE", TRUE | 0x2 | GV_ADDMULTI);
4877     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(MEDIA_ACCESS_MODE_READ_WRITE)));
4878     SvREADONLY_on(sv);
4879   } while(0) /*@SWIG@*/;
4880   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4881     SV *sv = get_sv((char*) SWIG_prefix "MEDIA_ACCESS_MODE_WRITE_ONLY", TRUE | 0x2 | GV_ADDMULTI);
4882     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(MEDIA_ACCESS_MODE_WRITE_ONLY)));
4883     SvREADONLY_on(sv);
4884   } while(0) /*@SWIG@*/;
4885   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4886     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_SURETY_BAD", TRUE | 0x2 | GV_ADDMULTI);
4887     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_SURETY_BAD)));
4888     SvREADONLY_on(sv);
4889   } while(0) /*@SWIG@*/;
4890   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4891     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_SURETY_GOOD", TRUE | 0x2 | GV_ADDMULTI);
4892     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_SURETY_GOOD)));
4893     SvREADONLY_on(sv);
4894   } while(0) /*@SWIG@*/;
4895   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4896     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_SOURCE_DEFAULT", TRUE | 0x2 | GV_ADDMULTI);
4897     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_SOURCE_DEFAULT)));
4898     SvREADONLY_on(sv);
4899   } while(0) /*@SWIG@*/;
4900   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4901     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_SOURCE_DETECTED", TRUE | 0x2 | GV_ADDMULTI);
4902     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_SOURCE_DETECTED)));
4903     SvREADONLY_on(sv);
4904   } while(0) /*@SWIG@*/;
4905   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
4906     SV *sv = get_sv((char*) SWIG_prefix "PROPERTY_SOURCE_USER", TRUE | 0x2 | GV_ADDMULTI);
4907     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PROPERTY_SOURCE_USER)));
4908     SvREADONLY_on(sv);
4909   } while(0) /*@SWIG@*/;
4910   ST(0) = &PL_sv_yes;
4911   XSRETURN(1);
4912 }
4913