wxruby3 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/ext/wxruby3/include/wxruby-runtime.h +3 -0
  3. data/ext/wxruby3/swig/common.i +22 -0
  4. data/ext/wxruby3/swig/custom/director.swg +296 -0
  5. data/ext/wxruby3/swig/custom/rubyapi.swg +19 -0
  6. data/ext/wxruby3/swig/custom/rubyerrors.swg +45 -0
  7. data/ext/wxruby3/swig/custom/rubyhead.swg +192 -0
  8. data/ext/wxruby3/swig/custom/rubyrun.swg +187 -0
  9. data/ext/wxruby3/swig/custom/swigrun.swg +363 -0
  10. data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +173 -0
  11. data/ext/wxruby3/swig/wx.i +50 -30
  12. data/lib/wx/core/const.rb +83 -0
  13. data/lib/wx/doc/const.rb +66 -66
  14. data/lib/wx/doc/event.rb +0 -6
  15. data/lib/wx/doc/functions.rb +9 -9
  16. data/lib/wx/doc/window.rb +5 -0
  17. data/lib/wx/keyword_defs.rb +43 -6
  18. data/lib/wx/version.rb +1 -1
  19. data/rakelib/lib/config/macosx.rb +1 -1
  20. data/rakelib/lib/core/include/funcall.inc +33 -14
  21. data/rakelib/lib/core/include/swigdirector.inc +384 -0
  22. data/rakelib/lib/core/include/swigrubyerrors.inc +161 -0
  23. data/{ext/wxruby3/swig/custom/swig4/rubyrun.swg → rakelib/lib/core/include/swigrubyrun.inc} +245 -120
  24. data/rakelib/lib/core/include/swigrun.inc +700 -0
  25. data/rakelib/lib/core/package.rb +5 -2
  26. data/rakelib/lib/core/parameter.rb +3 -0
  27. data/rakelib/lib/director/accelerator.rb +1 -1
  28. data/rakelib/lib/director/animation.rb +1 -1
  29. data/rakelib/lib/director/animation_ctrl.rb +20 -0
  30. data/rakelib/lib/director/app.rb +23 -5
  31. data/rakelib/lib/director/art_provider.rb +1 -1
  32. data/rakelib/lib/director/data_object_simple_base.rb +1 -2
  33. data/rakelib/lib/director/dialog.rb +5 -0
  34. data/rakelib/lib/director/dialup_event.rb +44 -0
  35. data/rakelib/lib/director/dialup_manager.rb +45 -0
  36. data/rakelib/lib/director/event.rb +20 -2
  37. data/rakelib/lib/director/file_ctrl.rb +35 -0
  38. data/rakelib/lib/director/file_ctrl_event.rb +26 -0
  39. data/rakelib/lib/director/gdicommon.rb +19 -1
  40. data/rakelib/lib/director/grid_cell_editor.rb +6 -6
  41. data/rakelib/lib/director/help_controller.rb +1 -1
  42. data/rakelib/lib/director/pgarray_editor_dialog.rb +0 -6
  43. data/rakelib/lib/director/pgeditor.rb +2 -2
  44. data/rakelib/lib/director/pgproperties.rb +2 -2
  45. data/rakelib/lib/director/richtext_buffer.rb +1 -1
  46. data/rakelib/lib/director/richtext_ctrl.rb +1 -1
  47. data/rakelib/lib/director/sash_event.rb +42 -0
  48. data/rakelib/lib/director/sizer.rb +64 -1
  49. data/rakelib/lib/director/sizer_item.rb +22 -0
  50. data/rakelib/lib/director/task_bar_icon.rb +1 -1
  51. data/rakelib/lib/director/tree_ctrl.rb +19 -44
  52. data/rakelib/lib/generate/doc/animation_ctrl.yaml +15 -0
  53. data/rakelib/lib/generate/doc/events.yaml +10 -4
  54. data/rakelib/lib/generate/doc/static_box.yaml +8 -0
  55. data/rakelib/lib/generate/doc/xml_resource.yaml +3 -0
  56. data/rakelib/lib/generate/doc.rb +14 -3
  57. data/rakelib/lib/generate/interface.rb +4 -3
  58. data/rakelib/lib/specs/interfaces.rb +5 -1
  59. data/rakelib/lib/swig_runner.rb +4 -50
  60. data/rakelib/lib/typemap/common.rb +24 -9
  61. data/rakelib/lib/typemap/data_format.rb +1 -1
  62. data/rakelib/lib/typemap/data_object_data.rb +2 -2
  63. data/rakelib/lib/typemap/pgprop_arg.rb +7 -2
  64. data/rakelib/lib/typemap/points_list.rb +5 -7
  65. data/rakelib/lib/util/string.rb +10 -8
  66. data/samples/text/richtext.rb +0 -30
  67. data/tests/test_app_exit_exception.rb +36 -0
  68. data/tests/test_app_init_exception.rb +20 -0
  69. data/tests/test_book_controls.rb +29 -0
  70. data/tests/test_exceptions.rb +41 -0
  71. data/tests/test_sizer.rb +43 -0
  72. data/tests/test_std_controls.rb +36 -0
  73. metadata +25 -4
  74. data/ext/wxruby3/swig/custom/swig3/rubyrun.swg +0 -456
