OR-Tools  8.2
knapsack_solver_python_wrap.cc
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 4.0.2
4  *
5  * This file is not intended to be easily readable and contains a number of
6  * coding conventions designed to improve portability and efficiency. Do not make
7  * changes to this file unless you know what you are doing--modify the SWIG
8  * interface file instead.
9  * ----------------------------------------------------------------------------- */
10 
11 
12 #ifndef SWIGPYTHON
13 #define SWIGPYTHON
14 #endif
15 
16 #define SWIG_PYTHON_DIRECTOR_NO_VTABLE
17 
18 
19 #ifdef __cplusplus
20 /* SwigValueWrapper is described in swig.swg */
21 template<typename T> class SwigValueWrapper {
22  struct SwigMovePointer {
23  T *ptr;
24  SwigMovePointer(T *p) : ptr(p) { }
25  ~SwigMovePointer() { delete ptr; }
26  SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
27  } pointer;
28  SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
29  SwigValueWrapper(const SwigValueWrapper<T>& rhs);
30 public:
31  SwigValueWrapper() : pointer(0) { }
32  SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
33  operator T&() const { return *pointer.ptr; }
34  T *operator&() { return pointer.ptr; }
35 };
36 
37 template <typename T> T SwigValueInit() {
38  return T();
39 }
40 #endif
41 
42 /* -----------------------------------------------------------------------------
43  * This section contains generic SWIG labels for method/variable
44  * declarations/attributes, and other compiler dependent labels.
45  * ----------------------------------------------------------------------------- */
46 
47 /* template workaround for compilers that cannot correctly implement the C++ standard */
48 #ifndef SWIGTEMPLATEDISAMBIGUATOR
49 # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
50 # define SWIGTEMPLATEDISAMBIGUATOR template
51 # elif defined(__HP_aCC)
52 /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
53 /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
54 # define SWIGTEMPLATEDISAMBIGUATOR template
55 # else
56 # define SWIGTEMPLATEDISAMBIGUATOR
57 # endif
58 #endif
59 
60 /* inline attribute */
61 #ifndef SWIGINLINE
62 # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
63 # define SWIGINLINE inline
64 # else
65 # define SWIGINLINE
66 # endif
67 #endif
68 
69 /* attribute recognised by some compilers to avoid 'unused' warnings */
70 #ifndef SWIGUNUSED
71 # if defined(__GNUC__)
72 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
73 # define SWIGUNUSED __attribute__ ((__unused__))
74 # else
75 # define SWIGUNUSED
76 # endif
77 # elif defined(__ICC)
78 # define SWIGUNUSED __attribute__ ((__unused__))
79 # else
80 # define SWIGUNUSED
81 # endif
82 #endif
83 
84 #ifndef SWIG_MSC_UNSUPPRESS_4505
85 # if defined(_MSC_VER)
86 # pragma warning(disable : 4505) /* unreferenced local function has been removed */
87 # endif
88 #endif
89 
90 #ifndef SWIGUNUSEDPARM
91 # ifdef __cplusplus
92 # define SWIGUNUSEDPARM(p)
93 # else
94 # define SWIGUNUSEDPARM(p) p SWIGUNUSED
95 # endif
96 #endif
97 
98 /* internal SWIG method */
99 #ifndef SWIGINTERN
100 # define SWIGINTERN static SWIGUNUSED
101 #endif
102 
103 /* internal inline SWIG method */
104 #ifndef SWIGINTERNINLINE
105 # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
106 #endif
107 
108 /* exporting methods */
109 #if defined(__GNUC__)
110 # if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
111 # ifndef GCC_HASCLASSVISIBILITY
112 # define GCC_HASCLASSVISIBILITY
113 # endif
114 # endif
115 #endif
116 
117 #ifndef SWIGEXPORT
118 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
119 # if defined(STATIC_LINKED)
120 # define SWIGEXPORT
121 # else
122 # define SWIGEXPORT __declspec(dllexport)
123 # endif
124 # else
125 # if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
126 # define SWIGEXPORT __attribute__ ((visibility("default")))
127 # else
128 # define SWIGEXPORT
129 # endif
130 # endif
131 #endif
132 
133 /* calling conventions for Windows */
134 #ifndef SWIGSTDCALL
135 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
136 # define SWIGSTDCALL __stdcall
137 # else
138 # define SWIGSTDCALL
139 # endif
140 #endif
141 
142 /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
143 #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
144 # define _CRT_SECURE_NO_DEPRECATE
145 #endif
146 
147 /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
148 #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
149 # define _SCL_SECURE_NO_DEPRECATE
150 #endif
151 
152 /* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */
153 #if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES)
154 # define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
155 #endif
156 
157 /* Intel's compiler complains if a variable which was never initialised is
158  * cast to void, which is a common idiom which we use to indicate that we
159  * are aware a variable isn't used. So we just silence that warning.
160  * See: https://github.com/swig/swig/issues/192 for more discussion.
161  */
162 #ifdef __INTEL_COMPILER
163 # pragma warning disable 592
164 #endif
165 
166 
167 #if defined(__GNUC__) && defined(_WIN32) && !defined(SWIG_PYTHON_NO_HYPOT_WORKAROUND)
168 /* Workaround for '::hypot' has not been declared', see https://bugs.python.org/issue11566 */
169 # include <math.h>
170 #endif
171 
172 #if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG)
173 /* Use debug wrappers with the Python release dll */
174 # undef _DEBUG
175 # include <Python.h>
176 # define _DEBUG 1
177 #else
178 # include <Python.h>
179 #endif
180 
181 /* -----------------------------------------------------------------------------
182  * swigrun.swg
183  *
184  * This file contains generic C API SWIG runtime support for pointer
185  * type checking.
186  * ----------------------------------------------------------------------------- */
187 
188 /* This should only be incremented when either the layout of swig_type_info changes,
189  or for whatever reason, the runtime changes incompatibly */
190 #define SWIG_RUNTIME_VERSION "4"
191 
192 /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
193 #ifdef SWIG_TYPE_TABLE
194 # define SWIG_QUOTE_STRING(x) #x
195 # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
196 # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
197 #else
198 # define SWIG_TYPE_TABLE_NAME
199 #endif
200 
201 /*
202  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
203  creating a static or dynamic library from the SWIG runtime code.
204  In 99.9% of the cases, SWIG just needs to declare them as 'static'.
205 
206  But only do this if strictly necessary, ie, if you have problems
207  with your compiler or suchlike.
208 */
209 
210 #ifndef SWIGRUNTIME
211 # define SWIGRUNTIME SWIGINTERN
212 #endif
213 
214 #ifndef SWIGRUNTIMEINLINE
215 # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
216 #endif
217 
218 /* Generic buffer size */
219 #ifndef SWIG_BUFFER_SIZE
220 # define SWIG_BUFFER_SIZE 1024
221 #endif
222 
223 /* Flags for pointer conversions */
224 #define SWIG_POINTER_DISOWN 0x1
225 #define SWIG_CAST_NEW_MEMORY 0x2
226 #define SWIG_POINTER_NO_NULL 0x4
227 
228 /* Flags for new pointer objects */
229 #define SWIG_POINTER_OWN 0x1
230 
231 
232 /*
233  Flags/methods for returning states.
234 
235  The SWIG conversion methods, as ConvertPtr, return an integer
236  that tells if the conversion was successful or not. And if not,
237  an error code can be returned (see swigerrors.swg for the codes).
238 
239  Use the following macros/flags to set or process the returning
240  states.
241 
242  In old versions of SWIG, code such as the following was usually written:
243 
244  if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
245  // success code
246  } else {
247  //fail code
248  }
249 
250  Now you can be more explicit:
251 
252  int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
253  if (SWIG_IsOK(res)) {
254  // success code
255  } else {
256  // fail code
257  }
258 
259  which is the same really, but now you can also do
260 
261  Type *ptr;
262  int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
263  if (SWIG_IsOK(res)) {
264  // success code
265  if (SWIG_IsNewObj(res) {
266  ...
267  delete *ptr;
268  } else {
269  ...
270  }
271  } else {
272  // fail code
273  }
274 
275  I.e., now SWIG_ConvertPtr can return new objects and you can
276  identify the case and take care of the deallocation. Of course that
277  also requires SWIG_ConvertPtr to return new result values, such as
278 
279  int SWIG_ConvertPtr(obj, ptr,...) {
280  if (<obj is ok>) {
281  if (<need new object>) {
282  *ptr = <ptr to new allocated object>;
283  return SWIG_NEWOBJ;
284  } else {
285  *ptr = <ptr to old object>;
286  return SWIG_OLDOBJ;
287  }
288  } else {
289  return SWIG_BADOBJ;
290  }
291  }
292 
293  Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
294  more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
295  SWIG errors code.
296 
297  Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
298  allows to return the 'cast rank', for example, if you have this
299 
300  int food(double)
301  int fooi(int);
302 
303  and you call
304 
305  food(1) // cast rank '1' (1 -> 1.0)
306  fooi(1) // cast rank '0'
307 
308  just use the SWIG_AddCast()/SWIG_CheckState()
309 */
310 
311 #define SWIG_OK (0)
312 #define SWIG_ERROR (-1)
313 #define SWIG_IsOK(r) (r >= 0)
314 #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
315 
316 /* The CastRankLimit says how many bits are used for the cast rank */
317 #define SWIG_CASTRANKLIMIT (1 << 8)
318 /* The NewMask denotes the object was created (using new/malloc) */
319 #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1)
320 /* The TmpMask is for in/out typemaps that use temporal objects */
321 #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1)
322 /* Simple returning values */
323 #define SWIG_BADOBJ (SWIG_ERROR)
324 #define SWIG_OLDOBJ (SWIG_OK)
325 #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
326 #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
327 /* Check, add and del mask methods */
328 #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
329 #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
330 #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
331 #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
332 #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
333 #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
334 
335 /* Cast-Rank Mode */
336 #if defined(SWIG_CASTRANK_MODE)
337 # ifndef SWIG_TypeRank
338 # define SWIG_TypeRank unsigned long
339 # endif
340 # ifndef SWIG_MAXCASTRANK /* Default cast allowed */
341 # define SWIG_MAXCASTRANK (2)
342 # endif
343 # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
344 # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
345 SWIGINTERNINLINE int SWIG_AddCast(int r) {
346  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
347 }
349  return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
350 }
351 #else /* no cast-rank mode */
352 # define SWIG_AddCast(r) (r)
353 # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
354 #endif
355 
356 
357 #include <string.h>
358 
359 #ifdef __cplusplus
360 extern "C" {
361 #endif
362 
363 typedef void *(*swig_converter_func)(void *, int *);
364 typedef struct swig_type_info *(*swig_dycast_func)(void **);
365 
366 /* Structure to store information on one type */
367 typedef struct swig_type_info {
368  const char *name; /* mangled name of this type */
369  const char *str; /* human readable name of this type */
370  swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
371  struct swig_cast_info *cast; /* linked list of types that can cast into this type */
372  void *clientdata; /* language specific type data */
373  int owndata; /* flag if the structure owns the clientdata */
375 
376 /* Structure to store a type and conversion function used for casting */
377 typedef struct swig_cast_info {
378  swig_type_info *type; /* pointer to type that is equivalent to this type */
379  swig_converter_func converter; /* function to cast the void pointers */
380  struct swig_cast_info *next; /* pointer to next cast in linked list */
381  struct swig_cast_info *prev; /* pointer to the previous cast */
383 
384 /* Structure used to store module information
385  * Each module generates one structure like this, and the runtime collects
386  * all of these structures and stores them in a circularly linked list.*/
387 typedef struct swig_module_info {
388  swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
389  size_t size; /* Number of types in this module */
390  struct swig_module_info *next; /* Pointer to next element in circularly linked list */
391  swig_type_info **type_initial; /* Array of initially generated type structures */
392  swig_cast_info **cast_initial; /* Array of initially generated casting structures */
393  void *clientdata; /* Language specific module data */
395 
396 /*
397  Compare two type names skipping the space characters, therefore
398  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
399 
400  Return 0 when the two name types are equivalent, as in
401  strncmp, but skipping ' '.
402 */
403 SWIGRUNTIME int
404 SWIG_TypeNameComp(const char *f1, const char *l1,
405  const char *f2, const char *l2) {
406  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
407  while ((*f1 == ' ') && (f1 != l1)) ++f1;
408  while ((*f2 == ' ') && (f2 != l2)) ++f2;
409  if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
410  }
411  return (int)((l1 - f1) - (l2 - f2));
412 }
413 
414 /*
415  Check type equivalence in a name list like <name1>|<name2>|...
416  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
417 */
418 SWIGRUNTIME int
419 SWIG_TypeCmp(const char *nb, const char *tb) {
420  int equiv = 1;
421  const char* te = tb + strlen(tb);
422  const char* ne = nb;
423  while (equiv != 0 && *ne) {
424  for (nb = ne; *ne; ++ne) {
425  if (*ne == '|') break;
426  }
427  equiv = SWIG_TypeNameComp(nb, ne, tb, te);
428  if (*ne) ++ne;
429  }
430  return equiv;
431 }
432 
433 /*
434  Check type equivalence in a name list like <name1>|<name2>|...
435  Return 0 if not equal, 1 if equal
436 */
437 SWIGRUNTIME int
438 SWIG_TypeEquiv(const char *nb, const char *tb) {
439  return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
440 }
441 
442 /*
443  Check the typename
444 */
446 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
447  if (ty) {
448  swig_cast_info *iter = ty->cast;
449  while (iter) {
450  if (strcmp(iter->type->name, c) == 0) {
451  if (iter == ty->cast)
452  return iter;
453  /* Move iter to the top of the linked list */
454  iter->prev->next = iter->next;
455  if (iter->next)
456  iter->next->prev = iter->prev;
457  iter->next = ty->cast;
458  iter->prev = 0;
459  if (ty->cast) ty->cast->prev = iter;
460  ty->cast = iter;
461  return iter;
462  }
463  iter = iter->next;
464  }
465  }
466  return 0;
467 }
468 
469 /*
470  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
471 */
474  if (ty) {
475  swig_cast_info *iter = ty->cast;
476  while (iter) {
477  if (iter->type == from) {
478  if (iter == ty->cast)
479  return iter;
480  /* Move iter to the top of the linked list */
481  iter->prev->next = iter->next;
482  if (iter->next)
483  iter->next->prev = iter->prev;
484  iter->next = ty->cast;
485  iter->prev = 0;
486  if (ty->cast) ty->cast->prev = iter;
487  ty->cast = iter;
488  return iter;
489  }
490  iter = iter->next;
491  }
492  }
493  return 0;
494 }
495 
496 /*
497  Cast a pointer up an inheritance hierarchy
498 */
499 SWIGRUNTIMEINLINE void *
500 SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
501  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
502 }
503 
504 /*
505  Dynamic pointer casting. Down an inheritance hierarchy
506 */
509  swig_type_info *lastty = ty;
510  if (!ty || !ty->dcast) return ty;
511  while (ty && (ty->dcast)) {
512  ty = (*ty->dcast)(ptr);
513  if (ty) lastty = ty;
514  }
515  return lastty;
516 }
517 
518 /*
519  Return the name associated with this type
520 */
521 SWIGRUNTIMEINLINE const char *
523  return ty->name;
524 }
525 
526 /*
527  Return the pretty name associated with this type,
528  that is an unmangled type name in a form presentable to the user.
529 */
530 SWIGRUNTIME const char *
532  /* The "str" field contains the equivalent pretty names of the
533  type, separated by vertical-bar characters. We choose
534  to print the last name, as it is often (?) the most
535  specific. */
536  if (!type) return NULL;
537  if (type->str != NULL) {
538  const char *last_name = type->str;
539  const char *s;
540  for (s = type->str; *s; s++)
541  if (*s == '|') last_name = s+1;
542  return last_name;
543  }
544  else
545  return type->name;
546 }
547 
548 /*
549  Set the clientdata field for a type
550 */
551 SWIGRUNTIME void
553  swig_cast_info *cast = ti->cast;
554  /* if (ti->clientdata == clientdata) return; */
555  ti->clientdata = clientdata;
556 
557  while (cast) {
558  if (!cast->converter) {
559  swig_type_info *tc = cast->type;
560  if (!tc->clientdata) {
562  }
563  }
564  cast = cast->next;
565  }
566 }
567 SWIGRUNTIME void
570  ti->owndata = 1;
571 }
572 
573 /*
574  Search for a swig_type_info structure only by mangled name
575  Search is a O(log #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 */
583  swig_module_info *end,
584  const char *name) {
585  swig_module_info *iter = start;
586  do {
587  if (iter->size) {
588  size_t l = 0;
589  size_t r = iter->size - 1;
590  do {
591  /* since l+r >= 0, we can (>> 1) instead (/ 2) */
592  size_t i = (l + r) >> 1;
593  const char *iname = iter->types[i]->name;
594  if (iname) {
595  int compare = strcmp(name, iname);
596  if (compare == 0) {
597  return iter->types[i];
598  } else if (compare < 0) {
599  if (i) {
600  r = i - 1;
601  } else {
602  break;
603  }
604  } else if (compare > 0) {
605  l = i + 1;
606  }
607  } else {
608  break; /* should never happen */
609  }
610  } while (l <= r);
611  }
612  iter = iter->next;
613  } while (iter != end);
614  return 0;
615 }
616 
617 /*
618  Search for a swig_type_info structure for either a mangled name or a human readable name.
619  It first searches the mangled names of the types, which is a O(log #types)
620  If a type is not found it then searches the human readable names, which is O(#types).
621 
622  We start searching at module start, and finish searching when start == end.
623  Note: if start == end at the beginning of the function, we go all the way around
624  the circular list.
625 */
628  swig_module_info *end,
629  const char *name) {
630  /* STEP 1: Search the name field using binary search */
631  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
632  if (ret) {
633  return ret;
634  } else {
635  /* STEP 2: If the type hasn't been found, do a complete search
636  of the str field (the human readable name) */
637  swig_module_info *iter = start;
638  do {
639  size_t i = 0;
640  for (; i < iter->size; ++i) {
641  if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
642  return iter->types[i];
643  }
644  iter = iter->next;
645  } while (iter != end);
646  }
647 
648  /* neither found a match */
649  return 0;
650 }
651 
652 /*
653  Pack binary data into a string
654 */
655 SWIGRUNTIME char *
656 SWIG_PackData(char *c, void *ptr, size_t sz) {
657  static const char hex[17] = "0123456789abcdef";
658  const unsigned char *u = (unsigned char *) ptr;
659  const unsigned char *eu = u + sz;
660  for (; u != eu; ++u) {
661  unsigned char uu = *u;
662  *(c++) = hex[(uu & 0xf0) >> 4];
663  *(c++) = hex[uu & 0xf];
664  }
665  return c;
666 }
667 
668 /*
669  Unpack binary data from a string
670 */
671 SWIGRUNTIME const char *
672 SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
673  unsigned char *u = (unsigned char *) ptr;
674  const unsigned char *eu = u + sz;
675  for (; u != eu; ++u) {
676  char d = *(c++);
677  unsigned char uu;
678  if ((d >= '0') && (d <= '9'))
679  uu = (unsigned char)((d - '0') << 4);
680  else if ((d >= 'a') && (d <= 'f'))
681  uu = (unsigned char)((d - ('a'-10)) << 4);
682  else
683  return (char *) 0;
684  d = *(c++);
685  if ((d >= '0') && (d <= '9'))
686  uu |= (unsigned char)(d - '0');
687  else if ((d >= 'a') && (d <= 'f'))
688  uu |= (unsigned char)(d - ('a'-10));
689  else
690  return (char *) 0;
691  *u = uu;
692  }
693  return c;
694 }
695 
696 /*
697  Pack 'void *' into a string buffer.
698 */
699 SWIGRUNTIME char *
700 SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
701  char *r = buff;
702  if ((2*sizeof(void *) + 2) > bsz) return 0;
703  *(r++) = '_';
704  r = SWIG_PackData(r,&ptr,sizeof(void *));
705  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
706  strcpy(r,name);
707  return buff;
708 }
709 
710 SWIGRUNTIME const char *
711 SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
712  if (*c != '_') {
713  if (strcmp(c,"NULL") == 0) {
714  *ptr = (void *) 0;
715  return name;
716  } else {
717  return 0;
718  }
719  }
720  return SWIG_UnpackData(++c,ptr,sizeof(void *));
721 }
722 
723 SWIGRUNTIME char *
724 SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
725  char *r = buff;
726  size_t lname = (name ? strlen(name) : 0);
727  if ((2*sz + 2 + lname) > bsz) return 0;
728  *(r++) = '_';
729  r = SWIG_PackData(r,ptr,sz);
730  if (lname) {
731  strncpy(r,name,lname+1);
732  } else {
733  *r = 0;
734  }
735  return buff;
736 }
737 
738 SWIGRUNTIME const char *
739 SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
740  if (*c != '_') {
741  if (strcmp(c,"NULL") == 0) {
742  memset(ptr,0,sz);
743  return name;
744  } else {
745  return 0;
746  }
747  }
748  return SWIG_UnpackData(++c,ptr,sz);
749 }
750 
751 #ifdef __cplusplus
752 }
753 #endif
754 
755 /* Errors in SWIG */
756 #define SWIG_UnknownError -1
757 #define SWIG_IOError -2
758 #define SWIG_RuntimeError -3
759 #define SWIG_IndexError -4
760 #define SWIG_TypeError -5
761 #define SWIG_DivisionByZero -6
762 #define SWIG_OverflowError -7
763 #define SWIG_SyntaxError -8
764 #define SWIG_ValueError -9
765 #define SWIG_SystemError -10
766 #define SWIG_AttributeError -11
767 #define SWIG_MemoryError -12
768 #define SWIG_NullReferenceError -13
769 
770 
771 
772 /* Compatibility macros for Python 3 */
773 #if PY_VERSION_HEX >= 0x03000000
774 
775 #define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type)
776 #define PyInt_Check(x) PyLong_Check(x)
777 #define PyInt_AsLong(x) PyLong_AsLong(x)
778 #define PyInt_FromLong(x) PyLong_FromLong(x)
779 #define PyInt_FromSize_t(x) PyLong_FromSize_t(x)
780 #define PyString_Check(name) PyBytes_Check(name)
781 #define PyString_FromString(x) PyUnicode_FromString(x)
782 #define PyString_Format(fmt, args) PyUnicode_Format(fmt, args)
783 #define PyString_AsString(str) PyBytes_AsString(str)
784 #define PyString_Size(str) PyBytes_Size(str)
785 #define PyString_InternFromString(key) PyUnicode_InternFromString(key)
786 #define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE
787 #define PyString_AS_STRING(x) PyUnicode_AS_STRING(x)
788 #define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x)
789 
790 #endif
791 
792 #ifndef Py_TYPE
793 # define Py_TYPE(op) ((op)->ob_type)
794 #endif
795 
796 /* SWIG APIs for compatibility of both Python 2 & 3 */
797 
798 #if PY_VERSION_HEX >= 0x03000000
799 # define SWIG_Python_str_FromFormat PyUnicode_FromFormat
800 #else
801 # define SWIG_Python_str_FromFormat PyString_FromFormat
802 #endif
803 
804 
805 /* Warning: This function will allocate a new string in Python 3,
806  * so please call SWIG_Python_str_DelForPy3(x) to free the space.
807  */
808 SWIGINTERN char*
810 {
811 #if PY_VERSION_HEX >= 0x03030000
812  return (char *)PyUnicode_AsUTF8(str);
813 #elif PY_VERSION_HEX >= 0x03000000
814  char *newstr = 0;
815  str = PyUnicode_AsUTF8String(str);
816  if (str) {
817  char *cstr;
818  Py_ssize_t len;
819  if (PyBytes_AsStringAndSize(str, &cstr, &len) != -1) {
820  newstr = (char *) malloc(len+1);
821  if (newstr)
822  memcpy(newstr, cstr, len+1);
823  }
824  Py_XDECREF(str);
825  }
826  return newstr;
827 #else
828  return PyString_AsString(str);
829 #endif
830 }
831 
832 #if PY_VERSION_HEX >= 0x03030000 || PY_VERSION_HEX < 0x03000000
833 # define SWIG_Python_str_DelForPy3(x)
834 #else
835 # define SWIG_Python_str_DelForPy3(x) free( (void*) (x) )
836 #endif
837 
838 
839 SWIGINTERN PyObject*
841 {
842 #if PY_VERSION_HEX >= 0x03000000
843  return PyUnicode_FromString(c);
844 #else
845  return PyString_FromString(c);
846 #endif
847 }
848 
849 #ifndef PyObject_DEL
850 # define PyObject_DEL PyObject_Del
851 #endif
852 
853 // SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user
854 // interface files check for it.
855 # define SWIGPY_USE_CAPSULE
856 # define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
857 
858 #if PY_VERSION_HEX < 0x03020000
859 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
860 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
861 #define Py_hash_t long
862 #endif
863 
864 /* -----------------------------------------------------------------------------
865  * error manipulation
866  * ----------------------------------------------------------------------------- */
867 
868 SWIGRUNTIME PyObject*
870  PyObject* type = 0;
871  switch(code) {
872  case SWIG_MemoryError:
873  type = PyExc_MemoryError;
874  break;
875  case SWIG_IOError:
876  type = PyExc_IOError;
877  break;
878  case SWIG_RuntimeError:
879  type = PyExc_RuntimeError;
880  break;
881  case SWIG_IndexError:
882  type = PyExc_IndexError;
883  break;
884  case SWIG_TypeError:
885  type = PyExc_TypeError;
886  break;
887  case SWIG_DivisionByZero:
888  type = PyExc_ZeroDivisionError;
889  break;
890  case SWIG_OverflowError:
891  type = PyExc_OverflowError;
892  break;
893  case SWIG_SyntaxError:
894  type = PyExc_SyntaxError;
895  break;
896  case SWIG_ValueError:
897  type = PyExc_ValueError;
898  break;
899  case SWIG_SystemError:
900  type = PyExc_SystemError;
901  break;
902  case SWIG_AttributeError:
903  type = PyExc_AttributeError;
904  break;
905  default:
906  type = PyExc_RuntimeError;
907  }
908  return type;
909 }
910 
911 
912 SWIGRUNTIME void
913 SWIG_Python_AddErrorMsg(const char* mesg)
914 {
915  PyObject *type = 0;
916  PyObject *value = 0;
917  PyObject *traceback = 0;
918 
919  if (PyErr_Occurred())
920  PyErr_Fetch(&type, &value, &traceback);
921  if (value) {
922  PyObject *old_str = PyObject_Str(value);
923  const char *tmp = SWIG_Python_str_AsChar(old_str);
924  PyErr_Clear();
925  Py_XINCREF(type);
926  if (tmp)
927  PyErr_Format(type, "%s %s", tmp, mesg);
928  else
929  PyErr_Format(type, "%s", mesg);
931  Py_DECREF(old_str);
932  Py_DECREF(value);
933  } else {
934  PyErr_SetString(PyExc_RuntimeError, mesg);
935  }
936 }
937 
938 SWIGRUNTIME int
940 {
941  PyObject *error;
942  if (obj)
943  return 0;
944  error = PyErr_Occurred();
945  return error && PyErr_GivenExceptionMatches(error, PyExc_TypeError);
946 }
947 
948 SWIGRUNTIME void
950 {
951  if (SWIG_Python_TypeErrorOccurred(NULL)) {
952  /* Use existing TypeError to preserve stacktrace and enhance with given message */
953  PyObject *newvalue;
954  PyObject *type = NULL, *value = NULL, *traceback = NULL;
955  PyErr_Fetch(&type, &value, &traceback);
956 #if PY_VERSION_HEX >= 0x03000000
957  newvalue = PyUnicode_FromFormat("%S\nAdditional information:\n%s", value, message);
958 #else
959  newvalue = PyString_FromFormat("%s\nAdditional information:\n%s", PyString_AsString(value), message);
960 #endif
961  Py_XDECREF(value);
962  PyErr_Restore(type, newvalue, traceback);
963  } else {
964  /* Raise TypeError using given message */
965  PyErr_SetString(PyExc_TypeError, message);
966  }
967 }
968 
969 #if defined(SWIG_PYTHON_NO_THREADS)
970 # if defined(SWIG_PYTHON_THREADS)
971 # undef SWIG_PYTHON_THREADS
972 # endif
973 #endif
974 #if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
975 # if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
976 # define SWIG_PYTHON_USE_GIL
977 # endif
978 # if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
979 # ifndef SWIG_PYTHON_INITIALIZE_THREADS
980 # define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads()
981 # endif
982 # ifdef __cplusplus /* C++ code */
983  class SWIG_Python_Thread_Block {
984  bool status;
985  PyGILState_STATE state;
986  public:
987  void end() { if (status) { PyGILState_Release(state); status = false;} }
988  SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
989  ~SWIG_Python_Thread_Block() { end(); }
990  };
991  class SWIG_Python_Thread_Allow {
992  bool status;
993  PyThreadState *save;
994  public:
995  void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
996  SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
997  ~SWIG_Python_Thread_Allow() { end(); }
998  };
999 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block
1000 # define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end()
1001 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow
1002 # define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end()
1003 # else /* C code */
1004 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
1005 # define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block)
1006 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread()
1007 # define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow)
1008 # endif
1009 # else /* Old thread way, not implemented, user must provide it */
1010 # if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
1011 # define SWIG_PYTHON_INITIALIZE_THREADS
1012 # endif
1013 # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
1014 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK
1015 # endif
1016 # if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
1017 # define SWIG_PYTHON_THREAD_END_BLOCK
1018 # endif
1019 # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
1020 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW
1021 # endif
1022 # if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
1023 # define SWIG_PYTHON_THREAD_END_ALLOW
1024 # endif
1025 # endif
1026 #else /* No thread support */
1027 # define SWIG_PYTHON_INITIALIZE_THREADS
1028 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK
1029 # define SWIG_PYTHON_THREAD_END_BLOCK
1030 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW
1031 # define SWIG_PYTHON_THREAD_END_ALLOW
1032 #endif
1033 
1034 /* -----------------------------------------------------------------------------
1035  * Python API portion that goes into the runtime
1036  * ----------------------------------------------------------------------------- */
1037 
1038 #ifdef __cplusplus
1039 extern "C" {
1040 #endif
1041 
1042 /* -----------------------------------------------------------------------------
1043  * Constant declarations
1044  * ----------------------------------------------------------------------------- */
1045 
1046 /* Constant Types */
1047 #define SWIG_PY_POINTER 4
1048 #define SWIG_PY_BINARY 5
1049 
1050 /* Constant information structure */
1051 typedef struct swig_const_info {
1052  int type;
1053  const char *name;
1054  long lvalue;
1055  double dvalue;
1056  void *pvalue;
1059 
1060 #ifdef __cplusplus
1061 }
1062 #endif
1063 
1064 
1065 /* -----------------------------------------------------------------------------
1066  * pyrun.swg
1067  *
1068  * This file contains the runtime support for Python modules
1069  * and includes code for managing global variables and pointer
1070  * type checking.
1071  *
1072  * ----------------------------------------------------------------------------- */
1073 
1074 #if PY_VERSION_HEX < 0x02070000 /* 2.7.0 */
1075 # error "This version of SWIG only supports Python >= 2.7"
1076 #endif
1077 
1078 #if PY_VERSION_HEX >= 0x03000000 && PY_VERSION_HEX < 0x03020000
1079 # error "This version of SWIG only supports Python 3 >= 3.2"
1080 #endif
1081 
1082 /* Common SWIG API */
1083 
1084 /* for raw pointers */
1085 #define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0)
1086 #define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags)
1087 #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
1088 
1089 #ifdef SWIGPYTHON_BUILTIN
1090 #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags)
1091 #else
1092 #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
1093 #endif
1094 
1095 #define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
1096 
1097 #define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty)
1098 #define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src)
1099 #define swig_owntype int
1100 
1101 /* for raw packed data */
1102 #define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
1103 #define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type)
1104 
1105 /* for class or struct pointers */
1106 #define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags)
1107 #define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags)
1108 
1109 /* for C or C++ function pointers */
1110 #define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
1111 #define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0)
1112 
1113 /* for C++ member pointers, ie, member methods */
1114 #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
1115 #define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type)
1116 
1117 
1118 /* Runtime API */
1119 
1120 #define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata)
1121 #define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer)
1122 #define SWIG_NewClientData(obj) SwigPyClientData_New(obj)
1123 
1124 #define SWIG_SetErrorObj SWIG_Python_SetErrorObj
1125 #define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg
1126 #define SWIG_ErrorType(code) SWIG_Python_ErrorType(code)
1127 #define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg)
1128 #define SWIG_fail goto fail
1129 
1130 
1131 /* Runtime API implementation */
1132 
1133 /* Error manipulation */
1134 
1135 SWIGINTERN void
1136 SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) {
1138  PyErr_SetObject(errtype, obj);
1139  Py_DECREF(obj);
1141 }
1142 
1143 SWIGINTERN void
1144 SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) {
1146  PyErr_SetString(errtype, msg);
1148 }
1149 
1150 #define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj)
1151 
1152 /* Set a constant value */
1153 
1154 #if defined(SWIGPYTHON_BUILTIN)
1155 
1156 SWIGINTERN void
1157 SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) {
1158  PyObject *s = PyString_InternFromString(key);
1159  PyList_Append(seq, s);
1160  Py_DECREF(s);
1161 }
1162 
1163 SWIGINTERN void
1164 SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) {
1165  PyDict_SetItemString(d, name, obj);
1166  Py_DECREF(obj);
1167  if (public_interface)
1168  SwigPyBuiltin_AddPublicSymbol(public_interface, name);
1169 }
1170 
1171 #else
1172 
1173 SWIGINTERN void
1174 SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {
1175  PyDict_SetItemString(d, name, obj);
1176  Py_DECREF(obj);
1177 }
1178 
1179 #endif
1180 
1181 /* Append a value to the result obj */
1182 
1183 SWIGINTERN PyObject*
1184 SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) {
1185  if (!result) {
1186  result = obj;
1187  } else if (result == Py_None) {
1188  Py_DECREF(result);
1189  result = obj;
1190  } else {
1191  if (!PyList_Check(result)) {
1192  PyObject *o2 = result;
1193  result = PyList_New(1);
1194  PyList_SetItem(result, 0, o2);
1195  }
1196  PyList_Append(result,obj);
1197  Py_DECREF(obj);
1198  }
1199  return result;
1200 }
1201 
1202 /* Unpack the argument tuple */
1203 
1204 SWIGINTERN Py_ssize_t
1205 SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs)
1206 {
1207  if (!args) {
1208  if (!min && !max) {
1209  return 1;
1210  } else {
1211  PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none",
1212  name, (min == max ? "" : "at least "), (int)min);
1213  return 0;
1214  }
1215  }
1216  if (!PyTuple_Check(args)) {
1217  if (min <= 1 && max >= 1) {
1218  Py_ssize_t i;
1219  objs[0] = args;
1220  for (i = 1; i < max; ++i) {
1221  objs[i] = 0;
1222  }
1223  return 2;
1224  }
1225  PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
1226  return 0;
1227  } else {
1228  Py_ssize_t l = PyTuple_GET_SIZE(args);
1229  if (l < min) {
1230  PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d",
1231  name, (min == max ? "" : "at least "), (int)min, (int)l);
1232  return 0;
1233  } else if (l > max) {
1234  PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d",
1235  name, (min == max ? "" : "at most "), (int)max, (int)l);
1236  return 0;
1237  } else {
1238  Py_ssize_t i;
1239  for (i = 0; i < l; ++i) {
1240  objs[i] = PyTuple_GET_ITEM(args, i);
1241  }
1242  for (; l < max; ++l) {
1243  objs[l] = 0;
1244  }
1245  return i + 1;
1246  }
1247  }
1248 }
1249 
1250 SWIGINTERN int
1251 SWIG_Python_CheckNoKeywords(PyObject *kwargs, const char *name) {
1252  int no_kwargs = 1;
1253  if (kwargs) {
1254  assert(PyDict_Check(kwargs));
1255  if (PyDict_Size(kwargs) > 0) {
1256  PyErr_Format(PyExc_TypeError, "%s() does not take keyword arguments", name);
1257  no_kwargs = 0;
1258  }
1259  }
1260  return no_kwargs;
1261 }
1262 
1263 /* A functor is a function object with one single object argument */
1264 #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL);
1265 
1266 /*
1267  Helper for static pointer initialization for both C and C++ code, for example
1268  static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...);
1269 */
1270 #ifdef __cplusplus
1271 #define SWIG_STATIC_POINTER(var) var
1272 #else
1273 #define SWIG_STATIC_POINTER(var) var = 0; if (!var) var
1274 #endif
1275 
1276 /* -----------------------------------------------------------------------------
1277  * Pointer declarations
1278  * ----------------------------------------------------------------------------- */
1279 
1280 /* Flags for new pointer objects */
1281 #define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1)
1282 #define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN)
1283 
1284 #define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1)
1285 
1286 #define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2)
1287 #define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN)
1288 
1289 #ifdef __cplusplus
1290 extern "C" {
1291 #endif
1292 
1293 /* The python void return value */
1294 
1295 SWIGRUNTIMEINLINE PyObject *
1297 {
1298  PyObject *none = Py_None;
1299  Py_INCREF(none);
1300  return none;
1301 }
1302 
1303 /* SwigPyClientData */
1304 
1305 typedef struct {
1306  PyObject *klass;
1307  PyObject *newraw;
1308  PyObject *newargs;
1309  PyObject *destroy;
1310  int delargs;
1312  PyTypeObject *pytype;
1314 
1315 SWIGRUNTIMEINLINE int
1317 {
1319  int fail = data ? data->implicitconv : 0;
1320  if (fail)
1321  PyErr_SetString(PyExc_TypeError, "Implicit conversion is prohibited for explicit constructors.");
1322  return fail;
1323 }
1324 
1325 SWIGRUNTIMEINLINE PyObject *
1327  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
1328  PyObject *klass = data ? data->klass : 0;
1329  return (klass ? klass : PyExc_RuntimeError);
1330 }
1331 
1332 
1334 SwigPyClientData_New(PyObject* obj)
1335 {
1336  if (!obj) {
1337  return 0;
1338  } else {
1340  /* the klass element */
1341  data->klass = obj;
1342  Py_INCREF(data->klass);
1343  /* the newraw method and newargs arguments used to create a new raw instance */
1344  if (PyClass_Check(obj)) {
1345  data->newraw = 0;
1346  data->newargs = obj;
1347  Py_INCREF(obj);
1348  } else {
1349  data->newraw = PyObject_GetAttrString(data->klass, "__new__");
1350  if (data->newraw) {
1351  Py_INCREF(data->newraw);
1352  data->newargs = PyTuple_New(1);
1353  PyTuple_SetItem(data->newargs, 0, obj);
1354  } else {
1355  data->newargs = obj;
1356  }
1357  Py_INCREF(data->newargs);
1358  }
1359  /* the destroy method, aka as the C++ delete method */
1360  data->destroy = PyObject_GetAttrString(data->klass, "__swig_destroy__");
1361  if (PyErr_Occurred()) {
1362  PyErr_Clear();
1363  data->destroy = 0;
1364  }
1365  if (data->destroy) {
1366  int flags;
1367  Py_INCREF(data->destroy);
1368  flags = PyCFunction_GET_FLAGS(data->destroy);
1369  data->delargs = !(flags & (METH_O));
1370  } else {
1371  data->delargs = 0;
1372  }
1373  data->implicitconv = 0;
1374  data->pytype = 0;
1375  return data;
1376  }
1377 }
1378 
1379 SWIGRUNTIME void
1381  Py_XDECREF(data->newraw);
1382  Py_XDECREF(data->newargs);
1383  Py_XDECREF(data->destroy);
1384 }
1385 
1386 /* =============== SwigPyObject =====================*/
1387 
1388 typedef struct {
1389  PyObject_HEAD
1390  void *ptr;
1392  int own;
1393  PyObject *next;
1394 #ifdef SWIGPYTHON_BUILTIN
1395  PyObject *dict;
1396 #endif
1397 } SwigPyObject;
1398 
1399 
1400 #ifdef SWIGPYTHON_BUILTIN
1401 
1402 SWIGRUNTIME PyObject *
1403 SwigPyObject_get___dict__(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
1404 {
1405  SwigPyObject *sobj = (SwigPyObject *)v;
1406 
1407  if (!sobj->dict)
1408  sobj->dict = PyDict_New();
1409 
1410  Py_INCREF(sobj->dict);
1411  return sobj->dict;
1412 }
1413 
1414 #endif
1415 
1416 SWIGRUNTIME PyObject *
1418 {
1419  return PyLong_FromVoidPtr(v->ptr);
1420 }
1421 
1422 SWIGRUNTIME PyObject *
1423 SwigPyObject_format(const char* fmt, SwigPyObject *v)
1424 {
1425  PyObject *res = NULL;
1426  PyObject *args = PyTuple_New(1);
1427  if (args) {
1428  if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) {
1429  PyObject *ofmt = SWIG_Python_str_FromChar(fmt);
1430  if (ofmt) {
1431 #if PY_VERSION_HEX >= 0x03000000
1432  res = PyUnicode_Format(ofmt,args);
1433 #else
1434  res = PyString_Format(ofmt,args);
1435 #endif
1436  Py_DECREF(ofmt);
1437  }
1438  Py_DECREF(args);
1439  }
1440  }
1441  return res;
1442 }
1443 
1444 SWIGRUNTIME PyObject *
1446 {
1447  return SwigPyObject_format("%o",v);
1448 }
1449 
1450 SWIGRUNTIME PyObject *
1452 {
1453  return SwigPyObject_format("%x",v);
1454 }
1455 
1456 SWIGRUNTIME PyObject *
1458 {
1459  const char *name = SWIG_TypePrettyName(v->ty);
1460  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", (name ? name : "unknown"), (void *)v);
1461  if (v->next) {
1462  PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
1463 # if PY_VERSION_HEX >= 0x03000000
1464  PyObject *joined = PyUnicode_Concat(repr, nrep);
1465  Py_DecRef(repr);
1466  Py_DecRef(nrep);
1467  repr = joined;
1468 # else
1469  PyString_ConcatAndDel(&repr,nrep);
1470 # endif
1471  }
1472  return repr;
1473 }
1474 
1475 /* We need a version taking two PyObject* parameters so it's a valid
1476  * PyCFunction to use in swigobject_methods[]. */
1477 SWIGRUNTIME PyObject *
1478 SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
1479 {
1480  return SwigPyObject_repr((SwigPyObject*)v);
1481 }
1482 
1483 SWIGRUNTIME int
1485 {
1486  void *i = v->ptr;
1487  void *j = w->ptr;
1488  return (i < j) ? -1 : ((i > j) ? 1 : 0);
1489 }
1490 
1491 /* Added for Python 3.x, would it also be useful for Python 2.x? */
1492 SWIGRUNTIME PyObject*
1494 {
1495  PyObject* res;
1496  if( op != Py_EQ && op != Py_NE ) {
1497  Py_INCREF(Py_NotImplemented);
1498  return Py_NotImplemented;
1499  }
1500  res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0);
1501  return res;
1502 }
1503 
1504 
1505 SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void);
1506 
1507 #ifdef SWIGPYTHON_BUILTIN
1508 static swig_type_info *SwigPyObject_stype = 0;
1509 SWIGRUNTIME PyTypeObject*
1510 SwigPyObject_type(void) {
1511  SwigPyClientData *cd;
1512  assert(SwigPyObject_stype);
1513  cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
1514  assert(cd);
1515  assert(cd->pytype);
1516  return cd->pytype;
1517 }
1518 #else
1519 SWIGRUNTIME PyTypeObject*
1521  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce();
1522  return type;
1523 }
1524 #endif
1525 
1527 SwigPyObject_Check(PyObject *op) {
1528 #ifdef SWIGPYTHON_BUILTIN
1529  PyTypeObject *target_tp = SwigPyObject_type();
1530  if (PyType_IsSubtype(op->ob_type, target_tp))
1531  return 1;
1532  return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0);
1533 #else
1534  return (Py_TYPE(op) == SwigPyObject_type())
1535  || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
1536 #endif
1537 }
1538 
1539 SWIGRUNTIME PyObject *
1540 SwigPyObject_New(void *ptr, swig_type_info *ty, int own);
1541 
1542 SWIGRUNTIME void
1544 {
1545  SwigPyObject *sobj = (SwigPyObject *) v;
1546  PyObject *next = sobj->next;
1547  if (sobj->own == SWIG_POINTER_OWN) {
1548  swig_type_info *ty = sobj->ty;
1549  SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
1550  PyObject *destroy = data ? data->destroy : 0;
1551  if (destroy) {
1552  /* destroy is always a VARARGS method */
1553  PyObject *res;
1554 
1555  /* PyObject_CallFunction() has the potential to silently drop
1556  the active exception. In cases of unnamed temporary
1557  variable or where we just finished iterating over a generator
1558  StopIteration will be active right now, and this needs to
1559  remain true upon return from SwigPyObject_dealloc. So save
1560  and restore. */
1561 
1562  PyObject *type = NULL, *value = NULL, *traceback = NULL;
1563  PyErr_Fetch(&type, &value, &traceback);
1564 
1565  if (data->delargs) {
1566  /* we need to create a temporary object to carry the destroy operation */
1567  PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
1568  res = SWIG_Python_CallFunctor(destroy, tmp);
1569  Py_DECREF(tmp);
1570  } else {
1571  PyCFunction meth = PyCFunction_GET_FUNCTION(destroy);
1572  PyObject *mself = PyCFunction_GET_SELF(destroy);
1573  res = ((*meth)(mself, v));
1574  }
1575  if (!res)
1576  PyErr_WriteUnraisable(destroy);
1577 
1578  PyErr_Restore(type, value, traceback);
1579 
1580  Py_XDECREF(res);
1581  }
1582 #if !defined(SWIG_PYTHON_SILENT_MEMLEAK)
1583  else {
1584  const char *name = SWIG_TypePrettyName(ty);
1585  printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown"));
1586  }
1587 #endif
1588  }
1589  Py_XDECREF(next);
1590  PyObject_DEL(v);
1591 }
1592 
1593 SWIGRUNTIME PyObject*
1594 SwigPyObject_append(PyObject* v, PyObject* next)
1595 {
1596  SwigPyObject *sobj = (SwigPyObject *) v;
1597  if (!SwigPyObject_Check(next)) {
1598  PyErr_SetString(PyExc_TypeError, "Attempt to append a non SwigPyObject");
1599  return NULL;
1600  }
1601  sobj->next = next;
1602  Py_INCREF(next);
1603  return SWIG_Py_Void();
1604 }
1605 
1606 SWIGRUNTIME PyObject*
1607 SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
1608 {
1609  SwigPyObject *sobj = (SwigPyObject *) v;
1610  if (sobj->next) {
1611  Py_INCREF(sobj->next);
1612  return sobj->next;
1613  } else {
1614  return SWIG_Py_Void();
1615  }
1616 }
1617 
1618 SWIGINTERN PyObject*
1619 SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
1620 {
1621  SwigPyObject *sobj = (SwigPyObject *)v;
1622  sobj->own = 0;
1623  return SWIG_Py_Void();
1624 }
1625 
1626 SWIGINTERN PyObject*
1627 SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
1628 {
1629  SwigPyObject *sobj = (SwigPyObject *)v;
1630  sobj->own = SWIG_POINTER_OWN;
1631  return SWIG_Py_Void();
1632 }
1633 
1634 SWIGINTERN PyObject*
1635 SwigPyObject_own(PyObject *v, PyObject *args)
1636 {
1637  PyObject *val = 0;
1638  if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) {
1639  return NULL;
1640  } else {
1641  SwigPyObject *sobj = (SwigPyObject *)v;
1642  PyObject *obj = PyBool_FromLong(sobj->own);
1643  if (val) {
1644  if (PyObject_IsTrue(val)) {
1645  SwigPyObject_acquire(v,args);
1646  } else {
1647  SwigPyObject_disown(v,args);
1648  }
1649  }
1650  return obj;
1651  }
1652 }
1653 
1654 static PyMethodDef
1656  {"disown", SwigPyObject_disown, METH_NOARGS, "releases ownership of the pointer"},
1657  {"acquire", SwigPyObject_acquire, METH_NOARGS, "acquires ownership of the pointer"},
1658  {"own", SwigPyObject_own, METH_VARARGS, "returns/sets ownership of the pointer"},
1659  {"append", SwigPyObject_append, METH_O, "appends another 'this' object"},
1660  {"next", SwigPyObject_next, METH_NOARGS, "returns the next 'this' object"},
1661  {"__repr__",SwigPyObject_repr2, METH_NOARGS, "returns object representation"},
1662  {0, 0, 0, 0}
1663 };
1664 
1665 SWIGRUNTIME PyTypeObject*
1667  static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
1668 
1669  static PyNumberMethods SwigPyObject_as_number = {
1670  (binaryfunc)0, /*nb_add*/
1671  (binaryfunc)0, /*nb_subtract*/
1672  (binaryfunc)0, /*nb_multiply*/
1673  /* nb_divide removed in Python 3 */
1674 #if PY_VERSION_HEX < 0x03000000
1675  (binaryfunc)0, /*nb_divide*/
1676 #endif
1677  (binaryfunc)0, /*nb_remainder*/
1678  (binaryfunc)0, /*nb_divmod*/
1679  (ternaryfunc)0,/*nb_power*/
1680  (unaryfunc)0, /*nb_negative*/
1681  (unaryfunc)0, /*nb_positive*/
1682  (unaryfunc)0, /*nb_absolute*/
1683  (inquiry)0, /*nb_nonzero*/
1684  0, /*nb_invert*/
1685  0, /*nb_lshift*/
1686  0, /*nb_rshift*/
1687  0, /*nb_and*/
1688  0, /*nb_xor*/
1689  0, /*nb_or*/
1690 #if PY_VERSION_HEX < 0x03000000
1691  0, /*nb_coerce*/
1692 #endif
1693  (unaryfunc)SwigPyObject_long, /*nb_int*/
1694 #if PY_VERSION_HEX < 0x03000000
1695  (unaryfunc)SwigPyObject_long, /*nb_long*/
1696 #else
1697  0, /*nb_reserved*/
1698 #endif
1699  (unaryfunc)0, /*nb_float*/
1700 #if PY_VERSION_HEX < 0x03000000
1701  (unaryfunc)SwigPyObject_oct, /*nb_oct*/
1702  (unaryfunc)SwigPyObject_hex, /*nb_hex*/
1703 #endif
1704 #if PY_VERSION_HEX >= 0x03050000 /* 3.5 */
1705  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_matrix_multiply */
1706 #elif PY_VERSION_HEX >= 0x03000000 /* 3.0 */
1707  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
1708 #else
1709  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
1710 #endif
1711  };
1712 
1713  static PyTypeObject swigpyobject_type;
1714  static int type_init = 0;
1715  if (!type_init) {
1716  const PyTypeObject tmp = {
1717 #if PY_VERSION_HEX >= 0x03000000
1718  PyVarObject_HEAD_INIT(NULL, 0)
1719 #else
1720  PyObject_HEAD_INIT(NULL)
1721  0, /* ob_size */
1722 #endif
1723  "SwigPyObject", /* tp_name */
1724  sizeof(SwigPyObject), /* tp_basicsize */
1725  0, /* tp_itemsize */
1726  (destructor)SwigPyObject_dealloc, /* tp_dealloc */
1727  0, /* tp_print */
1728  (getattrfunc)0, /* tp_getattr */
1729  (setattrfunc)0, /* tp_setattr */
1730 #if PY_VERSION_HEX >= 0x03000000
1731  0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
1732 #else
1733  (cmpfunc)SwigPyObject_compare, /* tp_compare */
1734 #endif
1735  (reprfunc)SwigPyObject_repr, /* tp_repr */
1736  &SwigPyObject_as_number, /* tp_as_number */
1737  0, /* tp_as_sequence */
1738  0, /* tp_as_mapping */
1739  (hashfunc)0, /* tp_hash */
1740  (ternaryfunc)0, /* tp_call */
1741  0, /* tp_str */
1742  PyObject_GenericGetAttr, /* tp_getattro */
1743  0, /* tp_setattro */
1744  0, /* tp_as_buffer */
1745  Py_TPFLAGS_DEFAULT, /* tp_flags */
1746  swigobject_doc, /* tp_doc */
1747  0, /* tp_traverse */
1748  0, /* tp_clear */
1749  (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */
1750  0, /* tp_weaklistoffset */
1751  0, /* tp_iter */
1752  0, /* tp_iternext */
1753  swigobject_methods, /* tp_methods */
1754  0, /* tp_members */
1755  0, /* tp_getset */
1756  0, /* tp_base */
1757  0, /* tp_dict */
1758  0, /* tp_descr_get */
1759  0, /* tp_descr_set */
1760  0, /* tp_dictoffset */
1761  0, /* tp_init */
1762  0, /* tp_alloc */
1763  0, /* tp_new */
1764  0, /* tp_free */
1765  0, /* tp_is_gc */
1766  0, /* tp_bases */
1767  0, /* tp_mro */
1768  0, /* tp_cache */
1769  0, /* tp_subclasses */
1770  0, /* tp_weaklist */
1771  0, /* tp_del */
1772  0, /* tp_version_tag */
1773 #if PY_VERSION_HEX >= 0x03040000
1774  0, /* tp_finalize */
1775 #endif
1776 #if PY_VERSION_HEX >= 0x03080000
1777  0, /* tp_vectorcall */
1778 #endif
1779 #if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000)
1780  0, /* tp_print */
1781 #endif
1782 #ifdef COUNT_ALLOCS
1783  0, /* tp_allocs */
1784  0, /* tp_frees */
1785  0, /* tp_maxalloc */
1786  0, /* tp_prev */
1787  0 /* tp_next */
1788 #endif
1789  };
1790  swigpyobject_type = tmp;
1791  type_init = 1;
1792  if (PyType_Ready(&swigpyobject_type) < 0)
1793  return NULL;
1794  }
1795  return &swigpyobject_type;
1796 }
1797 
1798 SWIGRUNTIME PyObject *
1799 SwigPyObject_New(void *ptr, swig_type_info *ty, int own)
1800 {
1801  SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type());
1802  if (sobj) {
1803  sobj->ptr = ptr;
1804  sobj->ty = ty;
1805  sobj->own = own;
1806  sobj->next = 0;
1807  }
1808  return (PyObject *)sobj;
1809 }
1810 
1811 /* -----------------------------------------------------------------------------
1812  * Implements a simple Swig Packed type, and use it instead of string
1813  * ----------------------------------------------------------------------------- */
1814 
1815 typedef struct {
1816  PyObject_HEAD
1817  void *pack;
1819  size_t size;
1820 } SwigPyPacked;
1821 
1822 SWIGRUNTIME PyObject *
1824 {
1825  char result[SWIG_BUFFER_SIZE];
1826  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
1827  return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
1828  } else {
1829  return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
1830  }
1831 }
1832 
1833 SWIGRUNTIME PyObject *
1835 {
1836  char result[SWIG_BUFFER_SIZE];
1837  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
1838  return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
1839  } else {
1840  return SWIG_Python_str_FromChar(v->ty->name);
1841  }
1842 }
1843 
1844 SWIGRUNTIME int
1846 {
1847  size_t i = v->size;
1848  size_t j = w->size;
1849  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
1850  return s ? s : strncmp((const char *)v->pack, (const char *)w->pack, 2*v->size);
1851 }
1852 
1853 SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void);
1854 
1855 SWIGRUNTIME PyTypeObject*
1857  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce();
1858  return type;
1859 }
1860 
1862 SwigPyPacked_Check(PyObject *op) {
1863  return ((op)->ob_type == SwigPyPacked_TypeOnce())
1864  || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
1865 }
1866 
1867 SWIGRUNTIME void
1869 {
1870  if (SwigPyPacked_Check(v)) {
1871  SwigPyPacked *sobj = (SwigPyPacked *) v;
1872  free(sobj->pack);
1873  }
1874  PyObject_DEL(v);
1875 }
1876 
1877 SWIGRUNTIME PyTypeObject*
1879  static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
1880  static PyTypeObject swigpypacked_type;
1881  static int type_init = 0;
1882  if (!type_init) {
1883  const PyTypeObject tmp = {
1884 #if PY_VERSION_HEX>=0x03000000
1885  PyVarObject_HEAD_INIT(NULL, 0)
1886 #else
1887  PyObject_HEAD_INIT(NULL)
1888  0, /* ob_size */
1889 #endif
1890  "SwigPyPacked", /* tp_name */
1891  sizeof(SwigPyPacked), /* tp_basicsize */
1892  0, /* tp_itemsize */
1893  (destructor)SwigPyPacked_dealloc, /* tp_dealloc */
1894  0, /* tp_print */
1895  (getattrfunc)0, /* tp_getattr */
1896  (setattrfunc)0, /* tp_setattr */
1897 #if PY_VERSION_HEX>=0x03000000
1898  0, /* tp_reserved in 3.0.1 */
1899 #else
1900  (cmpfunc)SwigPyPacked_compare, /* tp_compare */
1901 #endif
1902  (reprfunc)SwigPyPacked_repr, /* tp_repr */
1903  0, /* tp_as_number */
1904  0, /* tp_as_sequence */
1905  0, /* tp_as_mapping */
1906  (hashfunc)0, /* tp_hash */
1907  (ternaryfunc)0, /* tp_call */
1908  (reprfunc)SwigPyPacked_str, /* tp_str */
1909  PyObject_GenericGetAttr, /* tp_getattro */
1910  0, /* tp_setattro */
1911  0, /* tp_as_buffer */
1912  Py_TPFLAGS_DEFAULT, /* tp_flags */
1913  swigpacked_doc, /* tp_doc */
1914  0, /* tp_traverse */
1915  0, /* tp_clear */
1916  0, /* tp_richcompare */
1917  0, /* tp_weaklistoffset */
1918  0, /* tp_iter */
1919  0, /* tp_iternext */
1920  0, /* tp_methods */
1921  0, /* tp_members */
1922  0, /* tp_getset */
1923  0, /* tp_base */
1924  0, /* tp_dict */
1925  0, /* tp_descr_get */
1926  0, /* tp_descr_set */
1927  0, /* tp_dictoffset */
1928  0, /* tp_init */
1929  0, /* tp_alloc */
1930  0, /* tp_new */
1931  0, /* tp_free */
1932  0, /* tp_is_gc */
1933  0, /* tp_bases */
1934  0, /* tp_mro */
1935  0, /* tp_cache */
1936  0, /* tp_subclasses */
1937  0, /* tp_weaklist */
1938  0, /* tp_del */
1939  0, /* tp_version_tag */
1940 #if PY_VERSION_HEX >= 0x03040000
1941  0, /* tp_finalize */
1942 #endif
1943 #if PY_VERSION_HEX >= 0x03080000
1944  0, /* tp_vectorcall */
1945 #endif
1946 #if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000)
1947  0, /* tp_print */
1948 #endif
1949 #ifdef COUNT_ALLOCS
1950  0, /* tp_allocs */
1951  0, /* tp_frees */
1952  0, /* tp_maxalloc */
1953  0, /* tp_prev */
1954  0 /* tp_next */
1955 #endif
1956  };
1957  swigpypacked_type = tmp;
1958  type_init = 1;
1959  if (PyType_Ready(&swigpypacked_type) < 0)
1960  return NULL;
1961  }
1962  return &swigpypacked_type;
1963 }
1964 
1965 SWIGRUNTIME PyObject *
1966 SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty)
1967 {
1968  SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type());
1969  if (sobj) {
1970  void *pack = malloc(size);
1971  if (pack) {
1972  memcpy(pack, ptr, size);
1973  sobj->pack = pack;
1974  sobj->ty = ty;
1975  sobj->size = size;
1976  } else {
1977  PyObject_DEL((PyObject *) sobj);
1978  sobj = 0;
1979  }
1980  }
1981  return (PyObject *) sobj;
1982 }
1983 
1985 SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
1986 {
1987  if (SwigPyPacked_Check(obj)) {
1988  SwigPyPacked *sobj = (SwigPyPacked *)obj;
1989  if (sobj->size != size) return 0;
1990  memcpy(ptr, sobj->pack, size);
1991  return sobj->ty;
1992  } else {
1993  return 0;
1994  }
1995 }
1996 
1997 /* -----------------------------------------------------------------------------
1998  * pointers/data manipulation
1999  * ----------------------------------------------------------------------------- */
2000 
2001 static PyObject *Swig_This_global = NULL;
2002 
2003 SWIGRUNTIME PyObject *
2005 {
2006  if (Swig_This_global == NULL)
2008  return Swig_This_global;
2009 }
2010 
2011 /* #define SWIG_PYTHON_SLOW_GETSET_THIS */
2012 
2013 /* TODO: I don't know how to implement the fast getset in Python 3 right now */
2014 #if PY_VERSION_HEX>=0x03000000
2015 #define SWIG_PYTHON_SLOW_GETSET_THIS
2016 #endif
2017 
2019 SWIG_Python_GetSwigThis(PyObject *pyobj)
2020 {
2021  PyObject *obj;
2022 
2023  if (SwigPyObject_Check(pyobj))
2024  return (SwigPyObject *) pyobj;
2025 
2026 #ifdef SWIGPYTHON_BUILTIN
2027  (void)obj;
2028 # ifdef PyWeakref_CheckProxy
2029  if (PyWeakref_CheckProxy(pyobj)) {
2030  pyobj = PyWeakref_GET_OBJECT(pyobj);
2031  if (pyobj && SwigPyObject_Check(pyobj))
2032  return (SwigPyObject*) pyobj;
2033  }
2034 # endif
2035  return NULL;
2036 #else
2037 
2038  obj = 0;
2039 
2040 #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
2041  if (PyInstance_Check(pyobj)) {
2042  obj = _PyInstance_Lookup(pyobj, SWIG_This());
2043  } else {
2044  PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
2045  if (dictptr != NULL) {
2046  PyObject *dict = *dictptr;
2047  obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
2048  } else {
2049 #ifdef PyWeakref_CheckProxy
2050  if (PyWeakref_CheckProxy(pyobj)) {
2051  PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
2052  return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
2053  }
2054 #endif
2055  obj = PyObject_GetAttr(pyobj,SWIG_This());
2056  if (obj) {
2057  Py_DECREF(obj);
2058  } else {
2059  if (PyErr_Occurred()) PyErr_Clear();
2060  return 0;
2061  }
2062  }
2063  }
2064 #else
2065  obj = PyObject_GetAttr(pyobj,SWIG_This());
2066  if (obj) {
2067  Py_DECREF(obj);
2068  } else {
2069  if (PyErr_Occurred()) PyErr_Clear();
2070  return 0;
2071  }
2072 #endif
2073  if (obj && !SwigPyObject_Check(obj)) {
2074  /* a PyObject is called 'this', try to get the 'real this'
2075  SwigPyObject from it */
2076  return SWIG_Python_GetSwigThis(obj);
2077  }
2078  return (SwigPyObject *)obj;
2079 #endif
2080 }
2081 
2082 /* Acquire a pointer value */
2083 
2084 SWIGRUNTIME int
2085 SWIG_Python_AcquirePtr(PyObject *obj, int own) {
2086  if (own == SWIG_POINTER_OWN) {
2088  if (sobj) {
2089  int oldown = sobj->own;
2090  sobj->own = own;
2091  return oldown;
2092  }
2093  }
2094  return 0;
2095 }
2096 
2097 /* Convert a pointer value */
2098 
2099 SWIGRUNTIME int
2100 SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
2101  int res;
2102  SwigPyObject *sobj;
2103  int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0;
2104 
2105  if (!obj)
2106  return SWIG_ERROR;
2107  if (obj == Py_None && !implicit_conv) {
2108  if (ptr)
2109  *ptr = 0;
2111  }
2112 
2113  res = SWIG_ERROR;
2114 
2115  sobj = SWIG_Python_GetSwigThis(obj);
2116  if (own)
2117  *own = 0;
2118  while (sobj) {
2119  void *vptr = sobj->ptr;
2120  if (ty) {
2121  swig_type_info *to = sobj->ty;
2122  if (to == ty) {
2123  /* no type cast needed */
2124  if (ptr) *ptr = vptr;
2125  break;
2126  } else {
2127  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
2128  if (!tc) {
2129  sobj = (SwigPyObject *)sobj->next;
2130  } else {
2131  if (ptr) {
2132  int newmemory = 0;
2133  *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
2134  if (newmemory == SWIG_CAST_NEW_MEMORY) {
2135  assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
2136  if (own)
2137  *own = *own | SWIG_CAST_NEW_MEMORY;
2138  }
2139  }
2140  break;
2141  }
2142  }
2143  } else {
2144  if (ptr) *ptr = vptr;
2145  break;
2146  }
2147  }
2148  if (sobj) {
2149  if (own)
2150  *own = *own | sobj->own;
2151  if (flags & SWIG_POINTER_DISOWN) {
2152  sobj->own = 0;
2153  }
2154  res = SWIG_OK;
2155  } else {
2156  if (implicit_conv) {
2157  SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
2158  if (data && !data->implicitconv) {
2159  PyObject *klass = data->klass;
2160  if (klass) {
2161  PyObject *impconv;
2162  data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
2163  impconv = SWIG_Python_CallFunctor(klass, obj);
2164  data->implicitconv = 0;
2165  if (PyErr_Occurred()) {
2166  PyErr_Clear();
2167  impconv = 0;
2168  }
2169  if (impconv) {
2170  SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
2171  if (iobj) {
2172  void *vptr;
2173  res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
2174  if (SWIG_IsOK(res)) {
2175  if (ptr) {
2176  *ptr = vptr;
2177  /* transfer the ownership to 'ptr' */
2178  iobj->own = 0;
2179  res = SWIG_AddCast(res);
2180  res = SWIG_AddNewMask(res);
2181  } else {
2182  res = SWIG_AddCast(res);
2183  }
2184  }
2185  }
2186  Py_DECREF(impconv);
2187  }
2188  }
2189  }
2190  if (!SWIG_IsOK(res) && obj == Py_None) {
2191  if (ptr)
2192  *ptr = 0;
2193  if (PyErr_Occurred())
2194  PyErr_Clear();
2195  res = SWIG_OK;
2196  }
2197  }
2198  }
2199  return res;
2200 }
2201 
2202 /* Convert a function ptr value */
2203 
2204 SWIGRUNTIME int
2205 SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) {
2206  if (!PyCFunction_Check(obj)) {
2207  return SWIG_ConvertPtr(obj, ptr, ty, 0);
2208  } else {
2209  void *vptr = 0;
2210  swig_cast_info *tc;
2211 
2212  /* here we get the method pointer for callbacks */
2213  const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
2214  const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
2215  if (desc)
2216  desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
2217  if (!desc)
2218  return SWIG_ERROR;
2219  tc = SWIG_TypeCheck(desc,ty);
2220  if (tc) {
2221  int newmemory = 0;
2222  *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
2223  assert(!newmemory); /* newmemory handling not yet implemented */
2224  } else {
2225  return SWIG_ERROR;
2226  }
2227  return SWIG_OK;
2228  }
2229 }
2230 
2231 /* Convert a packed pointer value */
2232 
2233 SWIGRUNTIME int
2234 SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) {
2235  swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz);
2236  if (!to) return SWIG_ERROR;
2237  if (ty) {
2238  if (to != ty) {
2239  /* check type cast? */
2240  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
2241  if (!tc) return SWIG_ERROR;
2242  }
2243  }
2244  return SWIG_OK;
2245 }
2246 
2247 /* -----------------------------------------------------------------------------
2248  * Create a new pointer object
2249  * ----------------------------------------------------------------------------- */
2250 
2251 /*
2252  Create a new instance object, without calling __init__, and set the
2253  'this' attribute.
2254 */
2255 
2256 SWIGRUNTIME PyObject*
2258 {
2259  PyObject *inst = 0;
2260  PyObject *newraw = data->newraw;
2261  if (newraw) {
2262  inst = PyObject_Call(newraw, data->newargs, NULL);
2263  if (inst) {
2264 #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
2265  PyObject **dictptr = _PyObject_GetDictPtr(inst);
2266  if (dictptr != NULL) {
2267  PyObject *dict = *dictptr;
2268  if (dict == NULL) {
2269  dict = PyDict_New();
2270  *dictptr = dict;
2271  PyDict_SetItem(dict, SWIG_This(), swig_this);
2272  }
2273  }
2274 #else
2275  if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) {
2276  Py_DECREF(inst);
2277  inst = 0;
2278  }
2279 #endif
2280  }
2281  } else {
2282 #if PY_VERSION_HEX >= 0x03000000
2283  PyObject *empty_args = PyTuple_New(0);
2284  if (empty_args) {
2285  PyObject *empty_kwargs = PyDict_New();
2286  if (empty_kwargs) {
2287  inst = ((PyTypeObject *)data->newargs)->tp_new((PyTypeObject *)data->newargs, empty_args, empty_kwargs);
2288  Py_DECREF(empty_kwargs);
2289  if (inst) {
2290  if (PyObject_SetAttr(inst, SWIG_This(), swig_this) == -1) {
2291  Py_DECREF(inst);
2292  inst = 0;
2293  } else {
2294  Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
2295  }
2296  }
2297  }
2298  Py_DECREF(empty_args);
2299  }
2300 #else
2301  PyObject *dict = PyDict_New();
2302  if (dict) {
2303  PyDict_SetItem(dict, SWIG_This(), swig_this);
2304  inst = PyInstance_NewRaw(data->newargs, dict);
2305  Py_DECREF(dict);
2306  }
2307 #endif
2308  }
2309  return inst;
2310 }
2311 
2312 SWIGRUNTIME int
2313 SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this)
2314 {
2315 #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
2316  PyObject **dictptr = _PyObject_GetDictPtr(inst);
2317  if (dictptr != NULL) {
2318  PyObject *dict = *dictptr;
2319  if (dict == NULL) {
2320  dict = PyDict_New();
2321  *dictptr = dict;
2322  }
2323  return PyDict_SetItem(dict, SWIG_This(), swig_this);
2324  }
2325 #endif
2326  return PyObject_SetAttr(inst, SWIG_This(), swig_this);
2327 }
2328 
2329 
2330 SWIGINTERN PyObject *
2332  PyObject *obj[2];
2333  if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) {
2334  return NULL;
2335  } else {
2336  SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]);
2337  if (sthis) {
2338  SwigPyObject_append((PyObject*) sthis, obj[1]);
2339  } else {
2340  if (SWIG_Python_SetSwigThis(obj[0], obj[1]) != 0)
2341  return NULL;
2342  }
2343  return SWIG_Py_Void();
2344  }
2345 }
2346 
2347 /* Create a new pointer object */
2348 
2349 SWIGRUNTIME PyObject *
2350 SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) {
2351  SwigPyClientData *clientdata;
2352  PyObject * robj;
2353  int own;
2354 
2355  if (!ptr)
2356  return SWIG_Py_Void();
2357 
2358  clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
2359  own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
2360  if (clientdata && clientdata->pytype) {
2361  SwigPyObject *newobj;
2362  if (flags & SWIG_BUILTIN_TP_INIT) {
2363  newobj = (SwigPyObject*) self;
2364  if (newobj->ptr) {
2365  PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0);
2366  while (newobj->next)
2367  newobj = (SwigPyObject *) newobj->next;
2368  newobj->next = next_self;
2369  newobj = (SwigPyObject *)next_self;
2370 #ifdef SWIGPYTHON_BUILTIN
2371  newobj->dict = 0;
2372 #endif
2373  }
2374  } else {
2375  newobj = PyObject_New(SwigPyObject, clientdata->pytype);
2376 #ifdef SWIGPYTHON_BUILTIN
2377  newobj->dict = 0;
2378 #endif
2379  }
2380  if (newobj) {
2381  newobj->ptr = ptr;
2382  newobj->ty = type;
2383  newobj->own = own;
2384  newobj->next = 0;
2385  return (PyObject*) newobj;
2386  }
2387  return SWIG_Py_Void();
2388  }
2389 
2390  assert(!(flags & SWIG_BUILTIN_TP_INIT));
2391 
2392  robj = SwigPyObject_New(ptr, type, own);
2393  if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
2394  PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
2395  Py_DECREF(robj);
2396  robj = inst;
2397  }
2398  return robj;
2399 }
2400 
2401 /* Create a new packed object */
2402 
2403 SWIGRUNTIMEINLINE PyObject *
2404 SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
2405  return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void();
2406 }
2407 
2408 /* -----------------------------------------------------------------------------*
2409  * Get type list
2410  * -----------------------------------------------------------------------------*/
2411 
2412 #ifdef SWIG_LINK_RUNTIME
2413 void *SWIG_ReturnGlobalTypeList(void *);
2414 #endif
2415 
2418  static void *type_pointer = (void *)0;
2419  /* first check if module already created */
2420  if (!type_pointer) {
2421 #ifdef SWIG_LINK_RUNTIME
2422  type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
2423 #else
2424  type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0);
2425  if (PyErr_Occurred()) {
2426  PyErr_Clear();
2427  type_pointer = (void *)0;
2428  }
2429 #endif
2430  }
2431  return (swig_module_info *) type_pointer;
2432 }
2433 
2434 SWIGRUNTIME void
2436 {
2437  swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME);
2438  swig_type_info **types = swig_module->types;
2439  size_t i;
2440  for (i =0; i < swig_module->size; ++i) {
2441  swig_type_info *ty = types[i];
2442  if (ty->owndata) {
2444  if (data) SwigPyClientData_Del(data);
2445  }
2446  }
2447  Py_DECREF(SWIG_This());
2448  Swig_This_global = NULL;
2449 }
2450 
2451 SWIGRUNTIME void
2453 #if PY_VERSION_HEX >= 0x03000000
2454  /* Add a dummy module object into sys.modules */
2455  PyObject *module = PyImport_AddModule("swig_runtime_data" SWIG_RUNTIME_VERSION);
2456 #else
2457  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
2458  PyObject *module = Py_InitModule("swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table);
2459 #endif
2460  PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule);
2461  if (pointer && module) {
2462  PyModule_AddObject(module, "type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer);
2463  } else {
2464  Py_XDECREF(pointer);
2465  }
2466 }
2467 
2468 /* The python cached type query */
2469 SWIGRUNTIME PyObject *
2471  static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New();
2472  return cache;
2473 }
2474 
2476 SWIG_Python_TypeQuery(const char *type)
2477 {
2478  PyObject *cache = SWIG_Python_TypeCache();
2479  PyObject *key = SWIG_Python_str_FromChar(type);
2480  PyObject *obj = PyDict_GetItem(cache, key);
2481  swig_type_info *descriptor;
2482  if (obj) {
2483  descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL);
2484  } else {
2486  descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
2487  if (descriptor) {
2488  obj = PyCapsule_New((void*) descriptor, NULL, NULL);
2489  PyDict_SetItem(cache, key, obj);
2490  Py_DECREF(obj);
2491  }
2492  }
2493  Py_DECREF(key);
2494  return descriptor;
2495 }
2496 
2497 /*
2498  For backward compatibility only
2499 */
2500 #define SWIG_POINTER_EXCEPTION 0
2501 #define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg)
2502 #define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags)
2503 
2504 SWIGRUNTIME int
2505 SWIG_Python_AddErrMesg(const char* mesg, int infront)
2506 {
2507  if (PyErr_Occurred()) {
2508  PyObject *type = 0;
2509  PyObject *value = 0;
2510  PyObject *traceback = 0;
2511  PyErr_Fetch(&type, &value, &traceback);
2512  if (value) {
2513  PyObject *old_str = PyObject_Str(value);
2514  const char *tmp = SWIG_Python_str_AsChar(old_str);
2515  const char *errmesg = tmp ? tmp : "Invalid error message";
2516  Py_XINCREF(type);
2517  PyErr_Clear();
2518  if (infront) {
2519  PyErr_Format(type, "%s %s", mesg, errmesg);
2520  } else {
2521  PyErr_Format(type, "%s %s", errmesg, mesg);
2522  }
2524  Py_DECREF(old_str);
2525  }
2526  return 1;
2527  } else {
2528  return 0;
2529  }
2530 }
2531 
2532 SWIGRUNTIME int
2534 {
2535  if (PyErr_Occurred()) {
2536  /* add information about failing argument */
2537  char mesg[256];
2538  PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum);
2539  return SWIG_Python_AddErrMesg(mesg, 1);
2540  } else {
2541  return 0;
2542  }
2543 }
2544 
2545 SWIGRUNTIMEINLINE const char *
2546 SwigPyObject_GetDesc(PyObject *self)
2547 {
2548  SwigPyObject *v = (SwigPyObject *)self;
2549  swig_type_info *ty = v ? v->ty : 0;
2550  return ty ? ty->str : "";
2551 }
2552 
2553 SWIGRUNTIME void
2554 SWIG_Python_TypeError(const char *type, PyObject *obj)
2555 {
2556  if (type) {
2557 #if defined(SWIG_COBJECT_TYPES)
2558  if (obj && SwigPyObject_Check(obj)) {
2559  const char *otype = (const char *) SwigPyObject_GetDesc(obj);
2560  if (otype) {
2561  PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received",
2562  type, otype);
2563  return;
2564  }
2565  } else
2566 #endif
2567  {
2568  const char *otype = (obj ? obj->ob_type->tp_name : 0);
2569  if (otype) {
2570  PyObject *str = PyObject_Str(obj);
2571  const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0;
2572  if (cstr) {
2573  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
2574  type, otype, cstr);
2576  } else {
2577  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
2578  type, otype);
2579  }
2580  Py_XDECREF(str);
2581  return;
2582  }
2583  }
2584  PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
2585  } else {
2586  PyErr_Format(PyExc_TypeError, "unexpected type is received");
2587  }
2588 }
2589 
2590 
2591 /* Convert a pointer value, signal an exception on a type mismatch */
2592 SWIGRUNTIME void *
2593 SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) {
2594  void *result;
2595  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
2596  PyErr_Clear();
2597 #if SWIG_POINTER_EXCEPTION
2598  if (flags) {
2600  SWIG_Python_ArgFail(argnum);
2601  }
2602 #endif
2603  }
2604  return result;
2605 }
2606 
2607 #ifdef SWIGPYTHON_BUILTIN
2608 SWIGRUNTIME int
2609 SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) {
2610  PyTypeObject *tp = obj->ob_type;
2611  PyObject *descr;
2612  PyObject *encoded_name;
2613  descrsetfunc f;
2614  int res = -1;
2615 
2616 # ifdef Py_USING_UNICODE
2617  if (PyString_Check(name)) {
2618  name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL);
2619  if (!name)
2620  return -1;
2621  } else if (!PyUnicode_Check(name))
2622 # else
2623  if (!PyString_Check(name))
2624 # endif
2625  {
2626  PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name);
2627  return -1;
2628  } else {
2629  Py_INCREF(name);
2630  }
2631 
2632  if (!tp->tp_dict) {
2633  if (PyType_Ready(tp) < 0)
2634  goto done;
2635  }
2636 
2637  descr = _PyType_Lookup(tp, name);
2638  f = NULL;
2639  if (descr != NULL)
2640  f = descr->ob_type->tp_descr_set;
2641  if (!f) {
2642  if (PyString_Check(name)) {
2643  encoded_name = name;
2644  Py_INCREF(name);
2645  } else {
2646  encoded_name = PyUnicode_AsUTF8String(name);
2647  if (!encoded_name)
2648  return -1;
2649  }
2650  PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name));
2651  Py_DECREF(encoded_name);
2652  } else {
2653  res = f(descr, obj, value);
2654  }
2655 
2656  done:
2657  Py_DECREF(name);
2658  return res;
2659 }
2660 #endif
2661 
2662 
2663 #ifdef __cplusplus
2664 }
2665 #endif
2666 
2667 
2668 
2669 #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0)
2670 
2671 #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else
2672 
2673 
2674 
2675 #ifdef __cplusplus
2676 extern "C" {
2677 #endif
2678 
2679 /* Method creation and docstring support functions */
2680 
2681 SWIGINTERN PyMethodDef *SWIG_PythonGetProxyDoc(const char *name);
2682 SWIGINTERN PyObject *SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func);
2683 SWIGINTERN PyObject *SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func);
2684 
2685 #ifdef __cplusplus
2686 }
2687 #endif
2688 
2689 
2690  #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0)
2691 
2692 
2693 /* -------- TYPES TABLE (BEGIN) -------- */
2694 
2695 #define SWIGTYPE_p_char swig_types[0]
2696 #define SWIGTYPE_p_int swig_types[1]
2697 #define SWIGTYPE_p_long swig_types[2]
2698 #define SWIGTYPE_p_operations_research__KnapsackSolver swig_types[3]
2699 #define SWIGTYPE_p_short swig_types[4]
2700 #define SWIGTYPE_p_signed_char swig_types[5]
2701 #define SWIGTYPE_p_unsigned_char swig_types[6]
2702 #define SWIGTYPE_p_unsigned_int swig_types[7]
2703 #define SWIGTYPE_p_unsigned_long swig_types[8]
2704 #define SWIGTYPE_p_unsigned_short swig_types[9]
2706 static swig_module_info swig_module = {swig_types, 10, 0, 0, 0, 0};
2707 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
2708 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
2709 
2710 /* -------- TYPES TABLE (END) -------- */
2711 
2712 #ifdef SWIG_TypeQuery
2713 # undef SWIG_TypeQuery
2714 #endif
2715 #define SWIG_TypeQuery SWIG_Python_TypeQuery
2716 
2717 /*-----------------------------------------------
2718  @(target):= _pywrapknapsack_solver.so
2719  ------------------------------------------------*/
2720 #if PY_VERSION_HEX >= 0x03000000
2721 # define SWIG_init PyInit__pywrapknapsack_solver
2722 
2723 #else
2724 # define SWIG_init init_pywrapknapsack_solver
2725 
2726 #endif
2727 #define SWIG_name "_pywrapknapsack_solver"
2728 
2729 #define SWIGVERSION 0x040002
2730 #define SWIG_VERSION SWIGVERSION
2731 
2732 
2733 #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a))
2734 #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a))
2735 
2736 
2737 #include <stdexcept>
2738 
2739 
2740 namespace swig {
2742  protected:
2743  PyObject *_obj;
2744 
2745  public:
2747  {
2748  }
2749 
2751  {
2753  Py_XINCREF(_obj);
2755  }
2756 
2757  SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj)
2758  {
2759  if (initial_ref) {
2761  Py_XINCREF(_obj);
2763  }
2764  }
2765 
2767  {
2769  Py_XINCREF(item._obj);
2770  Py_XDECREF(_obj);
2771  _obj = item._obj;
2773  return *this;
2774  }
2775 
2777  {
2779  Py_XDECREF(_obj);
2781  }
2782 
2783  operator PyObject *() const
2784  {
2785  return _obj;
2786  }
2787 
2788  PyObject *operator->() const
2789  {
2790  return _obj;
2791  }
2792  };
2793 }
2794 
2795 
2796 namespace swig {
2798  SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { }
2799 
2801  {
2802  Py_XDECREF(_obj);
2803  _obj = obj;
2804  return *this;
2805  }
2806  };
2807 }
2808 
2809 
2810 #include <stdint.h> // Use the C99 official header
2811 
2812 
2813 #define SWIGWORDSIZE64
2814 #ifndef LONG_MAX
2815 #include <limits.h>
2816 #endif
2817 #if (__WORDSIZE == 32) || (LONG_MAX == INT_MAX)
2818 # error "SWIG wrapped code invalid in 32 bit architecture, regenerate code using -DSWIGWORDSIZE32"
2819 #endif
2820 
2821 
2822 #include <cstdint>
2823 #include <string>
2824 #include <vector>
2825 
2826 #include "ortools/base/basictypes.h"
2827 
2828 
2829 #include <string>
2830 
2831 
2832 #include "ortools/base/python-swig.h"
2833 
2834 
2836 
2837 
2838 SWIGINTERNINLINE PyObject*
2840 {
2841  return PyInt_FromLong((long) value);
2842 }
2843 
2844 
2847 {
2848  static int init = 0;
2849  static swig_type_info* info = 0;
2850  if (!init) {
2851  info = SWIG_TypeQuery("_p_char");
2852  init = 1;
2853  }
2854  return info;
2855 }
2856 
2857 
2858 SWIGINTERN int
2859 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
2860 {
2861 #if PY_VERSION_HEX>=0x03000000
2862 #if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
2863  if (PyBytes_Check(obj))
2864 #else
2865  if (PyUnicode_Check(obj))
2866 #endif
2867 #else
2868  if (PyString_Check(obj))
2869 #endif
2870  {
2871  char *cstr; Py_ssize_t len;
2872  int ret = SWIG_OK;
2873 #if PY_VERSION_HEX>=0x03000000
2874 #if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
2875  if (!alloc && cptr) {
2876  /* We can't allow converting without allocation, since the internal
2877  representation of string in Python 3 is UCS-2/UCS-4 but we require
2878  a UTF-8 representation.
2879  TODO(bhy) More detailed explanation */
2880  return SWIG_RuntimeError;
2881  }
2882  obj = PyUnicode_AsUTF8String(obj);
2883  if (!obj)
2884  return SWIG_TypeError;
2885  if (alloc)
2886  *alloc = SWIG_NEWOBJ;
2887 #endif
2888  if (PyBytes_AsStringAndSize(obj, &cstr, &len) == -1)
2889  return SWIG_TypeError;
2890 #else
2891  if (PyString_AsStringAndSize(obj, &cstr, &len) == -1)
2892  return SWIG_TypeError;
2893 #endif
2894  if (cptr) {
2895  if (alloc) {
2896  if (*alloc == SWIG_NEWOBJ) {
2897  *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
2898  *alloc = SWIG_NEWOBJ;
2899  } else {
2900  *cptr = cstr;
2901  *alloc = SWIG_OLDOBJ;
2902  }
2903  } else {
2904 #if PY_VERSION_HEX>=0x03000000
2905 #if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
2906  *cptr = PyBytes_AsString(obj);
2907 #else
2908  assert(0); /* Should never reach here with Unicode strings in Python 3 */
2909 #endif
2910 #else
2911  *cptr = SWIG_Python_str_AsChar(obj);
2912  if (!*cptr)
2913  ret = SWIG_TypeError;
2914 #endif
2915  }
2916  }
2917  if (psize) *psize = len + 1;
2918 #if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
2919  Py_XDECREF(obj);
2920 #endif
2921  return ret;
2922  } else {
2923 #if defined(SWIG_PYTHON_2_UNICODE)
2924 #if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
2925 #error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once"
2926 #endif
2927 #if PY_VERSION_HEX<0x03000000
2928  if (PyUnicode_Check(obj)) {
2929  char *cstr; Py_ssize_t len;
2930  if (!alloc && cptr) {
2931  return SWIG_RuntimeError;
2932  }
2933  obj = PyUnicode_AsUTF8String(obj);
2934  if (!obj)
2935  return SWIG_TypeError;
2936  if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
2937  if (cptr) {
2938  if (alloc) *alloc = SWIG_NEWOBJ;
2939  *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
2940  }
2941  if (psize) *psize = len + 1;
2942 
2943  Py_XDECREF(obj);
2944  return SWIG_OK;
2945  } else {
2946  Py_XDECREF(obj);
2947  }
2948  }
2949 #endif
2950 #endif
2951 
2952  swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
2953  if (pchar_descriptor) {
2954  void* vptr = 0;
2955  if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) {
2956  if (cptr) *cptr = (char *) vptr;
2957  if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0;
2958  if (alloc) *alloc = SWIG_OLDOBJ;
2959  return SWIG_OK;
2960  }
2961  }
2962  }
2963  return SWIG_TypeError;
2964 }
2965 
2966 
2967 SWIGINTERN int
2968 SWIG_AsPtr_std_string (PyObject * obj, std::string **val)
2969 {
2970  char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ;
2971  if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) {
2972  if (buf) {
2973  if (val) *val = new std::string(buf, size - 1);
2974  if (alloc == SWIG_NEWOBJ) delete[] buf;
2975  return SWIG_NEWOBJ;
2976  } else {
2977  if (val) *val = 0;
2978  return SWIG_OLDOBJ;
2979  }
2980  } else {
2981  static int init = 0;
2982  static swig_type_info* descriptor = 0;
2983  if (!init) {
2984  descriptor = SWIG_TypeQuery("std::string" " *");
2985  init = 1;
2986  }
2987  if (descriptor) {
2988  std::string *vptr;
2989  int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0);
2990  if (SWIG_IsOK(res) && val) *val = vptr;
2991  return res;
2992  }
2993  }
2994  return SWIG_ERROR;
2995 }
2996 
2997 
2998 #include <limits.h>
2999 #if !defined(SWIG_NO_LLONG_MAX)
3000 # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
3001 # define LLONG_MAX __LONG_LONG_MAX__
3002 # define LLONG_MIN (-LLONG_MAX - 1LL)
3003 # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
3004 # endif
3005 #endif
3006 
3007 
3008 SWIGINTERN int
3009 SWIG_AsVal_double (PyObject *obj, double *val)
3010 {
3011  int res = SWIG_TypeError;
3012  if (PyFloat_Check(obj)) {
3013  if (val) *val = PyFloat_AsDouble(obj);
3014  return SWIG_OK;
3015 #if PY_VERSION_HEX < 0x03000000
3016  } else if (PyInt_Check(obj)) {
3017  if (val) *val = (double) PyInt_AsLong(obj);
3018  return SWIG_OK;
3019 #endif
3020  } else if (PyLong_Check(obj)) {
3021  double v = PyLong_AsDouble(obj);
3022  if (!PyErr_Occurred()) {
3023  if (val) *val = v;
3024  return SWIG_OK;
3025  } else {
3026  PyErr_Clear();
3027  }
3028  }
3029 #ifdef SWIG_PYTHON_CAST_MODE
3030  {
3031  int dispatch = 0;
3032  double d = PyFloat_AsDouble(obj);
3033  if (!PyErr_Occurred()) {
3034  if (val) *val = d;
3035  return SWIG_AddCast(SWIG_OK);
3036  } else {
3037  PyErr_Clear();
3038  }
3039  if (!dispatch) {
3040  long v = PyLong_AsLong(obj);
3041  if (!PyErr_Occurred()) {
3042  if (val) *val = v;
3044  } else {
3045  PyErr_Clear();
3046  }
3047  }
3048  }
3049 #endif
3050  return res;
3051 }
3052 
3053 
3054 #include <float.h>
3055 
3056 
3057 #include <math.h>
3058 
3059 
3060 SWIGINTERNINLINE int
3061 SWIG_CanCastAsInteger(double *d, double min, double max) {
3062  double x = *d;
3063  if ((min <= x && x <= max)) {
3064  double fx = floor(x);
3065  double cx = ceil(x);
3066  double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */
3067  if ((errno == EDOM) || (errno == ERANGE)) {
3068  errno = 0;
3069  } else {
3070  double summ, reps, diff;
3071  if (rd < x) {
3072  diff = x - rd;
3073  } else if (rd > x) {
3074  diff = rd - x;
3075  } else {
3076  return 1;
3077  }
3078  summ = rd + x;
3079  reps = diff/summ;
3080  if (reps < 8*DBL_EPSILON) {
3081  *d = rd;
3082  return 1;
3083  }
3084  }
3085  }
3086  return 0;
3087 }
3088 
3089 
3090 SWIGINTERN int
3091 SWIG_AsVal_long (PyObject *obj, long* val)
3092 {
3093 #if PY_VERSION_HEX < 0x03000000
3094  if (PyInt_Check(obj)) {
3095  if (val) *val = PyInt_AsLong(obj);
3096  return SWIG_OK;
3097  } else
3098 #endif
3099  if (PyLong_Check(obj)) {
3100  long v = PyLong_AsLong(obj);
3101  if (!PyErr_Occurred()) {
3102  if (val) *val = v;
3103  return SWIG_OK;
3104  } else {
3105  PyErr_Clear();
3106  return SWIG_OverflowError;
3107  }
3108  }
3109 #ifdef SWIG_PYTHON_CAST_MODE
3110  {
3111  int dispatch = 0;
3112  long v = PyInt_AsLong(obj);
3113  if (!PyErr_Occurred()) {
3114  if (val) *val = v;
3115  return SWIG_AddCast(SWIG_OK);
3116  } else {
3117  PyErr_Clear();
3118  }
3119  if (!dispatch) {
3120  double d;
3121  int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d));
3122  if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
3123  if (val) *val = (long)(d);
3124  return res;
3125  }
3126  }
3127  }
3128 #endif
3129  return SWIG_TypeError;
3130 }
3131 
3132 
3133 SWIGINTERN int
3134 SWIG_AsVal_int (PyObject * obj, int *val)
3135 {
3136  long v;
3137  int res = SWIG_AsVal_long (obj, &v);
3138  if (SWIG_IsOK(res)) {
3139  if ((v < INT_MIN || v > INT_MAX)) {
3140  return SWIG_OverflowError;
3141  } else {
3142  if (val) *val = static_cast< int >(v);
3143  }
3144  }
3145  return res;
3146 }
3147 
3148 
3149  #define SWIG_From_long PyInt_FromLong
3150 
3151 
3152 SWIGINTERNINLINE PyObject*
3154 {
3155  return PyBool_FromLong(value ? 1 : 0);
3156 }
3157 
3158 
3159 SWIGINTERN int
3160 SWIG_AsVal_bool (PyObject *obj, bool *val)
3161 {
3162  int r;
3163  if (!PyBool_Check(obj))
3164  return SWIG_ERROR;
3165  r = PyObject_IsTrue(obj);
3166  if (r == -1)
3167  return SWIG_ERROR;
3168  if (val) *val = r ? true : false;
3169  return SWIG_OK;
3170 }
3171 
3172 #ifdef __cplusplus
3173 extern "C" {
3174 #endif
3175 SWIGINTERN PyObject *_wrap_new_KnapsackSolver__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
3176  PyObject *resultobj = 0;
3177  std::string *arg1 = 0 ;
3178  int res1 = SWIG_OLDOBJ ;
3180 
3181  if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
3182  {
3183  std::string *ptr = (std::string *)0;
3184  res1 = SWIG_AsPtr_std_string(swig_obj[0], &ptr);
3185  if (!SWIG_IsOK(res1)) {
3186  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_KnapsackSolver" "', argument " "1"" of type '" "std::string const &""'");
3187  }
3188  if (!ptr) {
3189  SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_KnapsackSolver" "', argument " "1"" of type '" "std::string const &""'");
3190  }
3191  arg1 = ptr;
3192  }
3193  result = (operations_research::KnapsackSolver *)new operations_research::KnapsackSolver((std::string const &)*arg1);
3195  if (SWIG_IsNewObj(res1)) delete arg1;
3196  return resultobj;
3197 fail:
3198  if (SWIG_IsNewObj(res1)) delete arg1;
3199  return NULL;
3200 }
3201 
3202 
3203 SWIGINTERN PyObject *_wrap_new_KnapsackSolver__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
3204  PyObject *resultobj = 0;
3206  std::string *arg2 = 0 ;
3207  int val1 ;
3208  int ecode1 = 0 ;
3209  int res2 = SWIG_OLDOBJ ;
3211 
3212  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
3213  ecode1 = SWIG_AsVal_int(swig_obj[0], &val1);
3214  if (!SWIG_IsOK(ecode1)) {
3215  SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_KnapsackSolver" "', argument " "1"" of type '" "operations_research::KnapsackSolver::SolverType""'");
3216  }
3217  arg1 = static_cast< operations_research::KnapsackSolver::SolverType >(val1);
3218  {
3219  std::string *ptr = (std::string *)0;
3220  res2 = SWIG_AsPtr_std_string(swig_obj[1], &ptr);
3221  if (!SWIG_IsOK(res2)) {
3222  SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_KnapsackSolver" "', argument " "2"" of type '" "std::string const &""'");
3223  }
3224  if (!ptr) {
3225  SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_KnapsackSolver" "', argument " "2"" of type '" "std::string const &""'");
3226  }
3227  arg2 = ptr;
3228  }
3229  result = (operations_research::KnapsackSolver *)new operations_research::KnapsackSolver(arg1,(std::string const &)*arg2);
3231  if (SWIG_IsNewObj(res2)) delete arg2;
3232  return resultobj;
3233 fail:
3234  if (SWIG_IsNewObj(res2)) delete arg2;
3235  return NULL;
3236 }
3237 
3238 
3239 SWIGINTERN PyObject *_wrap_new_KnapsackSolver(PyObject *self, PyObject *args) {
3240  Py_ssize_t argc;
3241  PyObject *argv[3] = {
3242  0
3243  };
3244 
3245  if (!(argc = SWIG_Python_UnpackTuple(args, "new_KnapsackSolver", 0, 2, argv))) SWIG_fail;
3246  --argc;
3247  if (argc == 1) {
3248  int _v;
3249  int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0));
3250  _v = SWIG_CheckState(res);
3251  if (_v) {
3252  return _wrap_new_KnapsackSolver__SWIG_0(self, argc, argv);
3253  }
3254  }
3255  if (argc == 2) {
3256  int _v;
3257  {
3258  int res = SWIG_AsVal_int(argv[0], NULL);
3259  _v = SWIG_CheckState(res);
3260  }
3261  if (_v) {
3262  int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
3263  _v = SWIG_CheckState(res);
3264  if (_v) {
3265  return _wrap_new_KnapsackSolver__SWIG_1(self, argc, argv);
3266  }
3267  }
3268  }
3269 
3270 fail:
3271  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_KnapsackSolver'.\n"
3272  " Possible C/C++ prototypes are:\n"
3273  " operations_research::KnapsackSolver::KnapsackSolver(std::string const &)\n"
3274  " operations_research::KnapsackSolver::KnapsackSolver(operations_research::KnapsackSolver::SolverType,std::string const &)\n");
3275  return 0;
3276 }
3277 
3278 
3279 SWIGINTERN PyObject *_wrap_delete_KnapsackSolver(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3280  PyObject *resultobj = 0;
3282  void *argp1 = 0 ;
3283  int res1 = 0 ;
3284  PyObject *swig_obj[1] ;
3285 
3286  if (!args) SWIG_fail;
3287  swig_obj[0] = args;
3289  if (!SWIG_IsOK(res1)) {
3290  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_KnapsackSolver" "', argument " "1"" of type '" "operations_research::KnapsackSolver *""'");
3291  }
3292  arg1 = reinterpret_cast< operations_research::KnapsackSolver * >(argp1);
3293  delete arg1;
3294  resultobj = SWIG_Py_Void();
3295  return resultobj;
3296 fail:
3297  return NULL;
3298 }
3299 
3300 
3301 SWIGINTERN PyObject *_wrap_KnapsackSolver_Init(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3302  PyObject *resultobj = 0;
3304  std::vector< int64 > *arg2 = 0 ;
3305  std::vector< std::vector< int64 > > *arg3 = 0 ;
3306  std::vector< int64 > *arg4 = 0 ;
3307  void *argp1 = 0 ;
3308  int res1 = 0 ;
3309  std::vector< int64 > temp2 ;
3310  std::vector< std::vector< int64 > > temp3 ;
3311  std::vector< int64 > temp4 ;
3312  PyObject *swig_obj[4] ;
3313 
3314  if (!SWIG_Python_UnpackTuple(args, "KnapsackSolver_Init", 4, 4, swig_obj)) SWIG_fail;
3315  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_operations_research__KnapsackSolver, 0 | 0 );
3316  if (!SWIG_IsOK(res1)) {
3317  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "KnapsackSolver_Init" "', argument " "1"" of type '" "operations_research::KnapsackSolver *""'");
3318  }
3319  arg1 = reinterpret_cast< operations_research::KnapsackSolver * >(argp1);
3320  {
3321  if (!vector_input_helper(swig_obj[1], &temp2, PyObjAs<int64>)) {
3322  if (!PyErr_Occurred())
3323  SWIG_Error(SWIG_TypeError, "sequence(int64) expected");
3324  return NULL;
3325  }
3326  arg2 = &temp2;
3327  }
3328  {
3329  if (!PyList_Check(swig_obj[2])) {
3330  PyErr_SetString(PyExc_TypeError, "Expecting a list of tuples");
3331  SWIG_fail;
3332  }
3333  int len = PyList_Size(swig_obj[2]);
3334  int arity = -1;
3335  if (len > 0) {
3336  temp3.resize(len);
3337  for (size_t i = 0; i < len; ++i) {
3338  PyObject *tuple = PyList_GetItem(swig_obj[2], i);
3339  if (!PyTuple_Check(tuple) && !PyList_Check(tuple)) {
3340  PyErr_SetString(PyExc_TypeError, "Expecting a sequence");
3341  SWIG_fail;
3342  }
3343  bool is_tuple = PyTuple_Check(tuple);
3344  int arity = is_tuple ? PyTuple_Size(tuple) : PyList_Size(tuple);
3345  temp3[i].resize(arity);
3346  for (size_t j = 0; j < arity; ++j) {
3347  bool success = PyObjAs<int64>(is_tuple ?
3348  PyTuple_GetItem(tuple, j) :
3349  PyList_GetItem(tuple, j), &temp3[i][j]);
3350  if (!success) {
3351  SWIG_fail;
3352  }
3353  }
3354  }
3355  }
3356  arg3 = &temp3;
3357  }
3358  {
3359  if (!vector_input_helper(swig_obj[3], &temp4, PyObjAs<int64>)) {
3360  if (!PyErr_Occurred())
3361  SWIG_Error(SWIG_TypeError, "sequence(int64) expected");
3362  return NULL;
3363  }
3364  arg4 = &temp4;
3365  }
3366  (arg1)->Init((std::vector< int64 > const &)*arg2,(std::vector< std::vector< int64 > > const &)*arg3,(std::vector< int64 > const &)*arg4);
3367  resultobj = SWIG_Py_Void();
3368  return resultobj;
3369 fail:
3370  return NULL;
3371 }
3372 
3373 
3374 SWIGINTERN PyObject *_wrap_KnapsackSolver_Solve(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3375  PyObject *resultobj = 0;
3377  void *argp1 = 0 ;
3378  int res1 = 0 ;
3379  PyObject *swig_obj[1] ;
3380  int64 result;
3381 
3382  if (!args) SWIG_fail;
3383  swig_obj[0] = args;
3384  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_operations_research__KnapsackSolver, 0 | 0 );
3385  if (!SWIG_IsOK(res1)) {
3386  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "KnapsackSolver_Solve" "', argument " "1"" of type '" "operations_research::KnapsackSolver *""'");
3387  }
3388  arg1 = reinterpret_cast< operations_research::KnapsackSolver * >(argp1);
3389  result = (int64)(arg1)->Solve();
3390  resultobj = SWIG_From_long(static_cast< long >(result));
3391  return resultobj;
3392 fail:
3393  return NULL;
3394 }
3395 
3396 
3397 SWIGINTERN PyObject *_wrap_KnapsackSolver_BestSolutionContains(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3398  PyObject *resultobj = 0;
3400  int arg2 ;
3401  void *argp1 = 0 ;
3402  int res1 = 0 ;
3403  int val2 ;
3404  int ecode2 = 0 ;
3405  PyObject *swig_obj[2] ;
3406  bool result;
3407 
3408  if (!SWIG_Python_UnpackTuple(args, "KnapsackSolver_BestSolutionContains", 2, 2, swig_obj)) SWIG_fail;
3409  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_operations_research__KnapsackSolver, 0 | 0 );
3410  if (!SWIG_IsOK(res1)) {
3411  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "KnapsackSolver_BestSolutionContains" "', argument " "1"" of type '" "operations_research::KnapsackSolver const *""'");
3412  }
3413  arg1 = reinterpret_cast< operations_research::KnapsackSolver * >(argp1);
3414  ecode2 = SWIG_AsVal_int(swig_obj[1], &val2);
3415  if (!SWIG_IsOK(ecode2)) {
3416  SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "KnapsackSolver_BestSolutionContains" "', argument " "2"" of type '" "int""'");
3417  }
3418  arg2 = static_cast< int >(val2);
3419  result = (bool)((operations_research::KnapsackSolver const *)arg1)->BestSolutionContains(arg2);
3420  resultobj = SWIG_From_bool(static_cast< bool >(result));
3421  return resultobj;
3422 fail:
3423  return NULL;
3424 }
3425 
3426 
3427 SWIGINTERN PyObject *_wrap_KnapsackSolver_set_use_reduction(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3428  PyObject *resultobj = 0;
3430  bool arg2 ;
3431  void *argp1 = 0 ;
3432  int res1 = 0 ;
3433  bool val2 ;
3434  int ecode2 = 0 ;
3435  PyObject *swig_obj[2] ;
3436 
3437  if (!SWIG_Python_UnpackTuple(args, "KnapsackSolver_set_use_reduction", 2, 2, swig_obj)) SWIG_fail;
3438  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_operations_research__KnapsackSolver, 0 | 0 );
3439  if (!SWIG_IsOK(res1)) {
3440  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "KnapsackSolver_set_use_reduction" "', argument " "1"" of type '" "operations_research::KnapsackSolver *""'");
3441  }
3442  arg1 = reinterpret_cast< operations_research::KnapsackSolver * >(argp1);
3443  ecode2 = SWIG_AsVal_bool(swig_obj[1], &val2);
3444  if (!SWIG_IsOK(ecode2)) {
3445  SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "KnapsackSolver_set_use_reduction" "', argument " "2"" of type '" "bool""'");
3446  }
3447  arg2 = static_cast< bool >(val2);
3448  (arg1)->set_use_reduction(arg2);
3449  resultobj = SWIG_Py_Void();
3450  return resultobj;
3451 fail:
3452  return NULL;
3453 }
3454 
3455 
3456 SWIGINTERN PyObject *_wrap_KnapsackSolver_set_time_limit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3457  PyObject *resultobj = 0;
3459  double arg2 ;
3460  void *argp1 = 0 ;
3461  int res1 = 0 ;
3462  double val2 ;
3463  int ecode2 = 0 ;
3464  PyObject *swig_obj[2] ;
3465 
3466  if (!SWIG_Python_UnpackTuple(args, "KnapsackSolver_set_time_limit", 2, 2, swig_obj)) SWIG_fail;
3467  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_operations_research__KnapsackSolver, 0 | 0 );
3468  if (!SWIG_IsOK(res1)) {
3469  SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "KnapsackSolver_set_time_limit" "', argument " "1"" of type '" "operations_research::KnapsackSolver *""'");
3470  }
3471  arg1 = reinterpret_cast< operations_research::KnapsackSolver * >(argp1);
3472  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
3473  if (!SWIG_IsOK(ecode2)) {
3474  SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "KnapsackSolver_set_time_limit" "', argument " "2"" of type '" "double""'");
3475  }
3476  arg2 = static_cast< double >(val2);
3477  (arg1)->set_time_limit(arg2);
3478  resultobj = SWIG_Py_Void();
3479  return resultobj;
3480 fail:
3481  return NULL;
3482 }
3483 
3484 
3485 SWIGINTERN PyObject *KnapsackSolver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3486  PyObject *obj;
3487  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
3489  return SWIG_Py_Void();
3490 }
3491 
3492 SWIGINTERN PyObject *KnapsackSolver_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
3493  return SWIG_Python_InitShadowInstance(args);
3494 }
3495 
3496 static PyMethodDef SwigMethods[] = {
3497  { "SWIG_PyInstanceMethod_New", SWIG_PyInstanceMethod_New, METH_O, NULL},
3498  { "new_KnapsackSolver", _wrap_new_KnapsackSolver, METH_VARARGS, NULL},
3499  { "delete_KnapsackSolver", _wrap_delete_KnapsackSolver, METH_O, NULL},
3500  { "KnapsackSolver_Init", _wrap_KnapsackSolver_Init, METH_VARARGS, "Initializes the solver and enters the problem to be solved."},
3501  { "KnapsackSolver_Solve", _wrap_KnapsackSolver_Solve, METH_O, "Solves the problem and returns the profit of the optimal solution."},
3502  { "KnapsackSolver_BestSolutionContains", _wrap_KnapsackSolver_BestSolutionContains, METH_VARARGS, "Returns true if the item 'item_id' is packed in the optimal knapsack."},
3503  { "KnapsackSolver_set_use_reduction", _wrap_KnapsackSolver_set_use_reduction, METH_VARARGS, NULL},
3504  { "KnapsackSolver_set_time_limit", _wrap_KnapsackSolver_set_time_limit, METH_VARARGS, "\n"
3505  " Time limit in seconds.\n"
3506  "\n"
3507  "When a finite time limit is set the solution obtained might not be optimal\n"
3508  "if the limit is reached.\n"
3509  ""},
3510  { "KnapsackSolver_swigregister", KnapsackSolver_swigregister, METH_O, NULL},
3511  { "KnapsackSolver_swiginit", KnapsackSolver_swiginit, METH_VARARGS, NULL},
3512  { NULL, NULL, 0, NULL }
3513 };
3514 
3515 static PyMethodDef SwigMethods_proxydocs[] = {
3516  { NULL, NULL, 0, NULL }
3517 };
3518 
3519 
3520 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
3521 
3522 static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
3523 static swig_type_info _swigt__p_int = {"_p_int", "int *|int_least32_t *|int32 *|int32_t *", 0, 0, (void*)0, 0};
3524 static swig_type_info _swigt__p_long = {"_p_long", "intptr_t *|int_least64_t *|int_fast32_t *|int_fast64_t *|int64 *|int64_t *|long *|int_fast16_t *|intmax_t *", 0, 0, (void*)0, 0};
3525 static swig_type_info _swigt__p_operations_research__KnapsackSolver = {"_p_operations_research__KnapsackSolver", "operations_research::KnapsackSolver *", 0, 0, (void*)0, 0};
3526 static swig_type_info _swigt__p_short = {"_p_short", "int16 *|short *|int_least16_t *|int16_t *", 0, 0, (void*)0, 0};
3527 static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|int8 *|int_least8_t *|int_fast8_t *|int8_t *", 0, 0, (void*)0, 0};
3528 static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *|uint8 *|uint_least8_t *|uint_fast8_t *|uint8_t *", 0, 0, (void*)0, 0};
3529 static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "uint_least32_t *|uint32 *|uint32_t *|unsigned int *", 0, 0, (void*)0, 0};
3530 static swig_type_info _swigt__p_unsigned_long = {"_p_unsigned_long", "uintptr_t *|uint_least64_t *|uint_fast32_t *|uint_fast64_t *|uint64 *|uint64_t *|unsigned long *|uint_fast16_t *|uintmax_t *", 0, 0, (void*)0, 0};
3531 static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "uint16 *|unsigned short *|uint_least16_t *|uint16_t *", 0, 0, (void*)0, 0};
3532 
3534  &_swigt__p_char,
3535  &_swigt__p_int,
3536  &_swigt__p_long,
3538  &_swigt__p_short,
3544 };
3545 
3546 static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
3547 static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
3548 static swig_cast_info _swigc__p_long[] = { {&_swigt__p_long, 0, 0, 0},{0, 0, 0, 0}};
3550 static swig_cast_info _swigc__p_short[] = { {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}};
3551 static swig_cast_info _swigc__p_signed_char[] = { {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}};
3552 static swig_cast_info _swigc__p_unsigned_char[] = { {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
3553 static swig_cast_info _swigc__p_unsigned_int[] = { {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}};
3554 static swig_cast_info _swigc__p_unsigned_long[] = { {&_swigt__p_unsigned_long, 0, 0, 0},{0, 0, 0, 0}};
3556 
3559  _swigc__p_int,
3568 };
3569 
3570 
3571 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
3572 
3574 {0, 0, 0, 0.0, 0, 0}};
3575 
3576 #ifdef __cplusplus
3577 }
3578 #endif
3579 /* -----------------------------------------------------------------------------
3580  * Type initialization:
3581  * This problem is tough by the requirement that no dynamic
3582  * memory is used. Also, since swig_type_info structures store pointers to
3583  * swig_cast_info structures and swig_cast_info structures store pointers back
3584  * to swig_type_info structures, we need some lookup code at initialization.
3585  * The idea is that swig generates all the structures that are needed.
3586  * The runtime then collects these partially filled structures.
3587  * The SWIG_InitializeModule function takes these initial arrays out of
3588  * swig_module, and does all the lookup, filling in the swig_module.types
3589  * array with the correct data and linking the correct swig_cast_info
3590  * structures together.
3591  *
3592  * The generated swig_type_info structures are assigned statically to an initial
3593  * array. We just loop through that array, and handle each type individually.
3594  * First we lookup if this type has been already loaded, and if so, use the
3595  * loaded structure instead of the generated one. Then we have to fill in the
3596  * cast linked list. The cast data is initially stored in something like a
3597  * two-dimensional array. Each row corresponds to a type (there are the same
3598  * number of rows as there are in the swig_type_initial array). Each entry in
3599  * a column is one of the swig_cast_info structures for that type.
3600  * The cast_initial array is actually an array of arrays, because each row has
3601  * a variable number of columns. So to actually build the cast linked list,
3602  * we find the array of casts associated with the type, and loop through it
3603  * adding the casts to the list. The one last trick we need to do is making
3604  * sure the type pointer in the swig_cast_info struct is correct.
3605  *
3606  * First off, we lookup the cast->type name to see if it is already loaded.
3607  * There are three cases to handle:
3608  * 1) If the cast->type has already been loaded AND the type we are adding
3609  * casting info to has not been loaded (it is in this module), THEN we
3610  * replace the cast->type pointer with the type pointer that has already
3611  * been loaded.
3612  * 2) If BOTH types (the one we are adding casting info to, and the
3613  * cast->type) are loaded, THEN the cast info has already been loaded by
3614  * the previous module so we just ignore it.
3615  * 3) Finally, if cast->type has not already been loaded, then we add that
3616  * swig_cast_info to the linked list (because the cast->type) pointer will
3617  * be correct.
3618  * ----------------------------------------------------------------------------- */
3619 
3620 #ifdef __cplusplus
3621 extern "C" {
3622 #if 0
3623 } /* c-mode */
3624 #endif
3625 #endif
3626 
3627 #if 0
3628 #define SWIGRUNTIME_DEBUG
3629 #endif
3630 
3631 
3632 SWIGRUNTIME void
3633 SWIG_InitializeModule(void *clientdata) {
3634  size_t i;
3635  swig_module_info *module_head, *iter;
3636  int init;
3637 
3638  /* check to see if the circular list has been setup, if not, set it up */
3639  if (swig_module.next==0) {
3640  /* Initialize the swig_module */
3644  init = 1;
3645  } else {
3646  init = 0;
3647  }
3648 
3649  /* Try and load any already created modules */
3650  module_head = SWIG_GetModule(clientdata);
3651  if (!module_head) {
3652  /* This is the first module loaded for this interpreter */
3653  /* so set the swig module into the interpreter */
3654  SWIG_SetModule(clientdata, &swig_module);
3655  } else {
3656  /* the interpreter has loaded a SWIG module, but has it loaded this one? */
3657  iter=module_head;
3658  do {
3659  if (iter==&swig_module) {
3660  /* Our module is already in the list, so there's nothing more to do. */
3661  return;
3662  }
3663  iter=iter->next;
3664  } while (iter!= module_head);
3665 
3666  /* otherwise we must add our module into the list */
3667  swig_module.next = module_head->next;
3668  module_head->next = &swig_module;
3669  }
3670 
3671  /* When multiple interpreters are used, a module could have already been initialized in
3672  a different interpreter, but not yet have a pointer in this interpreter.
3673  In this case, we do not want to continue adding types... everything should be
3674  set up already */
3675  if (init == 0) return;
3676 
3677  /* Now work on filling in swig_module.types */
3678 #ifdef SWIGRUNTIME_DEBUG
3679  printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
3680 #endif
3681  for (i = 0; i < swig_module.size; ++i) {
3682  swig_type_info *type = 0;
3683  swig_type_info *ret;
3684  swig_cast_info *cast;
3685 
3686 #ifdef SWIGRUNTIME_DEBUG
3687  printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
3688 #endif
3689 
3690  /* if there is another module already loaded */
3691  if (swig_module.next != &swig_module) {
3693  }
3694  if (type) {
3695  /* Overwrite clientdata field */
3696 #ifdef SWIGRUNTIME_DEBUG
3697  printf("SWIG_InitializeModule: found type %s\n", type->name);
3698 #endif
3701 #ifdef SWIGRUNTIME_DEBUG
3702  printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
3703 #endif
3704  }
3705  } else {
3706  type = swig_module.type_initial[i];
3707  }
3708 
3709  /* Insert casting types */
3710  cast = swig_module.cast_initial[i];
3711  while (cast->type) {
3712  /* Don't need to add information already in the list */
3713  ret = 0;
3714 #ifdef SWIGRUNTIME_DEBUG
3715  printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
3716 #endif
3717  if (swig_module.next != &swig_module) {
3719 #ifdef SWIGRUNTIME_DEBUG
3720  if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
3721 #endif
3722  }
3723  if (ret) {
3724  if (type == swig_module.type_initial[i]) {
3725 #ifdef SWIGRUNTIME_DEBUG
3726  printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
3727 #endif
3728  cast->type = ret;
3729  ret = 0;
3730  } else {
3731  /* Check for casting already in the list */
3732  swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
3733 #ifdef SWIGRUNTIME_DEBUG
3734  if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
3735 #endif
3736  if (!ocast) ret = 0;
3737  }
3738  }
3739 
3740  if (!ret) {
3741 #ifdef SWIGRUNTIME_DEBUG
3742  printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
3743 #endif
3744  if (type->cast) {
3745  type->cast->prev = cast;
3746  cast->next = type->cast;
3747  }
3748  type->cast = cast;
3749  }
3750  cast++;
3751  }
3752  /* Set entry in modules->types array equal to the type */
3753  swig_module.types[i] = type;
3754  }
3755  swig_module.types[i] = 0;
3756 
3757 #ifdef SWIGRUNTIME_DEBUG
3758  printf("**** SWIG_InitializeModule: Cast List ******\n");
3759  for (i = 0; i < swig_module.size; ++i) {
3760  int j = 0;
3762  printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
3763  while (cast->type) {
3764  printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
3765  cast++;
3766  ++j;
3767  }
3768  printf("---- Total casts: %d\n",j);
3769  }
3770  printf("**** SWIG_InitializeModule: Cast List ******\n");
3771 #endif
3772 }
3773 
3774 /* This function will propagate the clientdata field of type to
3775 * any new swig_type_info structures that have been added into the list
3776 * of equivalent types. It is like calling
3777 * SWIG_TypeClientData(type, clientdata) a second time.
3778 */
3779 SWIGRUNTIME void
3781  size_t i;
3782  swig_cast_info *equiv;
3783  static int init_run = 0;
3784 
3785  if (init_run) return;
3786  init_run = 1;
3787 
3788  for (i = 0; i < swig_module.size; i++) {
3789  if (swig_module.types[i]->clientdata) {
3790  equiv = swig_module.types[i]->cast;
3791  while (equiv) {
3792  if (!equiv->converter) {
3793  if (equiv->type && !equiv->type->clientdata)
3795  }
3796  equiv = equiv->next;
3797  }
3798  }
3799  }
3800 }
3801 
3802 #ifdef __cplusplus
3803 #if 0
3804 {
3805  /* c-mode */
3806 #endif
3807 }
3808 #endif
3809 
3810 
3811 
3812 #ifdef __cplusplus
3813 extern "C" {
3814 #endif
3815 
3816  /* Python-specific SWIG API */
3817 #define SWIG_newvarlink() SWIG_Python_newvarlink()
3818 #define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr)
3819 #define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants)
3820 
3821  /* -----------------------------------------------------------------------------
3822  * global variable support code.
3823  * ----------------------------------------------------------------------------- */
3824 
3825  typedef struct swig_globalvar {
3826  char *name; /* Name of global variable */
3827  PyObject *(*get_attr)(void); /* Return the current value */
3828  int (*set_attr)(PyObject *); /* Set the value */
3831 
3832  typedef struct swig_varlinkobject {
3833  PyObject_HEAD
3836 
3837  SWIGINTERN PyObject *
3839 #if PY_VERSION_HEX >= 0x03000000
3840  return PyUnicode_InternFromString("<Swig global variables>");
3841 #else
3842  return PyString_FromString("<Swig global variables>");
3843 #endif
3844  }
3845 
3846  SWIGINTERN PyObject *
3848 #if PY_VERSION_HEX >= 0x03000000
3849  PyObject *str = PyUnicode_InternFromString("(");
3850  PyObject *tail;
3851  PyObject *joined;
3853  for (var = v->vars; var; var=var->next) {
3854  tail = PyUnicode_FromString(var->name);
3855  joined = PyUnicode_Concat(str, tail);
3856  Py_DecRef(str);
3857  Py_DecRef(tail);
3858  str = joined;
3859  if (var->next) {
3860  tail = PyUnicode_InternFromString(", ");
3861  joined = PyUnicode_Concat(str, tail);
3862  Py_DecRef(str);
3863  Py_DecRef(tail);
3864  str = joined;
3865  }
3866  }
3867  tail = PyUnicode_InternFromString(")");
3868  joined = PyUnicode_Concat(str, tail);
3869  Py_DecRef(str);
3870  Py_DecRef(tail);
3871  str = joined;
3872 #else
3873  PyObject *str = PyString_FromString("(");
3875  for (var = v->vars; var; var=var->next) {
3876  PyString_ConcatAndDel(&str,PyString_FromString(var->name));
3877  if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
3878  }
3879  PyString_ConcatAndDel(&str,PyString_FromString(")"));
3880 #endif
3881  return str;
3882  }
3883 
3884  SWIGINTERN void
3886  swig_globalvar *var = v->vars;
3887  while (var) {
3888  swig_globalvar *n = var->next;
3889  free(var->name);
3890  free(var);
3891  var = n;
3892  }
3893  }
3894 
3895  SWIGINTERN PyObject *
3897  PyObject *res = NULL;
3898  swig_globalvar *var = v->vars;
3899  while (var) {
3900  if (strcmp(var->name,n) == 0) {
3901  res = (*var->get_attr)();
3902  break;
3903  }
3904  var = var->next;
3905  }
3906  if (res == NULL && !PyErr_Occurred()) {
3907  PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n);
3908  }
3909  return res;
3910  }
3911 
3912  SWIGINTERN int
3913  swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
3914  int res = 1;
3915  swig_globalvar *var = v->vars;
3916  while (var) {
3917  if (strcmp(var->name,n) == 0) {
3918  res = (*var->set_attr)(p);
3919  break;
3920  }
3921  var = var->next;
3922  }
3923  if (res == 1 && !PyErr_Occurred()) {
3924  PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n);
3925  }
3926  return res;
3927  }
3928 
3929  SWIGINTERN PyTypeObject*
3931  static char varlink__doc__[] = "Swig var link object";
3932  static PyTypeObject varlink_type;
3933  static int type_init = 0;
3934  if (!type_init) {
3935  const PyTypeObject tmp = {
3936 #if PY_VERSION_HEX >= 0x03000000
3937  PyVarObject_HEAD_INIT(NULL, 0)
3938 #else
3939  PyObject_HEAD_INIT(NULL)
3940  0, /* ob_size */
3941 #endif
3942  "swigvarlink", /* tp_name */
3943  sizeof(swig_varlinkobject), /* tp_basicsize */
3944  0, /* tp_itemsize */
3945  (destructor) swig_varlink_dealloc, /* tp_dealloc */
3946  0, /* tp_print */
3947  (getattrfunc) swig_varlink_getattr, /* tp_getattr */
3948  (setattrfunc) swig_varlink_setattr, /* tp_setattr */
3949  0, /* tp_compare */
3950  (reprfunc) swig_varlink_repr, /* tp_repr */
3951  0, /* tp_as_number */
3952  0, /* tp_as_sequence */
3953  0, /* tp_as_mapping */
3954  0, /* tp_hash */
3955  0, /* tp_call */
3956  (reprfunc) swig_varlink_str, /* tp_str */
3957  0, /* tp_getattro */
3958  0, /* tp_setattro */
3959  0, /* tp_as_buffer */
3960  0, /* tp_flags */
3961  varlink__doc__, /* tp_doc */
3962  0, /* tp_traverse */
3963  0, /* tp_clear */
3964  0, /* tp_richcompare */
3965  0, /* tp_weaklistoffset */
3966  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
3967  0, /* tp_del */
3968  0, /* tp_version_tag */
3969 #if PY_VERSION_HEX >= 0x03040000
3970  0, /* tp_finalize */
3971 #endif
3972 #if PY_VERSION_HEX >= 0x03080000
3973  0, /* tp_vectorcall */
3974 #endif
3975 #if (PY_VERSION_HEX >= 0x03080000) && (PY_VERSION_HEX < 0x03090000)
3976  0, /* tp_print */
3977 #endif
3978 #ifdef COUNT_ALLOCS
3979  0, /* tp_allocs */
3980  0, /* tp_frees */
3981  0, /* tp_maxalloc */
3982  0, /* tp_prev */
3983  0 /* tp_next */
3984 #endif
3985  };
3986  varlink_type = tmp;
3987  type_init = 1;
3988  if (PyType_Ready(&varlink_type) < 0)
3989  return NULL;
3990  }
3991  return &varlink_type;
3992  }
3993 
3994  /* Create a variable linking object for use later */
3995  SWIGINTERN PyObject *
3997  swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type());
3998  if (result) {
3999  result->vars = 0;
4000  }
4001  return ((PyObject*) result);
4002  }
4003 
4004  SWIGINTERN void
4005  SWIG_Python_addvarlink(PyObject *p, const char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
4008  if (gv) {
4009  size_t size = strlen(name)+1;
4010  gv->name = (char *)malloc(size);
4011  if (gv->name) {
4012  memcpy(gv->name, name, size);
4013  gv->get_attr = get_attr;
4014  gv->set_attr = set_attr;
4015  gv->next = v->vars;
4016  }
4017  }
4018  v->vars = gv;
4019  }
4020 
4021  SWIGINTERN PyObject *
4023  static PyObject *globals = 0;
4024  if (!globals) {
4025  globals = SWIG_newvarlink();
4026  }
4027  return globals;
4028  }
4029 
4030  /* -----------------------------------------------------------------------------
4031  * constants/methods manipulation
4032  * ----------------------------------------------------------------------------- */
4033 
4034  /* Install Constants */
4035  SWIGINTERN void
4036  SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
4037  PyObject *obj = 0;
4038  size_t i;
4039  for (i = 0; constants[i].type; ++i) {
4040  switch(constants[i].type) {
4041  case SWIG_PY_POINTER:
4042  obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
4043  break;
4044  case SWIG_PY_BINARY:
4045  obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
4046  break;
4047  default:
4048  obj = 0;
4049  break;
4050  }
4051  if (obj) {
4052  PyDict_SetItemString(d, constants[i].name, obj);
4053  Py_DECREF(obj);
4054  }
4055  }
4056  }
4057 
4058  /* -----------------------------------------------------------------------------*/
4059  /* Fix SwigMethods to carry the callback ptrs when needed */
4060  /* -----------------------------------------------------------------------------*/
4061 
4062  SWIGINTERN void
4063  SWIG_Python_FixMethods(PyMethodDef *methods,
4064  swig_const_info *const_table,
4065  swig_type_info **types,
4066  swig_type_info **types_initial) {
4067  size_t i;
4068  for (i = 0; methods[i].ml_name; ++i) {
4069  const char *c = methods[i].ml_doc;
4070  if (!c) continue;
4071  c = strstr(c, "swig_ptr: ");
4072  if (c) {
4073  int j;
4074  swig_const_info *ci = 0;
4075  const char *name = c + 10;
4076  for (j = 0; const_table[j].type; ++j) {
4077  if (strncmp(const_table[j].name, name,
4078  strlen(const_table[j].name)) == 0) {
4079  ci = &(const_table[j]);
4080  break;
4081  }
4082  }
4083  if (ci) {
4084  void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
4085  if (ptr) {
4086  size_t shift = (ci->ptype) - types;
4087  swig_type_info *ty = types_initial[shift];
4088  size_t ldoc = (c - methods[i].ml_doc);
4089  size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
4090  char *ndoc = (char*)malloc(ldoc + lptr + 10);
4091  if (ndoc) {
4092  char *buff = ndoc;
4093  memcpy(buff, methods[i].ml_doc, ldoc);
4094  buff += ldoc;
4095  memcpy(buff, "swig_ptr: ", 10);
4096  buff += 10;
4097  SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
4098  methods[i].ml_doc = ndoc;
4099  }
4100  }
4101  }
4102  }
4103  }
4104  }
4105 
4106  /* -----------------------------------------------------------------------------
4107  * Method creation and docstring support functions
4108  * ----------------------------------------------------------------------------- */
4109 
4110  /* -----------------------------------------------------------------------------
4111  * Function to find the method definition with the correct docstring for the
4112  * proxy module as opposed to the low-level API
4113  * ----------------------------------------------------------------------------- */
4114 
4115  SWIGINTERN PyMethodDef *SWIG_PythonGetProxyDoc(const char *name) {
4116  /* Find the function in the modified method table */
4117  size_t offset = 0;
4118  int found = 0;
4119  while (SwigMethods_proxydocs[offset].ml_meth != NULL) {
4120  if (strcmp(SwigMethods_proxydocs[offset].ml_name, name) == 0) {
4121  found = 1;
4122  break;
4123  }
4124  offset++;
4125  }
4126  /* Use the copy with the modified docstring if available */
4127  return found ? &SwigMethods_proxydocs[offset] : NULL;
4128  }
4129 
4130  /* -----------------------------------------------------------------------------
4131  * Wrapper of PyInstanceMethod_New() used in Python 3
4132  * It is exported to the generated module, used for -fastproxy
4133  * ----------------------------------------------------------------------------- */
4134 
4135  SWIGINTERN PyObject *SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) {
4136  if (PyCFunction_Check(func)) {
4137  PyCFunctionObject *funcobj = (PyCFunctionObject *)func;
4138  PyMethodDef *ml = SWIG_PythonGetProxyDoc(funcobj->m_ml->ml_name);
4139  if (ml)
4140  func = PyCFunction_NewEx(ml, funcobj->m_self, funcobj->m_module);
4141  }
4142 #if PY_VERSION_HEX >= 0x03000000
4143  return PyInstanceMethod_New(func);
4144 #else
4145  return PyMethod_New(func, NULL, NULL);
4146 #endif
4147  }
4148 
4149  /* -----------------------------------------------------------------------------
4150  * Wrapper of PyStaticMethod_New()
4151  * It is exported to the generated module, used for -fastproxy
4152  * ----------------------------------------------------------------------------- */
4153 
4154  SWIGINTERN PyObject *SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) {
4155  if (PyCFunction_Check(func)) {
4156  PyCFunctionObject *funcobj = (PyCFunctionObject *)func;
4157  PyMethodDef *ml = SWIG_PythonGetProxyDoc(funcobj->m_ml->ml_name);
4158  if (ml)
4159  func = PyCFunction_NewEx(ml, funcobj->m_self, funcobj->m_module);
4160  }
4161  return PyStaticMethod_New(func);
4162  }
4163 
4164 #ifdef __cplusplus
4165 }
4166 #endif
4167 
4168 /* -----------------------------------------------------------------------------*
4169  * Partial Init method
4170  * -----------------------------------------------------------------------------*/
4171 
4172 #ifdef __cplusplus
4173 extern "C"
4174 #endif
4175 
4176 SWIGEXPORT
4177 #if PY_VERSION_HEX >= 0x03000000
4178 PyObject*
4179 #else
4180 void
4181 #endif
4182 SWIG_init(void) {
4183  PyObject *m, *d, *md, *globals;
4184 
4185 #if PY_VERSION_HEX >= 0x03000000
4186  static struct PyModuleDef SWIG_module = {
4187  PyModuleDef_HEAD_INIT,
4188  SWIG_name,
4189  NULL,
4190  -1,
4191  SwigMethods,
4192  NULL,
4193  NULL,
4194  NULL,
4195  NULL
4196  };
4197 #endif
4198 
4199 #if defined(SWIGPYTHON_BUILTIN)
4200  static SwigPyClientData SwigPyObject_clientdata = {
4201  0, 0, 0, 0, 0, 0, 0
4202  };
4203  static PyGetSetDef this_getset_def = {
4204  (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL
4205  };
4206  static SwigPyGetSet thisown_getset_closure = {
4209  };
4210  static PyGetSetDef thisown_getset_def = {
4211  (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
4212  };
4213  PyTypeObject *builtin_pytype;
4214  int builtin_base_count;
4215  swig_type_info *builtin_basetype;
4216  PyObject *tuple;
4217  PyGetSetDescrObject *static_getset;
4218  PyTypeObject *metatype;
4219  PyTypeObject *swigpyobject;
4220  SwigPyClientData *cd;
4221  PyObject *public_interface, *public_symbol;
4222  PyObject *this_descr;
4223  PyObject *thisown_descr;
4224  PyObject *self = 0;
4225  int i;
4226 
4227  (void)builtin_pytype;
4228  (void)builtin_base_count;
4229  (void)builtin_basetype;
4230  (void)tuple;
4231  (void)static_getset;
4232  (void)self;
4233 
4234  /* Metaclass is used to implement static member variables */
4235  metatype = SwigPyObjectType();
4236  assert(metatype);
4237 #endif
4238 
4239  (void)globals;
4240 
4241  /* Create singletons now to avoid potential deadlocks with multi-threaded usage after module initialization */
4242  SWIG_This();
4245 #ifndef SWIGPYTHON_BUILTIN
4247 #endif
4248 
4249  /* Fix SwigMethods to carry the callback ptrs when needed */
4251 
4252 #if PY_VERSION_HEX >= 0x03000000
4253  m = PyModule_Create(&SWIG_module);
4254 #else
4255  m = Py_InitModule(SWIG_name, SwigMethods);
4256 #endif
4257 
4258  md = d = PyModule_GetDict(m);
4259  (void)md;
4260 
4262 
4263 #ifdef SWIGPYTHON_BUILTIN
4264  swigpyobject = SwigPyObject_TypeOnce();
4265 
4266  SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
4267  assert(SwigPyObject_stype);
4268  cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
4269  if (!cd) {
4270  SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
4271  SwigPyObject_clientdata.pytype = swigpyobject;
4272  } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) {
4273  PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
4274 # if PY_VERSION_HEX >= 0x03000000
4275  return NULL;
4276 # else
4277  return;
4278 # endif
4279  }
4280 
4281  /* All objects have a 'this' attribute */
4282  this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def);
4283  (void)this_descr;
4284 
4285  /* All objects have a 'thisown' attribute */
4286  thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def);
4287  (void)thisown_descr;
4288 
4289  public_interface = PyList_New(0);
4290  public_symbol = 0;
4291  (void)public_symbol;
4292 
4293  PyDict_SetItemString(md, "__all__", public_interface);
4294  Py_DECREF(public_interface);
4295  for (i = 0; SwigMethods[i].ml_name != NULL; ++i)
4296  SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name);
4297  for (i = 0; swig_const_table[i].name != 0; ++i)
4298  SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name);
4299 #endif
4300 
4302 
4303  SWIG_Python_SetConstant(d, "KnapsackSolver_KNAPSACK_BRUTE_FORCE_SOLVER",SWIG_From_int(static_cast< int >(operations_research::KnapsackSolver::KNAPSACK_BRUTE_FORCE_SOLVER)));
4304  SWIG_Python_SetConstant(d, "KnapsackSolver_KNAPSACK_64ITEMS_SOLVER",SWIG_From_int(static_cast< int >(operations_research::KnapsackSolver::KNAPSACK_64ITEMS_SOLVER)));
4305  SWIG_Python_SetConstant(d, "KnapsackSolver_KNAPSACK_DYNAMIC_PROGRAMMING_SOLVER",SWIG_From_int(static_cast< int >(operations_research::KnapsackSolver::KNAPSACK_DYNAMIC_PROGRAMMING_SOLVER)));
4306  SWIG_Python_SetConstant(d, "KnapsackSolver_KNAPSACK_MULTIDIMENSION_CBC_MIP_SOLVER",SWIG_From_int(static_cast< int >(operations_research::KnapsackSolver::KNAPSACK_MULTIDIMENSION_CBC_MIP_SOLVER)));
4307  SWIG_Python_SetConstant(d, "KnapsackSolver_KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER",SWIG_From_int(static_cast< int >(operations_research::KnapsackSolver::KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER)));
4308  SWIG_Python_SetConstant(d, "KnapsackSolver_KNAPSACK_MULTIDIMENSION_SCIP_MIP_SOLVER",SWIG_From_int(static_cast< int >(operations_research::KnapsackSolver::KNAPSACK_MULTIDIMENSION_SCIP_MIP_SOLVER)));
4309 #if PY_VERSION_HEX >= 0x03000000
4310  return m;
4311 #else
4312  return;
4313 #endif
4314 }
4315 
int64 min
Definition: alldiff_cst.cc:138
int64 max
Definition: alldiff_cst.cc:139
This library solves knapsack problems.
int64 Solve()
Solves the problem and returns the profit of the optimal solution.
SolverType
Enum controlling which underlying algorithm is used.
@ KNAPSACK_MULTIDIMENSION_SCIP_MIP_SOLVER
SCIP based solver.
@ KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER
Generic Solver.
@ KNAPSACK_DYNAMIC_PROGRAMMING_SOLVER
Dynamic Programming approach for single dimension problems.
@ KNAPSACK_64ITEMS_SOLVER
Optimized method for single dimension small problems.
@ KNAPSACK_BRUTE_FORCE_SOLVER
Brute force method.
@ KNAPSACK_MULTIDIMENSION_CBC_MIP_SOLVER
CBC Based Solver.
SwigPtr_PyObject(PyObject *obj, bool initial_ref=true)
SwigPtr_PyObject & operator=(const SwigPtr_PyObject &item)
SwigPtr_PyObject(const SwigPtr_PyObject &item)
Block * next
const std::string name
int64 value
IntVar * var
Definition: expr_array.cc:1858
int64_t int64
SWIGRUNTIME swig_type_info * SWIG_Python_TypeQuery(const char *type)
#define SWIG_Error(code, msg)
SWIGRUNTIME char * SWIG_PackData(char *c, void *ptr, size_t sz)
SWIGRUNTIME int SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty)
static swig_cast_info * swig_cast_initial[]
SWIGINTERN PyObject * SWIG_Python_str_FromChar(const char *c)
#define SWIG_MangledTypeQuery(name)
SWIGINTERN PyObject * _wrap_KnapsackSolver_Solve(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
SWIGRUNTIME char * SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz)
static PyObject * Swig_This_global
SWIGRUNTIME int SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w)
SWIGINTERN int SWIG_AsVal_double(PyObject *obj, double *val)
SWIGINTERN PyObject * swig_varlink_str(swig_varlinkobject *v)
SWIGRUNTIMEINLINE PyObject * SWIG_Python_ExceptionType(swig_type_info *desc)
SWIGINTERN Py_ssize_t SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs)
#define SWIG_TypeQuery(name)
#define SWIG_POINTER_OWN
#define SWIGTYPE_p_operations_research__KnapsackSolver
#define SWIG_SyntaxError
#define SWIG_POINTER_NEW
#define SWIG_CheckState(r)
static swig_cast_info _swigc__p_int[]
SWIGRUNTIME int SWIG_TypeEquiv(const char *nb, const char *tb)
SWIGINTERN PyObject * swig_varlink_getattr(swig_varlinkobject *v, char *n)
#define SWIG_BUFFER_SIZE
#define SWIG_TypeError
SWIGRUNTIME int SWIG_Python_AddErrMesg(const char *mesg, int infront)
SWIGINTERN void SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[])
#define SWIG_POINTER_IMPLICIT_CONV
#define SWIG_PY_POINTER
struct swig_cast_info swig_cast_info
SWIGINTERN int swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p)
static swig_type_info * swig_types[11]
SWIGRUNTIME int SWIG_TypeNameComp(const char *f1, const char *l1, const char *f2, const char *l2)
SWIGINTERN PyObject * KnapsackSolver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
#define SWIG_Python_ConvertPtr(obj, pptr, type, flags)
SWIGRUNTIME void SwigPyObject_dealloc(PyObject *v)
SWIGRUNTIME PyTypeObject * SwigPyPacked_TypeOnce(void)
#define SWIG_PYTHON_THREAD_END_BLOCK
SWIGRUNTIMEINLINE void * SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory)
static swig_type_info _swigt__p_operations_research__KnapsackSolver
#define SWIG_RuntimeError
struct swig_varlinkobject swig_varlinkobject
#define SWIG_NewClientData(obj)
#define PyObject_DEL
SWIGRUNTIME const char * SWIG_TypePrettyName(const swig_type_info *type)
static swig_type_info _swigt__p_unsigned_char
SWIGINTERNINLINE int SWIG_CanCastAsInteger(double *d, double min, double max)
#define SWIGRUNTIME
SWIGINTERN PyObject * SwigPyObject_disown(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
#define SWIG_PY_BINARY
#define SWIG_RUNTIME_VERSION
#define SWIG_POINTER_NOSHADOW
SWIGINTERN PyObject * SwigPyObject_own(PyObject *v, PyObject *args)
#define SWIG_OLDOBJ
SWIGRUNTIME void SWIG_TypeClientData(swig_type_info *ti, void *clientdata)
static swig_type_info _swigt__p_short
#define SWIG_ValueError
SWIGINTERN void SWIG_Python_addvarlink(PyObject *p, const char *name, PyObject *(*get_attr)(void), int(*set_attr)(PyObject *p))
SWIGINTERN PyObject * SWIG_Python_newvarlink(void)
static PyMethodDef swigobject_methods[]
#define SWIG_AddCast(r)
#define SWIG_IsNewObj(r)
SWIGRUNTIME PyObject * SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty)
SWIGRUNTIME PyObject * SWIG_Python_ErrorType(int code)
#define SWIG_InternalNewPointerObj(ptr, type, flags)
SWIGRUNTIMEINLINE PyObject * SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type)
#define SWIG_exception_fail(code, msg)
SWIGINTERNINLINE PyObject * SWIG_From_bool(bool value)
SWIGRUNTIME PyObject * SwigPyObject_next(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
SWIGRUNTIME swig_type_info * SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name)
SWIGINTERN PyObject * SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func)
#define SWIG_AttributeError
SWIGRUNTIMEINLINE const char * SwigPyObject_GetDesc(PyObject *self)
static swig_module_info swig_module
static swig_cast_info _swigc__p_unsigned_char[]
SWIGINTERN PyObject * _wrap_delete_KnapsackSolver(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
static swig_cast_info _swigc__p_short[]
#define SWIG_From_long
SWIGRUNTIME PyObject * SwigPyObject_hex(SwigPyObject *v)
SWIGINTERN PyObject * SwigPyObject_acquire(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
SWIGRUNTIME int SWIG_Python_TypeErrorOccurred(PyObject *obj)
SWIGRUNTIME void SWIG_Python_DestroyModule(PyObject *obj)
#define SWIG_SetModule(clientdata, pointer)
SWIGRUNTIMEINLINE const char * SWIG_TypeName(const swig_type_info *ty)
SWIGINTERN PyTypeObject * swig_varlink_type(void)
SWIGRUNTIMEINLINE PyObject * SWIG_Py_Void(void)
#define SWIGUNUSEDPARM(p)
SWIGRUNTIME PyObject * SWIG_This(void)
SWIGRUNTIME PyObject * SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags)
SWIGRUNTIME PyObject * SwigPyObject_format(const char *fmt, SwigPyObject *v)
#define SWIG_as_voidptr(a)
static swig_const_info swig_const_table[]
SWIGRUNTIMEINLINE int SwigPyPacked_Check(PyObject *op)
SWIGRUNTIME PyTypeObject * SwigPyObject_type(void)
SWIGRUNTIME PyObject * SwigPyPacked_repr(SwigPyPacked *v)
#define SWIG_Python_CallFunctor(functor, obj)
SWIGRUNTIME void SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata)
static swig_type_info _swigt__p_unsigned_short
SWIGRUNTIME int SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w)
#define SWIG_ConvertPtr(obj, pptr, type, flags)
SWIGINTERNINLINE PyObject * SWIG_From_int(int value)
SWIGRUNTIME int SWIG_TypeCmp(const char *nb, const char *tb)
SWIGRUNTIME PyObject * SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this)
struct swig_const_info swig_const_info
SWIGINTERN int SWIG_Python_CheckNoKeywords(PyObject *kwargs, const char *name)
SWIGINTERN PyObject * SWIG_Python_InitShadowInstance(PyObject *args)
SWIGRUNTIME PyObject * SwigPyPacked_str(SwigPyPacked *v)
SWIGRUNTIME void SWIG_InitializeModule(void *clientdata)
SWIGRUNTIME const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz)
#define SWIG_newvarlink()
SWIGRUNTIME void SWIG_Python_RaiseOrModifyTypeError(const char *message)
static swig_type_info _swigt__p_unsigned_long
#define SWIG_Python_str_DelForPy3(x)
static swig_cast_info _swigc__p_char[]
SWIGINTERN PyObject * _wrap_new_KnapsackSolver__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj)
SWIGRUNTIME swig_cast_info * SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty)
SWIGINTERN PyObject * SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func)
#define SWIGINTERN
SWIGINTERN PyObject * _wrap_KnapsackSolver_set_use_reduction(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
SWIGINTERN PyObject * swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v))
SWIGRUNTIME SwigPyObject * SWIG_Python_GetSwigThis(PyObject *pyobj)
SWIGRUNTIMEINLINE int SwigPyObject_Check(PyObject *op)
SWIGRUNTIME SwigPyClientData * SwigPyClientData_New(PyObject *obj)
SWIGINTERN void SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj)
SWIGINTERN char * SWIG_Python_str_AsChar(PyObject *str)
static swig_cast_info _swigc__p_unsigned_short[]
struct swig_globalvar swig_globalvar
#define SWIGPY_CAPSULE_NAME
#define SWIG_ArgError(r)
SWIGRUNTIME void SWIG_Python_AddErrorMsg(const char *mesg)
#define SWIG_NewPointerObj(ptr, type, flags)
SWIGRUNTIME void SWIG_Python_SetModule(swig_module_info *swig_module)
SWIGRUNTIME const char * SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name)
SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj)
void *(* swig_converter_func)(void *, int *)
#define SWIG_POINTER_NO_NULL
#define SWIG_Python_str_FromFormat
SWIGINTERN PyObject * _wrap_new_KnapsackSolver__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj)
#define SWIG_InstallConstants(d, constants)
#define SWIG_IOError
static PyMethodDef SwigMethods[]
SWIGINTERN PyObject * KnapsackSolver_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
#define SWIG_NullReferenceError
#define SWIG_POINTER_DISOWN
#define SWIG_STATIC_POINTER(var)
struct swig_type_info swig_type_info
SWIGRUNTIME void * SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags)
SWIGRUNTIME int SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty)
SWIGINTERN void SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg)
#define SWIG_NEWOBJ
static swig_type_info _swigt__p_signed_char
SWIGINTERN int SWIG_AsPtr_std_string(PyObject *obj, std::string **val)
SWIGRUNTIME int SWIG_Python_ArgFail(int argnum)
SWIGINTERN PyObject * SWIG_globals(void)
SWIGRUNTIME int SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own)
#define SWIG_NewPackedObj(ptr, sz, type)
SWIGRUNTIME PyObject * SwigPyObject_repr(SwigPyObject *v)
#define SWIG_GetModule(clientdata)
static swig_cast_info _swigc__p_unsigned_int[]
static swig_type_info _swigt__p_int
SWIGRUNTIME void SWIG_PropagateClientData(void)
static swig_cast_info _swigc__p_unsigned_long[]
SWIGRUNTIME PyObject * SwigPyObject_long(SwigPyObject *v)
SWIGINTERN PyObject * _wrap_new_KnapsackSolver(PyObject *self, PyObject *args)
SWIGRUNTIME swig_cast_info * SWIG_TypeCheck(const char *c, swig_type_info *ty)
SWIGRUNTIME PyObject * SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
SWIGRUNTIME int SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this)
SWIGINTERN PyObject * _wrap_KnapsackSolver_set_time_limit(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
static swig_type_info _swigt__p_long
SWIGRUNTIME PyObject * SwigPyObject_oct(SwigPyObject *v)
static PyMethodDef SwigMethods_proxydocs[]
SWIGRUNTIME PyTypeObject * SwigPyPacked_type(void)
SWIGRUNTIME void SWIG_Python_TypeError(const char *type, PyObject *obj)
SWIGINTERN int SWIG_AsVal_int(PyObject *obj, int *val)
#define SWIG_TYPE_TABLE_NAME
SWIGRUNTIME swig_type_info * SWIG_MangledTypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name)
#define SWIG_BUILTIN_TP_INIT
static swig_type_info _swigt__p_unsigned_int
#define SWIG_CAST_NEW_MEMORY
SWIGRUNTIME swig_module_info * SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata))
SWIGINTERN int SWIG_AsVal_long(PyObject *obj, long *val)
struct swig_module_info swig_module_info
#define SWIG_ERROR
SWIGINTERN int SWIG_AsVal_bool(PyObject *obj, bool *val)
SWIGRUNTIME void SwigPyClientData_Del(SwigPyClientData *data)
SWIGRUNTIME PyObject * SwigPyObject_append(PyObject *v, PyObject *next)
SWIGINTERN void swig_varlink_dealloc(swig_varlinkobject *v)
SWIGINTERN PyObject * _wrap_KnapsackSolver_BestSolutionContains(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
static swig_cast_info _swigc__p_long[]
static swig_type_info * swig_type_initial[]
SWIGRUNTIME swig_type_info * SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
SWIGRUNTIME void SwigPyPacked_dealloc(PyObject *v)
SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own)
SWIGRUNTIMEINLINE int SWIG_Python_CheckImplicit(swig_type_info *ty)
SWIGRUNTIME swig_type_info * SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr)
SWIGINTERN void SWIG_Python_FixMethods(PyMethodDef *methods, swig_const_info *const_table, swig_type_info **types, swig_type_info **types_initial)
#define SWIG_MemoryError
SWIGRUNTIME const char * SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name)
#define SWIG_SystemError
#define SWIG_DivisionByZero
static swig_type_info _swigt__p_char
SWIGINTERN swig_type_info * SWIG_pchar_descriptor(void)
SWIGINTERN PyObject * _wrap_KnapsackSolver_Init(PyObject *SWIGUNUSEDPARM(self), PyObject *args)
SWIGRUNTIME PyObject * SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op)
#define SWIG_OverflowError
#define SWIGEXPORT
SWIGRUNTIME PyTypeObject * SwigPyObject_TypeOnce(void)
#define SWIG_IsOK(r)
SWIGINTERN int SWIG_AsCharPtrAndSize(PyObject *obj, char **cptr, size_t *psize, int *alloc)
struct swig_type_info *(* swig_dycast_func)(void **)
#define SWIG_IndexError
SWIGRUNTIME PyObject * SWIG_Python_TypeCache(void)
#define SWIG_AddNewMask(r)
SWIGRUNTIME char * SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz)
SWIGINTERN PyMethodDef * SWIG_PythonGetProxyDoc(const char *name)
static swig_cast_info _swigc__p_operations_research__KnapsackSolver[]
#define SWIG_PYTHON_THREAD_BEGIN_BLOCK
#define SWIGINTERNINLINE
static swig_cast_info _swigc__p_signed_char[]
#define Py_TYPE(op)
SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own)
SWIGINTERN PyObject * SWIG_Python_AppendOutput(PyObject *result, PyObject *obj)
#define SWIGRUNTIMEINLINE
PyObject * from(const Type &val)
void * malloc(YYSIZE_T)
void free(void *)
if(!yyg->yy_init)
Definition: parser.yy.cc:965
int64 tail
PyObject_HEAD void * ptr
PyObject_HEAD void * pack
SwigVar_PyObject & operator=(PyObject *obj)
struct swig_cast_info * prev
struct swig_cast_info * next
swig_converter_func converter
struct swig_globalvar * next
PyObject *(* get_attr)(void)
struct swig_module_info * next
struct swig_cast_info * cast
PyObject_HEAD swig_globalvar * vars
std::string message
Definition: trace.cc:395