1 /* ----------------------------------------------------------------------------
2 * This file was automatically generated by SWIG (http://www.swig.org).
3 * Version 3.0.12
4 *
5 * This file is not intended to be easily readable and contains a number of
6 * coding conventions designed to improve portability and efficiency. Do not make
7 * changes to this file unless you know what you are doing--modify the SWIG
8 * interface file instead.
9 * ----------------------------------------------------------------------------- */
10
11
12 #ifndef SWIGPERL
13 #define SWIGPERL
14 #endif
15
16 #define SWIG_CASTRANK_MODE
17
18
19 #ifdef __cplusplus
20 /* SwigValueWrapper is described in swig.swg */
21 template<typename T> class SwigValueWrapper {
22 struct SwigMovePointer {
23 T *ptr;
SwigMovePointerSwigValueWrapper::SwigMovePointer24 SwigMovePointer(T *p) : ptr(p) { }
~SwigMovePointerSwigValueWrapper::SwigMovePointer25 ~SwigMovePointer() { delete ptr; }
operator =SwigValueWrapper::SwigMovePointer26 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:
SwigValueWrapper()31 SwigValueWrapper() : pointer(0) { }
operator =(const T & t)32 SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
operator T&() const33 operator T&() const { return *pointer.ptr; }
operator &()34 T *operator&() { return pointer.ptr; }
35 };
36
SwigValueInit()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 * swigrun.swg
168 *
169 * This file contains generic C API SWIG runtime support for pointer
170 * type checking.
171 * ----------------------------------------------------------------------------- */
172
173 /* This should only be incremented when either the layout of swig_type_info changes,
174 or for whatever reason, the runtime changes incompatibly */
175 #define SWIG_RUNTIME_VERSION "4"
176
177 /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
178 #ifdef SWIG_TYPE_TABLE
179 # define SWIG_QUOTE_STRING(x) #x
180 # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
181 # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
182 #else
183 # define SWIG_TYPE_TABLE_NAME
184 #endif
185
186 /*
187 You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
188 creating a static or dynamic library from the SWIG runtime code.
189 In 99.9% of the cases, SWIG just needs to declare them as 'static'.
190
191 But only do this if strictly necessary, ie, if you have problems
192 with your compiler or suchlike.
193 */
194
195 #ifndef SWIGRUNTIME
196 # define SWIGRUNTIME SWIGINTERN
197 #endif
198
199 #ifndef SWIGRUNTIMEINLINE
200 # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
201 #endif
202
203 /* Generic buffer size */
204 #ifndef SWIG_BUFFER_SIZE
205 # define SWIG_BUFFER_SIZE 1024
206 #endif
207
208 /* Flags for pointer conversions */
209 #define SWIG_POINTER_DISOWN 0x1
210 #define SWIG_CAST_NEW_MEMORY 0x2
211
212 /* Flags for new pointer objects */
213 #define SWIG_POINTER_OWN 0x1
214
215
216 /*
217 Flags/methods for returning states.
218
219 The SWIG conversion methods, as ConvertPtr, return an integer
220 that tells if the conversion was successful or not. And if not,
221 an error code can be returned (see swigerrors.swg for the codes).
222
223 Use the following macros/flags to set or process the returning
224 states.
225
226 In old versions of SWIG, code such as the following was usually written:
227
228 if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
229 // success code
230 } else {
231 //fail code
232 }
233
234 Now you can be more explicit:
235
236 int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
237 if (SWIG_IsOK(res)) {
238 // success code
239 } else {
240 // fail code
241 }
242
243 which is the same really, but now you can also do
244
245 Type *ptr;
246 int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
247 if (SWIG_IsOK(res)) {
248 // success code
249 if (SWIG_IsNewObj(res) {
250 ...
251 delete *ptr;
252 } else {
253 ...
254 }
255 } else {
256 // fail code
257 }
258
259 I.e., now SWIG_ConvertPtr can return new objects and you can
260 identify the case and take care of the deallocation. Of course that
261 also requires SWIG_ConvertPtr to return new result values, such as
262
263 int SWIG_ConvertPtr(obj, ptr,...) {
264 if (<obj is ok>) {
265 if (<need new object>) {
266 *ptr = <ptr to new allocated object>;
267 return SWIG_NEWOBJ;
268 } else {
269 *ptr = <ptr to old object>;
270 return SWIG_OLDOBJ;
271 }
272 } else {
273 return SWIG_BADOBJ;
274 }
275 }
276
277 Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
278 more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
279 SWIG errors code.
280
281 Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
282 allows to return the 'cast rank', for example, if you have this
283
284 int food(double)
285 int fooi(int);
286
287 and you call
288
289 food(1) // cast rank '1' (1 -> 1.0)
290 fooi(1) // cast rank '0'
291
292 just use the SWIG_AddCast()/SWIG_CheckState()
293 */
294
295 #define SWIG_OK (0)
296 #define SWIG_ERROR (-1)
297 #define SWIG_IsOK(r) (r >= 0)
298 #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
299
300 /* The CastRankLimit says how many bits are used for the cast rank */
301 #define SWIG_CASTRANKLIMIT (1 << 8)
302 /* The NewMask denotes the object was created (using new/malloc) */
303 #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1)
304 /* The TmpMask is for in/out typemaps that use temporal objects */
305 #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1)
306 /* Simple returning values */
307 #define SWIG_BADOBJ (SWIG_ERROR)
308 #define SWIG_OLDOBJ (SWIG_OK)
309 #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
310 #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
311 /* Check, add and del mask methods */
312 #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
313 #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
314 #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
315 #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
316 #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
317 #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
318
319 /* Cast-Rank Mode */
320 #if defined(SWIG_CASTRANK_MODE)
321 # ifndef SWIG_TypeRank
322 # define SWIG_TypeRank unsigned long
323 # endif
324 # ifndef SWIG_MAXCASTRANK /* Default cast allowed */
325 # define SWIG_MAXCASTRANK (2)
326 # endif
327 # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
328 # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
SWIG_AddCast(int r)329 SWIGINTERNINLINE int SWIG_AddCast(int r) {
330 return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
331 }
SWIG_CheckState(int r)332 SWIGINTERNINLINE int SWIG_CheckState(int r) {
333 return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
334 }
335 #else /* no cast-rank mode */
336 # define SWIG_AddCast(r) (r)
337 # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
338 #endif
339
340
341 #include <string.h>
342
343 #ifdef __cplusplus
344 extern "C" {
345 #endif
346
347 typedef void *(*swig_converter_func)(void *, int *);
348 typedef struct swig_type_info *(*swig_dycast_func)(void **);
349
350 /* Structure to store information on one type */
351 typedef struct swig_type_info {
352 const char *name; /* mangled name of this type */
353 const char *str; /* human readable name of this type */
354 swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
355 struct swig_cast_info *cast; /* linked list of types that can cast into this type */
356 void *clientdata; /* language specific type data */
357 int owndata; /* flag if the structure owns the clientdata */
358 } swig_type_info;
359
360 /* Structure to store a type and conversion function used for casting */
361 typedef struct swig_cast_info {
362 swig_type_info *type; /* pointer to type that is equivalent to this type */
363 swig_converter_func converter; /* function to cast the void pointers */
364 struct swig_cast_info *next; /* pointer to next cast in linked list */
365 struct swig_cast_info *prev; /* pointer to the previous cast */
366 } swig_cast_info;
367
368 /* Structure used to store module information
369 * Each module generates one structure like this, and the runtime collects
370 * all of these structures and stores them in a circularly linked list.*/
371 typedef struct swig_module_info {
372 swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
373 size_t size; /* Number of types in this module */
374 struct swig_module_info *next; /* Pointer to next element in circularly linked list */
375 swig_type_info **type_initial; /* Array of initially generated type structures */
376 swig_cast_info **cast_initial; /* Array of initially generated casting structures */
377 void *clientdata; /* Language specific module data */
378 } swig_module_info;
379
380 /*
381 Compare two type names skipping the space characters, therefore
382 "char*" == "char *" and "Class<int>" == "Class<int >", etc.
383
384 Return 0 when the two name types are equivalent, as in
385 strncmp, but skipping ' '.
386 */
387 SWIGRUNTIME int
SWIG_TypeNameComp(const char * f1,const char * l1,const char * f2,const char * l2)388 SWIG_TypeNameComp(const char *f1, const char *l1,
389 const char *f2, const char *l2) {
390 for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
391 while ((*f1 == ' ') && (f1 != l1)) ++f1;
392 while ((*f2 == ' ') && (f2 != l2)) ++f2;
393 if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
394 }
395 return (int)((l1 - f1) - (l2 - f2));
396 }
397
398 /*
399 Check type equivalence in a name list like <name1>|<name2>|...
400 Return 0 if equal, -1 if nb < tb, 1 if nb > tb
401 */
402 SWIGRUNTIME int
SWIG_TypeCmp(const char * nb,const char * tb)403 SWIG_TypeCmp(const char *nb, const char *tb) {
404 int equiv = 1;
405 const char* te = tb + strlen(tb);
406 const char* ne = nb;
407 while (equiv != 0 && *ne) {
408 for (nb = ne; *ne; ++ne) {
409 if (*ne == '|') break;
410 }
411 equiv = SWIG_TypeNameComp(nb, ne, tb, te);
412 if (*ne) ++ne;
413 }
414 return equiv;
415 }
416
417 /*
418 Check type equivalence in a name list like <name1>|<name2>|...
419 Return 0 if not equal, 1 if equal
420 */
421 SWIGRUNTIME int
SWIG_TypeEquiv(const char * nb,const char * tb)422 SWIG_TypeEquiv(const char *nb, const char *tb) {
423 return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
424 }
425
426 /*
427 Check the typename
428 */
429 SWIGRUNTIME swig_cast_info *
SWIG_TypeCheck(const char * c,swig_type_info * ty)430 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
431 if (ty) {
432 swig_cast_info *iter = ty->cast;
433 while (iter) {
434 if (strcmp(iter->type->name, c) == 0) {
435 if (iter == ty->cast)
436 return iter;
437 /* Move iter to the top of the linked list */
438 iter->prev->next = iter->next;
439 if (iter->next)
440 iter->next->prev = iter->prev;
441 iter->next = ty->cast;
442 iter->prev = 0;
443 if (ty->cast) ty->cast->prev = iter;
444 ty->cast = iter;
445 return iter;
446 }
447 iter = iter->next;
448 }
449 }
450 return 0;
451 }
452
453 /*
454 Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
455 */
456 SWIGRUNTIME swig_cast_info *
SWIG_TypeCheckStruct(swig_type_info * from,swig_type_info * ty)457 SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
458 if (ty) {
459 swig_cast_info *iter = ty->cast;
460 while (iter) {
461 if (iter->type == from) {
462 if (iter == ty->cast)
463 return iter;
464 /* Move iter to the top of the linked list */
465 iter->prev->next = iter->next;
466 if (iter->next)
467 iter->next->prev = iter->prev;
468 iter->next = ty->cast;
469 iter->prev = 0;
470 if (ty->cast) ty->cast->prev = iter;
471 ty->cast = iter;
472 return iter;
473 }
474 iter = iter->next;
475 }
476 }
477 return 0;
478 }
479
480 /*
481 Cast a pointer up an inheritance hierarchy
482 */
483 SWIGRUNTIMEINLINE void *
SWIG_TypeCast(swig_cast_info * ty,void * ptr,int * newmemory)484 SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
485 return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
486 }
487
488 /*
489 Dynamic pointer casting. Down an inheritance hierarchy
490 */
491 SWIGRUNTIME swig_type_info *
SWIG_TypeDynamicCast(swig_type_info * ty,void ** ptr)492 SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
493 swig_type_info *lastty = ty;
494 if (!ty || !ty->dcast) return ty;
495 while (ty && (ty->dcast)) {
496 ty = (*ty->dcast)(ptr);
497 if (ty) lastty = ty;
498 }
499 return lastty;
500 }
501
502 /*
503 Return the name associated with this type
504 */
505 SWIGRUNTIMEINLINE const char *
SWIG_TypeName(const swig_type_info * ty)506 SWIG_TypeName(const swig_type_info *ty) {
507 return ty->name;
508 }
509
510 /*
511 Return the pretty name associated with this type,
512 that is an unmangled type name in a form presentable to the user.
513 */
514 SWIGRUNTIME const char *
SWIG_TypePrettyName(const swig_type_info * type)515 SWIG_TypePrettyName(const swig_type_info *type) {
516 /* The "str" field contains the equivalent pretty names of the
517 type, separated by vertical-bar characters. We choose
518 to print the last name, as it is often (?) the most
519 specific. */
520 if (!type) return NULL;
521 if (type->str != NULL) {
522 const char *last_name = type->str;
523 const char *s;
524 for (s = type->str; *s; s++)
525 if (*s == '|') last_name = s+1;
526 return last_name;
527 }
528 else
529 return type->name;
530 }
531
532 /*
533 Set the clientdata field for a type
534 */
535 SWIGRUNTIME void
SWIG_TypeClientData(swig_type_info * ti,void * clientdata)536 SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
537 swig_cast_info *cast = ti->cast;
538 /* if (ti->clientdata == clientdata) return; */
539 ti->clientdata = clientdata;
540
541 while (cast) {
542 if (!cast->converter) {
543 swig_type_info *tc = cast->type;
544 if (!tc->clientdata) {
545 SWIG_TypeClientData(tc, clientdata);
546 }
547 }
548 cast = cast->next;
549 }
550 }
551 SWIGRUNTIME void
SWIG_TypeNewClientData(swig_type_info * ti,void * clientdata)552 SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
553 SWIG_TypeClientData(ti, clientdata);
554 ti->owndata = 1;
555 }
556
557 /*
558 Search for a swig_type_info structure only by mangled name
559 Search is a O(log #types)
560
561 We start searching at module start, and finish searching when start == end.
562 Note: if start == end at the beginning of the function, we go all the way around
563 the circular list.
564 */
565 SWIGRUNTIME swig_type_info *
SWIG_MangledTypeQueryModule(swig_module_info * start,swig_module_info * end,const char * name)566 SWIG_MangledTypeQueryModule(swig_module_info *start,
567 swig_module_info *end,
568 const char *name) {
569 swig_module_info *iter = start;
570 do {
571 if (iter->size) {
572 size_t l = 0;
573 size_t r = iter->size - 1;
574 do {
575 /* since l+r >= 0, we can (>> 1) instead (/ 2) */
576 size_t i = (l + r) >> 1;
577 const char *iname = iter->types[i]->name;
578 if (iname) {
579 int compare = strcmp(name, iname);
580 if (compare == 0) {
581 return iter->types[i];
582 } else if (compare < 0) {
583 if (i) {
584 r = i - 1;
585 } else {
586 break;
587 }
588 } else if (compare > 0) {
589 l = i + 1;
590 }
591 } else {
592 break; /* should never happen */
593 }
594 } while (l <= r);
595 }
596 iter = iter->next;
597 } while (iter != end);
598 return 0;
599 }
600
601 /*
602 Search for a swig_type_info structure for either a mangled name or a human readable name.
603 It first searches the mangled names of the types, which is a O(log #types)
604 If a type is not found it then searches the human readable names, which is O(#types).
605
606 We start searching at module start, and finish searching when start == end.
607 Note: if start == end at the beginning of the function, we go all the way around
608 the circular list.
609 */
610 SWIGRUNTIME swig_type_info *
SWIG_TypeQueryModule(swig_module_info * start,swig_module_info * end,const char * name)611 SWIG_TypeQueryModule(swig_module_info *start,
612 swig_module_info *end,
613 const char *name) {
614 /* STEP 1: Search the name field using binary search */
615 swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
616 if (ret) {
617 return ret;
618 } else {
619 /* STEP 2: If the type hasn't been found, do a complete search
620 of the str field (the human readable name) */
621 swig_module_info *iter = start;
622 do {
623 size_t i = 0;
624 for (; i < iter->size; ++i) {
625 if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
626 return iter->types[i];
627 }
628 iter = iter->next;
629 } while (iter != end);
630 }
631
632 /* neither found a match */
633 return 0;
634 }
635
636 /*
637 Pack binary data into a string
638 */
639 SWIGRUNTIME char *
SWIG_PackData(char * c,void * ptr,size_t sz)640 SWIG_PackData(char *c, void *ptr, size_t sz) {
641 static const char hex[17] = "0123456789abcdef";
642 const unsigned char *u = (unsigned char *) ptr;
643 const unsigned char *eu = u + sz;
644 for (; u != eu; ++u) {
645 unsigned char uu = *u;
646 *(c++) = hex[(uu & 0xf0) >> 4];
647 *(c++) = hex[uu & 0xf];
648 }
649 return c;
650 }
651
652 /*
653 Unpack binary data from a string
654 */
655 SWIGRUNTIME const char *
SWIG_UnpackData(const char * c,void * ptr,size_t sz)656 SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
657 unsigned char *u = (unsigned char *) ptr;
658 const unsigned char *eu = u + sz;
659 for (; u != eu; ++u) {
660 char d = *(c++);
661 unsigned char uu;
662 if ((d >= '0') && (d <= '9'))
663 uu = (unsigned char)((d - '0') << 4);
664 else if ((d >= 'a') && (d <= 'f'))
665 uu = (unsigned char)((d - ('a'-10)) << 4);
666 else
667 return (char *) 0;
668 d = *(c++);
669 if ((d >= '0') && (d <= '9'))
670 uu |= (unsigned char)(d - '0');
671 else if ((d >= 'a') && (d <= 'f'))
672 uu |= (unsigned char)(d - ('a'-10));
673 else
674 return (char *) 0;
675 *u = uu;
676 }
677 return c;
678 }
679
680 /*
681 Pack 'void *' into a string buffer.
682 */
683 SWIGRUNTIME char *
SWIG_PackVoidPtr(char * buff,void * ptr,const char * name,size_t bsz)684 SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
685 char *r = buff;
686 if ((2*sizeof(void *) + 2) > bsz) return 0;
687 *(r++) = '_';
688 r = SWIG_PackData(r,&ptr,sizeof(void *));
689 if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
690 strcpy(r,name);
691 return buff;
692 }
693
694 SWIGRUNTIME const char *
SWIG_UnpackVoidPtr(const char * c,void ** ptr,const char * name)695 SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
696 if (*c != '_') {
697 if (strcmp(c,"NULL") == 0) {
698 *ptr = (void *) 0;
699 return name;
700 } else {
701 return 0;
702 }
703 }
704 return SWIG_UnpackData(++c,ptr,sizeof(void *));
705 }
706
707 SWIGRUNTIME char *
SWIG_PackDataName(char * buff,void * ptr,size_t sz,const char * name,size_t bsz)708 SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
709 char *r = buff;
710 size_t lname = (name ? strlen(name) : 0);
711 if ((2*sz + 2 + lname) > bsz) return 0;
712 *(r++) = '_';
713 r = SWIG_PackData(r,ptr,sz);
714 if (lname) {
715 strncpy(r,name,lname+1);
716 } else {
717 *r = 0;
718 }
719 return buff;
720 }
721
722 SWIGRUNTIME const char *
SWIG_UnpackDataName(const char * c,void * ptr,size_t sz,const char * name)723 SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
724 if (*c != '_') {
725 if (strcmp(c,"NULL") == 0) {
726 memset(ptr,0,sz);
727 return name;
728 } else {
729 return 0;
730 }
731 }
732 return SWIG_UnpackData(++c,ptr,sz);
733 }
734
735 #ifdef __cplusplus
736 }
737 #endif
738
739 /* Errors in SWIG */
740 #define SWIG_UnknownError -1
741 #define SWIG_IOError -2
742 #define SWIG_RuntimeError -3
743 #define SWIG_IndexError -4
744 #define SWIG_TypeError -5
745 #define SWIG_DivisionByZero -6
746 #define SWIG_OverflowError -7
747 #define SWIG_SyntaxError -8
748 #define SWIG_ValueError -9
749 #define SWIG_SystemError -10
750 #define SWIG_AttributeError -11
751 #define SWIG_MemoryError -12
752 #define SWIG_NullReferenceError -13
753
754
755
756 #ifdef __cplusplus
757 /* Needed on some windows machines---since MS plays funny games with the header files under C++ */
758 #include <math.h>
759 #include <stdlib.h>
760 extern "C" {
761 #endif
762 #include "EXTERN.h"
763 #include "perl.h"
764 #include "XSUB.h"
765
766 /* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */
767
768 /* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */
769 #ifndef PERL_REVISION
770 # if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
771 # define PERL_PATCHLEVEL_H_IMPLICIT
772 # include <patchlevel.h>
773 # endif
774 # if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
775 # include <could_not_find_Perl_patchlevel.h>
776 # endif
777 # ifndef PERL_REVISION
778 # define PERL_REVISION (5)
779 # define PERL_VERSION PATCHLEVEL
780 # define PERL_SUBVERSION SUBVERSION
781 # endif
782 #endif
783
784 #if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
785 #define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
786 #endif
787
788 #ifndef SvIOK_UV
789 # define SvIOK_UV(sv) (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv)))
790 #endif
791
792 #ifndef SvUOK
793 # define SvUOK(sv) SvIOK_UV(sv)
794 #endif
795
796 #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)))
797 # define PL_sv_undef sv_undef
798 # define PL_na na
799 # define PL_errgv errgv
800 # define PL_sv_no sv_no
801 # define PL_sv_yes sv_yes
802 # define PL_markstack_ptr markstack_ptr
803 #endif
804
805 #ifndef IVSIZE
806 # ifdef LONGSIZE
807 # define IVSIZE LONGSIZE
808 # else
809 # define IVSIZE 4 /* A bold guess, but the best we can make. */
810 # endif
811 #endif
812
813 #ifndef INT2PTR
814 # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
815 # define PTRV UV
816 # define INT2PTR(any,d) (any)(d)
817 # else
818 # if PTRSIZE == LONGSIZE
819 # define PTRV unsigned long
820 # else
821 # define PTRV unsigned
822 # endif
823 # define INT2PTR(any,d) (any)(PTRV)(d)
824 # endif
825
826 # define NUM2PTR(any,d) (any)(PTRV)(d)
827 # define PTR2IV(p) INT2PTR(IV,p)
828 # define PTR2UV(p) INT2PTR(UV,p)
829 # define PTR2NV(p) NUM2PTR(NV,p)
830
831 # if PTRSIZE == LONGSIZE
832 # define PTR2ul(p) (unsigned long)(p)
833 # else
834 # define PTR2ul(p) INT2PTR(unsigned long,p)
835 # endif
836 #endif /* !INT2PTR */
837
838 #ifndef SvPV_nolen
839 # define SvPV_nolen(x) SvPV(x,PL_na)
840 #endif
841
842 #ifndef get_sv
843 # define get_sv perl_get_sv
844 #endif
845
846 #ifndef ERRSV
847 # define ERRSV get_sv("@",FALSE)
848 #endif
849
850 #ifndef pTHX_
851 #define pTHX_
852 #endif
853
854 #include <string.h>
855 #ifdef __cplusplus
856 }
857 #endif
858
859 /* -----------------------------------------------------------------------------
860 * error manipulation
861 * ----------------------------------------------------------------------------- */
862
863 SWIGINTERN const char*
SWIG_Perl_ErrorType(int code)864 SWIG_Perl_ErrorType(int code) {
865 switch(code) {
866 case SWIG_MemoryError:
867 return "MemoryError";
868 case SWIG_IOError:
869 return "IOError";
870 case SWIG_RuntimeError:
871 return "RuntimeError";
872 case SWIG_IndexError:
873 return "IndexError";
874 case SWIG_TypeError:
875 return "TypeError";
876 case SWIG_DivisionByZero:
877 return "ZeroDivisionError";
878 case SWIG_OverflowError:
879 return "OverflowError";
880 case SWIG_SyntaxError:
881 return "SyntaxError";
882 case SWIG_ValueError:
883 return "ValueError";
884 case SWIG_SystemError:
885 return "SystemError";
886 case SWIG_AttributeError:
887 return "AttributeError";
888 default:
889 return "RuntimeError";
890 }
891 }
892
893
894 /* -----------------------------------------------------------------------------
895 * perlrun.swg
896 *
897 * This file contains the runtime support for Perl modules
898 * and includes code for managing global variables and pointer
899 * type checking.
900 * ----------------------------------------------------------------------------- */
901
902 #ifdef PERL_OBJECT
903 #define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl),
904 #define SWIG_PERL_OBJECT_CALL pPerl,
905 #else
906 #define SWIG_PERL_OBJECT_DECL
907 #define SWIG_PERL_OBJECT_CALL
908 #endif
909
910 /* Common SWIG API */
911
912 /* for raw pointers */
913 #define SWIG_ConvertPtr(obj, pp, type, flags) SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags)
914 #define SWIG_ConvertPtrAndOwn(obj, pp, type, flags,own) SWIG_Perl_ConvertPtrAndOwn(SWIG_PERL_OBJECT_CALL obj, pp, type, flags, own)
915 #define SWIG_NewPointerObj(p, type, flags) SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags)
916 #define swig_owntype int
917
918 /* for raw packed data */
919 #define SWIG_ConvertPacked(obj, p, s, type) SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type)
920 #define SWIG_NewPackedObj(p, s, type) SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type)
921
922 /* for class or struct pointers */
923 #define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags)
924 #define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags)
925
926 /* for C or C++ function pointers */
927 #define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0)
928 #define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0)
929
930 /* for C++ member pointers, ie, member methods */
931 #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_ConvertPacked(obj, ptr, sz, ty)
932 #define SWIG_NewMemberObj(ptr, sz, type) SWIG_NewPackedObj(ptr, sz, type)
933
934
935 /* Runtime API */
936
937 #define SWIG_GetModule(clientdata) SWIG_Perl_GetModule(clientdata)
938 #define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer)
939
940
941 /* Error manipulation */
942
943 #define SWIG_ErrorType(code) SWIG_Perl_ErrorType(code)
944 #define SWIG_Error(code, msg) sv_setpvf(get_sv("@", GV_ADD), "%s %s", SWIG_ErrorType(code), msg)
945 #define SWIG_fail goto fail
946
947 /* Perl-specific SWIG API */
948
949 #define SWIG_MakePtr(sv, ptr, type, flags) SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags)
950 #define SWIG_MakePackedObj(sv, p, s, type) SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type)
951 #define SWIG_SetError(str) SWIG_Error(SWIG_RuntimeError, str)
952
953
954 #define SWIG_PERL_DECL_ARGS_1(arg1) (SWIG_PERL_OBJECT_DECL arg1)
955 #define SWIG_PERL_CALL_ARGS_1(arg1) (SWIG_PERL_OBJECT_CALL arg1)
956 #define SWIG_PERL_DECL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_DECL arg1, arg2)
957 #define SWIG_PERL_CALL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_CALL arg1, arg2)
958
959 /* -----------------------------------------------------------------------------
960 * pointers/data manipulation
961 * ----------------------------------------------------------------------------- */
962
963 /* For backward compatibility only */
964 #define SWIG_POINTER_EXCEPTION 0
965
966 #ifdef __cplusplus
967 extern "C" {
968 #endif
969
970 #define SWIG_OWNER SWIG_POINTER_OWN
971 #define SWIG_SHADOW SWIG_OWNER << 1
972
973 #define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL
974
975 /* SWIG Perl macros */
976
977 /* Macro to declare an XS function */
978 #ifndef XSPROTO
979 # define XSPROTO(name) void name(pTHX_ CV* cv)
980 #endif
981
982 /* Macro to call an XS function */
983 #ifdef PERL_OBJECT
984 # define SWIG_CALLXS(_name) _name(cv,pPerl)
985 #else
986 # ifndef MULTIPLICITY
987 # define SWIG_CALLXS(_name) _name(cv)
988 # else
989 # define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
990 # endif
991 #endif
992
993 #ifdef PERL_OBJECT
994 #define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this;
995
996 #ifdef __cplusplus
997 extern "C" {
998 #endif
999 typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
1000 #ifdef __cplusplus
1001 }
1002 #endif
1003
1004 #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
1005 #define SWIGCLASS_STATIC
1006
1007 #else /* PERL_OBJECT */
1008
1009 #define MAGIC_PPERL
1010 #define SWIGCLASS_STATIC static SWIGUNUSED
1011
1012 #ifndef MULTIPLICITY
1013 #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
1014
1015 #ifdef __cplusplus
1016 extern "C" {
1017 #endif
1018 typedef int (*SwigMagicFunc)(SV *, MAGIC *);
1019 #ifdef __cplusplus
1020 }
1021 #endif
1022
1023 #else /* MULTIPLICITY */
1024
1025 #define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
1026
1027 #ifdef __cplusplus
1028 extern "C" {
1029 #endif
1030 typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
1031 #ifdef __cplusplus
1032 }
1033 #endif
1034
1035 #endif /* MULTIPLICITY */
1036 #endif /* PERL_OBJECT */
1037
1038 # ifdef PERL_OBJECT
1039 # define SWIG_croak_null() SWIG_Perl_croak_null(pPerl)
SWIG_Perl_croak_null(CPerlObj * pPerl)1040 static void SWIGUNUSED SWIG_Perl_croak_null(CPerlObj *pPerl)
1041 # else
1042 static void SWIGUNUSED SWIG_croak_null()
1043 # endif
1044 {
1045 SV *err = get_sv("@", GV_ADD);
1046 # if (PERL_VERSION < 6)
1047 croak("%_", err);
1048 # else
1049 if (sv_isobject(err))
1050 croak(0);
1051 else
1052 croak("%s", SvPV_nolen(err));
1053 # endif
1054 }
1055
1056
1057 /*
1058 Define how strict is the cast between strings and integers/doubles
1059 when overloading between these types occurs.
1060
1061 The default is making it as strict as possible by using SWIG_AddCast
1062 when needed.
1063
1064 You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to
1065 disable the SWIG_AddCast, making the casting between string and
1066 numbers less strict.
1067
1068 In the end, we try to solve the overloading between strings and
1069 numerical types in the more natural way, but if you can avoid it,
1070 well, avoid it using %rename, for example.
1071 */
1072 #ifndef SWIG_PERL_NO_STRICT_STR2NUM
1073 # ifndef SWIG_PERL_STRICT_STR2NUM
1074 # define SWIG_PERL_STRICT_STR2NUM
1075 # endif
1076 #endif
1077 #ifdef SWIG_PERL_STRICT_STR2NUM
1078 /* string takes precedence */
1079 #define SWIG_Str2NumCast(x) SWIG_AddCast(x)
1080 #else
1081 /* number takes precedence */
1082 #define SWIG_Str2NumCast(x) x
1083 #endif
1084
1085
1086
1087 #include <stdlib.h>
1088
1089 SWIGRUNTIME const char *
SWIG_Perl_TypeProxyName(const swig_type_info * type)1090 SWIG_Perl_TypeProxyName(const swig_type_info *type) {
1091 if (!type) return NULL;
1092 if (type->clientdata != NULL) {
1093 return (const char*) type->clientdata;
1094 }
1095 else {
1096 return type->name;
1097 }
1098 }
1099
1100 /* Identical to SWIG_TypeCheck, except for strcmp comparison */
1101 SWIGRUNTIME swig_cast_info *
SWIG_TypeProxyCheck(const char * c,swig_type_info * ty)1102 SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
1103 if (ty) {
1104 swig_cast_info *iter = ty->cast;
1105 while (iter) {
1106 if (strcmp(SWIG_Perl_TypeProxyName(iter->type), c) == 0) {
1107 if (iter == ty->cast)
1108 return iter;
1109 /* Move iter to the top of the linked list */
1110 iter->prev->next = iter->next;
1111 if (iter->next)
1112 iter->next->prev = iter->prev;
1113 iter->next = ty->cast;
1114 iter->prev = 0;
1115 if (ty->cast) ty->cast->prev = iter;
1116 ty->cast = iter;
1117 return iter;
1118 }
1119 iter = iter->next;
1120 }
1121 }
1122 return 0;
1123 }
1124
1125 /* Function for getting a pointer value */
1126
1127 SWIGRUNTIME int
SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV * sv,void ** ptr,swig_type_info * _t,int flags,int * own)1128 SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags, int *own) {
1129 swig_cast_info *tc;
1130 void *voidptr = (void *)0;
1131 SV *tsv = 0;
1132
1133 if (own)
1134 *own = 0;
1135
1136 /* If magical, apply more magic */
1137 if (SvGMAGICAL(sv))
1138 mg_get(sv);
1139
1140 /* Check to see if this is an object */
1141 if (sv_isobject(sv)) {
1142 IV tmp = 0;
1143 tsv = (SV*) SvRV(sv);
1144 if ((SvTYPE(tsv) == SVt_PVHV)) {
1145 MAGIC *mg;
1146 if (SvMAGICAL(tsv)) {
1147 mg = mg_find(tsv,'P');
1148 if (mg) {
1149 sv = mg->mg_obj;
1150 if (sv_isobject(sv)) {
1151 tsv = (SV*)SvRV(sv);
1152 tmp = SvIV(tsv);
1153 }
1154 }
1155 } else {
1156 return SWIG_ERROR;
1157 }
1158 } else {
1159 tmp = SvIV(tsv);
1160 }
1161 voidptr = INT2PTR(void *,tmp);
1162 } else if (! SvOK(sv)) { /* Check for undef */
1163 *(ptr) = (void *) 0;
1164 return SWIG_OK;
1165 } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */
1166 if (!SvROK(sv)) {
1167 /* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value. */
1168 if (SvIOK(sv)) {
1169 return SWIG_ERROR;
1170 } else {
1171 /* NULL pointer (reference to undef). */
1172 *(ptr) = (void *) 0;
1173 return SWIG_OK;
1174 }
1175 } else {
1176 return SWIG_ERROR;
1177 }
1178 } else { /* Don't know what it is */
1179 return SWIG_ERROR;
1180 }
1181 if (_t) {
1182 /* Now see if the types match */
1183 char *_c = HvNAME(SvSTASH(SvRV(sv)));
1184 tc = SWIG_TypeProxyCheck(_c,_t);
1185 #ifdef SWIG_DIRECTORS
1186 if (!tc && !sv_derived_from(sv,SWIG_Perl_TypeProxyName(_t))) {
1187 #else
1188 if (!tc) {
1189 #endif
1190 return SWIG_ERROR;
1191 }
1192 {
1193 int newmemory = 0;
1194 *ptr = SWIG_TypeCast(tc,voidptr,&newmemory);
1195 if (newmemory == SWIG_CAST_NEW_MEMORY) {
1196 assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
1197 if (own)
1198 *own = *own | SWIG_CAST_NEW_MEMORY;
1199 }
1200 }
1201 } else {
1202 *ptr = voidptr;
1203 }
1204
1205 /*
1206 * DISOWN implementation: we need a perl guru to check this one.
1207 */
1208 if (tsv && (flags & SWIG_POINTER_DISOWN)) {
1209 /*
1210 * almost copy paste code from below SWIG_POINTER_OWN setting
1211 */
1212 SV *obj = sv;
1213 HV *stash = SvSTASH(SvRV(obj));
1214 GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
1215 if (isGV(gv)) {
1216 HV *hv = GvHVn(gv);
1217 /*
1218 * To set ownership (see below), a newSViv(1) entry is added.
1219 * Hence, to remove ownership, we delete the entry.
1220 */
1221 if (hv_exists_ent(hv, obj, 0)) {
1222 hv_delete_ent(hv, obj, 0, 0);
1223 }
1224 }
1225 }
1226 return SWIG_OK;
1227 }
1228
1229 SWIGRUNTIME int
1230 SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
1231 return SWIG_Perl_ConvertPtrAndOwn(sv, ptr, _t, flags, 0);
1232 }
1233
1234 SWIGRUNTIME void
1235 SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
1236 if (ptr && (flags & (SWIG_SHADOW | SWIG_POINTER_OWN))) {
1237 SV *self;
1238 SV *obj=newSV(0);
1239 HV *hash=newHV();
1240 HV *stash;
1241 sv_setref_pv(obj, SWIG_Perl_TypeProxyName(t), ptr);
1242 stash=SvSTASH(SvRV(obj));
1243 if (flags & SWIG_POINTER_OWN) {
1244 HV *hv;
1245 GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
1246 if (!isGV(gv))
1247 gv_init(gv, stash, "OWNER", 5, FALSE);
1248 hv=GvHVn(gv);
1249 hv_store_ent(hv, obj, newSViv(1), 0);
1250 }
1251 sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
1252 SvREFCNT_dec(obj);
1253 self=newRV_noinc((SV *)hash);
1254 sv_setsv(sv, self);
1255 SvREFCNT_dec((SV *)self);
1256 sv_bless(sv, stash);
1257 }
1258 else {
1259 sv_setref_pv(sv, SWIG_Perl_TypeProxyName(t), ptr);
1260 }
1261 }
1262
1263 SWIGRUNTIMEINLINE SV *
1264 SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
1265 SV *result = sv_newmortal();
1266 SWIG_MakePtr(result, ptr, t, flags);
1267 return result;
1268 }
1269
1270 SWIGRUNTIME void
1271 SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
1272 char result[1024];
1273 char *r = result;
1274 if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return;
1275 *(r++) = '_';
1276 r = SWIG_PackData(r,ptr,sz);
1277 strcpy(r,SWIG_Perl_TypeProxyName(type));
1278 sv_setpv(sv, result);
1279 }
1280
1281 SWIGRUNTIME SV *
1282 SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) {
1283 SV *result = sv_newmortal();
1284 SWIG_Perl_MakePackedObj(result, ptr, sz, type);
1285 return result;
1286 }
1287
1288 /* Convert a packed value value */
1289 SWIGRUNTIME int
1290 SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) {
1291 swig_cast_info *tc;
1292 const char *c = 0;
1293
1294 if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
1295 c = SvPV_nolen(obj);
1296 /* Pointer values must start with leading underscore */
1297 if (*c != '_') return SWIG_ERROR;
1298 c++;
1299 c = SWIG_UnpackData(c,ptr,sz);
1300 if (ty) {
1301 tc = SWIG_TypeCheck(c,ty);
1302 if (!tc) return SWIG_ERROR;
1303 }
1304 return SWIG_OK;
1305 }
1306
1307
1308 /* Macros for low-level exception handling */
1309 #define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }
1310
1311
1312 typedef XSPROTO(SwigPerlWrapper);
1313 typedef SwigPerlWrapper *SwigPerlWrapperPtr;
1314
1315 /* Structure for command table */
1316 typedef struct {
1317 const char *name;
1318 SwigPerlWrapperPtr wrapper;
1319 } swig_command_info;
1320
1321 /* Information for constant table */
1322
1323 #define SWIG_INT 1
1324 #define SWIG_FLOAT 2
1325 #define SWIG_STRING 3
1326 #define SWIG_POINTER 4
1327 #define SWIG_BINARY 5
1328
1329 /* Constant information structure */
1330 typedef struct swig_constant_info {
1331 int type;
1332 const char *name;
1333 long lvalue;
1334 double dvalue;
1335 void *pvalue;
1336 swig_type_info **ptype;
1337 } swig_constant_info;
1338
1339
1340 /* Structure for variable table */
1341 typedef struct {
1342 const char *name;
1343 SwigMagicFunc set;
1344 SwigMagicFunc get;
1345 swig_type_info **type;
1346 } swig_variable_info;
1347
1348 /* Magic variable code */
1349 #ifndef PERL_OBJECT
1350 # ifdef __cplusplus
1351 # define swig_create_magic(s,a,b,c) _swig_create_magic(s,const_cast<char*>(a),b,c)
1352 # else
1353 # define swig_create_magic(s,a,b,c) _swig_create_magic(s,(char*)(a),b,c)
1354 # endif
1355 # ifndef MULTIPLICITY
1356 SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *))
1357 # else
1358 SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *))
1359 # endif
1360 #else
1361 # define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
1362 SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *))
1363 #endif
1364 {
1365 MAGIC *mg;
1366 sv_magic(sv,sv,'U',name,strlen(name));
1367 mg = mg_find(sv,'U');
1368 mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
1369 mg->mg_virtual->svt_get = (SwigMagicFunc) get;
1370 mg->mg_virtual->svt_set = (SwigMagicFunc) set;
1371 mg->mg_virtual->svt_len = 0;
1372 mg->mg_virtual->svt_clear = 0;
1373 mg->mg_virtual->svt_free = 0;
1374 }
1375
1376
1377 SWIGRUNTIME swig_module_info *
1378 SWIG_Perl_GetModule(void *SWIGUNUSEDPARM(clientdata)) {
1379 static void *type_pointer = (void *)0;
1380 SV *pointer;
1381
1382 /* first check if pointer already created */
1383 if (!type_pointer) {
1384 pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI);
1385 if (pointer && SvOK(pointer)) {
1386 type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
1387 }
1388 }
1389
1390 return (swig_module_info *) type_pointer;
1391 }
1392
1393 SWIGRUNTIME void
1394 SWIG_Perl_SetModule(swig_module_info *module) {
1395 SV *pointer;
1396
1397 /* create a new pointer */
1398 pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI);
1399 sv_setiv(pointer, PTR2IV(module));
1400 }
1401
1402 #ifdef __cplusplus
1403 }
1404 #endif
1405
1406 /* Workaround perl5 global namespace pollution. Note that undefining library
1407 * functions like fopen will not solve the problem on all platforms as fopen
1408 * might be a macro on Windows but not necessarily on other operating systems. */
1409 #ifdef do_open
1410 #undef do_open
1411 #endif
1412 #ifdef do_close
1413 #undef do_close
1414 #endif
1415 #ifdef do_exec
1416 #undef do_exec
1417 #endif
1418 #ifdef scalar
1419 #undef scalar
1420 #endif
1421 #ifdef list
1422 #undef list
1423 #endif
1424 #ifdef apply
1425 #undef apply
1426 #endif
1427 #ifdef convert
1428 #undef convert
1429 #endif
1430 #ifdef Error
1431 #undef Error
1432 #endif
1433 #ifdef form
1434 #undef form
1435 #endif
1436 #ifdef vform
1437 #undef vform
1438 #endif
1439 #ifdef LABEL
1440 #undef LABEL
1441 #endif
1442 #ifdef METHOD
1443 #undef METHOD
1444 #endif
1445 #ifdef Move
1446 #undef Move
1447 #endif
1448 #ifdef yylex
1449 #undef yylex
1450 #endif
1451 #ifdef yyparse
1452 #undef yyparse
1453 #endif
1454 #ifdef yyerror
1455 #undef yyerror
1456 #endif
1457 #ifdef invert
1458 #undef invert
1459 #endif
1460 #ifdef ref
1461 #undef ref
1462 #endif
1463 #ifdef read
1464 #undef read
1465 #endif
1466 #ifdef write
1467 #undef write
1468 #endif
1469 #ifdef eof
1470 #undef eof
1471 #endif
1472 #ifdef close
1473 #undef close
1474 #endif
1475 #ifdef rewind
1476 #undef rewind
1477 #endif
1478 #ifdef free
1479 #undef free
1480 #endif
1481 #ifdef malloc
1482 #undef malloc
1483 #endif
1484 #ifdef calloc
1485 #undef calloc
1486 #endif
1487 #ifdef Stat
1488 #undef Stat
1489 #endif
1490 #ifdef check
1491 #undef check
1492 #endif
1493 #ifdef seekdir
1494 #undef seekdir
1495 #endif
1496 #ifdef open
1497 #undef open
1498 #endif
1499 #ifdef readdir
1500 #undef readdir
1501 #endif
1502 #ifdef bind
1503 #undef bind
1504 #endif
1505 #ifdef access
1506 #undef access
1507 #endif
1508 #ifdef stat
1509 #undef stat
1510 #endif
1511 #ifdef seed
1512 #undef seed
1513 #endif
1514
1515 #ifdef bool
1516 /* Leave if macro is from C99 stdbool.h */
1517 #ifndef __bool_true_false_are_defined
1518 #undef bool
1519 #endif
1520 #endif
1521
1522
1523
1524
1525 #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0)
1526
1527 #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else
1528
1529
1530
1531 #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0)
1532
1533
1534 /* -------- TYPES TABLE (BEGIN) -------- */
1535
1536 #define SWIGTYPE_p_CPLErrorHandler swig_types[0]
1537 #define SWIGTYPE_p_CPLXMLNode swig_types[1]
1538 #define SWIGTYPE_p_FILE swig_types[2]
1539 #define SWIGTYPE_p_GByte swig_types[3]
1540 #define SWIGTYPE_p_GDALAsyncReaderShadow swig_types[4]
1541 #define SWIGTYPE_p_GDALAttributeHS swig_types[5]
1542 #define SWIGTYPE_p_GDALBuildVRTOptions swig_types[6]
1543 #define SWIGTYPE_p_GDALColorEntry swig_types[7]
1544 #define SWIGTYPE_p_GDALColorTableShadow swig_types[8]
1545 #define SWIGTYPE_p_GDALDEMProcessingOptions swig_types[9]
1546 #define SWIGTYPE_p_GDALDatasetShadow swig_types[10]
1547 #define SWIGTYPE_p_GDALDimensionHS swig_types[11]
1548 #define SWIGTYPE_p_GDALDriverShadow swig_types[12]
1549 #define SWIGTYPE_p_GDALEDTComponentHS swig_types[13]
1550 #define SWIGTYPE_p_GDALExtendedDataTypeClass swig_types[14]
1551 #define SWIGTYPE_p_GDALExtendedDataTypeHS swig_types[15]
1552 #define SWIGTYPE_p_GDALGridOptions swig_types[16]
1553 #define SWIGTYPE_p_GDALGroupHS swig_types[17]
1554 #define SWIGTYPE_p_GDALInfoOptions swig_types[18]
1555 #define SWIGTYPE_p_GDALMDArrayHS swig_types[19]
1556 #define SWIGTYPE_p_GDALMajorObjectShadow swig_types[20]
1557 #define SWIGTYPE_p_GDALMultiDimInfoOptions swig_types[21]
1558 #define SWIGTYPE_p_GDALMultiDimTranslateOptions swig_types[22]
1559 #define SWIGTYPE_p_GDALNearblackOptions swig_types[23]
1560 #define SWIGTYPE_p_GDALProgressFunc swig_types[24]
1561 #define SWIGTYPE_p_GDALRasterAttributeTableShadow swig_types[25]
1562 #define SWIGTYPE_p_GDALRasterBandShadow swig_types[26]
1563 #define SWIGTYPE_p_GDALRasterizeOptions swig_types[27]
1564 #define SWIGTYPE_p_GDALTransformerInfoShadow swig_types[28]
1565 #define SWIGTYPE_p_GDALTranslateOptions swig_types[29]
1566 #define SWIGTYPE_p_GDALVectorTranslateOptions swig_types[30]
1567 #define SWIGTYPE_p_GDALViewshedMode swig_types[31]
1568 #define SWIGTYPE_p_GDALViewshedOutputType swig_types[32]
1569 #define SWIGTYPE_p_GDALWarpAppOptions swig_types[33]
1570 #define SWIGTYPE_p_GDAL_GCP swig_types[34]
1571 #define SWIGTYPE_p_GIntBig swig_types[35]
1572 #define SWIGTYPE_p_GUIntBig swig_types[36]
1573 #define SWIGTYPE_p_OGRFeatureShadow swig_types[37]
1574 #define SWIGTYPE_p_OGRFieldDomainShadow swig_types[38]
1575 #define SWIGTYPE_p_OGRGeometryShadow swig_types[39]
1576 #define SWIGTYPE_p_OGRLayerShadow swig_types[40]
1577 #define SWIGTYPE_p_OGRStyleTableShadow swig_types[41]
1578 #define SWIGTYPE_p_OSRSpatialReferenceShadow swig_types[42]
1579 #define SWIGTYPE_p_Statistics swig_types[43]
1580 #define SWIGTYPE_p_VSILFILE swig_types[44]
1581 #define SWIGTYPE_p_VSIStatBufL swig_types[45]
1582 #define SWIGTYPE_p_VSIWriteFunction swig_types[46]
1583 #define SWIGTYPE_p_char swig_types[47]
1584 #define SWIGTYPE_p_double swig_types[48]
1585 #define SWIGTYPE_p_f_double_p_q_const__char_p_void__int swig_types[49]
1586 #define SWIGTYPE_p_int swig_types[50]
1587 #define SWIGTYPE_p_p_GDALDatasetShadow swig_types[51]
1588 #define SWIGTYPE_p_p_GDALRasterBandShadow swig_types[52]
1589 #define SWIGTYPE_p_p_GDAL_GCP swig_types[53]
1590 #define SWIGTYPE_p_p_GUIntBig swig_types[54]
1591 #define SWIGTYPE_p_p_char swig_types[55]
1592 static swig_type_info *swig_types[57];
1593 static swig_module_info swig_module = {swig_types, 56, 0, 0, 0, 0};
1594 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
1595 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
1596
1597 /* -------- TYPES TABLE (END) -------- */
1598
1599 #define SWIG_init boot_Geo__GDAL
1600
1601 #define SWIG_name "Geo::GDALc::boot_Geo__GDAL"
1602 #define SWIG_prefix "Geo::GDALc::"
1603
1604 #define SWIGVERSION 0x030012
1605 #define SWIG_VERSION SWIGVERSION
1606
1607
1608 #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a))
1609 #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a))
1610
1611
1612 #include <stdexcept>
1613
1614
1615 #ifdef __cplusplus
1616 extern "C"
1617 #endif
1618 #ifndef PERL_OBJECT
1619 #ifndef MULTIPLICITY
1620 SWIGEXPORT void SWIG_init (CV* cv);
1621 #else
1622 SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);
1623 #endif
1624 #else
1625 SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
1626 #endif
1627
1628
1629 #include <iostream>
1630 #include <vector>
1631 using namespace std;
1632
1633 #define CPL_SUPRESS_CPLUSPLUS
1634 #include "cpl_port.h"
1635 #include "cpl_string.h"
1636 #include "cpl_multiproc.h"
1637 #include "cpl_http.h"
1638 #include "cpl_vsi_error.h"
1639
1640 #include "gdal.h"
1641 #include "gdal_alg.h"
1642 #include "gdalwarper.h"
1643 #include "ogr_srs_api.h"
1644
1645 typedef void GDALMajorObjectShadow;
1646 typedef void GDALDriverShadow;
1647 typedef void GDALDatasetShadow;
1648 typedef void GDALRasterBandShadow;
1649 typedef void GDALColorTableShadow;
1650 typedef void GDALRasterAttributeTableShadow;
1651 typedef void GDALTransformerInfoShadow;
1652 typedef void GDALAsyncReaderShadow;
1653
1654 typedef GDALExtendedDataTypeHS GDALExtendedDataTypeHS;
1655 typedef GDALEDTComponentHS GDALEDTComponentHS;
1656 typedef GDALGroupHS GDALGroupHS;
1657 typedef GDALMDArrayHS GDALMDArrayHS;
1658 typedef GDALAttributeHS GDALAttributeHS;
1659 typedef GDALDimensionHS GDALDimensionHS;
1660
1661
1662
1663 #ifdef DEBUG
1664 typedef struct OGRSpatialReferenceHS OSRSpatialReferenceShadow;
1665 typedef struct OGRLayerHS OGRLayerShadow;
1666 typedef struct OGRFeatureHS OGRFeatureShadow;
1667 typedef struct OGRGeometryHS OGRGeometryShadow;
1668 #else
1669 typedef void OSRSpatialReferenceShadow;
1670 typedef void OGRLayerShadow;
1671 typedef void OGRFeatureShadow;
1672 typedef void OGRGeometryShadow;
1673 #endif
1674
1675 typedef struct OGRStyleTableHS OGRStyleTableShadow;
1676 typedef struct OGRFieldDomainHS OGRFieldDomainShadow;
1677
1678
1679 /* use this to not return the int returned by GDAL */
1680 typedef int RETURN_NONE;
1681 /* return value that is used for VSI methods that return -1 on error (and set errno) */
1682 typedef int VSI_RETVAL;
1683
1684
1685 #ifndef SWIG
1686 typedef struct
1687 {
1688 SV *fct;
1689 SV *data;
1690 } SavedEnv;
1691 #endif
callback_d_cp_vp(double d,const char * cp,void * vp)1692 int callback_d_cp_vp(double d, const char *cp, void *vp)
1693 {
1694 int count, ret;
1695 SavedEnv *env_ptr = (SavedEnv *)vp;
1696 dSP;
1697 ENTER;
1698 SAVETMPS;
1699 PUSHMARK(SP);
1700 XPUSHs(sv_2mortal(newSVnv(d)));
1701 XPUSHs(sv_2mortal(newSVpv(cp, 0)));
1702 if (env_ptr->data)
1703 XPUSHs(env_ptr->data);
1704 PUTBACK;
1705 count = call_sv(env_ptr->fct, G_SCALAR);
1706 SPAGAIN;
1707 if (count != 1) {
1708 fprintf(stderr, "The callback must return only one value.\n");
1709 return 0; /* interrupt */
1710 }
1711 ret = POPi;
1712 PUTBACK;
1713 FREETMPS;
1714 LEAVE;
1715 return ret;
1716 }
1717 #ifndef SWIG
1718 static SV *VSIStdoutSetRedirectionFct = &PL_sv_undef;
1719 #endif
callback_fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream)1720 size_t callback_fwrite(const void *ptr, size_t size, size_t nmemb,
1721 FILE *stream)
1722 {
1723 dSP;
1724 ENTER;
1725 SAVETMPS;
1726 PUSHMARK(SP);
1727 XPUSHs(sv_2mortal(newSVpv((const char*)ptr, size*nmemb)));
1728 PUTBACK;
1729 call_sv(VSIStdoutSetRedirectionFct, G_DISCARD);
1730 FREETMPS;
1731 LEAVE;
1732 return size*nmemb;
1733 }
1734
1735
do_confess(const char * error,int push_to_error_stack)1736 void do_confess(const char *error, int push_to_error_stack) {
1737 SV *sv = newSVpv("", 0);
1738 sv_setpvf(sv, "%s\n", error);
1739 if (push_to_error_stack) {
1740 AV* error_stack = get_av("Geo::GDAL::error", 0);
1741 av_push(error_stack, sv);
1742 } else {
1743 sv = sv_2mortal(sv);
1744 }
1745 dSP;
1746 ENTER;
1747 SAVETMPS;
1748 PUSHMARK(SP);
1749 XPUSHs( sv );
1750 PUTBACK;
1751 call_pv("Carp::confess", G_DISCARD);
1752 /*
1753 confess never returns, so these will not get executed:
1754 FREETMPS;
1755 LEAVE;
1756 */
1757 }
1758 #define OUT_OF_MEMORY "Out of memory."
1759 #define CALL_FAILED "Call failed. Possible reason is an index out of range, mathematical problem, or something else."
1760 #define NEED_DEF "A parameter which must be defined or not empty, is not."
1761 #define WRONG_CLASS "Object has a wrong class."
1762 #define NEED_REF "A parameter which must be a reference, is not."
1763 #define NEED_HASH_REF "A parameter/item which must be a hash reference, is not."
1764 #define NEED_ARRAY_REF "A parameter/item which must be an array reference, is not."
1765 #define NEED_BINARY_DATA "A parameter which must be binary data, is not."
1766 #define NEED_CODE_REF "A parameter which must be an anonymous subroutine, is not."
1767 #define WRONG_ITEM_IN_ARRAY "An item in an array parameter has wrong type."
1768 #define ARRAY_TO_XML_FAILED "An array parameter cannot be converted to an XMLTree."
1769 #define NOT_ENOUGH_ELEMENTS "The supplied array does not have enough elements."
1770
1771
VeryQuietErrorHandler(CPLErr eclass,int code,const char * msg)1772 void VeryQuietErrorHandler(CPLErr eclass, int code, const char *msg ) {
1773 /* If the error class is CE_Fatal, we want to have a message issued
1774 because the CPL support code does an abort() before any exception
1775 can be generated */
1776 #if defined(SWIGPERL)
1777 AV* error_stack = get_av("Geo::GDAL::error", 0);
1778 SV *error = newSVpv(msg, 0);
1779 av_push(error_stack, error);
1780 #endif
1781 if (eclass == CE_Fatal ) {
1782 CPLDefaultErrorHandler(eclass, code, msg );
1783 }
1784 }
1785
1786
UseExceptions()1787 void UseExceptions() {
1788 CPLSetErrorHandler( (CPLErrorHandler) VeryQuietErrorHandler );
1789 }
1790
DontUseExceptions()1791 void DontUseExceptions() {
1792 CPLSetErrorHandler( CPLDefaultErrorHandler );
1793 }
1794
1795
NVClassify(int comparison,double nv,AV * classifier,const char ** error)1796 double NVClassify(int comparison, double nv, AV* classifier, const char **error) {
1797 /* recursive, return nv < classifier[0] ? classifier[1] : classifier[2]
1798 sets error if there are not three values in the classifier,
1799 first is not a number, or second or third are not a number of arrayref
1800 */
1801 SV** f = av_fetch(classifier, 0, 0);
1802 SV** s = av_fetch(classifier, 1, 0);
1803 SV** t = av_fetch(classifier, 2, 0);
1804 if (f && (SvNOK(*f) || SvIOK(*f))) {
1805 switch(comparison) {
1806 case 0: /* lt */
1807 if (nv < SvNV(*f))
1808 t = s;
1809 break;
1810 case 1: /* lte */
1811 if (nv <= SvNV(*f))
1812 t = s;
1813 break;
1814 case 2: /* gt */
1815 if (nv > SvNV(*f))
1816 t = s;
1817 break;
1818 case 3: /* gte */
1819 if (nv >= SvNV(*f))
1820 t = s;
1821 break;
1822 }
1823 if (t && (SvNOK(*t) || SvIOK(*t)))
1824 return SvNV(*t);
1825 else if (t && SvROK(*t) && (SvTYPE(SvRV(*t)) == SVt_PVAV))
1826 return NVClassify(comparison, nv, (AV*)(SvRV(*t)), error);
1827 else
1828 *error = "The decision in a classifier must be a number or a reference to a classifier.";
1829 } else
1830 *error = "The first value in a classifier must be a number.";
1831 return 0;
1832 }
IVClassify(int comparison,int64_t k,AV * classifier,const char ** error)1833 int64_t IVClassify(int comparison, int64_t k, AV* classifier, const char **error) {
1834 /* recursive, return k < classifier[0] ? classifier[1] : classifier[2]
1835 sets error if there are not three values in the classifier,
1836 first is not a number, or second or third are not a number of arrayref
1837 */
1838 SV** f = av_fetch(classifier, 0, 0);
1839 SV** s = av_fetch(classifier, 1, 0);
1840 SV** t = av_fetch(classifier, 2, 0);
1841 if (f && (SvNOK(*f) || SvIOK(*f))) {
1842 switch(comparison) {
1843 case 0: /* lt */
1844 if (k < SvNV(*f))
1845 t = s;
1846 break;
1847 case 1: /* lte */
1848 if (k <= SvNV(*f))
1849 t = s;
1850 break;
1851 case 2: /* gt */
1852 if (k > SvNV(*f))
1853 t = s;
1854 break;
1855 case 3: /* gte */
1856 if (k >= SvNV(*f))
1857 t = s;
1858 break;
1859 }
1860 if (t && (SvNOK(*t) || SvIOK(*t)))
1861 return SvNV(*t);
1862 else if (t && SvROK(*t) && (SvTYPE(SvRV(*t)) == SVt_PVAV))
1863 return IVClassify(comparison, k, (AV*)(SvRV(*t)), error);
1864 else
1865 *error = "The decision in a classifier must be a number or a reference to a classifier.";
1866 } else
1867 *error = "The first value in a classifier must be a number.";
1868 return 0;
1869 }
NVClass(int comparison,double nv,AV * classifier,int * klass,const char ** error)1870 void NVClass(int comparison, double nv, AV* classifier, int *klass, const char **error) {
1871 /* recursive, return in klass nv < classifier[0] ? classifier[1] : classifier[2]
1872 sets error if there are not three values in the classifier,
1873 first is not a number, or second or third are not a number of arrayref
1874 */
1875 SV** f = av_fetch(classifier, 0, 0);
1876 SV** s = av_fetch(classifier, 1, 0);
1877 SV** t = av_fetch(classifier, 2, 0);
1878 if (f && (SvNOK(*f) || SvIOK(*f))) {
1879 ++*klass;
1880 switch(comparison) {
1881 case 0: /* lt */
1882 if (nv < SvNV(*f))
1883 --*klass;
1884 t = s;
1885 break;
1886 case 1: /* lte */
1887 if (nv <= SvNV(*f))
1888 --*klass;
1889 t = s;
1890 break;
1891 case 2: /* gt */
1892 if (nv > SvNV(*f))
1893 --*klass;
1894 t = s;
1895 break;
1896 case 3: /* gte */
1897 if (nv >= SvNV(*f))
1898 --*klass;
1899 t = s;
1900 break;
1901 }
1902 if (t && (SvNOK(*t) || SvIOK(*t)))
1903 return;
1904 else if (t && SvROK(*t) && (SvTYPE(SvRV(*t)) == SVt_PVAV))
1905 NVClass(comparison, nv, (AV*)(SvRV(*t)), klass, error);
1906 else
1907 *error = "The decision in a classifier must be a number or a reference to a classifier.";
1908 } else
1909 *error = "The first value in a classifier must be a number.";
1910 }
to_array_classifier(SV * classifier,int * comparison,const char ** error)1911 AV* to_array_classifier(SV* classifier, int* comparison, const char **error) {
1912 if (SvROK(classifier) && (SvTYPE(SvRV(classifier)) == SVt_PVAV)) {
1913 SV** f = av_fetch((AV*)SvRV(classifier), 0, 0);
1914 SV** s = av_fetch((AV*)SvRV(classifier), 1, 0);
1915 if (f && SvPOK(*f)) {
1916 char *c = SvPV_nolen(*f);
1917 if (strcmp(c, "<") == 0)
1918 *comparison = 0;
1919 else if (strcmp(c, "<=") == 0)
1920 *comparison = 1;
1921 else if (strcmp(c, ">") == 0)
1922 *comparison = 2;
1923 else if (strcmp(c, ">=") == 0)
1924 *comparison = 3;
1925 else {
1926 *error = "The first element in classifier object must be a comparison.";
1927 return NULL;
1928 }
1929 }
1930 if (s && SvROK(*s) && (SvTYPE(SvRV(*s)) == SVt_PVAV))
1931 return (AV*)SvRV(*s);
1932 else
1933 *error = "The second element in classifier object must be an array reference.";
1934 } else
1935 *error = NEED_ARRAY_REF;
1936 return NULL;
1937 }
1938
1939
1940 typedef char retStringAndCPLFree;
1941
1942
Debug(const char * msg_class,const char * message)1943 void Debug( const char *msg_class, const char *message ) {
1944 CPLDebug( msg_class, "%s", message );
1945 }
1946
1947
1948 SWIGINTERN swig_type_info*
SWIG_pchar_descriptor(void)1949 SWIG_pchar_descriptor(void)
1950 {
1951 static int init = 0;
1952 static swig_type_info* info = 0;
1953 if (!init) {
1954 info = SWIG_TypeQuery("_p_char");
1955 init = 1;
1956 }
1957 return info;
1958 }
1959
1960
1961 SWIGINTERN int
SWIG_AsCharPtrAndSize(SV * obj,char ** cptr,size_t * psize,int * alloc)1962 SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
1963 {
1964 if (SvMAGICAL(obj)) {
1965 SV *tmp = sv_newmortal();
1966 SvSetSV(tmp, obj);
1967 obj = tmp;
1968 }
1969 if (SvPOK(obj)) {
1970 STRLEN len = 0;
1971 char *cstr = SvPV(obj, len);
1972 size_t size = len + 1;
1973 if (cptr) {
1974 if (alloc) {
1975 if (*alloc == SWIG_NEWOBJ) {
1976 *cptr = reinterpret_cast< char* >(memcpy(new char[size], cstr, sizeof(char)*(size)));
1977 } else {
1978 *cptr = cstr;
1979 *alloc = SWIG_OLDOBJ;
1980 }
1981 }
1982 }
1983 if (psize) *psize = size;
1984 return SWIG_OK;
1985 } else {
1986 swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
1987 if (pchar_descriptor) {
1988 char* vptr = 0;
1989 if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
1990 if (cptr) *cptr = vptr;
1991 if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
1992 if (alloc) *alloc = SWIG_OLDOBJ;
1993 return SWIG_OK;
1994 }
1995 }
1996 }
1997 return SWIG_TypeError;
1998 }
1999
2000
2001
2002
2003
SetErrorHandler(CPLErrorHandler pfnErrorHandler=NULL,void * user_data=NULL)2004 CPLErr SetErrorHandler( CPLErrorHandler pfnErrorHandler = NULL, void* user_data = NULL )
2005 {
2006 if( pfnErrorHandler == NULL )
2007 {
2008 pfnErrorHandler = CPLDefaultErrorHandler;
2009 }
2010
2011 CPLSetErrorHandlerEx( pfnErrorHandler, user_data );
2012
2013 return CE_None;
2014 }
2015
2016
2017 #include <limits.h>
2018 #if !defined(SWIG_NO_LLONG_MAX)
2019 # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
2020 # define LLONG_MAX __LONG_LONG_MAX__
2021 # define LLONG_MIN (-LLONG_MAX - 1LL)
2022 # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
2023 # endif
2024 #endif
2025
2026
2027 #include <stdlib.h>
2028 #ifdef _MSC_VER
2029 # ifndef strtoull
2030 # define strtoull _strtoui64
2031 # endif
2032 # ifndef strtoll
2033 # define strtoll _strtoi64
2034 # endif
2035 #endif
2036
2037
2038 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,double * val)2039 SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val)
2040 {
2041 if (SvNIOK(obj)) {
2042 if (val) *val = SvNV(obj);
2043 return SWIG_OK;
2044 } else if (SvIOK(obj)) {
2045 if (val) *val = (double) SvIV(obj);
2046 return SWIG_AddCast(SWIG_OK);
2047 } else {
2048 const char *nptr = SvPV_nolen(obj);
2049 if (nptr) {
2050 char *endptr;
2051 double v;
2052 errno = 0;
2053 v = strtod(nptr, &endptr);
2054 if (errno == ERANGE) {
2055 errno = 0;
2056 return SWIG_OverflowError;
2057 } else {
2058 if (*endptr == '\0') {
2059 if (val) *val = v;
2060 return SWIG_Str2NumCast(SWIG_OK);
2061 }
2062 }
2063 }
2064 }
2065 return SWIG_TypeError;
2066 }
2067
2068
2069 #include <float.h>
2070
2071
2072 #include <math.h>
2073
2074
2075 SWIGINTERNINLINE int
SWIG_CanCastAsInteger(double * d,double min,double max)2076 SWIG_CanCastAsInteger(double *d, double min, double max) {
2077 double x = *d;
2078 if ((min <= x && x <= max)) {
2079 double fx = floor(x);
2080 double cx = ceil(x);
2081 double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */
2082 if ((errno == EDOM) || (errno == ERANGE)) {
2083 errno = 0;
2084 } else {
2085 double summ, reps, diff;
2086 if (rd < x) {
2087 diff = x - rd;
2088 } else if (rd > x) {
2089 diff = rd - x;
2090 } else {
2091 return 1;
2092 }
2093 summ = rd + x;
2094 reps = diff/summ;
2095 if (reps < 8*DBL_EPSILON) {
2096 *d = rd;
2097 return 1;
2098 }
2099 }
2100 }
2101 return 0;
2102 }
2103
2104
2105 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,long * val)2106 SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val)
2107 {
2108 if (SvUOK(obj)) {
2109 UV v = SvUV(obj);
2110 if (UVSIZE < sizeof(*val) || v <= LONG_MAX) {
2111 if (val) *val = v;
2112 return SWIG_OK;
2113 }
2114 return SWIG_OverflowError;
2115 } else if (SvIOK(obj)) {
2116 IV v = SvIV(obj);
2117 if (IVSIZE <= sizeof(*val) || (v >= LONG_MIN && v <= LONG_MAX)) {
2118 if(val) *val = v;
2119 return SWIG_OK;
2120 }
2121 return SWIG_OverflowError;
2122 } else {
2123 int dispatch = 0;
2124 const char *nptr = SvPV_nolen(obj);
2125 if (nptr) {
2126 char *endptr;
2127 long v;
2128 errno = 0;
2129 v = strtol(nptr, &endptr,0);
2130 if (errno == ERANGE) {
2131 errno = 0;
2132 return SWIG_OverflowError;
2133 } else {
2134 if (*endptr == '\0') {
2135 if (val) *val = v;
2136 return SWIG_Str2NumCast(SWIG_OK);
2137 }
2138 }
2139 }
2140 if (!dispatch) {
2141 double d;
2142 int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
2143 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
2144 if (val) *val = (long)(d);
2145 return res;
2146 }
2147 }
2148 }
2149 return SWIG_TypeError;
2150 }
2151
2152
2153 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,int * val)2154 SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val)
2155 {
2156 long v;
2157 int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v);
2158 if (SWIG_IsOK(res)) {
2159 if ((v < INT_MIN || v > INT_MAX)) {
2160 return SWIG_OverflowError;
2161 } else {
2162 if (val) *val = static_cast< int >(v);
2163 }
2164 }
2165 return res;
2166 }
2167
2168
PushErrorHandler(char const * pszCallbackName=NULL)2169 CPLErr PushErrorHandler( char const * pszCallbackName = NULL ) {
2170 CPLErrorHandler pfnHandler = NULL;
2171 if( pszCallbackName == NULL || EQUAL(pszCallbackName,"CPLQuietErrorHandler") )
2172 pfnHandler = CPLQuietErrorHandler;
2173 else if( EQUAL(pszCallbackName,"CPLDefaultErrorHandler") )
2174 pfnHandler = CPLDefaultErrorHandler;
2175 else if( EQUAL(pszCallbackName,"CPLLoggingErrorHandler") )
2176 pfnHandler = CPLLoggingErrorHandler;
2177
2178 if ( pfnHandler == NULL )
2179 return CE_Fatal;
2180
2181 CPLPushErrorHandler( pfnHandler );
2182
2183 return CE_None;
2184 }
2185
2186
Error(CPLErr msg_class=CE_Failure,int err_code=0,const char * msg="error")2187 void Error( CPLErr msg_class = CE_Failure, int err_code = 0, const char* msg = "error" ) {
2188 CPLError( msg_class, err_code, "%s", msg );
2189 }
2190
2191
EscapeString(int len,char * bin_string,int scheme=CPLES_SQL)2192 retStringAndCPLFree* EscapeString(int len, char *bin_string , int scheme=CPLES_SQL) {
2193 return CPLEscapeString(bin_string, len, scheme);
2194 }
2195
2196
2197 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(long value)2198 SWIG_From_long SWIG_PERL_DECL_ARGS_1(long value)
2199 {
2200 SV *sv;
2201 if (IVSIZE >= sizeof(value) || (value >= IV_MIN && value <= IV_MAX))
2202 sv = newSViv(value);
2203 else
2204 sv = newSVpvf("%ld", value);
2205 return sv_2mortal(sv);
2206 }
2207
2208
2209 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(int value)2210 SWIG_From_int SWIG_PERL_DECL_ARGS_1(int value)
2211 {
2212 return SWIG_From_long SWIG_PERL_CALL_ARGS_1(value);
2213 }
2214
2215
2216 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(unsigned long value)2217 SWIG_From_unsigned_SS_long SWIG_PERL_DECL_ARGS_1(unsigned long value)
2218 {
2219 SV *sv;
2220 if (UVSIZE >= sizeof(value) || value <= UV_MAX)
2221 sv = newSVuv(value);
2222 else
2223 sv = newSVpvf("%lu", value);
2224 return sv_2mortal(sv);
2225 }
2226
2227
2228 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(unsigned int value)2229 SWIG_From_unsigned_SS_int SWIG_PERL_DECL_ARGS_1(unsigned int value)
2230 {
2231 return SWIG_From_unsigned_SS_long SWIG_PERL_CALL_ARGS_1(value);
2232 }
2233
2234
sv_to_utf8_string(SV * sv,U8 ** tmpbuf,bool * safefree=NULL)2235 char *sv_to_utf8_string(SV *sv, U8 **tmpbuf, bool *safefree = NULL) {
2236 /* if tmpbuf is given, only tmpbuf needs to be freed, use Safefree!
2237 if not, ret needs to be freed, if safefree use Safefree else use free! */
2238 char *ret;
2239 if (safefree) *safefree = false;
2240 if (SvOK(sv)) {
2241 STRLEN len;
2242 ret = SvPV(sv, len);
2243 if (!SvUTF8(sv)) {
2244 if (tmpbuf) {
2245 *tmpbuf = bytes_to_utf8((const U8*)ret, &len);
2246 ret = (char *)(*tmpbuf);
2247 } else {
2248 ret = (char *)bytes_to_utf8((const U8*)ret, &len);
2249 }
2250 if (safefree) *safefree = true;
2251 } else {
2252 if (!tmpbuf)
2253 ret = strdup(ret);
2254 }
2255 } else {
2256 ret = (char*)""; /* avoid "Use of uninitialized value in subroutine entry" errors */
2257 if (!tmpbuf)
2258 ret = strdup(ret);
2259 }
2260 return ret;
2261 }
2262
2263
wrapper_VSIReadDirEx(const char * utf8_path,int nMaxFiles=0)2264 char **wrapper_VSIReadDirEx( const char * utf8_path, int nMaxFiles = 0 )
2265 {
2266 return VSIReadDirEx(utf8_path, nMaxFiles);
2267 }
2268
2269
wrapper_CPLGetConfigOption(const char * pszKey,const char * pszDefault=NULL)2270 const char *wrapper_CPLGetConfigOption( const char * pszKey, const char * pszDefault = NULL )
2271 {
2272 return CPLGetConfigOption( pszKey, pszDefault );
2273 }
2274
2275
wrapper_VSIFileFromMemBuffer(const char * utf8_path,int nBytes,const GByte * pabyData)2276 void wrapper_VSIFileFromMemBuffer( const char* utf8_path, int nBytes, const GByte *pabyData)
2277 {
2278 GByte* pabyDataDup = (GByte*)VSIMalloc(nBytes);
2279 if (pabyDataDup == NULL)
2280 return;
2281 memcpy(pabyDataDup, pabyData, nBytes);
2282 VSIFCloseL(VSIFileFromMemBuffer(utf8_path, (GByte*) pabyDataDup, nBytes, TRUE));
2283 }
2284
2285
2286
wrapper_VSIUnlinkBatch(char ** files)2287 bool wrapper_VSIUnlinkBatch(char** files)
2288 {
2289 int* success = VSIUnlinkBatch(files);
2290 if( !success )
2291 return false;
2292 int bRet = true;
2293 for( int i = 0; files && files[i]; i++ )
2294 {
2295 if( !success[i] ) {
2296 bRet = false;
2297 break;
2298 }
2299 }
2300 VSIFree(success);
2301 return bRet;
2302 }
2303
2304
2305 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(bool value)2306 SWIG_From_bool SWIG_PERL_DECL_ARGS_1(bool value)
2307 {
2308 return boolSV(value);
2309 }
2310
2311
wrapper_HasThreadSupport()2312 int wrapper_HasThreadSupport()
2313 {
2314 return strcmp(CPLGetThreadingModel(), "stub") != 0;
2315 }
2316
2317
wrapper_VSIGetSignedURL(const char * utf8_path,char ** options=NULL)2318 retStringAndCPLFree* wrapper_VSIGetSignedURL(const char * utf8_path, char** options = NULL )
2319 {
2320 return VSIGetSignedURL( utf8_path, options );
2321 }
2322
2323
wrapper_VSIFOpenL(const char * utf8_path,const char * pszMode)2324 VSILFILE *wrapper_VSIFOpenL( const char *utf8_path, const char *pszMode )
2325 {
2326 if (!pszMode) /* would lead to segfault */
2327 pszMode = "r";
2328 return VSIFOpenL( utf8_path, pszMode );
2329 }
2330
2331
wrapper_VSIFOpenExL(const char * utf8_path,const char * pszMode,int bSetError=FALSE,char ** options=NULL)2332 VSILFILE *wrapper_VSIFOpenExL( const char *utf8_path, const char *pszMode, int bSetError = FALSE, char** options = NULL )
2333 {
2334 if (!pszMode) /* would lead to segfault */
2335 pszMode = "r";
2336 return VSIFOpenEx2L( utf8_path, pszMode, bSetError, options );
2337 }
2338
2339
2340 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,unsigned long * val)2341 SWIG_AsVal_unsigned_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long *val)
2342 {
2343 if (SvUOK(obj)) {
2344 UV v = SvUV(obj);
2345 if (UVSIZE <= sizeof(*val) || v <= ULONG_MAX) {
2346 if (val) *val = v;
2347 return SWIG_OK;
2348 }
2349 return SWIG_OverflowError;
2350 } else if (SvIOK(obj)) {
2351 IV v = SvIV(obj);
2352 if (v >= 0 && (IVSIZE <= sizeof(*val) || v <= ULONG_MAX)) {
2353 if (val) *val = v;
2354 return SWIG_OK;
2355 }
2356 return SWIG_OverflowError;
2357 } else {
2358 int dispatch = 0;
2359 const char *nptr = SvPV_nolen(obj);
2360 if (nptr) {
2361 char *endptr;
2362 unsigned long v;
2363 errno = 0;
2364 v = strtoul(nptr, &endptr,0);
2365 if (errno == ERANGE) {
2366 errno = 0;
2367 return SWIG_OverflowError;
2368 } else {
2369 if (*endptr == '\0') {
2370 if (val) *val = v;
2371 return SWIG_Str2NumCast(SWIG_OK);
2372 }
2373 }
2374 }
2375 if (!dispatch) {
2376 double d;
2377 int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
2378 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) {
2379 if (val) *val = (unsigned long)(d);
2380 return res;
2381 }
2382 }
2383 }
2384 return SWIG_TypeError;
2385 }
2386
2387
2388 #if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE)
2389 # define SWIG_LONG_LONG_AVAILABLE
2390 #endif
2391
2392
2393 #ifdef SWIG_LONG_LONG_AVAILABLE
2394 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,unsigned long long * val)2395 SWIG_AsVal_unsigned_SS_long_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long long *val)
2396 {
2397 if (SvUOK(obj)) {
2398 /* pretty sure this should be conditional on
2399 * (UVSIZE <= sizeof(*val) || v <= ULLONG_MAX) */
2400 if (val) *val = SvUV(obj);
2401 return SWIG_OK;
2402 } else if (SvIOK(obj)) {
2403 IV v = SvIV(obj);
2404 if (v >= 0 && (IVSIZE <= sizeof(*val) || v <= ULLONG_MAX)) {
2405 if (val) *val = v;
2406 return SWIG_OK;
2407 } else {
2408 return SWIG_OverflowError;
2409 }
2410 } else {
2411 int dispatch = 0;
2412 const char *nptr = SvPV_nolen(obj);
2413 if (nptr) {
2414 char *endptr;
2415 unsigned long long v;
2416 errno = 0;
2417 v = strtoull(nptr, &endptr,0);
2418 if (errno == ERANGE) {
2419 errno = 0;
2420 return SWIG_OverflowError;
2421 } else {
2422 if (*endptr == '\0') {
2423 if (val) *val = v;
2424 return SWIG_Str2NumCast(SWIG_OK);
2425 }
2426 }
2427 }
2428 if (!dispatch) {
2429 const double mant_max = 1LL << DBL_MANT_DIG;
2430 double d;
2431 int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
2432 if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) {
2433 if (val) *val = (unsigned long long)(d);
2434 return res;
2435 }
2436 }
2437 }
2438 return SWIG_TypeError;
2439 }
2440 #endif
2441
2442
2443 SWIGINTERNINLINE int
SWIG_PERL_DECL_ARGS_2(SV * obj,size_t * val)2444 SWIG_AsVal_size_t SWIG_PERL_DECL_ARGS_2(SV * obj, size_t *val)
2445 {
2446 int res = SWIG_TypeError;
2447 #ifdef SWIG_LONG_LONG_AVAILABLE
2448 if (sizeof(size_t) <= sizeof(unsigned long)) {
2449 #endif
2450 unsigned long v;
2451 res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, val ? &v : 0);
2452 if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
2453 #ifdef SWIG_LONG_LONG_AVAILABLE
2454 } else if (sizeof(size_t) <= sizeof(unsigned long long)) {
2455 unsigned long long v;
2456 res = SWIG_AsVal_unsigned_SS_long_SS_long SWIG_PERL_CALL_ARGS_2(obj, val ? &v : 0);
2457 if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
2458 }
2459 #endif
2460 return res;
2461 }
2462
2463
2464 #include <stdio.h>
2465 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM)
2466 # ifndef snprintf
2467 # define snprintf _snprintf
2468 # endif
2469 #endif
2470
2471
2472 #ifdef SWIG_LONG_LONG_AVAILABLE
2473 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(unsigned long long value)2474 SWIG_From_unsigned_SS_long_SS_long SWIG_PERL_DECL_ARGS_1(unsigned long long value)
2475 {
2476 SV *sv;
2477 if (UVSIZE >= sizeof(value) || value <= UV_MAX)
2478 sv = newSVuv((UV)(value));
2479 else {
2480 //sv = newSVpvf("%llu", value); doesn't work in non 64bit Perl
2481 char temp[256];
2482 sprintf(temp, "%llu", value);
2483 sv = newSVpv(temp, 0);
2484 }
2485 return sv_2mortal(sv);
2486 }
2487 #endif
2488
2489
2490 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(size_t value)2491 SWIG_From_size_t SWIG_PERL_DECL_ARGS_1(size_t value)
2492 {
2493 #ifdef SWIG_LONG_LONG_AVAILABLE
2494 if (sizeof(size_t) <= sizeof(unsigned long)) {
2495 #endif
2496 return SWIG_From_unsigned_SS_long SWIG_PERL_CALL_ARGS_1(static_cast< unsigned long >(value));
2497 #ifdef SWIG_LONG_LONG_AVAILABLE
2498 } else {
2499 /* assume sizeof(size_t) <= sizeof(unsigned long long) */
2500 return SWIG_From_unsigned_SS_long_SS_long SWIG_PERL_CALL_ARGS_1(static_cast< unsigned long long >(value));
2501 }
2502 #endif
2503 }
2504
2505
VSIStdoutUnsetRedirection()2506 void VSIStdoutUnsetRedirection()
2507 {
2508 VSIStdoutSetRedirection( fwrite, stdout );
2509 }
2510
GDALMajorObjectShadow_GetDescription(GDALMajorObjectShadow * self)2511 SWIGINTERN char const *GDALMajorObjectShadow_GetDescription(GDALMajorObjectShadow *self){
2512 return GDALGetDescription( self );
2513 }
GDALMajorObjectShadow_SetDescription(GDALMajorObjectShadow * self,char const * pszNewDesc)2514 SWIGINTERN void GDALMajorObjectShadow_SetDescription(GDALMajorObjectShadow *self,char const *pszNewDesc){
2515 GDALSetDescription( self, pszNewDesc );
2516 }
GDALMajorObjectShadow_GetMetadataDomainList(GDALMajorObjectShadow * self)2517 SWIGINTERN char **GDALMajorObjectShadow_GetMetadataDomainList(GDALMajorObjectShadow *self){
2518 return GDALGetMetadataDomainList( self );
2519 }
GDALMajorObjectShadow_GetMetadata_Dict(GDALMajorObjectShadow * self,char const * pszDomain="")2520 SWIGINTERN char **GDALMajorObjectShadow_GetMetadata_Dict(GDALMajorObjectShadow *self,char const *pszDomain=""){
2521 return GDALGetMetadata( self, pszDomain );
2522 }
GDALMajorObjectShadow_SetMetadata__SWIG_0(GDALMajorObjectShadow * self,char ** papszMetadata,char const * pszDomain="")2523 SWIGINTERN CPLErr GDALMajorObjectShadow_SetMetadata__SWIG_0(GDALMajorObjectShadow *self,char **papszMetadata,char const *pszDomain=""){
2524 return GDALSetMetadata( self, papszMetadata, pszDomain );
2525 }
GDALMajorObjectShadow_SetMetadata__SWIG_1(GDALMajorObjectShadow * self,char * pszMetadataString,char const * pszDomain="")2526 SWIGINTERN CPLErr GDALMajorObjectShadow_SetMetadata__SWIG_1(GDALMajorObjectShadow *self,char *pszMetadataString,char const *pszDomain=""){
2527 char *tmpList[2];
2528 tmpList[0] = pszMetadataString;
2529 tmpList[1] = 0;
2530 return GDALSetMetadata( self, tmpList, pszDomain );
2531 }
GDALMajorObjectShadow_GetMetadataItem(GDALMajorObjectShadow * self,char const * pszName,char const * pszDomain="")2532 SWIGINTERN char const *GDALMajorObjectShadow_GetMetadataItem(GDALMajorObjectShadow *self,char const *pszName,char const *pszDomain=""){
2533 return GDALGetMetadataItem( self, pszName, pszDomain);
2534 }
GDALMajorObjectShadow_SetMetadataItem(GDALMajorObjectShadow * self,char const * pszName,char const * pszValue,char const * pszDomain="")2535 SWIGINTERN CPLErr GDALMajorObjectShadow_SetMetadataItem(GDALMajorObjectShadow *self,char const *pszName,char const *pszValue,char const *pszDomain=""){
2536 return GDALSetMetadataItem( self, pszName, pszValue, pszDomain);
2537 }
GDALDriverShadow_Create(GDALDriverShadow * self,char const * utf8_path,int xsize,int ysize,int bands=1,GDALDataType eType=GDT_Byte,char ** options=0)2538 SWIGINTERN GDALDatasetShadow *GDALDriverShadow_Create(GDALDriverShadow *self,char const *utf8_path,int xsize,int ysize,int bands=1,GDALDataType eType=GDT_Byte,char **options=0){
2539
2540 GDALDatasetShadow* ds = (GDALDatasetShadow*) GDALCreate( self,
2541 utf8_path,
2542 xsize,
2543 ysize,
2544 bands,
2545 eType,
2546 options );
2547 return ds;
2548 }
GDALDriverShadow_CreateMultiDimensional(GDALDriverShadow * self,char const * utf8_path,char ** root_group_options=0,char ** options=0)2549 SWIGINTERN GDALDatasetShadow *GDALDriverShadow_CreateMultiDimensional(GDALDriverShadow *self,char const *utf8_path,char **root_group_options=0,char **options=0){
2550
2551 GDALDatasetShadow* ds = (GDALDatasetShadow*) GDALCreateMultiDimensional( self,
2552 utf8_path,
2553 root_group_options,
2554 options );
2555 return ds;
2556 }
GDALDriverShadow_CreateCopy(GDALDriverShadow * self,char const * utf8_path,GDALDatasetShadow * src,int strict=1,char ** options=0,GDALProgressFunc callback=NULL,void * callback_data=NULL)2557 SWIGINTERN GDALDatasetShadow *GDALDriverShadow_CreateCopy(GDALDriverShadow *self,char const *utf8_path,GDALDatasetShadow *src,int strict=1,char **options=0,GDALProgressFunc callback=NULL,void *callback_data=NULL){
2558
2559 GDALDatasetShadow *ds = (GDALDatasetShadow*) GDALCreateCopy( self,
2560 utf8_path,
2561 src,
2562 strict,
2563 options,
2564 callback,
2565 callback_data );
2566 return ds;
2567 }
GDALDriverShadow_Delete(GDALDriverShadow * self,char const * utf8_path)2568 SWIGINTERN CPLErr GDALDriverShadow_Delete(GDALDriverShadow *self,char const *utf8_path){
2569 return GDALDeleteDataset( self, utf8_path );
2570 }
GDALDriverShadow_Rename(GDALDriverShadow * self,char const * newName,char const * oldName)2571 SWIGINTERN CPLErr GDALDriverShadow_Rename(GDALDriverShadow *self,char const *newName,char const *oldName){
2572 return GDALRenameDataset( self, newName, oldName );
2573 }
GDALDriverShadow_CopyFiles(GDALDriverShadow * self,char const * newName,char const * oldName)2574 SWIGINTERN CPLErr GDALDriverShadow_CopyFiles(GDALDriverShadow *self,char const *newName,char const *oldName){
2575 return GDALCopyDatasetFiles( self, newName, oldName );
2576 }
GDALDriverShadow_Register(GDALDriverShadow * self)2577 SWIGINTERN int GDALDriverShadow_Register(GDALDriverShadow *self){
2578 return GDALRegisterDriver( self );
2579 }
GDALDriverShadow_Deregister(GDALDriverShadow * self)2580 SWIGINTERN void GDALDriverShadow_Deregister(GDALDriverShadow *self){
2581 GDALDeregisterDriver( self );
2582 }
2583
GDALDriverShadow_ShortName_get(GDALDriverShadow * h)2584 char const *GDALDriverShadow_ShortName_get( GDALDriverShadow *h ) {
2585 return GDALGetDriverShortName( h );
2586 }
GDALDriverShadow_LongName_get(GDALDriverShadow * h)2587 char const *GDALDriverShadow_LongName_get( GDALDriverShadow *h ) {
2588 return GDALGetDriverLongName( h );
2589 }
GDALDriverShadow_HelpTopic_get(GDALDriverShadow * h)2590 char const *GDALDriverShadow_HelpTopic_get( GDALDriverShadow *h ) {
2591 return GDALGetDriverHelpTopic( h );
2592 }
2593
2594
2595 SWIGINTERNINLINE SV *
SWIG_PERL_DECL_ARGS_1(double value)2596 SWIG_From_double SWIG_PERL_DECL_ARGS_1(double value)
2597 {
2598 return sv_2mortal(newSVnv(value));
2599 }
2600
2601
2602 SWIGINTERNINLINE SV *
SWIG_FromCharPtrAndSize(const char * carray,size_t size)2603 SWIG_FromCharPtrAndSize(const char* carray, size_t size)
2604 {
2605 SV *obj = sv_newmortal();
2606 if (carray) {
2607 sv_setpvn(obj, carray, size);
2608 } else {
2609 sv_setsv(obj, &PL_sv_undef);
2610 }
2611 return obj;
2612 }
2613
2614
2615 SWIGINTERNINLINE SV *
SWIG_FromCharPtr(const char * cptr)2616 SWIG_FromCharPtr(const char *cptr)
2617 {
2618 return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
2619 }
2620
new_GDAL_GCP(double x=0.0,double y=0.0,double z=0.0,double pixel=0.0,double line=0.0,char const * info="",char const * id="")2621 SWIGINTERN GDAL_GCP *new_GDAL_GCP(double x=0.0,double y=0.0,double z=0.0,double pixel=0.0,double line=0.0,char const *info="",char const *id=""){
2622
2623 GDAL_GCP *self = (GDAL_GCP*) CPLMalloc( sizeof( GDAL_GCP ) );
2624 self->dfGCPX = x;
2625 self->dfGCPY = y;
2626 self->dfGCPZ = z;
2627 self->dfGCPPixel = pixel;
2628 self->dfGCPLine = line;
2629 self->pszInfo = CPLStrdup( (info == 0) ? "" : info );
2630 self->pszId = CPLStrdup( (id==0)? "" : id );
2631 return self;
2632 }
delete_GDAL_GCP(GDAL_GCP * self)2633 SWIGINTERN void delete_GDAL_GCP(GDAL_GCP *self){
2634 if ( self->pszInfo )
2635 CPLFree( self->pszInfo );
2636 if ( self->pszId )
2637 CPLFree( self->pszId );
2638 CPLFree( self );
2639 }
2640
2641
GDAL_GCP_GCPX_get(GDAL_GCP * gcp)2642 double GDAL_GCP_GCPX_get( GDAL_GCP *gcp ) {
2643 return gcp->dfGCPX;
2644 }
GDAL_GCP_GCPX_set(GDAL_GCP * gcp,double dfGCPX)2645 void GDAL_GCP_GCPX_set( GDAL_GCP *gcp, double dfGCPX ) {
2646 gcp->dfGCPX = dfGCPX;
2647 }
GDAL_GCP_GCPY_get(GDAL_GCP * gcp)2648 double GDAL_GCP_GCPY_get( GDAL_GCP *gcp ) {
2649 return gcp->dfGCPY;
2650 }
GDAL_GCP_GCPY_set(GDAL_GCP * gcp,double dfGCPY)2651 void GDAL_GCP_GCPY_set( GDAL_GCP *gcp, double dfGCPY ) {
2652 gcp->dfGCPY = dfGCPY;
2653 }
GDAL_GCP_GCPZ_get(GDAL_GCP * gcp)2654 double GDAL_GCP_GCPZ_get( GDAL_GCP *gcp ) {
2655 return gcp->dfGCPZ;
2656 }
GDAL_GCP_GCPZ_set(GDAL_GCP * gcp,double dfGCPZ)2657 void GDAL_GCP_GCPZ_set( GDAL_GCP *gcp, double dfGCPZ ) {
2658 gcp->dfGCPZ = dfGCPZ;
2659 }
GDAL_GCP_GCPPixel_get(GDAL_GCP * gcp)2660 double GDAL_GCP_GCPPixel_get( GDAL_GCP *gcp ) {
2661 return gcp->dfGCPPixel;
2662 }
GDAL_GCP_GCPPixel_set(GDAL_GCP * gcp,double dfGCPPixel)2663 void GDAL_GCP_GCPPixel_set( GDAL_GCP *gcp, double dfGCPPixel ) {
2664 gcp->dfGCPPixel = dfGCPPixel;
2665 }
GDAL_GCP_GCPLine_get(GDAL_GCP * gcp)2666 double GDAL_GCP_GCPLine_get( GDAL_GCP *gcp ) {
2667 return gcp->dfGCPLine;
2668 }
GDAL_GCP_GCPLine_set(GDAL_GCP * gcp,double dfGCPLine)2669 void GDAL_GCP_GCPLine_set( GDAL_GCP *gcp, double dfGCPLine ) {
2670 gcp->dfGCPLine = dfGCPLine;
2671 }
GDAL_GCP_Info_get(GDAL_GCP * gcp)2672 const char * GDAL_GCP_Info_get( GDAL_GCP *gcp ) {
2673 return gcp->pszInfo;
2674 }
GDAL_GCP_Info_set(GDAL_GCP * gcp,const char * pszInfo)2675 void GDAL_GCP_Info_set( GDAL_GCP *gcp, const char * pszInfo ) {
2676 if ( gcp->pszInfo )
2677 CPLFree( gcp->pszInfo );
2678 gcp->pszInfo = CPLStrdup(pszInfo);
2679 }
GDAL_GCP_Id_get(GDAL_GCP * gcp)2680 const char * GDAL_GCP_Id_get( GDAL_GCP *gcp ) {
2681 return gcp->pszId;
2682 }
GDAL_GCP_Id_set(GDAL_GCP * gcp,const char * pszId)2683 void GDAL_GCP_Id_set( GDAL_GCP *gcp, const char * pszId ) {
2684 if ( gcp->pszId )
2685 CPLFree( gcp->pszId );
2686 gcp->pszId = CPLStrdup(pszId);
2687 }
2688
2689
2690 static SV *
CreateArrayFromDoubleArray(double * first,unsigned int size)2691 CreateArrayFromDoubleArray( double *first, unsigned int size ) {
2692 AV *av = (AV*)sv_2mortal((SV*)newAV());
2693 for( unsigned int i=0; i<size; i++ ) {
2694 av_store(av,i,newSVnv(*first));
2695 ++first;
2696 }
2697 return sv_2mortal(newRV((SV*)av));
2698 }
2699
2700
2701 /* Returned size is in bytes or 0 if an error occurred. */
2702 static
ComputeDatasetRasterIOSize(int buf_xsize,int buf_ysize,int nPixelSize,int nBands,int * bandMap,int nBandMapArrayLength,GIntBig nPixelSpace,GIntBig nLineSpace,GIntBig nBandSpace,int bSpacingShouldBeMultipleOfPixelSize)2703 GIntBig ComputeDatasetRasterIOSize (int buf_xsize, int buf_ysize, int nPixelSize,
2704 int nBands, int* bandMap, int nBandMapArrayLength,
2705 GIntBig nPixelSpace, GIntBig nLineSpace, GIntBig nBandSpace,
2706 int bSpacingShouldBeMultipleOfPixelSize )
2707 {
2708 if (buf_xsize <= 0 || buf_ysize <= 0)
2709 {
2710 CPLError(CE_Failure, CPLE_IllegalArg, "Illegal values for buffer size");
2711 return 0;
2712 }
2713
2714 if (nPixelSpace < 0 || nLineSpace < 0 || nBandSpace < 0)
2715 {
2716 CPLError(CE_Failure, CPLE_IllegalArg, "Illegal values for space arguments");
2717 return 0;
2718 }
2719
2720 if (nPixelSize == 0)
2721 {
2722 CPLError(CE_Failure, CPLE_IllegalArg, "Illegal value for data type");
2723 return 0;
2724 }
2725
2726 if( nPixelSpace == 0 )
2727 nPixelSpace = nPixelSize;
2728 else if ( bSpacingShouldBeMultipleOfPixelSize && (nPixelSpace % nPixelSize) != 0 )
2729 {
2730 CPLError(CE_Failure, CPLE_IllegalArg, "nPixelSpace should be a multiple of nPixelSize");
2731 return 0;
2732 }
2733
2734 if( nLineSpace == 0 )
2735 {
2736 nLineSpace = nPixelSpace * buf_xsize;
2737 }
2738 else if ( bSpacingShouldBeMultipleOfPixelSize && (nLineSpace % nPixelSize) != 0 )
2739 {
2740 CPLError(CE_Failure, CPLE_IllegalArg, "nLineSpace should be a multiple of nPixelSize");
2741 return 0;
2742 }
2743
2744 if( nBandSpace == 0 )
2745 {
2746 nBandSpace = nLineSpace * buf_ysize;
2747 }
2748 else if ( bSpacingShouldBeMultipleOfPixelSize && (nBandSpace % nPixelSize) != 0 )
2749 {
2750 CPLError(CE_Failure, CPLE_IllegalArg, "nLineSpace should be a multiple of nPixelSize");
2751 return 0;
2752 }
2753
2754 if (nBands <= 0 || (bandMap != NULL && nBands > nBandMapArrayLength))
2755 {
2756 CPLError(CE_Failure, CPLE_IllegalArg, "Invalid band count");
2757 return 0;
2758 }
2759
2760 GIntBig nRet = (GIntBig)(buf_ysize - 1) * nLineSpace + (GIntBig)(buf_xsize - 1) * nPixelSpace + (GIntBig)(nBands - 1) * nBandSpace + nPixelSize;
2761 #if SIZEOF_VOIDP == 4
2762 if (nRet > INT_MAX)
2763 {
2764 CPLError(CE_Failure, CPLE_IllegalArg, "Integer overflow");
2765 return 0;
2766 }
2767 #endif
2768
2769 return nRet;
2770 }
2771
2772
2773 static
DSReadRaster_internal(GDALDatasetShadow * obj,int xoff,int yoff,int xsize,int ysize,int buf_xsize,int buf_ysize,GDALDataType buf_type,GIntBig * buf_size,char ** buf,int band_list,int * pband_list,GIntBig pixel_space,GIntBig line_space,GIntBig band_space,GDALRasterIOExtraArg * psExtraArg)2774 CPLErr DSReadRaster_internal( GDALDatasetShadow *obj,
2775 int xoff, int yoff, int xsize, int ysize,
2776 int buf_xsize, int buf_ysize,
2777 GDALDataType buf_type,
2778 GIntBig *buf_size, char **buf,
2779 int band_list, int *pband_list,
2780 GIntBig pixel_space, GIntBig line_space, GIntBig band_space,
2781 GDALRasterIOExtraArg* psExtraArg)
2782 {
2783 CPLErr result;
2784
2785 *buf_size = ComputeDatasetRasterIOSize (buf_xsize, buf_ysize, GDALGetDataTypeSize( buf_type ) / 8,
2786 band_list ? band_list : GDALGetRasterCount(obj), pband_list, band_list,
2787 pixel_space, line_space, band_space, FALSE);
2788 if (*buf_size == 0)
2789 {
2790 *buf = 0;
2791 return CE_Failure;
2792 }
2793
2794 *buf = (char*) malloc( *buf_size );
2795 if (*buf)
2796 {
2797 result = GDALDatasetRasterIOEx(obj, GF_Read, xoff, yoff, xsize, ysize,
2798 (void*) *buf, buf_xsize, buf_ysize, buf_type,
2799 band_list, pband_list, pixel_space, line_space, band_space,
2800 psExtraArg );
2801 if ( result != CE_None ) {
2802 free( *buf );
2803 *buf = 0;
2804 *buf_size = 0;
2805 }
2806 }
2807 else
2808 {
2809 CPLError(CE_Failure, CPLE_OutOfMemory, "Not enough memory to allocate " CPL_FRMT_GIB " bytes", *buf_size);
2810 result = CE_Failure;
2811 *buf = 0;
2812 *buf_size = 0;
2813 }
2814 return result;
2815 }
2816
2817
2818 typedef struct
2819 {
2820 GDALAsyncReaderH hAsyncReader;
2821 void *pyObject;
2822 } GDALAsyncReaderWrapper;
2823
2824 typedef void* GDALAsyncReaderWrapperH;
2825
AsyncReaderWrapperGetReader(GDALAsyncReaderWrapperH hWrapper)2826 static GDALAsyncReaderH AsyncReaderWrapperGetReader(GDALAsyncReaderWrapperH hWrapper)
2827 {
2828 GDALAsyncReaderWrapper* psWrapper = (GDALAsyncReaderWrapper*)hWrapper;
2829 if (psWrapper->hAsyncReader == NULL)
2830 {
2831 CPLError(CE_Failure, CPLE_AppDefined, "AsyncReader object is defunct");
2832 }
2833 return psWrapper->hAsyncReader;
2834 }
2835
2836 #if defined(SWIGPYTHON)
AsyncReaderWrapperGetPyObject(GDALAsyncReaderWrapperH hWrapper)2837 static void* AsyncReaderWrapperGetPyObject(GDALAsyncReaderWrapperH hWrapper)
2838 {
2839 GDALAsyncReaderWrapper* psWrapper = (GDALAsyncReaderWrapper*)hWrapper;
2840 return psWrapper->pyObject;
2841 }
2842 #endif
2843
DeleteAsyncReaderWrapper(GDALAsyncReaderWrapperH hWrapper)2844 static void DeleteAsyncReaderWrapper(GDALAsyncReaderWrapperH hWrapper)
2845 {
2846 GDALAsyncReaderWrapper* psWrapper = (GDALAsyncReaderWrapper*)hWrapper;
2847 if (psWrapper->hAsyncReader != NULL)
2848 {
2849 CPLError(CE_Failure, CPLE_AppDefined,
2850 "Native AsyncReader object will leak. EndAsyncReader() should have been called before");
2851 }
2852 CPLFree(psWrapper);
2853 }
2854
2855
delete_GDALAsyncReaderShadow(GDALAsyncReaderShadow * self)2856 SWIGINTERN void delete_GDALAsyncReaderShadow(GDALAsyncReaderShadow *self){
2857 DeleteAsyncReaderWrapper(self);
2858 }
GDALAsyncReaderShadow_GetNextUpdatedRegion(GDALAsyncReaderShadow * self,double timeout,int * xoff,int * yoff,int * buf_xsize,int * buf_ysize)2859 SWIGINTERN GDALAsyncStatusType GDALAsyncReaderShadow_GetNextUpdatedRegion(GDALAsyncReaderShadow *self,double timeout,int *xoff,int *yoff,int *buf_xsize,int *buf_ysize){
2860 GDALAsyncReaderH hReader = AsyncReaderWrapperGetReader(self);
2861 if (hReader == NULL)
2862 {
2863 *xoff = 0;
2864 *yoff = 0;
2865 *buf_xsize = 0;
2866 *buf_ysize = 0;
2867 return GARIO_ERROR;
2868 }
2869 return GDALARGetNextUpdatedRegion(hReader, timeout, xoff, yoff, buf_xsize, buf_ysize );
2870 }
GDALAsyncReaderShadow_LockBuffer(GDALAsyncReaderShadow * self,double timeout)2871 SWIGINTERN int GDALAsyncReaderShadow_LockBuffer(GDALAsyncReaderShadow *self,double timeout){
2872 GDALAsyncReaderH hReader = AsyncReaderWrapperGetReader(self);
2873 if (hReader == NULL)
2874 {
2875 return 0;
2876 }
2877 return GDALARLockBuffer(hReader,timeout);
2878 }
GDALAsyncReaderShadow_UnlockBuffer(GDALAsyncReaderShadow * self)2879 SWIGINTERN void GDALAsyncReaderShadow_UnlockBuffer(GDALAsyncReaderShadow *self){
2880 GDALAsyncReaderH hReader = AsyncReaderWrapperGetReader(self);
2881 if (hReader == NULL)
2882 {
2883 return;
2884 }
2885 GDALARUnlockBuffer(hReader);
2886 }
delete_GDALDatasetShadow(GDALDatasetShadow * self)2887 SWIGINTERN void delete_GDALDatasetShadow(GDALDatasetShadow *self){
2888 if ( GDALDereferenceDataset( self ) <= 0 ) {
2889 GDALClose(self);
2890 }
2891 }
GDALDatasetShadow_GetDriver(GDALDatasetShadow * self)2892 SWIGINTERN GDALDriverShadow *GDALDatasetShadow_GetDriver(GDALDatasetShadow *self){
2893 return (GDALDriverShadow*) GDALGetDatasetDriver( self );
2894 }
GDALDatasetShadow_GetRasterBand(GDALDatasetShadow * self,int nBand)2895 SWIGINTERN GDALRasterBandShadow *GDALDatasetShadow_GetRasterBand(GDALDatasetShadow *self,int nBand){
2896 return (GDALRasterBandShadow*) GDALGetRasterBand( self, nBand );
2897 }
GDALDatasetShadow_GetRootGroup(GDALDatasetShadow * self)2898 SWIGINTERN GDALGroupHS *GDALDatasetShadow_GetRootGroup(GDALDatasetShadow *self){
2899 return GDALDatasetGetRootGroup(self);
2900 }
GDALDatasetShadow_GetProjection(GDALDatasetShadow * self)2901 SWIGINTERN char const *GDALDatasetShadow_GetProjection(GDALDatasetShadow *self){
2902 return GDALGetProjectionRef( self );
2903 }
GDALDatasetShadow_GetProjectionRef(GDALDatasetShadow * self)2904 SWIGINTERN char const *GDALDatasetShadow_GetProjectionRef(GDALDatasetShadow *self){
2905 return GDALGetProjectionRef( self );
2906 }
GDALDatasetShadow_GetSpatialRef(GDALDatasetShadow * self)2907 SWIGINTERN OSRSpatialReferenceShadow *GDALDatasetShadow_GetSpatialRef(GDALDatasetShadow *self){
2908 OGRSpatialReferenceH ref = GDALGetSpatialRef(self);
2909 if( ref )
2910 ref = OSRClone( ref );
2911 return (OSRSpatialReferenceShadow*) ref;
2912 }
GDALDatasetShadow_SetProjection(GDALDatasetShadow * self,char const * prj)2913 SWIGINTERN CPLErr GDALDatasetShadow_SetProjection(GDALDatasetShadow *self,char const *prj){
2914 return GDALSetProjection( self, prj );
2915 }
GDALDatasetShadow_SetSpatialRef(GDALDatasetShadow * self,OSRSpatialReferenceShadow * srs)2916 SWIGINTERN CPLErr GDALDatasetShadow_SetSpatialRef(GDALDatasetShadow *self,OSRSpatialReferenceShadow *srs){
2917 return GDALSetSpatialRef( self, (OGRSpatialReferenceH)srs );
2918 }
GDALDatasetShadow_GetGeoTransform(GDALDatasetShadow * self,double argout[6])2919 SWIGINTERN void GDALDatasetShadow_GetGeoTransform(GDALDatasetShadow *self,double argout[6]){
2920 if ( GDALGetGeoTransform( self, argout ) != CE_None ) {
2921 argout[0] = 0.0;
2922 argout[1] = 1.0;
2923 argout[2] = 0.0;
2924 argout[3] = 0.0;
2925 argout[4] = 0.0;
2926 argout[5] = 1.0;
2927 }
2928 }
GDALDatasetShadow_SetGeoTransform(GDALDatasetShadow * self,double argin[6])2929 SWIGINTERN CPLErr GDALDatasetShadow_SetGeoTransform(GDALDatasetShadow *self,double argin[6]){
2930 return GDALSetGeoTransform( self, argin );
2931 }
GDALDatasetShadow_BuildOverviews(GDALDatasetShadow * self,char const * resampling="NEAREST",int overviewlist=0,int * pOverviews=0,GDALProgressFunc callback=NULL,void * callback_data=NULL)2932 SWIGINTERN int GDALDatasetShadow_BuildOverviews(GDALDatasetShadow *self,char const *resampling="NEAREST",int overviewlist=0,int *pOverviews=0,GDALProgressFunc callback=NULL,void *callback_data=NULL){
2933
2934 return GDALBuildOverviews( self,
2935 resampling ? resampling : "NEAREST",
2936 overviewlist,
2937 pOverviews,
2938 0,
2939 0,
2940 callback,
2941 callback_data);
2942 }
GDALDatasetShadow_GetGCPCount(GDALDatasetShadow * self)2943 SWIGINTERN int GDALDatasetShadow_GetGCPCount(GDALDatasetShadow *self){
2944 return GDALGetGCPCount( self );
2945 }
GDALDatasetShadow_GetGCPProjection(GDALDatasetShadow * self)2946 SWIGINTERN char const *GDALDatasetShadow_GetGCPProjection(GDALDatasetShadow *self){
2947 return GDALGetGCPProjection( self );
2948 }
GDALDatasetShadow_GetGCPSpatialRef(GDALDatasetShadow * self)2949 SWIGINTERN OSRSpatialReferenceShadow *GDALDatasetShadow_GetGCPSpatialRef(GDALDatasetShadow *self){
2950 OGRSpatialReferenceH ref = GDALGetGCPSpatialRef(self);
2951 if( ref )
2952 ref = OSRClone( ref );
2953 return (OSRSpatialReferenceShadow*) ref;
2954 }
GDALDatasetShadow_GetGCPs(GDALDatasetShadow * self,int * nGCPs,GDAL_GCP const ** pGCPs)2955 SWIGINTERN void GDALDatasetShadow_GetGCPs(GDALDatasetShadow *self,int *nGCPs,GDAL_GCP const **pGCPs){
2956 *nGCPs = GDALGetGCPCount( self );
2957 *pGCPs = GDALGetGCPs( self );
2958 }
GDALDatasetShadow_SetGCPs(GDALDatasetShadow * self,int nGCPs,GDAL_GCP const * pGCPs,char const * pszGCPProjection)2959 SWIGINTERN CPLErr GDALDatasetShadow_SetGCPs(GDALDatasetShadow *self,int nGCPs,GDAL_GCP const *pGCPs,char const *pszGCPProjection){
2960 return GDALSetGCPs( self, nGCPs, pGCPs, pszGCPProjection );
2961 }
GDALDatasetShadow_SetGCPs2(GDALDatasetShadow * self,int nGCPs,GDAL_GCP const * pGCPs,OSRSpatialReferenceShadow * hSRS)2962 SWIGINTERN CPLErr GDALDatasetShadow_SetGCPs2(GDALDatasetShadow *self,int nGCPs,GDAL_GCP const *pGCPs,OSRSpatialReferenceShadow *hSRS){
2963 return GDALSetGCPs2( self, nGCPs, pGCPs, (OGRSpatialReferenceH)hSRS );
2964 }
GDALDatasetShadow_FlushCache(GDALDatasetShadow * self)2965 SWIGINTERN void GDALDatasetShadow_FlushCache(GDALDatasetShadow *self){
2966 GDALFlushCache( self );
2967 }
GDALDatasetShadow_AddBand(GDALDatasetShadow * self,GDALDataType datatype=GDT_Byte,char ** options=0)2968 SWIGINTERN CPLErr GDALDatasetShadow_AddBand(GDALDatasetShadow *self,GDALDataType datatype=GDT_Byte,char **options=0){
2969 return GDALAddBand( self, datatype, options );
2970 }
GDALDatasetShadow_CreateMaskBand(GDALDatasetShadow * self,int nFlags)2971 SWIGINTERN CPLErr GDALDatasetShadow_CreateMaskBand(GDALDatasetShadow *self,int nFlags){
2972 return GDALCreateDatasetMaskBand( self, nFlags );
2973 }
GDALDatasetShadow_GetFileList(GDALDatasetShadow * self)2974 SWIGINTERN char **GDALDatasetShadow_GetFileList(GDALDatasetShadow *self){
2975 return GDALGetFileList( self );
2976 }
GDALDatasetShadow_WriteRaster(GDALDatasetShadow * self,int xoff,int yoff,int xsize,int ysize,GIntBig buf_len,char * buf_string,int * buf_xsize=0,int * buf_ysize=0,GDALDataType * buf_type=0,int band_list=0,int * pband_list=0,GIntBig * buf_pixel_space=0,GIntBig * buf_line_space=0,GIntBig * buf_band_space=0)2977 SWIGINTERN CPLErr GDALDatasetShadow_WriteRaster(GDALDatasetShadow *self,int xoff,int yoff,int xsize,int ysize,GIntBig buf_len,char *buf_string,int *buf_xsize=0,int *buf_ysize=0,GDALDataType *buf_type=0,int band_list=0,int *pband_list=0,GIntBig *buf_pixel_space=0,GIntBig *buf_line_space=0,GIntBig *buf_band_space=0){
2978 CPLErr eErr;
2979 int nxsize = (buf_xsize==0) ? xsize : *buf_xsize;
2980 int nysize = (buf_ysize==0) ? ysize : *buf_ysize;
2981 GDALDataType ntype;
2982 if ( buf_type != 0 ) {
2983 ntype = (GDALDataType) *buf_type;
2984 } else {
2985 int lastband = GDALGetRasterCount( self );
2986 if (lastband <= 0)
2987 return CE_Failure;
2988 ntype = GDALGetRasterDataType( GDALGetRasterBand( self, lastband ) );
2989 }
2990
2991 GIntBig pixel_space = (buf_pixel_space == 0) ? 0 : *buf_pixel_space;
2992 GIntBig line_space = (buf_line_space == 0) ? 0 : *buf_line_space;
2993 GIntBig band_space = (buf_band_space == 0) ? 0 : *buf_band_space;
2994
2995 GIntBig min_buffer_size =
2996 ComputeDatasetRasterIOSize (nxsize, nysize, GDALGetDataTypeSize( ntype ) / 8,
2997 band_list ? band_list : GDALGetRasterCount(self), pband_list, band_list,
2998 pixel_space, line_space, band_space, FALSE);
2999 if (min_buffer_size == 0)
3000 return CE_Failure;
3001
3002 if ( buf_len < min_buffer_size )
3003 {
3004 CPLError(CE_Failure, CPLE_AppDefined, "Buffer too small");
3005 return CE_Failure;
3006 }
3007
3008 GDALRasterIOExtraArg* psExtraArg = NULL;
3009
3010 eErr = GDALDatasetRasterIOEx( self, GF_Write, xoff, yoff, xsize, ysize,
3011 (void*) buf_string, nxsize, nysize, ntype,
3012 band_list, pband_list, pixel_space, line_space, band_space, psExtraArg );
3013
3014 return eErr;
3015 }
GDALDatasetShadow_ReadRaster(GDALDatasetShadow * self,int xoff,int yoff,int xsize,int ysize,GIntBig * buf_len,char ** buf,int * buf_xsize=0,int * buf_ysize=0,GDALDataType * buf_type=0,int band_list=0,int * pband_list=0,GIntBig * buf_pixel_space=0,GIntBig * buf_line_space=0,GIntBig * buf_band_space=0,GDALRIOResampleAlg resample_alg=GRIORA_NearestNeighbour,GDALProgressFunc callback=NULL,void * callback_data=NULL)3016 SWIGINTERN CPLErr GDALDatasetShadow_ReadRaster(GDALDatasetShadow *self,int xoff,int yoff,int xsize,int ysize,GIntBig *buf_len,char **buf,int *buf_xsize=0,int *buf_ysize=0,GDALDataType *buf_type=0,int band_list=0,int *pband_list=0,GIntBig *buf_pixel_space=0,GIntBig *buf_line_space=0,GIntBig *buf_band_space=0,GDALRIOResampleAlg resample_alg=GRIORA_NearestNeighbour,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3017 CPLErr eErr;
3018 int nxsize = (buf_xsize==0) ? xsize : *buf_xsize;
3019 int nysize = (buf_ysize==0) ? ysize : *buf_ysize;
3020 GDALDataType ntype;
3021 if ( buf_type != 0 ) {
3022 ntype = (GDALDataType) *buf_type;
3023 } else {
3024 int lastband = GDALGetRasterCount( self );
3025 if (lastband <= 0)
3026 return CE_Failure;
3027 ntype = GDALGetRasterDataType( GDALGetRasterBand( self, lastband ) );
3028 }
3029
3030 GDALRasterIOExtraArg sExtraArg;
3031 INIT_RASTERIO_EXTRA_ARG(sExtraArg);
3032 sExtraArg.eResampleAlg = resample_alg;
3033 sExtraArg.pfnProgress = callback;
3034 sExtraArg.pProgressData = callback_data;
3035
3036 GIntBig pixel_space = (buf_pixel_space == 0) ? 0 : *buf_pixel_space;
3037 GIntBig line_space = (buf_line_space == 0) ? 0 : *buf_line_space;
3038 GIntBig band_space = (buf_band_space == 0) ? 0 : *buf_band_space;
3039
3040 eErr = DSReadRaster_internal( self, xoff, yoff, xsize, ysize,
3041 nxsize, nysize, ntype,
3042 buf_len, buf,
3043 band_list, pband_list,
3044 pixel_space, line_space, band_space, &sExtraArg);
3045
3046 return eErr;
3047 }
GDALDatasetShadow_AdviseRead(GDALDatasetShadow * self,int xoff,int yoff,int xsize,int ysize,int * buf_xsize=0,int * buf_ysize=0,GDALDataType * buf_type=0,int band_list=0,int * pband_list=0,char ** options=NULL)3048 SWIGINTERN CPLErr GDALDatasetShadow_AdviseRead(GDALDatasetShadow *self,int xoff,int yoff,int xsize,int ysize,int *buf_xsize=0,int *buf_ysize=0,GDALDataType *buf_type=0,int band_list=0,int *pband_list=0,char **options=NULL){
3049 int nxsize = (buf_xsize==0) ? xsize : *buf_xsize;
3050 int nysize = (buf_ysize==0) ? ysize : *buf_ysize;
3051 GDALDataType ntype;
3052 if ( buf_type != 0 ) {
3053 ntype = (GDALDataType) *buf_type;
3054 } else {
3055 int lastband = GDALGetRasterCount( self );
3056 if (lastband <= 0)
3057 return CE_Failure;
3058 ntype = GDALGetRasterDataType( GDALGetRasterBand( self, lastband ) );
3059 }
3060 return GDALDatasetAdviseRead(self, xoff, yoff, xsize, ysize,
3061 nxsize, nysize, ntype,
3062 band_list, pband_list, options);
3063 }
GDALDatasetShadow_CreateLayer(GDALDatasetShadow * self,char const * name,OSRSpatialReferenceShadow * srs=NULL,OGRwkbGeometryType geom_type=wkbUnknown,char ** options=0)3064 SWIGINTERN OGRLayerShadow *GDALDatasetShadow_CreateLayer(GDALDatasetShadow *self,char const *name,OSRSpatialReferenceShadow *srs=NULL,OGRwkbGeometryType geom_type=wkbUnknown,char **options=0){
3065 OGRLayerShadow* layer = (OGRLayerShadow*) GDALDatasetCreateLayer( self,
3066 name,
3067 srs,
3068 geom_type,
3069 options);
3070 return layer;
3071 }
GDALDatasetShadow_CopyLayer(GDALDatasetShadow * self,OGRLayerShadow * src_layer,char const * new_name,char ** options=0)3072 SWIGINTERN OGRLayerShadow *GDALDatasetShadow_CopyLayer(GDALDatasetShadow *self,OGRLayerShadow *src_layer,char const *new_name,char **options=0){
3073 OGRLayerShadow* layer = (OGRLayerShadow*) GDALDatasetCopyLayer( self,
3074 src_layer,
3075 new_name,
3076 options);
3077 return layer;
3078 }
GDALDatasetShadow_DeleteLayer(GDALDatasetShadow * self,int index)3079 SWIGINTERN OGRErr GDALDatasetShadow_DeleteLayer(GDALDatasetShadow *self,int index){
3080 return GDALDatasetDeleteLayer(self, index);
3081 }
3082
3083
3084 #include "ogr_core.h"
3085 static char const *
OGRErrMessages(int rc)3086 OGRErrMessages( int rc ) {
3087 switch( rc ) {
3088 case OGRERR_NONE:
3089 return "OGR Error: None";
3090 case OGRERR_NOT_ENOUGH_DATA:
3091 return "OGR Error: Not enough data to deserialize";
3092 case OGRERR_NOT_ENOUGH_MEMORY:
3093 return "OGR Error: Not enough memory";
3094 case OGRERR_UNSUPPORTED_GEOMETRY_TYPE:
3095 return "OGR Error: Unsupported geometry type";
3096 case OGRERR_UNSUPPORTED_OPERATION:
3097 return "OGR Error: Unsupported operation";
3098 case OGRERR_CORRUPT_DATA:
3099 return "OGR Error: Corrupt data";
3100 case OGRERR_FAILURE:
3101 return "OGR Error: General Error";
3102 case OGRERR_UNSUPPORTED_SRS:
3103 return "OGR Error: Unsupported SRS";
3104 case OGRERR_INVALID_HANDLE:
3105 return "OGR Error: Invalid handle";
3106 case OGRERR_NON_EXISTING_FEATURE:
3107 return "OGR Error: Non existing feature";
3108 default:
3109 return "OGR Error: Unknown";
3110 }
3111 }
3112
GDALDatasetShadow_GetLayerCount(GDALDatasetShadow * self)3113 SWIGINTERN int GDALDatasetShadow_GetLayerCount(GDALDatasetShadow *self){
3114 return GDALDatasetGetLayerCount(self);
3115 }
GDALDatasetShadow_GetLayerByIndex(GDALDatasetShadow * self,int index=0)3116 SWIGINTERN OGRLayerShadow *GDALDatasetShadow_GetLayerByIndex(GDALDatasetShadow *self,int index=0){
3117
3118 OGRLayerShadow* layer = (OGRLayerShadow*) GDALDatasetGetLayer(self, index);
3119 return layer;
3120 }
GDALDatasetShadow_GetLayerByName(GDALDatasetShadow * self,char const * layer_name)3121 SWIGINTERN OGRLayerShadow *GDALDatasetShadow_GetLayerByName(GDALDatasetShadow *self,char const *layer_name){
3122 OGRLayerShadow* layer = (OGRLayerShadow*) GDALDatasetGetLayerByName(self, layer_name);
3123 return layer;
3124 }
GDALDatasetShadow_ResetReading(GDALDatasetShadow * self)3125 SWIGINTERN void GDALDatasetShadow_ResetReading(GDALDatasetShadow *self){
3126 GDALDatasetResetReading( self );
3127 }
GDALDatasetShadow_GetNextFeature(GDALDatasetShadow * self)3128 SWIGINTERN OGRFeatureShadow *GDALDatasetShadow_GetNextFeature(GDALDatasetShadow *self){
3129 return GDALDatasetGetNextFeature( self, NULL, NULL, NULL, NULL );
3130 }
GDALDatasetShadow_TestCapability(GDALDatasetShadow * self,char const * cap)3131 SWIGINTERN bool GDALDatasetShadow_TestCapability(GDALDatasetShadow *self,char const *cap){
3132 return (GDALDatasetTestCapability(self, cap) > 0);
3133 }
GDALDatasetShadow_ExecuteSQL(GDALDatasetShadow * self,char const * statement,OGRGeometryShadow * spatialFilter=NULL,char const * dialect="")3134 SWIGINTERN OGRLayerShadow *GDALDatasetShadow_ExecuteSQL(GDALDatasetShadow *self,char const *statement,OGRGeometryShadow *spatialFilter=NULL,char const *dialect=""){
3135 OGRLayerShadow* layer = (OGRLayerShadow*) GDALDatasetExecuteSQL(self,
3136 statement,
3137 spatialFilter,
3138 dialect);
3139 return layer;
3140 }
GDALDatasetShadow_ReleaseResultSet(GDALDatasetShadow * self,OGRLayerShadow * layer)3141 SWIGINTERN void GDALDatasetShadow_ReleaseResultSet(GDALDatasetShadow *self,OGRLayerShadow *layer){
3142 GDALDatasetReleaseResultSet(self, layer);
3143 }
GDALDatasetShadow_GetStyleTable(GDALDatasetShadow * self)3144 SWIGINTERN OGRStyleTableShadow *GDALDatasetShadow_GetStyleTable(GDALDatasetShadow *self){
3145 return (OGRStyleTableShadow*) GDALDatasetGetStyleTable(self);
3146 }
GDALDatasetShadow_SetStyleTable(GDALDatasetShadow * self,OGRStyleTableShadow * table)3147 SWIGINTERN void GDALDatasetShadow_SetStyleTable(GDALDatasetShadow *self,OGRStyleTableShadow *table){
3148 if( table != NULL )
3149 GDALDatasetSetStyleTable(self, (OGRStyleTableH) table);
3150 }
GDALDatasetShadow_AbortSQL(GDALDatasetShadow * self)3151 SWIGINTERN OGRErr GDALDatasetShadow_AbortSQL(GDALDatasetShadow *self){
3152 return GDALDatasetAbortSQL(self);
3153 }
GDALDatasetShadow_StartTransaction(GDALDatasetShadow * self,int force=FALSE)3154 SWIGINTERN OGRErr GDALDatasetShadow_StartTransaction(GDALDatasetShadow *self,int force=FALSE){
3155 return GDALDatasetStartTransaction(self, force);
3156 }
GDALDatasetShadow_CommitTransaction(GDALDatasetShadow * self)3157 SWIGINTERN OGRErr GDALDatasetShadow_CommitTransaction(GDALDatasetShadow *self){
3158 return GDALDatasetCommitTransaction(self);
3159 }
GDALDatasetShadow_RollbackTransaction(GDALDatasetShadow * self)3160 SWIGINTERN OGRErr GDALDatasetShadow_RollbackTransaction(GDALDatasetShadow *self){
3161 return GDALDatasetRollbackTransaction(self);
3162 }
GDALDatasetShadow_ClearStatistics(GDALDatasetShadow * self)3163 SWIGINTERN void GDALDatasetShadow_ClearStatistics(GDALDatasetShadow *self){
3164 GDALDatasetClearStatistics(self);
3165 }
GDALDatasetShadow_GetFieldDomain(GDALDatasetShadow * self,char const * name)3166 SWIGINTERN OGRFieldDomainShadow *GDALDatasetShadow_GetFieldDomain(GDALDatasetShadow *self,char const *name){
3167 return (OGRFieldDomainShadow*) GDALDatasetGetFieldDomain(self, name);
3168 }
GDALDatasetShadow_AddFieldDomain(GDALDatasetShadow * self,OGRFieldDomainShadow * fieldDomain)3169 SWIGINTERN bool GDALDatasetShadow_AddFieldDomain(GDALDatasetShadow *self,OGRFieldDomainShadow *fieldDomain){
3170 return GDALDatasetAddFieldDomain(self, (OGRFieldDomainH)fieldDomain, NULL);
3171 }
3172
GDALDatasetShadow_RasterXSize_get(GDALDatasetShadow * h)3173 int GDALDatasetShadow_RasterXSize_get( GDALDatasetShadow *h ) {
3174 return GDALGetRasterXSize( h );
3175 }
GDALDatasetShadow_RasterYSize_get(GDALDatasetShadow * h)3176 int GDALDatasetShadow_RasterYSize_get( GDALDatasetShadow *h ) {
3177 return GDALGetRasterYSize( h );
3178 }
GDALDatasetShadow_RasterCount_get(GDALDatasetShadow * h)3179 int GDALDatasetShadow_RasterCount_get( GDALDatasetShadow *h ) {
3180 return GDALGetRasterCount( h );
3181 }
3182
delete_GDALGroupHS(GDALGroupHS * self)3183 SWIGINTERN void delete_GDALGroupHS(GDALGroupHS *self){
3184 GDALGroupRelease(self);
3185 }
GDALGroupHS_GetName(GDALGroupHS * self)3186 SWIGINTERN char const *GDALGroupHS_GetName(GDALGroupHS *self){
3187 return GDALGroupGetName(self);
3188 }
GDALGroupHS_GetFullName(GDALGroupHS * self)3189 SWIGINTERN char const *GDALGroupHS_GetFullName(GDALGroupHS *self){
3190 return GDALGroupGetFullName(self);
3191 }
GDALGroupHS_GetMDArrayNames(GDALGroupHS * self,char ** options=0)3192 SWIGINTERN char **GDALGroupHS_GetMDArrayNames(GDALGroupHS *self,char **options=0){
3193 return GDALGroupGetMDArrayNames( self, options );
3194 }
GDALGroupHS_OpenMDArray(GDALGroupHS * self,char const * name,char ** options=0)3195 SWIGINTERN GDALMDArrayHS *GDALGroupHS_OpenMDArray(GDALGroupHS *self,char const *name,char **options=0){
3196 return GDALGroupOpenMDArray(self, name, options);
3197 }
GDALGroupHS_OpenMDArrayFromFullname(GDALGroupHS * self,char const * name,char ** options=0)3198 SWIGINTERN GDALMDArrayHS *GDALGroupHS_OpenMDArrayFromFullname(GDALGroupHS *self,char const *name,char **options=0){
3199 return GDALGroupOpenMDArrayFromFullname(self, name, options);
3200 }
GDALGroupHS_ResolveMDArray(GDALGroupHS * self,char const * name,char const * starting_point,char ** options=0)3201 SWIGINTERN GDALMDArrayHS *GDALGroupHS_ResolveMDArray(GDALGroupHS *self,char const *name,char const *starting_point,char **options=0){
3202 return GDALGroupResolveMDArray(self, name, starting_point, options);
3203 }
GDALGroupHS_GetGroupNames(GDALGroupHS * self,char ** options=0)3204 SWIGINTERN char **GDALGroupHS_GetGroupNames(GDALGroupHS *self,char **options=0){
3205 return GDALGroupGetGroupNames( self, options );
3206 }
GDALGroupHS_OpenGroup(GDALGroupHS * self,char const * name,char ** options=0)3207 SWIGINTERN GDALGroupHS *GDALGroupHS_OpenGroup(GDALGroupHS *self,char const *name,char **options=0){
3208 return GDALGroupOpenGroup(self, name, options);
3209 }
GDALGroupHS_OpenGroupFromFullname(GDALGroupHS * self,char const * name,char ** options=0)3210 SWIGINTERN GDALGroupHS *GDALGroupHS_OpenGroupFromFullname(GDALGroupHS *self,char const *name,char **options=0){
3211 return GDALGroupOpenGroupFromFullname(self, name, options);
3212 }
GDALGroupHS_GetAttribute(GDALGroupHS * self,char const * name)3213 SWIGINTERN GDALAttributeHS *GDALGroupHS_GetAttribute(GDALGroupHS *self,char const *name){
3214 return GDALGroupGetAttribute(self, name);
3215 }
GDALGroupHS_GetStructuralInfo(GDALGroupHS * self)3216 SWIGINTERN char **GDALGroupHS_GetStructuralInfo(GDALGroupHS *self){
3217 return GDALGroupGetStructuralInfo( self );
3218 }
GDALGroupHS_CreateGroup(GDALGroupHS * self,char const * name,char ** options=0)3219 SWIGINTERN GDALGroupHS *GDALGroupHS_CreateGroup(GDALGroupHS *self,char const *name,char **options=0){
3220 return GDALGroupCreateGroup(self, name, options);
3221 }
GDALGroupHS_CreateDimension(GDALGroupHS * self,char const * name,char const * type,char const * direction,unsigned long long size,char ** options=0)3222 SWIGINTERN GDALDimensionHS *GDALGroupHS_CreateDimension(GDALGroupHS *self,char const *name,char const *type,char const *direction,unsigned long long size,char **options=0){
3223 return GDALGroupCreateDimension(self, name, type, direction, size, options);
3224 }
GDALGroupHS_CreateAttribute(GDALGroupHS * self,char const * name,int nDimensions,GUIntBig * dimensions,GDALExtendedDataTypeHS * data_type,char ** options=0)3225 SWIGINTERN GDALAttributeHS *GDALGroupHS_CreateAttribute(GDALGroupHS *self,char const *name,int nDimensions,GUIntBig *dimensions,GDALExtendedDataTypeHS *data_type,char **options=0){
3226 return GDALGroupCreateAttribute(self, name, nDimensions,
3227 (const GUInt64*)dimensions,
3228 data_type, options);
3229 }
3230
3231 typedef struct
3232 {
3233 double min;
3234 double max;
3235 double mean;
3236 double std_dev;
3237 GIntBig valid_count;
3238 } Statistics;
3239
delete_Statistics(Statistics * self)3240 SWIGINTERN void delete_Statistics(Statistics *self){
3241 CPLFree(self);
3242 }
3243
3244 #include <limits>
3245
CheckNumericDataType(GDALExtendedDataTypeHS * dt)3246 static bool CheckNumericDataType(GDALExtendedDataTypeHS* dt)
3247 {
3248 GDALExtendedDataTypeClass klass = GDALExtendedDataTypeGetClass(dt);
3249 if( klass == GEDTC_NUMERIC )
3250 return true;
3251 if( klass == GEDTC_STRING )
3252 return false;
3253 CPLAssert( klass == GEDTC_COMPOUND );
3254 size_t nCount = 0;
3255 GDALEDTComponentH* comps = GDALExtendedDataTypeGetComponents(dt, &nCount);
3256 bool ret = true;
3257 for( size_t i = 0; i < nCount; i++ )
3258 {
3259 GDALExtendedDataTypeH tmpType = GDALEDTComponentGetType(comps[i]);
3260 ret = CheckNumericDataType(tmpType);
3261 GDALExtendedDataTypeRelease(tmpType);
3262 if( !ret )
3263 break;
3264 }
3265 GDALExtendedDataTypeFreeComponents(comps, nCount);
3266 return ret;
3267 }
3268
MDArrayReadWriteCheckArguments(GDALMDArrayHS * array,bool bCheckOnlyDims,int nDims1,GUIntBig * array_start_idx,int nDims2,GUIntBig * count,int nDims3,GIntBig * array_step,int nDims4,GIntBig * buffer_stride,GDALExtendedDataTypeHS * buffer_datatype,size_t * pnBufferSize)3269 static CPLErr MDArrayReadWriteCheckArguments(GDALMDArrayHS* array,
3270 bool bCheckOnlyDims,
3271 int nDims1, GUIntBig* array_start_idx,
3272 int nDims2, GUIntBig* count,
3273 int nDims3, GIntBig* array_step,
3274 int nDims4, GIntBig* buffer_stride,
3275 GDALExtendedDataTypeHS* buffer_datatype,
3276 size_t* pnBufferSize)
3277 {
3278 const int nExpectedDims = (int)GDALMDArrayGetDimensionCount(array);
3279 if( nDims1 != nExpectedDims )
3280 {
3281 CPLError(CE_Failure, CPLE_AppDefined,
3282 "Wrong number of values in array_start_idx");
3283 return CE_Failure;
3284 }
3285 if( nDims2 != nExpectedDims )
3286 {
3287 CPLError(CE_Failure, CPLE_AppDefined,
3288 "Wrong number of values in count");
3289 return CE_Failure;
3290 }
3291 if( nDims3 != nExpectedDims )
3292 {
3293 CPLError(CE_Failure, CPLE_AppDefined,
3294 "Wrong number of values in array_step");
3295 return CE_Failure;
3296 }
3297 if( nDims4!= nExpectedDims )
3298 {
3299 CPLError(CE_Failure, CPLE_AppDefined,
3300 "Wrong number of values in buffer_stride");
3301 return CE_Failure;
3302 }
3303 if( bCheckOnlyDims )
3304 return CE_None;
3305 if( !CheckNumericDataType(buffer_datatype) )
3306 {
3307 CPLError(CE_Failure, CPLE_NotSupported,
3308 "non-numeric buffer data type not supported in SWIG bindings");
3309 return CE_Failure;
3310 }
3311 GIntBig nBufferSize = 0;
3312 for( int i = 0; i < nExpectedDims; i++ )
3313 {
3314 if( count[i] == 0 )
3315 {
3316 CPLError(CE_Failure, CPLE_AppDefined,
3317 "count[%d] = 0 is invalid", i);
3318 return CE_Failure;
3319 }
3320 if( buffer_stride[i] < 0 )
3321 {
3322 CPLError(CE_Failure, CPLE_NotSupported,
3323 "Negative value in buffer_stride not supported in SWIG bindings");
3324 return CE_Failure;
3325 }
3326 if( count[i] > 1 && buffer_stride[i] != 0 )
3327 {
3328 if( (GUIntBig)buffer_stride[i] > std::numeric_limits<GIntBig>::max() / (count[i] - 1) )
3329 {
3330 CPLError(CE_Failure, CPLE_AppDefined, "Integer overflow");
3331 return CE_Failure;
3332 }
3333 GIntBig nDelta = buffer_stride[i] * (count[i] - 1);
3334 if( nBufferSize > std::numeric_limits<GIntBig>::max() - nDelta )
3335 {
3336 CPLError(CE_Failure, CPLE_AppDefined, "Integer overflow");
3337 return CE_Failure;
3338 }
3339 nBufferSize += nDelta;
3340 }
3341 }
3342 const size_t nDTSize = GDALExtendedDataTypeGetSize(buffer_datatype);
3343 if( nDTSize == 0 )
3344 {
3345 CPLError(CE_Failure, CPLE_AppDefined, "nDTSize == 0");
3346 return CE_Failure;
3347 }
3348 if( (GUIntBig)nBufferSize > (GUIntBig)std::numeric_limits<GIntBig>::max() / nDTSize )
3349 {
3350 CPLError(CE_Failure, CPLE_AppDefined, "Integer overflow");
3351 return CE_Failure;
3352 }
3353 nBufferSize *= nDTSize;
3354 if( (GUIntBig)nBufferSize > (GUIntBig)std::numeric_limits<GIntBig>::max() - nDTSize )
3355 {
3356 CPLError(CE_Failure, CPLE_AppDefined, "Integer overflow");
3357 return CE_Failure;
3358 }
3359 nBufferSize += nDTSize;
3360
3361 #if SIZEOF_VOIDP == 4
3362 if( nBufferSize > INT_MAX )
3363 {
3364 CPLError(CE_Failure, CPLE_IllegalArg, "Integer overflow");
3365 return CE_Failure;
3366 }
3367 #endif
3368 *pnBufferSize = (size_t)nBufferSize;
3369 return CE_None;
3370 }
3371
delete_GDALMDArrayHS(GDALMDArrayHS * self)3372 SWIGINTERN void delete_GDALMDArrayHS(GDALMDArrayHS *self){
3373 GDALMDArrayRelease(self);
3374 }
GDALMDArrayHS_GetName(GDALMDArrayHS * self)3375 SWIGINTERN char const *GDALMDArrayHS_GetName(GDALMDArrayHS *self){
3376 return GDALMDArrayGetName(self);
3377 }
GDALMDArrayHS_GetFullName(GDALMDArrayHS * self)3378 SWIGINTERN char const *GDALMDArrayHS_GetFullName(GDALMDArrayHS *self){
3379 return GDALMDArrayGetFullName(self);
3380 }
GDALMDArrayHS_GetTotalElementsCount(GDALMDArrayHS * self)3381 SWIGINTERN unsigned long long GDALMDArrayHS_GetTotalElementsCount(GDALMDArrayHS *self){
3382 return GDALMDArrayGetTotalElementsCount(self);
3383 }
GDALMDArrayHS_GetDimensionCount(GDALMDArrayHS * self)3384 SWIGINTERN size_t GDALMDArrayHS_GetDimensionCount(GDALMDArrayHS *self){
3385 return GDALMDArrayGetDimensionCount(self);
3386 }
GDALMDArrayHS_GetDataType(GDALMDArrayHS * self)3387 SWIGINTERN GDALExtendedDataTypeHS *GDALMDArrayHS_GetDataType(GDALMDArrayHS *self){
3388 return GDALMDArrayGetDataType(self);
3389 }
GDALMDArrayHS_GetStructuralInfo(GDALMDArrayHS * self)3390 SWIGINTERN char **GDALMDArrayHS_GetStructuralInfo(GDALMDArrayHS *self){
3391 return GDALMDArrayGetStructuralInfo( self );
3392 }
GDALMDArrayHS_GetAttribute(GDALMDArrayHS * self,char const * name)3393 SWIGINTERN GDALAttributeHS *GDALMDArrayHS_GetAttribute(GDALMDArrayHS *self,char const *name){
3394 return GDALMDArrayGetAttribute(self, name);
3395 }
GDALMDArrayHS_CreateAttribute(GDALMDArrayHS * self,char const * name,int nDimensions,GUIntBig * dimensions,GDALExtendedDataTypeHS * data_type,char ** options=0)3396 SWIGINTERN GDALAttributeHS *GDALMDArrayHS_CreateAttribute(GDALMDArrayHS *self,char const *name,int nDimensions,GUIntBig *dimensions,GDALExtendedDataTypeHS *data_type,char **options=0){
3397 return GDALMDArrayCreateAttribute(self, name, nDimensions,
3398 (const GUInt64*)dimensions,
3399 data_type, options);
3400 }
GDALMDArrayHS_GetNoDataValueAsDouble(GDALMDArrayHS * self,double * val,int * hasval)3401 SWIGINTERN void GDALMDArrayHS_GetNoDataValueAsDouble(GDALMDArrayHS *self,double *val,int *hasval){
3402 *val = GDALMDArrayGetNoDataValueAsDouble( self, hasval );
3403 }
GDALMDArrayHS_SetNoDataValueDouble(GDALMDArrayHS * self,double d)3404 SWIGINTERN CPLErr GDALMDArrayHS_SetNoDataValueDouble(GDALMDArrayHS *self,double d){
3405 return GDALMDArraySetNoDataValueAsDouble( self, d ) ? CE_None : CE_Failure;
3406 }
GDALMDArrayHS_DeleteNoDataValue(GDALMDArrayHS * self)3407 SWIGINTERN CPLErr GDALMDArrayHS_DeleteNoDataValue(GDALMDArrayHS *self){
3408 return GDALMDArraySetRawNoDataValue( self, NULL ) ? CE_None : CE_Failure;
3409 }
GDALMDArrayHS_GetOffset(GDALMDArrayHS * self,double * val,int * hasval)3410 SWIGINTERN void GDALMDArrayHS_GetOffset(GDALMDArrayHS *self,double *val,int *hasval){
3411 *val = GDALMDArrayGetOffset( self, hasval );
3412 }
GDALMDArrayHS_GetOffsetStorageType(GDALMDArrayHS * self)3413 SWIGINTERN GDALDataType GDALMDArrayHS_GetOffsetStorageType(GDALMDArrayHS *self){
3414 GDALDataType eDT = GDT_Unknown;
3415 int hasval = FALSE;
3416 GDALMDArrayGetOffsetEx( self, &hasval, &eDT );
3417 return hasval ? eDT : GDT_Unknown;
3418 }
GDALMDArrayHS_GetScale(GDALMDArrayHS * self,double * val,int * hasval)3419 SWIGINTERN void GDALMDArrayHS_GetScale(GDALMDArrayHS *self,double *val,int *hasval){
3420 *val = GDALMDArrayGetScale( self, hasval );
3421 }
GDALMDArrayHS_GetScaleStorageType(GDALMDArrayHS * self)3422 SWIGINTERN GDALDataType GDALMDArrayHS_GetScaleStorageType(GDALMDArrayHS *self){
3423 GDALDataType eDT = GDT_Unknown;
3424 int hasval = FALSE;
3425 GDALMDArrayGetScaleEx( self, &hasval, &eDT );
3426 return hasval ? eDT : GDT_Unknown;
3427 }
GDALMDArrayHS_SetOffset(GDALMDArrayHS * self,double val,GDALDataType storageType=GDT_Unknown)3428 SWIGINTERN CPLErr GDALMDArrayHS_SetOffset(GDALMDArrayHS *self,double val,GDALDataType storageType=GDT_Unknown){
3429 return GDALMDArraySetOffsetEx( self, val, storageType ) ? CE_None : CE_Failure;
3430 }
GDALMDArrayHS_SetScale(GDALMDArrayHS * self,double val,GDALDataType storageType=GDT_Unknown)3431 SWIGINTERN CPLErr GDALMDArrayHS_SetScale(GDALMDArrayHS *self,double val,GDALDataType storageType=GDT_Unknown){
3432 return GDALMDArraySetScaleEx( self, val, storageType ) ? CE_None : CE_Failure;
3433 }
GDALMDArrayHS_SetUnit(GDALMDArrayHS * self,char const * unit)3434 SWIGINTERN CPLErr GDALMDArrayHS_SetUnit(GDALMDArrayHS *self,char const *unit){
3435 return GDALMDArraySetUnit(self, unit) ? CE_None : CE_Failure;
3436 }
GDALMDArrayHS_GetUnit(GDALMDArrayHS * self)3437 SWIGINTERN char const *GDALMDArrayHS_GetUnit(GDALMDArrayHS *self){
3438 return GDALMDArrayGetUnit(self);
3439 }
GDALMDArrayHS_SetSpatialRef(GDALMDArrayHS * self,OSRSpatialReferenceShadow * srs)3440 SWIGINTERN OGRErr GDALMDArrayHS_SetSpatialRef(GDALMDArrayHS *self,OSRSpatialReferenceShadow *srs){
3441 return GDALMDArraySetSpatialRef( self, (OGRSpatialReferenceH)srs ) ? CE_None : CE_Failure;
3442 }
GDALMDArrayHS_GetSpatialRef(GDALMDArrayHS * self)3443 SWIGINTERN OSRSpatialReferenceShadow *GDALMDArrayHS_GetSpatialRef(GDALMDArrayHS *self){
3444 return GDALMDArrayGetSpatialRef(self);
3445 }
GDALMDArrayHS_GetView(GDALMDArrayHS * self,char const * viewExpr)3446 SWIGINTERN GDALMDArrayHS *GDALMDArrayHS_GetView(GDALMDArrayHS *self,char const *viewExpr){
3447 return GDALMDArrayGetView(self, viewExpr);
3448 }
GDALMDArrayHS_Transpose(GDALMDArrayHS * self,int nList,int * pList)3449 SWIGINTERN GDALMDArrayHS *GDALMDArrayHS_Transpose(GDALMDArrayHS *self,int nList,int *pList){
3450 return GDALMDArrayTranspose(self, nList, pList);
3451 }
GDALMDArrayHS_GetUnscaled(GDALMDArrayHS * self)3452 SWIGINTERN GDALMDArrayHS *GDALMDArrayHS_GetUnscaled(GDALMDArrayHS *self){
3453 return GDALMDArrayGetUnscaled(self);
3454 }
GDALMDArrayHS_GetMask(GDALMDArrayHS * self,char ** options=0)3455 SWIGINTERN GDALMDArrayHS *GDALMDArrayHS_GetMask(GDALMDArrayHS *self,char **options=0){
3456 return GDALMDArrayGetMask(self, options);
3457 }
GDALMDArrayHS_AsClassicDataset(GDALMDArrayHS * self,size_t iXDim,size_t iYDim)3458 SWIGINTERN GDALDatasetShadow *GDALMDArrayHS_AsClassicDataset(GDALMDArrayHS *self,size_t iXDim,size_t iYDim){
3459 return (GDALDatasetShadow*)GDALMDArrayAsClassicDataset(self, iXDim, iYDim);
3460 }
3461
3462 SWIGINTERN int
SWIG_PERL_DECL_ARGS_2(SV * obj,bool * val)3463 SWIG_AsVal_bool SWIG_PERL_DECL_ARGS_2(SV *obj, bool* val)
3464 {
3465 if (obj == &PL_sv_yes) {
3466 if (val) *val = true;
3467 return SWIG_OK;
3468 } else if (obj == &PL_sv_no) {
3469 if (val) *val = false;
3470 return SWIG_OK;
3471 } else {
3472 if (val) *val = SvTRUE(obj) ? true : false;
3473 return SWIG_AddCast(SWIG_OK);
3474 }
3475 }
3476
GDALMDArrayHS_GetStatistics(GDALMDArrayHS * self,GDALDatasetShadow * ds=NULL,bool approx_ok=FALSE,bool force=TRUE,GDALProgressFunc callback=NULL,void * callback_data=NULL)3477 SWIGINTERN Statistics *GDALMDArrayHS_GetStatistics(GDALMDArrayHS *self,GDALDatasetShadow *ds=NULL,bool approx_ok=FALSE,bool force=TRUE,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3478 GUInt64 nValidCount = 0;
3479 Statistics* psStatisticsOut = (Statistics*)CPLMalloc(sizeof(Statistics));
3480 CPLErr eErr = GDALMDArrayGetStatistics(self, ds, approx_ok, force,
3481 &(psStatisticsOut->min),
3482 &(psStatisticsOut->max),
3483 &(psStatisticsOut->mean),
3484 &(psStatisticsOut->std_dev),
3485 &nValidCount,
3486 callback, callback_data);
3487 psStatisticsOut->valid_count = static_cast<GIntBig>(nValidCount);
3488 if( eErr == CE_None )
3489 return psStatisticsOut;
3490 CPLFree(psStatisticsOut);
3491 return NULL;
3492 }
GDALMDArrayHS_ComputeStatistics(GDALMDArrayHS * self,GDALDatasetShadow * ds=NULL,bool approx_ok=FALSE,GDALProgressFunc callback=NULL,void * callback_data=NULL)3493 SWIGINTERN Statistics *GDALMDArrayHS_ComputeStatistics(GDALMDArrayHS *self,GDALDatasetShadow *ds=NULL,bool approx_ok=FALSE,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3494 GUInt64 nValidCount = 0;
3495 Statistics* psStatisticsOut = (Statistics*)CPLMalloc(sizeof(Statistics));
3496 int nSuccess = GDALMDArrayComputeStatistics(self, ds, approx_ok,
3497 &(psStatisticsOut->min),
3498 &(psStatisticsOut->max),
3499 &(psStatisticsOut->mean),
3500 &(psStatisticsOut->std_dev),
3501 &nValidCount,
3502 callback, callback_data);
3503 psStatisticsOut->valid_count = static_cast<GIntBig>(nValidCount);
3504 if( nSuccess )
3505 return psStatisticsOut;
3506 CPLFree(psStatisticsOut);
3507 return NULL;
3508 }
delete_GDALAttributeHS(GDALAttributeHS * self)3509 SWIGINTERN void delete_GDALAttributeHS(GDALAttributeHS *self){
3510 GDALAttributeRelease(self);
3511 }
GDALAttributeHS_GetName(GDALAttributeHS * self)3512 SWIGINTERN char const *GDALAttributeHS_GetName(GDALAttributeHS *self){
3513 return GDALAttributeGetName(self);
3514 }
GDALAttributeHS_GetFullName(GDALAttributeHS * self)3515 SWIGINTERN char const *GDALAttributeHS_GetFullName(GDALAttributeHS *self){
3516 return GDALAttributeGetFullName(self);
3517 }
GDALAttributeHS_GetTotalElementsCount(GDALAttributeHS * self)3518 SWIGINTERN unsigned long long GDALAttributeHS_GetTotalElementsCount(GDALAttributeHS *self){
3519 return GDALAttributeGetTotalElementsCount(self);
3520 }
GDALAttributeHS_GetDimensionCount(GDALAttributeHS * self)3521 SWIGINTERN size_t GDALAttributeHS_GetDimensionCount(GDALAttributeHS *self){
3522 return GDALAttributeGetDimensionCount(self);
3523 }
GDALAttributeHS_GetDataType(GDALAttributeHS * self)3524 SWIGINTERN GDALExtendedDataTypeHS *GDALAttributeHS_GetDataType(GDALAttributeHS *self){
3525 return GDALAttributeGetDataType(self);
3526 }
GDALAttributeHS_ReadAsString(GDALAttributeHS * self)3527 SWIGINTERN char const *GDALAttributeHS_ReadAsString(GDALAttributeHS *self){
3528 return GDALAttributeReadAsString(self);
3529 }
GDALAttributeHS_ReadAsInt(GDALAttributeHS * self)3530 SWIGINTERN int GDALAttributeHS_ReadAsInt(GDALAttributeHS *self){
3531 return GDALAttributeReadAsInt(self);
3532 }
GDALAttributeHS_ReadAsDouble(GDALAttributeHS * self)3533 SWIGINTERN double GDALAttributeHS_ReadAsDouble(GDALAttributeHS *self){
3534 return GDALAttributeReadAsDouble(self);
3535 }
GDALAttributeHS_ReadAsStringArray(GDALAttributeHS * self)3536 SWIGINTERN char **GDALAttributeHS_ReadAsStringArray(GDALAttributeHS *self){
3537 return GDALAttributeReadAsStringArray(self);
3538 }
GDALAttributeHS_WriteString(GDALAttributeHS * self,char const * val)3539 SWIGINTERN CPLErr GDALAttributeHS_WriteString(GDALAttributeHS *self,char const *val){
3540 return GDALAttributeWriteString(self, val) ? CE_None : CE_Failure;
3541 }
GDALAttributeHS_WriteStringArray(GDALAttributeHS * self,char ** vals)3542 SWIGINTERN CPLErr GDALAttributeHS_WriteStringArray(GDALAttributeHS *self,char **vals){
3543 return GDALAttributeWriteStringArray(self, vals) ? CE_None : CE_Failure;
3544 }
GDALAttributeHS_WriteInt(GDALAttributeHS * self,int val)3545 SWIGINTERN CPLErr GDALAttributeHS_WriteInt(GDALAttributeHS *self,int val){
3546 return GDALAttributeWriteInt(self, val) ? CE_None : CE_Failure;
3547 }
GDALAttributeHS_WriteDouble(GDALAttributeHS * self,double val)3548 SWIGINTERN CPLErr GDALAttributeHS_WriteDouble(GDALAttributeHS *self,double val){
3549 return GDALAttributeWriteDouble(self, val) ? CE_None : CE_Failure;
3550 }
delete_GDALDimensionHS(GDALDimensionHS * self)3551 SWIGINTERN void delete_GDALDimensionHS(GDALDimensionHS *self){
3552 GDALDimensionRelease(self);
3553 }
GDALDimensionHS_GetName(GDALDimensionHS * self)3554 SWIGINTERN char const *GDALDimensionHS_GetName(GDALDimensionHS *self){
3555 return GDALDimensionGetName(self);
3556 }
GDALDimensionHS_GetFullName(GDALDimensionHS * self)3557 SWIGINTERN char const *GDALDimensionHS_GetFullName(GDALDimensionHS *self){
3558 return GDALDimensionGetFullName(self);
3559 }
GDALDimensionHS_GetType(GDALDimensionHS * self)3560 SWIGINTERN char const *GDALDimensionHS_GetType(GDALDimensionHS *self){
3561 return GDALDimensionGetType(self);
3562 }
GDALDimensionHS_GetDirection(GDALDimensionHS * self)3563 SWIGINTERN char const *GDALDimensionHS_GetDirection(GDALDimensionHS *self){
3564 return GDALDimensionGetDirection(self);
3565 }
GDALDimensionHS_GetSize(GDALDimensionHS * self)3566 SWIGINTERN unsigned long long GDALDimensionHS_GetSize(GDALDimensionHS *self){
3567 return GDALDimensionGetSize(self);
3568 }
GDALDimensionHS_GetIndexingVariable(GDALDimensionHS * self)3569 SWIGINTERN GDALMDArrayHS *GDALDimensionHS_GetIndexingVariable(GDALDimensionHS *self){
3570 return GDALDimensionGetIndexingVariable(self);
3571 }
GDALDimensionHS_SetIndexingVariable(GDALDimensionHS * self,GDALMDArrayHS * array)3572 SWIGINTERN bool GDALDimensionHS_SetIndexingVariable(GDALDimensionHS *self,GDALMDArrayHS *array){
3573 return GDALDimensionSetIndexingVariable(self, array);
3574 }
delete_GDALExtendedDataTypeHS(GDALExtendedDataTypeHS * self)3575 SWIGINTERN void delete_GDALExtendedDataTypeHS(GDALExtendedDataTypeHS *self){
3576 GDALExtendedDataTypeRelease(self);
3577 }
GDALExtendedDataTypeHS_Create(GDALDataType dt)3578 SWIGINTERN GDALExtendedDataTypeHS *GDALExtendedDataTypeHS_Create(GDALDataType dt){
3579 return GDALExtendedDataTypeCreate(dt);
3580 }
GDALExtendedDataTypeHS_CreateString(size_t nMaxStringLength=0)3581 SWIGINTERN GDALExtendedDataTypeHS *GDALExtendedDataTypeHS_CreateString(size_t nMaxStringLength=0){
3582 return GDALExtendedDataTypeCreateString(nMaxStringLength);
3583 }
GDALExtendedDataTypeHS_GetName(GDALExtendedDataTypeHS * self)3584 SWIGINTERN char const *GDALExtendedDataTypeHS_GetName(GDALExtendedDataTypeHS *self){
3585 return GDALExtendedDataTypeGetName(self);
3586 }
GDALExtendedDataTypeHS_GetClass(GDALExtendedDataTypeHS * self)3587 SWIGINTERN GDALExtendedDataTypeClass GDALExtendedDataTypeHS_GetClass(GDALExtendedDataTypeHS *self){
3588 return GDALExtendedDataTypeGetClass(self);
3589 }
GDALExtendedDataTypeHS_GetNumericDataType(GDALExtendedDataTypeHS * self)3590 SWIGINTERN GDALDataType GDALExtendedDataTypeHS_GetNumericDataType(GDALExtendedDataTypeHS *self){
3591 return GDALExtendedDataTypeGetNumericDataType(self);
3592 }
GDALExtendedDataTypeHS_GetSize(GDALExtendedDataTypeHS * self)3593 SWIGINTERN size_t GDALExtendedDataTypeHS_GetSize(GDALExtendedDataTypeHS *self){
3594 return GDALExtendedDataTypeGetSize(self);
3595 }
GDALExtendedDataTypeHS_GetMaxStringLength(GDALExtendedDataTypeHS * self)3596 SWIGINTERN size_t GDALExtendedDataTypeHS_GetMaxStringLength(GDALExtendedDataTypeHS *self){
3597 return GDALExtendedDataTypeGetMaxStringLength(self);
3598 }
GDALExtendedDataTypeHS_CanConvertTo(GDALExtendedDataTypeHS * self,GDALExtendedDataTypeHS * other)3599 SWIGINTERN bool GDALExtendedDataTypeHS_CanConvertTo(GDALExtendedDataTypeHS *self,GDALExtendedDataTypeHS *other){
3600 return GDALExtendedDataTypeCanConvertTo(self, other);
3601 }
GDALExtendedDataTypeHS_Equals(GDALExtendedDataTypeHS * self,GDALExtendedDataTypeHS * other)3602 SWIGINTERN bool GDALExtendedDataTypeHS_Equals(GDALExtendedDataTypeHS *self,GDALExtendedDataTypeHS *other){
3603 return GDALExtendedDataTypeEquals(self, other);
3604 }
delete_GDALEDTComponentHS(GDALEDTComponentHS * self)3605 SWIGINTERN void delete_GDALEDTComponentHS(GDALEDTComponentHS *self){
3606 GDALEDTComponentRelease(self);
3607 }
GDALEDTComponentHS_Create(char const * name,size_t offset,GDALExtendedDataTypeHS * type)3608 SWIGINTERN GDALEDTComponentHS *GDALEDTComponentHS_Create(char const *name,size_t offset,GDALExtendedDataTypeHS *type){
3609 return GDALEDTComponentCreate(name, offset, type);
3610 }
GDALEDTComponentHS_GetName(GDALEDTComponentHS * self)3611 SWIGINTERN char const *GDALEDTComponentHS_GetName(GDALEDTComponentHS *self){
3612 return GDALEDTComponentGetName(self);
3613 }
GDALEDTComponentHS_GetOffset(GDALEDTComponentHS * self)3614 SWIGINTERN size_t GDALEDTComponentHS_GetOffset(GDALEDTComponentHS *self){
3615 return GDALEDTComponentGetOffset(self);
3616 }
GDALEDTComponentHS_GetType(GDALEDTComponentHS * self)3617 SWIGINTERN GDALExtendedDataTypeHS *GDALEDTComponentHS_GetType(GDALEDTComponentHS *self){
3618 return GDALEDTComponentGetType(self);
3619 }
3620
3621 /* Returned size is in bytes or 0 if an error occurred. */
3622 static
ComputeBandRasterIOSize(int buf_xsize,int buf_ysize,int nPixelSize,GIntBig nPixelSpace,GIntBig nLineSpace,int bSpacingShouldBeMultipleOfPixelSize)3623 GIntBig ComputeBandRasterIOSize (int buf_xsize, int buf_ysize, int nPixelSize,
3624 GIntBig nPixelSpace, GIntBig nLineSpace,
3625 int bSpacingShouldBeMultipleOfPixelSize )
3626 {
3627 if (buf_xsize <= 0 || buf_ysize <= 0)
3628 {
3629 CPLError(CE_Failure, CPLE_IllegalArg, "Illegal values for buffer size");
3630 return 0;
3631 }
3632
3633 if (nPixelSpace < 0 || nLineSpace < 0)
3634 {
3635 CPLError(CE_Failure, CPLE_IllegalArg, "Illegal values for space arguments");
3636 return 0;
3637 }
3638
3639 if (nPixelSize == 0)
3640 {
3641 CPLError(CE_Failure, CPLE_IllegalArg, "Illegal value for data type");
3642 return 0;
3643 }
3644
3645 if( nPixelSpace == 0 )
3646 nPixelSpace = nPixelSize;
3647 else if ( bSpacingShouldBeMultipleOfPixelSize && (nPixelSpace % nPixelSize) != 0 )
3648 {
3649 CPLError(CE_Failure, CPLE_IllegalArg, "nPixelSpace should be a multiple of nPixelSize");
3650 return 0;
3651 }
3652
3653 if( nLineSpace == 0 )
3654 {
3655 nLineSpace = nPixelSpace * buf_xsize;
3656 }
3657 else if ( bSpacingShouldBeMultipleOfPixelSize && (nLineSpace % nPixelSize) != 0 )
3658 {
3659 CPLError(CE_Failure, CPLE_IllegalArg, "nLineSpace should be a multiple of nPixelSize");
3660 return 0;
3661 }
3662
3663 GIntBig nRet = (GIntBig)(buf_ysize - 1) * nLineSpace + (GIntBig)(buf_xsize - 1) * nPixelSpace + nPixelSize;
3664 #if SIZEOF_VOIDP == 4
3665 if (nRet > INT_MAX)
3666 {
3667 CPLError(CE_Failure, CPLE_IllegalArg, "Integer overflow");
3668 return 0;
3669 }
3670 #endif
3671
3672 return nRet;
3673 }
3674
3675
3676 static
ReadRaster_internal(GDALRasterBandShadow * obj,int xoff,int yoff,int xsize,int ysize,int buf_xsize,int buf_ysize,GDALDataType buf_type,GIntBig * buf_size,char ** buf,GIntBig pixel_space,GIntBig line_space,GDALRasterIOExtraArg * psExtraArg)3677 CPLErr ReadRaster_internal( GDALRasterBandShadow *obj,
3678 int xoff, int yoff, int xsize, int ysize,
3679 int buf_xsize, int buf_ysize,
3680 GDALDataType buf_type,
3681 GIntBig *buf_size, char **buf,
3682 GIntBig pixel_space, GIntBig line_space,
3683 GDALRasterIOExtraArg* psExtraArg )
3684 {
3685 CPLErr result;
3686
3687 *buf_size = ComputeBandRasterIOSize( buf_xsize, buf_ysize, GDALGetDataTypeSize( buf_type ) / 8,
3688 pixel_space, line_space, FALSE );
3689
3690 if ( *buf_size == 0 )
3691 {
3692 *buf = 0;
3693 return CE_Failure;
3694 }
3695
3696 *buf = (char*) malloc( *buf_size );
3697 if ( *buf )
3698 {
3699 result = GDALRasterIOEx( obj, GF_Read, xoff, yoff, xsize, ysize,
3700 (void *) *buf, buf_xsize, buf_ysize,
3701 buf_type, pixel_space, line_space, psExtraArg );
3702 if ( result != CE_None )
3703 {
3704 free( *buf );
3705 *buf = 0;
3706 *buf_size = 0;
3707 }
3708 }
3709 else
3710 {
3711 CPLError(CE_Failure, CPLE_OutOfMemory, "Not enough memory to allocate " CPL_FRMT_GIB " bytes", *buf_size);
3712 result = CE_Failure;
3713 *buf = 0;
3714 *buf_size = 0;
3715 }
3716
3717 return result;
3718 }
3719
3720
3721 static
WriteRaster_internal(GDALRasterBandShadow * obj,int xoff,int yoff,int xsize,int ysize,int buf_xsize,int buf_ysize,GDALDataType buf_type,GIntBig buf_size,char * buffer,GIntBig pixel_space,GIntBig line_space,GDALRasterIOExtraArg * psExtraArg)3722 CPLErr WriteRaster_internal( GDALRasterBandShadow *obj,
3723 int xoff, int yoff, int xsize, int ysize,
3724 int buf_xsize, int buf_ysize,
3725 GDALDataType buf_type,
3726 GIntBig buf_size, char *buffer,
3727 GIntBig pixel_space, GIntBig line_space,
3728 GDALRasterIOExtraArg* psExtraArg )
3729 {
3730 GIntBig min_buffer_size = ComputeBandRasterIOSize (buf_xsize, buf_ysize, GDALGetDataTypeSize( buf_type ) / 8,
3731 pixel_space, line_space, FALSE );
3732 if ( min_buffer_size == 0 )
3733 return CE_Failure;
3734
3735 if ( buf_size < min_buffer_size ) {
3736 CPLError(CE_Failure, CPLE_AppDefined, "Buffer too small");
3737 return CE_Failure;
3738 }
3739
3740 return GDALRasterIOEx( obj, GF_Write, xoff, yoff, xsize, ysize,
3741 (void *) buffer, buf_xsize, buf_ysize, buf_type, pixel_space, line_space, psExtraArg );
3742 }
3743
GDALRasterBandShadow_GetDataset(GDALRasterBandShadow * self)3744 SWIGINTERN GDALDatasetShadow *GDALRasterBandShadow_GetDataset(GDALRasterBandShadow *self){
3745 return (GDALDatasetShadow*) GDALGetBandDataset(self);
3746 }
GDALRasterBandShadow_GetBand(GDALRasterBandShadow * self)3747 SWIGINTERN int GDALRasterBandShadow_GetBand(GDALRasterBandShadow *self){
3748 return GDALGetBandNumber(self);
3749 }
GDALRasterBandShadow_GetBlockSize(GDALRasterBandShadow * self,int * pnBlockXSize,int * pnBlockYSize)3750 SWIGINTERN void GDALRasterBandShadow_GetBlockSize(GDALRasterBandShadow *self,int *pnBlockXSize,int *pnBlockYSize){
3751 GDALGetBlockSize(self, pnBlockXSize, pnBlockYSize);
3752 }
GDALRasterBandShadow_GetColorInterpretation(GDALRasterBandShadow * self)3753 SWIGINTERN GDALColorInterp GDALRasterBandShadow_GetColorInterpretation(GDALRasterBandShadow *self){
3754 return GDALGetRasterColorInterpretation(self);
3755 }
GDALRasterBandShadow_GetRasterColorInterpretation(GDALRasterBandShadow * self)3756 SWIGINTERN GDALColorInterp GDALRasterBandShadow_GetRasterColorInterpretation(GDALRasterBandShadow *self){
3757 return GDALGetRasterColorInterpretation(self);
3758 }
GDALRasterBandShadow_SetColorInterpretation(GDALRasterBandShadow * self,GDALColorInterp val)3759 SWIGINTERN CPLErr GDALRasterBandShadow_SetColorInterpretation(GDALRasterBandShadow *self,GDALColorInterp val){
3760 return GDALSetRasterColorInterpretation( self, val );
3761 }
GDALRasterBandShadow_SetRasterColorInterpretation(GDALRasterBandShadow * self,GDALColorInterp val)3762 SWIGINTERN CPLErr GDALRasterBandShadow_SetRasterColorInterpretation(GDALRasterBandShadow *self,GDALColorInterp val){
3763 return GDALSetRasterColorInterpretation( self, val );
3764 }
GDALRasterBandShadow_GetNoDataValue(GDALRasterBandShadow * self,double * val,int * hasval)3765 SWIGINTERN void GDALRasterBandShadow_GetNoDataValue(GDALRasterBandShadow *self,double *val,int *hasval){
3766 *val = GDALGetRasterNoDataValue( self, hasval );
3767 }
GDALRasterBandShadow_SetNoDataValue(GDALRasterBandShadow * self,double d)3768 SWIGINTERN CPLErr GDALRasterBandShadow_SetNoDataValue(GDALRasterBandShadow *self,double d){
3769 return GDALSetRasterNoDataValue( self, d );
3770 }
GDALRasterBandShadow_DeleteNoDataValue(GDALRasterBandShadow * self)3771 SWIGINTERN CPLErr GDALRasterBandShadow_DeleteNoDataValue(GDALRasterBandShadow *self){
3772 return GDALDeleteRasterNoDataValue(self);
3773 }
GDALRasterBandShadow_GetUnitType(GDALRasterBandShadow * self)3774 SWIGINTERN char const *GDALRasterBandShadow_GetUnitType(GDALRasterBandShadow *self){
3775 return GDALGetRasterUnitType(self);
3776 }
GDALRasterBandShadow_SetUnitType(GDALRasterBandShadow * self,char const * val)3777 SWIGINTERN CPLErr GDALRasterBandShadow_SetUnitType(GDALRasterBandShadow *self,char const *val){
3778 return GDALSetRasterUnitType( self, val );
3779 }
GDALRasterBandShadow_GetRasterCategoryNames(GDALRasterBandShadow * self)3780 SWIGINTERN char **GDALRasterBandShadow_GetRasterCategoryNames(GDALRasterBandShadow *self){
3781 return GDALGetRasterCategoryNames(self);
3782 }
GDALRasterBandShadow_SetRasterCategoryNames(GDALRasterBandShadow * self,char ** names)3783 SWIGINTERN CPLErr GDALRasterBandShadow_SetRasterCategoryNames(GDALRasterBandShadow *self,char **names){
3784 return GDALSetRasterCategoryNames( self, names );
3785 }
GDALRasterBandShadow_GetMinimum(GDALRasterBandShadow * self,double * val,int * hasval)3786 SWIGINTERN void GDALRasterBandShadow_GetMinimum(GDALRasterBandShadow *self,double *val,int *hasval){
3787 *val = GDALGetRasterMinimum( self, hasval );
3788 }
GDALRasterBandShadow_GetMaximum(GDALRasterBandShadow * self,double * val,int * hasval)3789 SWIGINTERN void GDALRasterBandShadow_GetMaximum(GDALRasterBandShadow *self,double *val,int *hasval){
3790 *val = GDALGetRasterMaximum( self, hasval );
3791 }
GDALRasterBandShadow_GetOffset(GDALRasterBandShadow * self,double * val,int * hasval)3792 SWIGINTERN void GDALRasterBandShadow_GetOffset(GDALRasterBandShadow *self,double *val,int *hasval){
3793 *val = GDALGetRasterOffset( self, hasval );
3794 }
GDALRasterBandShadow_GetScale(GDALRasterBandShadow * self,double * val,int * hasval)3795 SWIGINTERN void GDALRasterBandShadow_GetScale(GDALRasterBandShadow *self,double *val,int *hasval){
3796 *val = GDALGetRasterScale( self, hasval );
3797 }
GDALRasterBandShadow_SetOffset(GDALRasterBandShadow * self,double val)3798 SWIGINTERN CPLErr GDALRasterBandShadow_SetOffset(GDALRasterBandShadow *self,double val){
3799 return GDALSetRasterOffset( self, val );
3800 }
GDALRasterBandShadow_SetScale(GDALRasterBandShadow * self,double val)3801 SWIGINTERN CPLErr GDALRasterBandShadow_SetScale(GDALRasterBandShadow *self,double val){
3802 return GDALSetRasterScale( self, val );
3803 }
GDALRasterBandShadow_GetStatistics(GDALRasterBandShadow * self,int approx_ok,int force,double * min,double * max,double * mean,double * stddev)3804 SWIGINTERN CPLErr GDALRasterBandShadow_GetStatistics(GDALRasterBandShadow *self,int approx_ok,int force,double *min,double *max,double *mean,double *stddev){
3805 if (min) *min = 0;
3806 if (max) *max = 0;
3807 if (mean) *mean = 0;
3808 if (stddev) *stddev = -1; /* This is the only way to recognize from Python if GetRasterStatistics() has updated the values */
3809 return GDALGetRasterStatistics( self, approx_ok, force,
3810 min, max, mean, stddev );
3811 }
GDALRasterBandShadow_ComputeStatistics(GDALRasterBandShadow * self,bool approx_ok,double * min=NULL,double * max=NULL,double * mean=NULL,double * stddev=NULL,GDALProgressFunc callback=NULL,void * callback_data=NULL)3812 SWIGINTERN CPLErr GDALRasterBandShadow_ComputeStatistics(GDALRasterBandShadow *self,bool approx_ok,double *min=NULL,double *max=NULL,double *mean=NULL,double *stddev=NULL,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3813 return GDALComputeRasterStatistics( self, approx_ok, min, max, mean, stddev, callback, callback_data );
3814 }
GDALRasterBandShadow_SetStatistics(GDALRasterBandShadow * self,double min,double max,double mean,double stddev)3815 SWIGINTERN CPLErr GDALRasterBandShadow_SetStatistics(GDALRasterBandShadow *self,double min,double max,double mean,double stddev){
3816 return GDALSetRasterStatistics( self, min, max, mean, stddev );
3817 }
GDALRasterBandShadow_GetOverviewCount(GDALRasterBandShadow * self)3818 SWIGINTERN int GDALRasterBandShadow_GetOverviewCount(GDALRasterBandShadow *self){
3819 return GDALGetOverviewCount(self);
3820 }
GDALRasterBandShadow_GetOverview(GDALRasterBandShadow * self,int i)3821 SWIGINTERN GDALRasterBandShadow *GDALRasterBandShadow_GetOverview(GDALRasterBandShadow *self,int i){
3822 return (GDALRasterBandShadow*) GDALGetOverview( self, i );
3823 }
GDALRasterBandShadow_Checksum(GDALRasterBandShadow * self,int xoff=0,int yoff=0,int * xsize=0,int * ysize=0)3824 SWIGINTERN int GDALRasterBandShadow_Checksum(GDALRasterBandShadow *self,int xoff=0,int yoff=0,int *xsize=0,int *ysize=0){
3825 int nxsize = (xsize!=0) ? *xsize : GDALGetRasterBandXSize( self );
3826 int nysize = (ysize!=0) ? *ysize : GDALGetRasterBandYSize( self );
3827 return GDALChecksumImage( self, xoff, yoff, nxsize, nysize );
3828 }
GDALRasterBandShadow_ComputeRasterMinMax(GDALRasterBandShadow * self,double argout[2],int approx_ok=0)3829 SWIGINTERN void GDALRasterBandShadow_ComputeRasterMinMax(GDALRasterBandShadow *self,double argout[2],int approx_ok=0){
3830 GDALComputeRasterMinMax( self, approx_ok, argout );
3831 }
GDALRasterBandShadow_ComputeBandStats(GDALRasterBandShadow * self,double argout[2],int samplestep=1)3832 SWIGINTERN void GDALRasterBandShadow_ComputeBandStats(GDALRasterBandShadow *self,double argout[2],int samplestep=1){
3833 GDALComputeBandStats( self, samplestep, argout+0, argout+1,
3834 NULL, NULL );
3835 }
GDALRasterBandShadow_Fill(GDALRasterBandShadow * self,double real_fill,double imag_fill=0.0)3836 SWIGINTERN CPLErr GDALRasterBandShadow_Fill(GDALRasterBandShadow *self,double real_fill,double imag_fill=0.0){
3837 return GDALFillRaster( self, real_fill, imag_fill );
3838 }
GDALRasterBandShadow_ReadRaster(GDALRasterBandShadow * self,int xoff,int yoff,int xsize,int ysize,GIntBig * buf_len,char ** buf,int * buf_xsize=0,int * buf_ysize=0,int * buf_type=0,GIntBig * buf_pixel_space=0,GIntBig * buf_line_space=0,GDALRIOResampleAlg resample_alg=GRIORA_NearestNeighbour,GDALProgressFunc callback=NULL,void * callback_data=NULL)3839 SWIGINTERN CPLErr GDALRasterBandShadow_ReadRaster(GDALRasterBandShadow *self,int xoff,int yoff,int xsize,int ysize,GIntBig *buf_len,char **buf,int *buf_xsize=0,int *buf_ysize=0,int *buf_type=0,GIntBig *buf_pixel_space=0,GIntBig *buf_line_space=0,GDALRIOResampleAlg resample_alg=GRIORA_NearestNeighbour,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3840 int nxsize = (buf_xsize==0) ? xsize : *buf_xsize;
3841 int nysize = (buf_ysize==0) ? ysize : *buf_ysize;
3842 GDALDataType ntype = (buf_type==0) ? GDALGetRasterDataType(self)
3843 : (GDALDataType)*buf_type;
3844 GIntBig pixel_space = (buf_pixel_space == 0) ? 0 : *buf_pixel_space;
3845 GIntBig line_space = (buf_line_space == 0) ? 0 : *buf_line_space;
3846
3847 GDALRasterIOExtraArg sExtraArg;
3848 INIT_RASTERIO_EXTRA_ARG(sExtraArg);
3849 sExtraArg.eResampleAlg = resample_alg;
3850 sExtraArg.pfnProgress = callback;
3851 sExtraArg.pProgressData = callback_data;
3852
3853 return ReadRaster_internal( self, xoff, yoff, xsize, ysize,
3854 nxsize, nysize, ntype, buf_len, buf, pixel_space, line_space,
3855 &sExtraArg );
3856 }
GDALRasterBandShadow_WriteRaster(GDALRasterBandShadow * self,int xoff,int yoff,int xsize,int ysize,GIntBig buf_len,char * buf_string,int * buf_xsize=0,int * buf_ysize=0,GDALDataType * buf_type=0,GIntBig * buf_pixel_space=0,GIntBig * buf_line_space=0)3857 SWIGINTERN CPLErr GDALRasterBandShadow_WriteRaster(GDALRasterBandShadow *self,int xoff,int yoff,int xsize,int ysize,GIntBig buf_len,char *buf_string,int *buf_xsize=0,int *buf_ysize=0,GDALDataType *buf_type=0,GIntBig *buf_pixel_space=0,GIntBig *buf_line_space=0){
3858 int nxsize = (buf_xsize==0) ? xsize : *buf_xsize;
3859 int nysize = (buf_ysize==0) ? ysize : *buf_ysize;
3860 GDALDataType ntype = (buf_type==0) ? GDALGetRasterDataType(self)
3861 : *buf_type;
3862 GIntBig pixel_space = (buf_pixel_space == 0) ? 0 : *buf_pixel_space;
3863 GIntBig line_space = (buf_line_space == 0) ? 0 : *buf_line_space;
3864 GDALRasterIOExtraArg* psExtraArg = NULL;
3865 return WriteRaster_internal( self, xoff, yoff, xsize, ysize,
3866 nxsize, nysize, ntype, buf_len, buf_string, pixel_space, line_space, psExtraArg );
3867 }
GDALRasterBandShadow_FlushCache(GDALRasterBandShadow * self)3868 SWIGINTERN void GDALRasterBandShadow_FlushCache(GDALRasterBandShadow *self){
3869 GDALFlushRasterCache( self );
3870 }
GDALRasterBandShadow_GetRasterColorTable(GDALRasterBandShadow * self)3871 SWIGINTERN GDALColorTableShadow *GDALRasterBandShadow_GetRasterColorTable(GDALRasterBandShadow *self){
3872 return (GDALColorTableShadow*) GDALGetRasterColorTable( self );
3873 }
GDALRasterBandShadow_GetColorTable(GDALRasterBandShadow * self)3874 SWIGINTERN GDALColorTableShadow *GDALRasterBandShadow_GetColorTable(GDALRasterBandShadow *self){
3875 return (GDALColorTableShadow*) GDALGetRasterColorTable( self );
3876 }
GDALRasterBandShadow_SetRasterColorTable(GDALRasterBandShadow * self,GDALColorTableShadow * arg)3877 SWIGINTERN int GDALRasterBandShadow_SetRasterColorTable(GDALRasterBandShadow *self,GDALColorTableShadow *arg){
3878 return GDALSetRasterColorTable( self, arg );
3879 }
GDALRasterBandShadow_SetColorTable(GDALRasterBandShadow * self,GDALColorTableShadow * arg)3880 SWIGINTERN int GDALRasterBandShadow_SetColorTable(GDALRasterBandShadow *self,GDALColorTableShadow *arg){
3881 return GDALSetRasterColorTable( self, arg );
3882 }
GDALRasterBandShadow_GetDefaultRAT(GDALRasterBandShadow * self)3883 SWIGINTERN GDALRasterAttributeTableShadow *GDALRasterBandShadow_GetDefaultRAT(GDALRasterBandShadow *self){
3884 return (GDALRasterAttributeTableShadow*) GDALGetDefaultRAT(self);
3885 }
GDALRasterBandShadow_SetDefaultRAT(GDALRasterBandShadow * self,GDALRasterAttributeTableShadow * table)3886 SWIGINTERN int GDALRasterBandShadow_SetDefaultRAT(GDALRasterBandShadow *self,GDALRasterAttributeTableShadow *table){
3887 return GDALSetDefaultRAT(self, table);
3888 }
GDALRasterBandShadow_GetMaskBand(GDALRasterBandShadow * self)3889 SWIGINTERN GDALRasterBandShadow *GDALRasterBandShadow_GetMaskBand(GDALRasterBandShadow *self){
3890 return (GDALRasterBandShadow *) GDALGetMaskBand( self );
3891 }
GDALRasterBandShadow_GetMaskFlags(GDALRasterBandShadow * self)3892 SWIGINTERN int GDALRasterBandShadow_GetMaskFlags(GDALRasterBandShadow *self){
3893 return GDALGetMaskFlags( self );
3894 }
GDALRasterBandShadow_CreateMaskBand(GDALRasterBandShadow * self,int nFlags)3895 SWIGINTERN CPLErr GDALRasterBandShadow_CreateMaskBand(GDALRasterBandShadow *self,int nFlags){
3896 return GDALCreateMaskBand( self, nFlags );
3897 }
3898
3899 #define LENGTH_OF_GUIntBig_AS_STRING 30
3900 static SV *
CreateArrayFromGUIntBigArray(GUIntBig * first,unsigned int size)3901 CreateArrayFromGUIntBigArray( GUIntBig *first, unsigned int size ) {
3902 AV *av = (AV*)sv_2mortal((SV*)newAV());
3903 for( unsigned int i=0; i<size; i++ ) {
3904 char s[LENGTH_OF_GUIntBig_AS_STRING];
3905 snprintf(s, LENGTH_OF_GUIntBig_AS_STRING-1, CPL_FRMT_GUIB, *first);
3906 av_store(av,i,newSVpv(s, 0));
3907 ++first;
3908 }
3909 return sv_2mortal(newRV((SV*)av));
3910 }
3911
GDALRasterBandShadow_GetHistogram(GDALRasterBandShadow * self,double min=-0.5,double max=255.5,int buckets=256,GUIntBig * panHistogram=NULL,int include_out_of_range=0,int approx_ok=1,GDALProgressFunc callback=NULL,void * callback_data=NULL)3912 SWIGINTERN CPLErr GDALRasterBandShadow_GetHistogram(GDALRasterBandShadow *self,double min=-0.5,double max=255.5,int buckets=256,GUIntBig *panHistogram=NULL,int include_out_of_range=0,int approx_ok=1,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3913 CPLErrorReset();
3914 CPLErr err = GDALGetRasterHistogramEx( self, min, max, buckets, panHistogram,
3915 include_out_of_range, approx_ok,
3916 callback, callback_data );
3917 return err;
3918 }
GDALRasterBandShadow_GetDefaultHistogram(GDALRasterBandShadow * self,double * min_ret=NULL,double * max_ret=NULL,int * buckets_ret=NULL,GUIntBig ** ppanHistogram=NULL,int force=1,GDALProgressFunc callback=NULL,void * callback_data=NULL)3919 SWIGINTERN CPLErr GDALRasterBandShadow_GetDefaultHistogram(GDALRasterBandShadow *self,double *min_ret=NULL,double *max_ret=NULL,int *buckets_ret=NULL,GUIntBig **ppanHistogram=NULL,int force=1,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3920 return GDALGetDefaultHistogramEx( self, min_ret, max_ret, buckets_ret,
3921 ppanHistogram, force,
3922 callback, callback_data );
3923 }
GDALRasterBandShadow_SetDefaultHistogram(GDALRasterBandShadow * self,double min,double max,int buckets_in,GUIntBig * panHistogram_in)3924 SWIGINTERN CPLErr GDALRasterBandShadow_SetDefaultHistogram(GDALRasterBandShadow *self,double min,double max,int buckets_in,GUIntBig *panHistogram_in){
3925 return GDALSetDefaultHistogramEx( self, min, max,
3926 buckets_in, panHistogram_in );
3927 }
GDALRasterBandShadow_HasArbitraryOverviews(GDALRasterBandShadow * self)3928 SWIGINTERN bool GDALRasterBandShadow_HasArbitraryOverviews(GDALRasterBandShadow *self){
3929 return (GDALHasArbitraryOverviews( self ) != 0) ? true : false;
3930 }
GDALRasterBandShadow_GetCategoryNames(GDALRasterBandShadow * self)3931 SWIGINTERN char **GDALRasterBandShadow_GetCategoryNames(GDALRasterBandShadow *self){
3932 return GDALGetRasterCategoryNames( self );
3933 }
GDALRasterBandShadow_SetCategoryNames(GDALRasterBandShadow * self,char ** papszCategoryNames)3934 SWIGINTERN CPLErr GDALRasterBandShadow_SetCategoryNames(GDALRasterBandShadow *self,char **papszCategoryNames){
3935 return GDALSetRasterCategoryNames( self, papszCategoryNames );
3936 }
GDALRasterBandShadow_AdviseRead(GDALRasterBandShadow * self,int xoff,int yoff,int xsize,int ysize,int * buf_xsize=0,int * buf_ysize=0,GDALDataType * buf_type=0,char ** options=NULL)3937 SWIGINTERN CPLErr GDALRasterBandShadow_AdviseRead(GDALRasterBandShadow *self,int xoff,int yoff,int xsize,int ysize,int *buf_xsize=0,int *buf_ysize=0,GDALDataType *buf_type=0,char **options=NULL){
3938 int nxsize = (buf_xsize==0) ? xsize : *buf_xsize;
3939 int nysize = (buf_ysize==0) ? ysize : *buf_ysize;
3940 GDALDataType ntype;
3941 if ( buf_type != 0 ) {
3942 ntype = (GDALDataType) *buf_type;
3943 } else {
3944 ntype = GDALGetRasterDataType( self );
3945 }
3946 return GDALRasterAdviseRead(self, xoff, yoff, xsize, ysize,
3947 nxsize, nysize, ntype, options);
3948 }
GDALRasterBandShadow_AsMDArray(GDALRasterBandShadow * self)3949 SWIGINTERN GDALMDArrayHS *GDALRasterBandShadow_AsMDArray(GDALRasterBandShadow *self){
3950 return GDALRasterBandAsMDArray(self);
3951 }
GDALRasterBandShadow_ContourGenerate(GDALRasterBandShadow * self,double dfContourInterval,double dfContourBase,int nFixedLevelCount,double * padfFixedLevels,int bUseNoData,double dfNoDataValue,OGRLayerShadow * hLayer,int iIDField,int iElevField,GDALProgressFunc progress=NULL,void * progress_data=NULL)3952 SWIGINTERN CPLErr GDALRasterBandShadow_ContourGenerate(GDALRasterBandShadow *self,double dfContourInterval,double dfContourBase,int nFixedLevelCount,double *padfFixedLevels,int bUseNoData,double dfNoDataValue,OGRLayerShadow *hLayer,int iIDField,int iElevField,GDALProgressFunc progress=NULL,void *progress_data=NULL){
3953 return GDALContourGenerate( self, dfContourInterval, dfContourBase,
3954 nFixedLevelCount, padfFixedLevels,
3955 bUseNoData, dfNoDataValue,
3956 hLayer, iIDField, iElevField,
3957 progress,
3958 progress_data );
3959 }
GDALRasterBandShadow_ClassCounts__SWIG_0(GDALRasterBandShadow * self,GDALProgressFunc callback=NULL,void * callback_data=NULL)3960 SWIGINTERN SV *GDALRasterBandShadow_ClassCounts__SWIG_0(GDALRasterBandShadow *self,GDALProgressFunc callback=NULL,void *callback_data=NULL){
3961 GDALDataType dt = GDALGetRasterDataType(self);
3962 if (!(dt == GDT_Byte || dt == GDT_UInt16 || dt == GDT_Int16 || dt == GDT_UInt32 || dt == GDT_Int32)) {
3963 do_confess("ClassCounts without classifier requires an integer band.", 1);
3964 }
3965 HV* hash = newHV();
3966 int XBlockSize, YBlockSize;
3967 GDALGetBlockSize( self, &XBlockSize, &YBlockSize );
3968 int XBlocks = (GDALGetRasterBandXSize(self) + XBlockSize - 1) / XBlockSize;
3969 int YBlocks = (GDALGetRasterBandYSize(self) + YBlockSize - 1) / YBlockSize;
3970 void *data = CPLMalloc(XBlockSize * YBlockSize * GDALGetDataTypeSizeBytes(dt));
3971 for (int yb = 0; yb < YBlocks; ++yb) {
3972 if (callback) {
3973 double p = (double)yb/(double)YBlocks;
3974 if (!callback(p, "", callback_data)) {
3975 CPLError(CE_Failure, CPLE_UserInterrupt, "User terminated");
3976 hv_undef(hash);
3977 hash = NULL;
3978 break;
3979 }
3980 }
3981 for (int xb = 0; xb < XBlocks; ++xb) {
3982 int XValid, YValid;
3983 CPLErr e = GDALReadBlock(self, xb, yb, data);
3984 GDALGetActualBlockSize(self, xb, yb, &XValid, &YValid);
3985 for (int iY = 0; iY < YValid; ++iY) {
3986 for (int iX = 0; iX < XValid; ++iX) {
3987 int32_t k;
3988 switch(dt) {
3989 case GDT_Byte:
3990 k = ((GByte*)(data))[iX + iY * XBlockSize];
3991 break;
3992 case GDT_UInt16:
3993 k = ((GUInt16*)(data))[iX + iY * XBlockSize];
3994 break;
3995 case GDT_Int16:
3996 k = ((GInt16*)(data))[iX + iY * XBlockSize];
3997 break;
3998 case GDT_UInt32:
3999 k = ((GUInt32*)(data))[iX + iY * XBlockSize];
4000 break;
4001 case GDT_Int32:
4002 k = ((GInt32*)(data))[iX + iY * XBlockSize];
4003 break;
4004 }
4005 char key[12];
4006 int klen = sprintf(key, "%i", k);
4007 SV* sv;
4008 SV** sv2 = hv_fetch(hash, key, klen, 0);
4009 if (sv2 && SvOK(*sv2)) {
4010 sv = *sv2;
4011 sv_setiv(sv, SvIV(sv)+1);
4012 SvREFCNT_inc(sv);
4013 } else {
4014 sv = newSViv(1);
4015 }
4016 if (!hv_store(hash, key, klen, sv, 0))
4017 SvREFCNT_dec(sv);
4018 }
4019 }
4020 }
4021 }
4022 CPLFree(data);
4023 if (hash)
4024 return newRV_noinc((SV*)hash);
4025 else
4026 return &PL_sv_undef;
4027 }
GDALRasterBandShadow_ClassCounts__SWIG_1(GDALRasterBandShadow * self,SV * classifier,GDALProgressFunc callback=NULL,void * callback_data=NULL)4028 SWIGINTERN SV *GDALRasterBandShadow_ClassCounts__SWIG_1(GDALRasterBandShadow *self,SV *classifier,GDALProgressFunc callback=NULL,void *callback_data=NULL){
4029
4030 const char *error = NULL;
4031 GDALDataType dt = GDALGetRasterDataType(self);
4032 if (!(dt == GDT_Byte || dt == GDT_UInt16 || dt == GDT_Int16 || dt == GDT_UInt32 || dt == GDT_Int32 || dt == GDT_Float32 || dt == GDT_Float64)) {
4033 do_confess("ClassCounts with classifier requires an integer or real band.", 1);
4034 }
4035
4036 AV* array_classifier = NULL;
4037 int comparison = 0;
4038
4039 array_classifier = to_array_classifier(classifier, &comparison, &error);
4040 if (error) do_confess(error, 1);
4041
4042 HV* hash = newHV();
4043 int has_no_data;
4044 double no_data = GDALGetRasterNoDataValue(self, &has_no_data);
4045 int XBlockSize, YBlockSize;
4046 GDALGetBlockSize( self, &XBlockSize, &YBlockSize );
4047 int XBlocks = (GDALGetRasterBandXSize(self) + XBlockSize - 1) / XBlockSize;
4048 int YBlocks = (GDALGetRasterBandYSize(self) + YBlockSize - 1) / YBlockSize;
4049 void *data = CPLMalloc(XBlockSize * YBlockSize * GDALGetDataTypeSizeBytes(dt));
4050
4051 for (int yb = 0; yb < YBlocks; ++yb) {
4052 if (callback) {
4053 double p = (double)yb/(double)YBlocks;
4054 if (!callback(p, "", callback_data)) {
4055 CPLError(CE_Failure, CPLE_UserInterrupt, "User terminated");
4056 hv_undef(hash);
4057 hash = NULL;
4058 break;
4059 }
4060 }
4061 for (int xb = 0; xb < XBlocks; ++xb) {
4062 int XValid, YValid;
4063 CPLErr e = GDALReadBlock(self, xb, yb, data);
4064 GDALGetActualBlockSize(self, xb, yb, &XValid, &YValid);
4065 for (int iY = 0; iY < YValid; ++iY) {
4066 for (int iX = 0; iX < XValid; ++iX) {
4067 double nv = 0;
4068 switch(dt) {
4069 case GDT_Byte:
4070 nv = ((GByte*)(data))[iX + iY * XBlockSize];
4071 break;
4072 case GDT_UInt16:
4073 nv = ((GUInt16*)(data))[iX + iY * XBlockSize];
4074 break;
4075 case GDT_Int16:
4076 nv = ((GInt16*)(data))[iX + iY * XBlockSize];
4077 break;
4078 case GDT_UInt32:
4079 nv = ((GUInt32*)(data))[iX + iY * XBlockSize];
4080 break;
4081 case GDT_Int32:
4082 nv = ((GInt32*)(data))[iX + iY * XBlockSize];
4083 break;
4084 case GDT_Float32:
4085 nv = ((float*)(data))[iX + iY * XBlockSize];
4086 break;
4087 case GDT_Float64:
4088 nv = ((double*)(data))[iX + iY * XBlockSize];
4089 break;
4090 }
4091 if (has_no_data && nv == no_data) {
4092 continue;
4093 }
4094 int k = 0;
4095 NVClass(comparison, nv, array_classifier, &k, &error);
4096 if (error) goto fail;
4097 char key[12];
4098 int klen = sprintf(key, "%i", k);
4099 SV* sv;
4100 SV** sv2 = hv_fetch(hash, key, klen, 0);
4101 if (sv2 && SvOK(*sv2)) {
4102 sv = *sv2;
4103 sv_setiv(sv, SvIV(sv)+1);
4104 SvREFCNT_inc(sv);
4105 } else {
4106 sv = newSViv(1);
4107 }
4108 if (!hv_store(hash, key, klen, sv, 0))
4109 SvREFCNT_dec(sv);
4110 }
4111 }
4112 }
4113 }
4114
4115 CPLFree(data);
4116 if (hash)
4117 return newRV_noinc((SV*)hash);
4118 else
4119 return &PL_sv_undef;
4120 fail:
4121 CPLFree(data);
4122 do_confess(error, 1);
4123 return &PL_sv_undef;
4124 }
GDALRasterBandShadow_Reclassify(GDALRasterBandShadow * self,SV * classifier,GDALProgressFunc callback=NULL,void * callback_data=NULL)4125 SWIGINTERN void GDALRasterBandShadow_Reclassify(GDALRasterBandShadow *self,SV *classifier,GDALProgressFunc callback=NULL,void *callback_data=NULL){
4126
4127 const char *error = NULL;
4128
4129 GDALDataType dt = GDALGetRasterDataType(self);
4130
4131 bool is_integer_raster = true;
4132 HV* hash_classifier = NULL;
4133 bool has_default = false;
4134 int32_t deflt = 0;
4135
4136 AV* array_classifier = NULL;
4137 int comparison = 0;
4138
4139 if (dt == GDT_Byte || dt == GDT_UInt16 || dt == GDT_Int16 || dt == GDT_UInt32 || dt == GDT_Int32) {
4140 if (SvROK(classifier) && (SvTYPE(SvRV(classifier)) == SVt_PVHV)) {
4141 hash_classifier = (HV*)SvRV(classifier);
4142 SV** sv = hv_fetch(hash_classifier, "*", 1, 0);
4143 if (sv && SvOK(*sv)) {
4144 has_default = true;
4145 deflt = SvIV(*sv);
4146 }
4147 } else {
4148 /*do_confess(NEED_HASH_REF, 1);*/
4149 array_classifier = to_array_classifier(classifier, &comparison, &error);
4150 if (error) do_confess(error, 1);
4151 }
4152 } else if (dt == GDT_Float32 || dt == GDT_Float64) {
4153 is_integer_raster = false;
4154 array_classifier = to_array_classifier(classifier, &comparison, &error);
4155 if (error) do_confess(error, 1);
4156 } else {
4157 do_confess("Only integer and float rasters can be reclassified.", 1);
4158 }
4159
4160 int has_no_data;
4161 double no_data = GDALGetRasterNoDataValue(self, &has_no_data);
4162 int XBlockSize, YBlockSize;
4163 GDALGetBlockSize( self, &XBlockSize, &YBlockSize );
4164 int XBlocks = (GDALGetRasterBandXSize(self) + XBlockSize - 1) / XBlockSize;
4165 int YBlocks = (GDALGetRasterBandYSize(self) + YBlockSize - 1) / YBlockSize;
4166 void *data = CPLMalloc(XBlockSize * YBlockSize * GDALGetDataTypeSizeBytes(dt));
4167
4168 for (int yb = 0; yb < YBlocks; ++yb) {
4169 if (callback) {
4170 double p = (double)yb/(double)YBlocks;
4171 if (!callback(p, "", callback_data)) {
4172 CPLError(CE_Failure, CPLE_UserInterrupt, "User terminated");
4173 break;
4174 }
4175 }
4176 for (int xb = 0; xb < XBlocks; ++xb) {
4177 int XValid, YValid;
4178 CPLErr e = GDALReadBlock(self, xb, yb, data);
4179 GDALGetActualBlockSize(self, xb, yb, &XValid, &YValid);
4180 for (int iY = 0; iY < YValid; ++iY) {
4181 for (int iX = 0; iX < XValid; ++iX) {
4182 int32_t k = 0;
4183 double nv = 0;
4184 switch(dt) {
4185 case GDT_Byte:
4186 k = ((GByte*)(data))[iX + iY * XBlockSize];
4187 break;
4188 case GDT_UInt16:
4189 k = ((GUInt16*)(data))[iX + iY * XBlockSize];
4190 break;
4191 case GDT_Int16:
4192 k = ((GInt16*)(data))[iX + iY * XBlockSize];
4193 break;
4194 case GDT_UInt32:
4195 k = ((GUInt32*)(data))[iX + iY * XBlockSize];
4196 break;
4197 case GDT_Int32:
4198 k = ((GInt32*)(data))[iX + iY * XBlockSize];
4199 break;
4200 case GDT_Float32:
4201 nv = ((float*)(data))[iX + iY * XBlockSize];
4202 break;
4203 case GDT_Float64:
4204 nv = ((double*)(data))[iX + iY * XBlockSize];
4205 break;
4206 }
4207
4208 if (is_integer_raster) {
4209 if (array_classifier) {
4210 if (!(has_no_data && k == no_data)) {
4211 k = IVClassify(comparison, k, array_classifier, &error);
4212 if (error) goto fail;
4213 }
4214 } else {
4215 char key[12];
4216 int klen = sprintf(key, "%i", k);
4217 SV** sv = hv_fetch(hash_classifier, key, klen, 0);
4218 if (sv && SvOK(*sv)) {
4219 k = SvIV(*sv);
4220 } else if (has_default) {
4221 if (!(has_no_data && k == no_data))
4222 k = deflt;
4223 else
4224 continue;
4225 }
4226 }
4227 } else {
4228 if (!(has_no_data && nv == no_data)) {
4229 nv = NVClassify(comparison, nv, array_classifier, &error);
4230 if (error) goto fail;
4231 }
4232 }
4233
4234 switch(dt) {
4235 case GDT_Byte:
4236 ((GByte*)(data))[iX + iY * XBlockSize] = k;
4237 break;
4238 case GDT_UInt16:
4239 ((GUInt16*)(data))[iX + iY * XBlockSize] = k;
4240 break;
4241 case GDT_Int16:
4242 ((GInt16*)(data))[iX + iY * XBlockSize] = k;
4243 break;
4244 case GDT_UInt32:
4245 ((GUInt32*)(data))[iX + iY * XBlockSize] = k;
4246 break;
4247 case GDT_Int32:
4248 ((GInt32*)(data))[iX + iY * XBlockSize] = k;
4249 break;
4250 case GDT_Float32:
4251 ((float*)(data))[iX + iY * XBlockSize] = nv;
4252 break;
4253 case GDT_Float64:
4254 ((double*)(data))[iX + iY * XBlockSize] = nv;
4255 break;
4256 }
4257 }
4258 }
4259 e = GDALWriteBlock(self, xb, yb, data);
4260 }
4261 }
4262 CPLFree(data);
4263 return;
4264 fail:
4265 CPLFree(data);
4266 do_confess(error, 1);
4267 return;
4268 }
4269
GDALRasterBandShadow_DataType_get(GDALRasterBandShadow * h)4270 GDALDataType GDALRasterBandShadow_DataType_get( GDALRasterBandShadow *h ) {
4271 return GDALGetRasterDataType( h );
4272 }
GDALRasterBandShadow_XSize_get(GDALRasterBandShadow * h)4273 int GDALRasterBandShadow_XSize_get( GDALRasterBandShadow *h ) {
4274 return GDALGetRasterBandXSize( h );
4275 }
GDALRasterBandShadow_YSize_get(GDALRasterBandShadow * h)4276 int GDALRasterBandShadow_YSize_get( GDALRasterBandShadow *h ) {
4277 return GDALGetRasterBandYSize( h );
4278 }
4279
new_GDALColorTableShadow(GDALPaletteInterp palette=GPI_RGB)4280 SWIGINTERN GDALColorTableShadow *new_GDALColorTableShadow(GDALPaletteInterp palette=GPI_RGB){
4281 return (GDALColorTableShadow*) GDALCreateColorTable(palette);
4282 }
delete_GDALColorTableShadow(GDALColorTableShadow * self)4283 SWIGINTERN void delete_GDALColorTableShadow(GDALColorTableShadow *self){
4284 GDALDestroyColorTable(self);
4285 }
GDALColorTableShadow_Clone(GDALColorTableShadow * self)4286 SWIGINTERN GDALColorTableShadow *GDALColorTableShadow_Clone(GDALColorTableShadow *self){
4287 return (GDALColorTableShadow*) GDALCloneColorTable (self);
4288 }
GDALColorTableShadow_GetPaletteInterpretation(GDALColorTableShadow * self)4289 SWIGINTERN GDALPaletteInterp GDALColorTableShadow_GetPaletteInterpretation(GDALColorTableShadow *self){
4290 return GDALGetPaletteInterpretation(self);
4291 }
GDALColorTableShadow_GetColorEntryCount(GDALColorTableShadow * self)4292 SWIGINTERN int GDALColorTableShadow_GetColorEntryCount(GDALColorTableShadow *self){
4293 return GDALGetColorEntryCount(self);
4294 }
GDALColorTableShadow_GetColorEntry(GDALColorTableShadow * self,int entry)4295 SWIGINTERN GDALColorEntry *GDALColorTableShadow_GetColorEntry(GDALColorTableShadow *self,int entry){
4296 return (GDALColorEntry*) GDALGetColorEntry(self, entry);
4297 }
GDALColorTableShadow_GetColorEntryAsRGB(GDALColorTableShadow * self,int entry,GDALColorEntry * centry)4298 SWIGINTERN int GDALColorTableShadow_GetColorEntryAsRGB(GDALColorTableShadow *self,int entry,GDALColorEntry *centry){
4299 return GDALGetColorEntryAsRGB(self, entry, centry);
4300 }
GDALColorTableShadow_SetColorEntry(GDALColorTableShadow * self,int entry,GDALColorEntry const * centry)4301 SWIGINTERN void GDALColorTableShadow_SetColorEntry(GDALColorTableShadow *self,int entry,GDALColorEntry const *centry){
4302 GDALSetColorEntry(self, entry, centry);
4303 }
GDALColorTableShadow_CreateColorRamp(GDALColorTableShadow * self,int nStartIndex,GDALColorEntry const * startcolor,int nEndIndex,GDALColorEntry const * endcolor)4304 SWIGINTERN void GDALColorTableShadow_CreateColorRamp(GDALColorTableShadow *self,int nStartIndex,GDALColorEntry const *startcolor,int nEndIndex,GDALColorEntry const *endcolor){
4305 GDALCreateColorRamp(self, nStartIndex, startcolor, nEndIndex, endcolor);
4306 }
new_GDALRasterAttributeTableShadow()4307 SWIGINTERN GDALRasterAttributeTableShadow *new_GDALRasterAttributeTableShadow(){
4308 return (GDALRasterAttributeTableShadow*)
4309 GDALCreateRasterAttributeTable();
4310 }
delete_GDALRasterAttributeTableShadow(GDALRasterAttributeTableShadow * self)4311 SWIGINTERN void delete_GDALRasterAttributeTableShadow(GDALRasterAttributeTableShadow *self){
4312 GDALDestroyRasterAttributeTable(self);
4313 }
GDALRasterAttributeTableShadow_Clone(GDALRasterAttributeTableShadow * self)4314 SWIGINTERN GDALRasterAttributeTableShadow *GDALRasterAttributeTableShadow_Clone(GDALRasterAttributeTableShadow *self){
4315 return (GDALRasterAttributeTableShadow*) GDALRATClone(self);
4316 }
GDALRasterAttributeTableShadow_GetColumnCount(GDALRasterAttributeTableShadow * self)4317 SWIGINTERN int GDALRasterAttributeTableShadow_GetColumnCount(GDALRasterAttributeTableShadow *self){
4318 return GDALRATGetColumnCount( self );
4319 }
GDALRasterAttributeTableShadow_GetNameOfCol(GDALRasterAttributeTableShadow * self,int iCol)4320 SWIGINTERN char const *GDALRasterAttributeTableShadow_GetNameOfCol(GDALRasterAttributeTableShadow *self,int iCol){
4321 return GDALRATGetNameOfCol( self, iCol );
4322 }
GDALRasterAttributeTableShadow_GetUsageOfCol(GDALRasterAttributeTableShadow * self,int iCol)4323 SWIGINTERN GDALRATFieldUsage GDALRasterAttributeTableShadow_GetUsageOfCol(GDALRasterAttributeTableShadow *self,int iCol){
4324 return GDALRATGetUsageOfCol( self, iCol );
4325 }
GDALRasterAttributeTableShadow_GetTypeOfCol(GDALRasterAttributeTableShadow * self,int iCol)4326 SWIGINTERN GDALRATFieldType GDALRasterAttributeTableShadow_GetTypeOfCol(GDALRasterAttributeTableShadow *self,int iCol){
4327 return GDALRATGetTypeOfCol( self, iCol );
4328 }
GDALRasterAttributeTableShadow_GetColOfUsage(GDALRasterAttributeTableShadow * self,GDALRATFieldUsage eUsage)4329 SWIGINTERN int GDALRasterAttributeTableShadow_GetColOfUsage(GDALRasterAttributeTableShadow *self,GDALRATFieldUsage eUsage){
4330 return GDALRATGetColOfUsage( self, eUsage );
4331 }
GDALRasterAttributeTableShadow_GetRowCount(GDALRasterAttributeTableShadow * self)4332 SWIGINTERN int GDALRasterAttributeTableShadow_GetRowCount(GDALRasterAttributeTableShadow *self){
4333 return GDALRATGetRowCount( self );
4334 }
GDALRasterAttributeTableShadow_GetValueAsString(GDALRasterAttributeTableShadow * self,int iRow,int iCol)4335 SWIGINTERN char const *GDALRasterAttributeTableShadow_GetValueAsString(GDALRasterAttributeTableShadow *self,int iRow,int iCol){
4336 return GDALRATGetValueAsString( self, iRow, iCol );
4337 }
GDALRasterAttributeTableShadow_GetValueAsInt(GDALRasterAttributeTableShadow * self,int iRow,int iCol)4338 SWIGINTERN int GDALRasterAttributeTableShadow_GetValueAsInt(GDALRasterAttributeTableShadow *self,int iRow,int iCol){
4339 return GDALRATGetValueAsInt( self, iRow, iCol );
4340 }
GDALRasterAttributeTableShadow_GetValueAsDouble(GDALRasterAttributeTableShadow * self,int iRow,int iCol)4341 SWIGINTERN double GDALRasterAttributeTableShadow_GetValueAsDouble(GDALRasterAttributeTableShadow *self,int iRow,int iCol){
4342 return GDALRATGetValueAsDouble( self, iRow, iCol );
4343 }
GDALRasterAttributeTableShadow_SetValueAsString(GDALRasterAttributeTableShadow * self,int iRow,int iCol,char const * pszValue)4344 SWIGINTERN void GDALRasterAttributeTableShadow_SetValueAsString(GDALRasterAttributeTableShadow *self,int iRow,int iCol,char const *pszValue){
4345 GDALRATSetValueAsString( self, iRow, iCol, pszValue );
4346 }
GDALRasterAttributeTableShadow_SetValueAsInt(GDALRasterAttributeTableShadow * self,int iRow,int iCol,int nValue)4347 SWIGINTERN void GDALRasterAttributeTableShadow_SetValueAsInt(GDALRasterAttributeTableShadow *self,int iRow,int iCol,int nValue){
4348 GDALRATSetValueAsInt( self, iRow, iCol, nValue );
4349 }
GDALRasterAttributeTableShadow_SetValueAsDouble(GDALRasterAttributeTableShadow * self,int iRow,int iCol,double dfValue)4350 SWIGINTERN void GDALRasterAttributeTableShadow_SetValueAsDouble(GDALRasterAttributeTableShadow *self,int iRow,int iCol,double dfValue){
4351 GDALRATSetValueAsDouble( self, iRow, iCol, dfValue );
4352 }
GDALRasterAttributeTableShadow_SetRowCount(GDALRasterAttributeTableShadow * self,int nCount)4353 SWIGINTERN void GDALRasterAttributeTableShadow_SetRowCount(GDALRasterAttributeTableShadow *self,int nCount){
4354 GDALRATSetRowCount( self, nCount );
4355 }
GDALRasterAttributeTableShadow_CreateColumn(GDALRasterAttributeTableShadow * self,char const * pszName,GDALRATFieldType eType,GDALRATFieldUsage eUsage)4356 SWIGINTERN int GDALRasterAttributeTableShadow_CreateColumn(GDALRasterAttributeTableShadow *self,char const *pszName,GDALRATFieldType eType,GDALRATFieldUsage eUsage){
4357 return GDALRATCreateColumn( self, pszName, eType, eUsage );
4358 }
GDALRasterAttributeTableShadow_GetLinearBinning(GDALRasterAttributeTableShadow * self,double * pdfRow0Min,double * pdfBinSize)4359 SWIGINTERN bool GDALRasterAttributeTableShadow_GetLinearBinning(GDALRasterAttributeTableShadow *self,double *pdfRow0Min,double *pdfBinSize){
4360 return (GDALRATGetLinearBinning(self, pdfRow0Min, pdfBinSize) != 0) ? true : false;
4361 }
GDALRasterAttributeTableShadow_SetLinearBinning(GDALRasterAttributeTableShadow * self,double dfRow0Min,double dfBinSize)4362 SWIGINTERN int GDALRasterAttributeTableShadow_SetLinearBinning(GDALRasterAttributeTableShadow *self,double dfRow0Min,double dfBinSize){
4363 return GDALRATSetLinearBinning(self, dfRow0Min, dfBinSize);
4364 }
GDALRasterAttributeTableShadow_GetRowOfValue(GDALRasterAttributeTableShadow * self,double dfValue)4365 SWIGINTERN int GDALRasterAttributeTableShadow_GetRowOfValue(GDALRasterAttributeTableShadow *self,double dfValue){
4366 return GDALRATGetRowOfValue( self, dfValue );
4367 }
GDALRasterAttributeTableShadow_ChangesAreWrittenToFile(GDALRasterAttributeTableShadow * self)4368