@@ -0,0 +1,700 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ // SWIG runtime
6
+
7
+ /* inline attribute */
8
+ #ifndef SWIGINLINE
9
+ # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
10
+ # define SWIGINLINE inline
11
+ # else
12
+ # define SWIGINLINE
13
+ # endif
14
+ #endif
15
+
16
+ /* attribute recognised by some compilers to avoid 'unused' warnings */
17
+ #ifndef SWIGUNUSED
18
+ # if defined(__GNUC__)
19
+ # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
20
+ # define SWIGUNUSED __attribute__ ((__unused__))
21
+ # else
22
+ # define SWIGUNUSED
23
+ # endif
24
+ # elif defined(__ICC)
25
+ # define SWIGUNUSED __attribute__ ((__unused__))
26
+ # else
27
+ # define SWIGUNUSED
28
+ # endif
29
+ #endif
30
+
31
+ #ifndef SWIG_MSC_UNSUPPRESS_4505
32
+ # if defined(_MSC_VER)
33
+ # pragma warning(disable : 4505) /* unreferenced local function has been removed */
34
+ # endif
35
+ #endif
36
+
37
+ #ifndef SWIGUNUSEDPARM
38
+ # ifdef __cplusplus
39
+ # define SWIGUNUSEDPARM(p)
40
+ # else
41
+ # define SWIGUNUSEDPARM(p) p SWIGUNUSED
42
+ # endif
43
+ #endif
44
+
45
+ /* internal SWIG method */
46
+ #ifndef SWIGINTERN
47
+ # define SWIGINTERN static SWIGUNUSED
48
+ #endif
49
+
50
+ /* This should only be incremented when either the layout of swig_type_info changes,
51
+ or for whatever reason, the runtime changes incompatibly */
52
+ #define SWIG_RUNTIME_VERSION "4"
53
+
54
+ /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
55
+ #ifdef SWIG_TYPE_TABLE
56
+ # define SWIG_QUOTE_STRING(x) #x
57
+ # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
58
+ # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
59
+ #else
60
+ # define SWIG_TYPE_TABLE_NAME
61
+ #endif
62
+
63
+ /*
64
+ You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
65
+ creating a static or dynamic library from the SWIG runtime code.
66
+ In 99.9% of the cases, SWIG just needs to declare them as 'static'.
67
+
68
+ But only do this if strictly necessary, ie, if you have problems
69
+ with your compiler or suchlike.
70
+ */
71
+
72
+ #ifndef SWIGRUNTIME
73
+ # define SWIGRUNTIME SWIGINTERN
74
+ #endif
75
+
76
+ #ifndef SWIGRUNTIMEINLINE
77
+ # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
78
+ #endif
79
+
80
+ /* Generic buffer size */
81
+ #ifndef SWIG_BUFFER_SIZE
82
+ # define SWIG_BUFFER_SIZE 1024
83
+ #endif
84
+
85
+ /* Flags for pointer conversions */
86
+ #define SWIG_POINTER_DISOWN 0x1
87
+ #define SWIG_CAST_NEW_MEMORY 0x2
88
+ #define SWIG_POINTER_NO_NULL 0x4
89
+ #define SWIG_POINTER_CLEAR 0x8
90
+ #define SWIG_POINTER_RELEASE (SWIG_POINTER_CLEAR | SWIG_POINTER_DISOWN)
91
+
92
+ /* Flags for new pointer objects */
93
+ #define SWIG_POINTER_OWN 0x1
94
+
95
+
96
+ /*
97
+ Flags/methods for returning states.
98
+
99
+ The SWIG conversion methods, as ConvertPtr, return an integer
100
+ that tells if the conversion was successful or not. And if not,
101
+ an error code can be returned (see swigerrors.swg for the codes).
102
+
103
+ Use the following macros/flags to set or process the returning
104
+ states.
105
+
106
+ In old versions of SWIG, code such as the following was usually written:
107
+
108
+ if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
109
+ // success code
110
+ } else {
111
+ //fail code
112
+ }
113
+
114
+ Now you can be more explicit:
115
+
116
+ int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
117
+ if (SWIG_IsOK(res)) {
118
+ // success code
119
+ } else {
120
+ // fail code
121
+ }
122
+
123
+ which is the same really, but now you can also do
124
+
125
+ Type *ptr;
126
+ int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
127
+ if (SWIG_IsOK(res)) {
128
+ // success code
129
+ if (SWIG_IsNewObj(res) {
130
+ ...
131
+ delete *ptr;
132
+ } else {
133
+ ...
134
+ }
135
+ } else {
136
+ // fail code
137
+ }
138
+
139
+ I.e., now SWIG_ConvertPtr can return new objects and you can
140
+ identify the case and take care of the deallocation. Of course that
141
+ also requires SWIG_ConvertPtr to return new result values, such as
142
+
143
+ int SWIG_ConvertPtr(obj, ptr,...) {
144
+ if (<obj is ok>) {
145
+ if (<need new object>) {
146
+ *ptr = <ptr to new allocated object>;
147
+ return SWIG_NEWOBJ;
148
+ } else {
149
+ *ptr = <ptr to old object>;
150
+ return SWIG_OLDOBJ;
151
+ }
152
+ } else {
153
+ return SWIG_BADOBJ;
154
+ }
155
+ }
156
+
157
+ Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
158
+ more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
159
+ SWIG errors code.
160
+
161
+ Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
162
+ allows returning the 'cast rank', for example, if you have this
163
+
164
+ int food(double)
165
+ int fooi(int);
166
+
167
+ and you call
168
+
169
+ food(1) // cast rank '1' (1 -> 1.0)
170
+ fooi(1) // cast rank '0'
171
+
172
+ just use the SWIG_AddCast()/SWIG_CheckState()
173
+ */
174
+
175
+ #define SWIG_OK (0)
176
+ /* Runtime errors are < 0 */
177
+ #define SWIG_ERROR (-1)
178
+ /* Errors in range -1 to -99 are in swigerrors.swg (errors for all languages including those not using the runtime) */
179
+ /* Errors in range -100 to -199 are language specific errors defined in *errors.swg */
180
+ /* Errors < -200 are generic runtime specific errors */
181
+ #define SWIG_ERROR_RELEASE_NOT_OWNED (-200)
182
+
183
+ #define SWIG_IsOK(r) (r >= 0)
184
+ #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
185
+
186
+ /* The CastRankLimit says how many bits are used for the cast rank */
187
+ #define SWIG_CASTRANKLIMIT (1 << 8)
188
+ /* The NewMask denotes the object was created (using new/malloc) */
189
+ #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1)
190
+ /* The TmpMask is for in/out typemaps that use temporary objects */
191
+ #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1)
192
+ /* Simple returning values */
193
+ #define SWIG_BADOBJ (SWIG_ERROR)
194
+ #define SWIG_OLDOBJ (SWIG_OK)
195
+ #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
196
+ #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
197
+ /* Check, add and del object mask methods */
198
+ #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
199
+ #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
200
+ #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
201
+ #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
202
+ #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
203
+ #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
204
+
205
+ /* Cast-Rank Mode */
206
+ #if defined(SWIG_CASTRANK_MODE)
207
+ # ifndef SWIG_TypeRank
208
+ # define SWIG_TypeRank unsigned long
209
+ # endif
210
+ # ifndef SWIG_MAXCASTRANK /* Default cast allowed */
211
+ # define SWIG_MAXCASTRANK (2)
212
+ # endif
213
+ # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
214
+ # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
215
+ SWIGINTERNINLINE int SWIG_AddCast(int r) {
216
+ return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
217
+ }
218
+ SWIGINTERNINLINE int SWIG_CheckState(int r) {
219
+ return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
220
+ }
221
+ #else /* no cast-rank mode */
222
+ # define SWIG_AddCast(r) (r)
223
+ # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
224
+ #endif
225
+
226
+
227
+ #include <string.h>
228
+
229
+ #ifdef __cplusplus
230
+ extern "C" {
231
+ #endif
232
+
233
+ typedef void *(*swig_converter_func)(void *, int *);
234
+ typedef struct swig_type_info *(*swig_dycast_func)(void **);
235
+
236
+ /* Structure to store information on one type */
237
+ typedef struct WXRB_EXPORT_FLAG swig_type_info {
238
+ const char *name; /* mangled name of this type */
239
+ const char *str; /* human readable name of this type */
240
+ swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
241
+ struct swig_cast_info *cast; /* linked list of types that can cast into this type */
242
+ void *clientdata; /* language specific type data */
243
+ int owndata; /* flag if the structure owns the clientdata */
244
+ } swig_type_info;
245
+
246
+ /* Structure to store a type and conversion function used for casting */
247
+ typedef struct WXRB_EXPORT_FLAG swig_cast_info {
248
+ swig_type_info *type; /* pointer to type that is equivalent to this type */
249
+ swig_converter_func converter; /* function to cast the void pointers */
250
+ struct swig_cast_info *next; /* pointer to next cast in linked list */
251
+ struct swig_cast_info *prev; /* pointer to the previous cast */
252
+ } swig_cast_info;
253
+
254
+ /* Structure used to store module information
255
+ * Each module generates one structure like this, and the runtime collects
256
+ * all of these structures and stores them in a circularly linked list.*/
257
+ typedef struct WXRB_EXPORT_FLAG swig_module_info {
258
+ swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
259
+ size_t size; /* Number of types in this module */
260
+ struct swig_module_info *next; /* Pointer to next element in circularly linked list */
261
+ swig_type_info **type_initial; /* Array of initially generated type structures */
262
+ swig_cast_info **cast_initial; /* Array of initially generated casting structures */
263
+ void *clientdata; /* Language specific module data */
264
+ } swig_module_info;
265
+
266
+ /*
267
+ Compare two type names skipping the space characters, therefore
268
+ "char*" == "char *" and "Class<int>" == "Class<int >", etc.
269
+
270
+ Return 0 when the two name types are equivalent, as in
271
+ strncmp, but skipping ' '.
272
+ */
273
+ WXRB_EXPORT_FLAG int
274
+ SWIG_TypeNameComp(const char *f1, const char *l1,
275
+ const char *f2, const char *l2)
276
+ {
277
+ for (;(f1 != l1) && (f2 != l2); ++f1, ++f2)
278
+ {
279
+ while ((*f1 == ' ') && (f1 != l1)) ++f1;
280
+ while ((*f2 == ' ') && (f2 != l2)) ++f2;
281
+ if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
282
+ }
283
+ return (int)((l1 - f1) - (l2 - f2));
284
+ }
285
+
286
+ /*
287
+ Check type equivalence in a name list like <name1>|<name2>|...
288
+ Return 0 if equal, -1 if nb < tb, 1 if nb > tb
289
+ */
290
+ WXRB_EXPORT_FLAG int
291
+ SWIG_TypeCmp(const char *nb, const char *tb)
292
+ {
293
+ int equiv = 1;
294
+ const char* te = tb + strlen(tb);
295
+ const char* ne = nb;
296
+ while (equiv != 0 && *ne)
297
+ {
298
+ for (nb = ne; *ne; ++ne)
299
+ {
300
+ if (*ne == '|') break;
301
+ }
302
+ equiv = SWIG_TypeNameComp(nb, ne, tb, te);
303
+ if (*ne) ++ne;
304
+ }
305
+ return equiv;
306
+ }
307
+
308
+ /*
309
+ Check type equivalence in a name list like <name1>|<name2>|...
310
+ Return 0 if not equal, 1 if equal
311
+ */
312
+ SWIGRUNTIME int
313
+ SWIG_TypeEquiv(const char *nb, const char *tb) {
314
+ return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
315
+ }
316
+
317
+ /*
318
+ Check the typename
319
+ */
320
+ WXRB_EXPORT_FLAG swig_cast_info *
321
+ SWIG_TypeCheck(const char *c, swig_type_info *ty)
322
+ {
323
+ if (ty)
324
+ {
325
+ swig_cast_info *iter = ty->cast;
326
+ while (iter)
327
+ {
328
+ if (strcmp(iter->type->name, c) == 0)
329
+ {
330
+ if (iter == ty->cast)
331
+ return iter;
332
+ /* Move iter to the top of the linked list */
333
+ iter->prev->next = iter->next;
334
+ if (iter->next)
335
+ iter->next->prev = iter->prev;
336
+ iter->next = ty->cast;
337
+ iter->prev = 0;
338
+ if (ty->cast) ty->cast->prev = iter;
339
+ ty->cast = iter;
340
+ return iter;
341
+ }
342
+ iter = iter->next;
343
+ }
344
+ }
345
+ return 0;
346
+ }
347
+
348
+ /*
349
+ Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
350
+ */
351
+ WXRB_EXPORT_FLAG swig_cast_info *
352
+ SWIG_TypeCheckStruct(const swig_type_info *from, swig_type_info *ty)
353
+ {
354
+ if (ty)
355
+ {
356
+ swig_cast_info *iter = ty->cast;
357
+ while (iter)
358
+ {
359
+ if (iter->type == from)
360
+ {
361
+ if (iter == ty->cast)
362
+ return iter;
363
+ /* Move iter to the top of the linked list */
364
+ iter->prev->next = iter->next;
365
+ if (iter->next)
366
+ iter->next->prev = iter->prev;
367
+ iter->next = ty->cast;
368
+ iter->prev = 0;
369
+ if (ty->cast) ty->cast->prev = iter;
370
+ ty->cast = iter;
371
+ return iter;
372
+ }
373
+ iter = iter->next;
374
+ }
375
+ }
376
+ return 0;
377
+ }
378
+
379
+ /*
380
+ Cast a pointer up an inheritance hierarchy
381
+ */
382
+ SWIGRUNTIMEINLINE void *
383
+ SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
384
+ return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
385
+ }
386
+
387
+ /*
388
+ Dynamic pointer casting. Down an inheritance hierarchy
389
+ */
390
+ WXRB_EXPORT_FLAG swig_type_info *
391
+ SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr)
392
+ {
393
+ swig_type_info *lastty = ty;
394
+ if (!ty || !ty->dcast) return ty;
395
+ while (ty && (ty->dcast))
396
+ {
397
+ ty = (*ty->dcast)(ptr);
398
+ if (ty) lastty = ty;
399
+ }
400
+ return lastty;
401
+ }
402
+
403
+ /*
404
+ Return the name associated with this type
405
+ */
406
+ SWIGRUNTIMEINLINE const char *
407
+ SWIG_TypeName(const swig_type_info *ty) {
408
+ return ty->name;
409
+ }
410
+
411
+ /*
412
+ Return the pretty name associated with this type,
413
+ that is an unmangled type name in a form presentable to the user.
414
+ */
415
+ WXRB_EXPORT_FLAG const char *
416
+ SWIG_TypePrettyName(const swig_type_info *type)
417
+ {
418
+ /* The "str" field contains the equivalent pretty names of the
419
+ type, separated by vertical-bar characters. Choose the last
420
+ name. It should be the most specific; a fully resolved name
421
+ but not necessarily with default template parameters expanded. */
422
+ if (!type) return NULL;
423
+ if (type->str != NULL)
424
+ {
425
+ const char *last_name = type->str;
426
+ const char *s;
427
+ for (s = type->str; *s; s++)
428
+ if (*s == '|') last_name = s+1;
429
+ return last_name;
430
+ }
431
+ else
432
+ return type->name;
433
+ }
434
+
435
+ /*
436
+ Set the clientdata field for a type
437
+ */
438
+ WXRB_EXPORT_FLAG void
439
+ SWIG_TypeClientData(swig_type_info *ti, void *clientdata)
440
+ {
441
+ swig_cast_info *cast = ti->cast;
442
+ /* if (ti->clientdata == clientdata) return; */
443
+ ti->clientdata = clientdata;
444
+
445
+ while (cast)
446
+ {
447
+ if (!cast->converter)
448
+ {
449
+ swig_type_info *tc = cast->type;
450
+ if (!tc->clientdata)
451
+ {
452
+ SWIG_TypeClientData(tc, clientdata);
453
+ }
454
+ }
455
+ cast = cast->next;
456
+ }
457
+ }
458
+ WXRB_EXPORT_FLAG void
459
+ SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata)
460
+ {
461
+ SWIG_TypeClientData(ti, clientdata);
462
+ ti->owndata = 1;
463
+ }
464
+
465
+ /*
466
+ Search for a swig_type_info structure only by mangled name
467
+ Search is a O(log #types)
468
+
469
+ We start searching at module start, and finish searching when start == end.
470
+ Note: if start == end at the beginning of the function, we go all the way around
471
+ the circular list.
472
+ */
473
+ WXRB_EXPORT_FLAG swig_type_info *
474
+ SWIG_MangledTypeQueryModule(swig_module_info *start,
475
+ swig_module_info *end,
476
+ const char *name)
477
+ {
478
+ swig_module_info *iter = start;
479
+ do
480
+ {
481
+ if (iter->size)
482
+ {
483
+ size_t l = 0;
484
+ size_t r = iter->size - 1;
485
+ do
486
+ {
487
+ /* since l+r >= 0, we can (>> 1) instead (/ 2) */
488
+ size_t i = (l + r) >> 1;
489
+ const char *iname = iter->types[i]->name;
490
+ if (iname)
491
+ {
492
+ int compare = strcmp(name, iname);
493
+ if (compare == 0)
494
+ {
495
+ return iter->types[i];
496
+ }
497
+ else if (compare < 0)
498
+ {
499
+ if (i)
500
+ {
501
+ r = i - 1;
502
+ }
503
+ else
504
+ {
505
+ break;
506
+ }
507
+ }
508
+ else if (compare > 0)
509
+ {
510
+ l = i + 1;
511
+ }
512
+ }
513
+ else
514
+ {
515
+ break; /* should never happen */
516
+ }
517
+ } while (l <= r);
518
+ }
519
+ iter = iter->next;
520
+ } while (iter != end);
521
+ return 0;
522
+ }
523
+
524
+ /*
525
+ Search for a swig_type_info structure for either a mangled name or a human readable name.
526
+ It first searches the mangled names of the types, which is a O(log #types)
527
+ If a type is not found it then searches the human readable names, which is O(#types).
528
+
529
+ We start searching at module start, and finish searching when start == end.
530
+ Note: if start == end at the beginning of the function, we go all the way around
531
+ the circular list.
532
+ */
533
+ WXRB_EXPORT_FLAG swig_type_info *
534
+ SWIG_TypeQueryModule(swig_module_info *start,
535
+ swig_module_info *end,
536
+ const char *name)
537
+ {
538
+ /* STEP 1: Search the name field using binary search */
539
+ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
540
+ if (ret)
541
+ {
542
+ return ret;
543
+ }
544
+ else
545
+ {
546
+ /* STEP 2: If the type hasn't been found, do a complete search
547
+ of the str field (the human readable name) */
548
+ swig_module_info *iter = start;
549
+ do
550
+ {
551
+ size_t i = 0;
552
+ for (; i < iter->size; ++i)
553
+ {
554
+ if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
555
+ return iter->types[i];
556
+ }
557
+ iter = iter->next;
558
+ } while (iter != end);
559
+ }
560
+
561
+ /* neither found a match */
562
+ return 0;
563
+ }
564
+
565
+ /*
566
+ Pack binary data into a string
567
+ */
568
+ WXRB_EXPORT_FLAG char *
569
+ SWIG_PackData(char *c, void *ptr, size_t sz)
570
+ {
571
+ static const char hex[17] = "0123456789abcdef";
572
+ const unsigned char *u = (unsigned char *) ptr;
573
+ const unsigned char *eu = u + sz;
574
+ for (; u != eu; ++u)
575
+ {
576
+ unsigned char uu = *u;
577
+ *(c++) = hex[(uu & 0xf0) >> 4];
578
+ *(c++) = hex[uu & 0xf];
579
+ }
580
+ return c;
581
+ }
582
+
583
+ /*
584
+ Unpack binary data from a string
585
+ */
586
+ WXRB_EXPORT_FLAG const char *
587
+ SWIG_UnpackData(const char *c, void *ptr, size_t sz)
588
+ {
589
+ unsigned char *u = (unsigned char *) ptr;
590
+ const unsigned char *eu = u + sz;
591
+ for (; u != eu; ++u)
592
+ {
593
+ char d = *(c++);
594
+ unsigned char uu;
595
+ if ((d >= '0') && (d <= '9'))
596
+ uu = (unsigned char)((d - '0') << 4);
597
+ else if ((d >= 'a') && (d <= 'f'))
598
+ uu = (unsigned char)((d - ('a'-10)) << 4);
599
+ else
600
+ return (char *) 0;
601
+ d = *(c++);
602
+ if ((d >= '0') && (d <= '9'))
603
+ uu |= (unsigned char)(d - '0');
604
+ else if ((d >= 'a') && (d <= 'f'))
605
+ uu |= (unsigned char)(d - ('a'-10));
606
+ else
607
+ return (char *) 0;
608
+ *u = uu;
609
+ }
610
+ return c;
611
+ }
612
+
613
+ /*
614
+ Pack 'void *' into a string buffer.
615
+ */
616
+ WXRB_EXPORT_FLAG char *
617
+ SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz)
618
+ {
619
+ char *r = buff;
620
+ if ((2*sizeof(void *) + 2) > bsz) return 0;
621
+ *(r++) = '_';
622
+ r = SWIG_PackData(r,&ptr,sizeof(void *));
623
+ if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
624
+ strcpy(r,name);
625
+ return buff;
626
+ }
627
+
628
+ WXRB_EXPORT_FLAG const char *
629
+ SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name)
630
+ {
631
+ if (*c != '_')
632
+ {
633
+ if (strcmp(c,"NULL") == 0)
634
+ {
635
+ *ptr = (void *) 0;
636
+ return name;
637
+ }
638
+ else
639
+ {
640
+ return 0;
641
+ }
642
+ }
643
+ return SWIG_UnpackData(++c,ptr,sizeof(void *));
644
+ }
645
+
646
+ WXRB_EXPORT_FLAG char *
647
+ SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz)
648
+ {
649
+ char *r = buff;
650
+ size_t lname = (name ? strlen(name) : 0);
651
+ if ((2*sz + 2 + lname) > bsz) return 0;
652
+ *(r++) = '_';
653
+ r = SWIG_PackData(r,ptr,sz);
654
+ if (lname)
655
+ {
656
+ strncpy(r,name,lname+1);
657
+ }
658
+ else
659
+ {
660
+ *r = 0;
661
+ }
662
+ return buff;
663
+ }
664
+
665
+ WXRB_EXPORT_FLAG const char *
666
+ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name)
667
+ {
668
+ if (*c != '_')
669
+ {
670
+ if (strcmp(c,"NULL") == 0)
671
+ {
672
+ memset(ptr,0,sz);
673
+ return name;
674
+ }
675
+ else
676
+ {
677
+ return 0;
678
+ }
679
+ }
680
+ return SWIG_UnpackData(++c,ptr,sz);
681
+ }
682
+
683
+ #ifdef __cplusplus
684
+ }
685
+ #endif
686
+
687
+ /* Errors in SWIG */
688
+ #define SWIG_UnknownError -1
689
+ #define SWIG_IOError -2
690
+ #define SWIG_RuntimeError -3
691
+ #define SWIG_IndexError -4
692
+ #define SWIG_TypeError -5
693
+ #define SWIG_DivisionByZero -6
694
+ #define SWIG_OverflowError -7
695
+ #define SWIG_SyntaxError -8
696
+ #define SWIG_ValueError -9
697
+ #define SWIG_SystemError -10
698
+ #define SWIG_AttributeError -11
699
+ #define SWIG_MemoryError -12
700
+ #define SWIG_NullReferenceError -13
@@ -282,6 +282,7 @@ module WXRuby3
282
282
  Stream.transaction do
283
283
  fsrc = CodeStream.new(initializer_src)
284
284
  fsrc.puts '#include <ruby.h>'
285
+ fsrc.puts '#include <ruby/version.h>'
285
286
  fsrc.puts <<~__HEREDOC
286
287
  #ifndef WXRB_EXPORT_FLAG
287
288
  # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
@@ -319,9 +320,11 @@ module WXRuby3
319
320
  fsrc.puts "VALUE #{module_variable} = 0;"
320
321
  fsrc.puts "WXRB_IMPORT_FLAG VALUE wxRuby_Core();" unless is_core?
321
322
  fsrc.puts
322
- fsrc.puts '#define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)'
323
- fsrc.puts
324
323
  if is_core?
324
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigrun.inc'))
325
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigrubyerrors.inc'))
326
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigrubyrun.inc'))
327
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigdirector.inc'))
325
328
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'funcall.inc'))
326
329
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'enum.inc'))
327
330
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'init.inc'))