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