wxruby3 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/wxruby3/include/wxruby-runtime.h +3 -0
- data/ext/wxruby3/swig/common.i +22 -0
- data/ext/wxruby3/swig/custom/director.swg +296 -0
- data/ext/wxruby3/swig/custom/rubyapi.swg +19 -0
- data/ext/wxruby3/swig/custom/rubyerrors.swg +45 -0
- data/ext/wxruby3/swig/custom/rubyhead.swg +192 -0
- data/ext/wxruby3/swig/custom/rubyrun.swg +187 -0
- data/ext/wxruby3/swig/custom/swigrun.swg +363 -0
- data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +173 -0
- data/ext/wxruby3/swig/wx.i +50 -30
- data/lib/wx/core/const.rb +83 -0
- data/lib/wx/doc/const.rb +66 -66
- data/lib/wx/doc/event.rb +0 -6
- data/lib/wx/doc/functions.rb +9 -9
- data/lib/wx/doc/window.rb +5 -0
- data/lib/wx/keyword_defs.rb +43 -6
- data/lib/wx/version.rb +1 -1
- data/rakelib/lib/config/macosx.rb +1 -1
- data/rakelib/lib/core/include/funcall.inc +33 -14
- data/rakelib/lib/core/include/swigdirector.inc +384 -0
- data/rakelib/lib/core/include/swigrubyerrors.inc +161 -0
- data/{ext/wxruby3/swig/custom/swig4/rubyrun.swg → rakelib/lib/core/include/swigrubyrun.inc} +245 -120
- data/rakelib/lib/core/include/swigrun.inc +700 -0
- data/rakelib/lib/core/package.rb +5 -2
- data/rakelib/lib/core/parameter.rb +3 -0
- data/rakelib/lib/director/accelerator.rb +1 -1
- data/rakelib/lib/director/animation.rb +1 -1
- data/rakelib/lib/director/animation_ctrl.rb +20 -0
- data/rakelib/lib/director/app.rb +23 -5
- data/rakelib/lib/director/art_provider.rb +1 -1
- data/rakelib/lib/director/data_object_simple_base.rb +1 -2
- data/rakelib/lib/director/dialog.rb +5 -0
- data/rakelib/lib/director/dialup_event.rb +44 -0
- data/rakelib/lib/director/dialup_manager.rb +45 -0
- data/rakelib/lib/director/event.rb +20 -2
- data/rakelib/lib/director/file_ctrl.rb +35 -0
- data/rakelib/lib/director/file_ctrl_event.rb +26 -0
- data/rakelib/lib/director/gdicommon.rb +19 -1
- data/rakelib/lib/director/grid_cell_editor.rb +6 -6
- data/rakelib/lib/director/help_controller.rb +1 -1
- data/rakelib/lib/director/pgarray_editor_dialog.rb +0 -6
- data/rakelib/lib/director/pgeditor.rb +2 -2
- data/rakelib/lib/director/pgproperties.rb +2 -2
- data/rakelib/lib/director/richtext_buffer.rb +1 -1
- data/rakelib/lib/director/richtext_ctrl.rb +1 -1
- data/rakelib/lib/director/sash_event.rb +42 -0
- data/rakelib/lib/director/sizer.rb +64 -1
- data/rakelib/lib/director/sizer_item.rb +22 -0
- data/rakelib/lib/director/task_bar_icon.rb +1 -1
- data/rakelib/lib/director/tree_ctrl.rb +19 -44
- data/rakelib/lib/generate/doc/animation_ctrl.yaml +15 -0
- data/rakelib/lib/generate/doc/events.yaml +10 -4
- data/rakelib/lib/generate/doc/static_box.yaml +8 -0
- data/rakelib/lib/generate/doc/xml_resource.yaml +3 -0
- data/rakelib/lib/generate/doc.rb +14 -3
- data/rakelib/lib/generate/interface.rb +4 -3
- data/rakelib/lib/specs/interfaces.rb +5 -1
- data/rakelib/lib/swig_runner.rb +4 -50
- data/rakelib/lib/typemap/common.rb +24 -9
- data/rakelib/lib/typemap/data_format.rb +1 -1
- data/rakelib/lib/typemap/data_object_data.rb +2 -2
- data/rakelib/lib/typemap/pgprop_arg.rb +7 -2
- data/rakelib/lib/typemap/points_list.rb +5 -7
- data/rakelib/lib/util/string.rb +10 -8
- data/samples/text/richtext.rb +0 -30
- data/tests/test_app_exit_exception.rb +36 -0
- data/tests/test_app_init_exception.rb +20 -0
- data/tests/test_book_controls.rb +29 -0
- data/tests/test_exceptions.rb +41 -0
- data/tests/test_sizer.rb +43 -0
- data/tests/test_std_controls.rb +36 -0
- metadata +25 -4
- 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
|
data/rakelib/lib/core/package.rb
CHANGED
@@ -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'))
|