Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
aswrappedcall.h
Go to the documentation of this file.
1#ifndef AS_GEN_WRAPPER_H
2#define AS_GEN_WRAPPER_H
3
4#ifndef ANGELSCRIPT_H
5// Avoid having to inform include path if header is already include before
6#include <angelscript.h>
7#endif
8#include <new>
9
10namespace gw {
11
12template <typename T> class Proxy {
13 public:
16 static T cast(void * ptr) {
17 return reinterpret_cast<Proxy<T> *>(&ptr)->value;
18 }
19 private:
20 Proxy(const Proxy &);
21 Proxy & operator=(const Proxy &);
22};
23
24template <typename T> struct Wrapper {};
25template <typename T> struct WrapperGlobal {};
26template <typename T> struct ObjFirst {};
27template <typename T> struct ObjLast {};
28template <typename T> struct Constructor {};
29
30template <typename T>
31void destroy(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
32 static_cast<T *>(gen->GetObject())->~T();
33}
34template <>
35struct Wrapper<void (*)(void)> {
36 template <void (*fp)(void)>
37 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
38 ((fp)());
39 }
40};
41template <typename R>
42struct Wrapper<R (*)(void)> {
43 template <R (*fp)(void)>
44 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
45 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)());
46 }
47};
48template <typename T>
49struct Wrapper<void (T::*)(void)> {
50 template <void (T::*fp)(void)>
51 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
52 ((static_cast<T *>(gen->GetObject())->*fp)());
53 }
54};
55template <typename T, typename R>
56struct Wrapper<R (T::*)(void)> {
57 template <R (T::*fp)(void)>
58 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
59 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)());
60 }
61};
62template <typename T>
63struct Wrapper<void (T::*)(void) const> {
64 template <void (T::*fp)(void) const>
65 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
66 ((static_cast<T *>(gen->GetObject())->*fp)());
67 }
68};
69template <typename T, typename R>
70struct Wrapper<R (T::*)(void) const> {
71 template <R (T::*fp)(void) const>
72 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
73 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)());
74 }
75};
76template <typename T>
77struct WrapperGlobal<void (T::*)(void)> {
78 template <void (T::*fp)(void)>
79 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
80 ((static_cast<T *>(gen->GetAuxiliary())->*fp)());
81 }
82};
83template <typename T, typename R>
84struct WrapperGlobal<R (T::*)(void)> {
85 template <R (T::*fp)(void)>
86 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
87 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)());
88 }
89};
90template <typename T>
91struct WrapperGlobal<void (T::*)(void) const> {
92 template <void (T::*fp)(void) const>
93 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
94 ((static_cast<T *>(gen->GetAuxiliary())->*fp)());
95 }
96};
97template <typename T, typename R>
98struct WrapperGlobal<R (T::*)(void) const> {
99 template <R (T::*fp)(void) const>
100 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
101 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)());
102 }
103};
104template <typename T>
105struct ObjFirst<void (*)(T)> {
106 template <void (*fp)(T)>
107 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
108 ((fp)(
109 Proxy<T>::cast(gen->GetObject())));
110 }
111};
112template <typename T, typename R>
113struct ObjFirst<R (*)(T)> {
114 template <R (*fp)(T)>
115 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
116 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
117 Proxy<T>::cast(gen->GetObject())));
118 }
119};
120template <typename T>
121struct ObjLast<void (*)(T)> {
122 template <void (*fp)(T)>
123 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
124 ((fp)(
125 Proxy<T>::cast(gen->GetObject())));
126 }
127};
128template <typename T, typename R>
129struct ObjLast<R (*)(T)> {
130 template <R (*fp)(T)>
131 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
132 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
133 Proxy<T>::cast(gen->GetObject())));
134 }
135};
136template <typename T>
137struct Constructor <T ()> {
138 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
139 new (gen->GetObject()) T();
140 }
141};
142template <typename A0>
143struct Wrapper<void (*)(A0)> {
144 template <void (*fp)(A0)>
145 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
146 ((fp)(
147 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
148 }
149};
150template <typename R, typename A0>
151struct Wrapper<R (*)(A0)> {
152 template <R (*fp)(A0)>
153 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
154 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
155 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
156 }
157};
158template <typename T, typename A0>
159struct Wrapper<void (T::*)(A0)> {
160 template <void (T::*fp)(A0)>
161 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
162 ((static_cast<T *>(gen->GetObject())->*fp)(
163 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
164 }
165};
166template <typename T, typename R, typename A0>
167struct Wrapper<R (T::*)(A0)> {
168 template <R (T::*fp)(A0)>
169 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
170 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
171 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
172 }
173};
174template <typename T, typename A0>
175struct Wrapper<void (T::*)(A0) const> {
176 template <void (T::*fp)(A0) const>
177 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
178 ((static_cast<T *>(gen->GetObject())->*fp)(
179 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
180 }
181};
182template <typename T, typename R, typename A0>
183struct Wrapper<R (T::*)(A0) const> {
184 template <R (T::*fp)(A0) const>
185 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
186 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
187 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
188 }
189};
190template <typename T, typename A0>
191struct WrapperGlobal<void (T::*)(A0)> {
192 template <void (T::*fp)(A0)>
193 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
194 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
195 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
196 }
197};
198template <typename T, typename R, typename A0>
199struct WrapperGlobal<R (T::*)(A0)> {
200 template <R (T::*fp)(A0)>
201 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
202 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
203 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
204 }
205};
206template <typename T, typename A0>
207struct WrapperGlobal<void (T::*)(A0) const> {
208 template <void (T::*fp)(A0) const>
209 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
210 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
211 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
212 }
213};
214template <typename T, typename R, typename A0>
215struct WrapperGlobal<R (T::*)(A0) const> {
216 template <R (T::*fp)(A0) const>
217 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
218 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
219 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
220 }
221};
222template <typename T, typename A0>
223struct ObjFirst<void (*)(T, A0)> {
224 template <void (*fp)(T, A0)>
225 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
226 ((fp)(
227 Proxy<T>::cast(gen->GetObject()),
228 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
229 }
230};
231template <typename T, typename R, typename A0>
232struct ObjFirst<R (*)(T, A0)> {
233 template <R (*fp)(T, A0)>
234 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
235 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
236 Proxy<T>::cast(gen->GetObject()),
237 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
238 }
239};
240template <typename T, typename A0>
241struct ObjLast<void (*)(A0, T)> {
242 template <void (*fp)(A0, T)>
243 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
244 ((fp)(
245 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
246 Proxy<T>::cast(gen->GetObject())));
247 }
248};
249template <typename T, typename R, typename A0>
250struct ObjLast<R (*)(A0, T)> {
251 template <R (*fp)(A0, T)>
252 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
253 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
254 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
255 Proxy<T>::cast(gen->GetObject())));
256 }
257};
258template <typename T, typename A0>
259struct Constructor <T (A0)> {
260 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
261 new (gen->GetObject()) T(
262 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value);
263 }
264};
265template <typename A0, typename A1>
266struct Wrapper<void (*)(A0, A1)> {
267 template <void (*fp)(A0, A1)>
268 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
269 ((fp)(
270 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
271 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
272 }
273};
274template <typename R, typename A0, typename A1>
275struct Wrapper<R (*)(A0, A1)> {
276 template <R (*fp)(A0, A1)>
277 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
278 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
279 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
280 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
281 }
282};
283template <typename T, typename A0, typename A1>
284struct Wrapper<void (T::*)(A0, A1)> {
285 template <void (T::*fp)(A0, A1)>
286 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
287 ((static_cast<T *>(gen->GetObject())->*fp)(
288 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
289 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
290 }
291};
292template <typename T, typename R, typename A0, typename A1>
293struct Wrapper<R (T::*)(A0, A1)> {
294 template <R (T::*fp)(A0, A1)>
295 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
296 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
297 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
298 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
299 }
300};
301template <typename T, typename A0, typename A1>
302struct Wrapper<void (T::*)(A0, A1) const> {
303 template <void (T::*fp)(A0, A1) const>
304 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
305 ((static_cast<T *>(gen->GetObject())->*fp)(
306 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
307 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
308 }
309};
310template <typename T, typename R, typename A0, typename A1>
311struct Wrapper<R (T::*)(A0, A1) const> {
312 template <R (T::*fp)(A0, A1) const>
313 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
314 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
315 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
316 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
317 }
318};
319template <typename T, typename A0, typename A1>
320struct WrapperGlobal<void (T::*)(A0, A1)> {
321 template <void (T::*fp)(A0, A1)>
322 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
323 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
324 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
325 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
326 }
327};
328template <typename T, typename R, typename A0, typename A1>
329struct WrapperGlobal<R (T::*)(A0, A1)> {
330 template <R (T::*fp)(A0, A1)>
331 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
332 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
333 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
334 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
335 }
336};
337template <typename T, typename A0, typename A1>
338struct WrapperGlobal<void (T::*)(A0, A1) const> {
339 template <void (T::*fp)(A0, A1) const>
340 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
341 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
342 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
343 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
344 }
345};
346template <typename T, typename R, typename A0, typename A1>
347struct WrapperGlobal<R (T::*)(A0, A1) const> {
348 template <R (T::*fp)(A0, A1) const>
349 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
350 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
351 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
352 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
353 }
354};
355template <typename T, typename A0, typename A1>
356struct ObjFirst<void (*)(T, A0, A1)> {
357 template <void (*fp)(T, A0, A1)>
358 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
359 ((fp)(
360 Proxy<T>::cast(gen->GetObject()),
361 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
362 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
363 }
364};
365template <typename T, typename R, typename A0, typename A1>
366struct ObjFirst<R (*)(T, A0, A1)> {
367 template <R (*fp)(T, A0, A1)>
368 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
369 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
370 Proxy<T>::cast(gen->GetObject()),
371 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
372 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
373 }
374};
375template <typename T, typename A0, typename A1>
376struct ObjLast<void (*)(A0, A1, T)> {
377 template <void (*fp)(A0, A1, T)>
378 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
379 ((fp)(
380 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
381 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
382 Proxy<T>::cast(gen->GetObject())));
383 }
384};
385template <typename T, typename R, typename A0, typename A1>
386struct ObjLast<R (*)(A0, A1, T)> {
387 template <R (*fp)(A0, A1, T)>
388 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
389 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
390 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
391 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
392 Proxy<T>::cast(gen->GetObject())));
393 }
394};
395template <typename T, typename A0, typename A1>
396struct Constructor <T (A0, A1)> {
397 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
398 new (gen->GetObject()) T(
399 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
400 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value);
401 }
402};
403template <typename A0, typename A1, typename A2>
404struct Wrapper<void (*)(A0, A1, A2)> {
405 template <void (*fp)(A0, A1, A2)>
406 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
407 ((fp)(
408 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
409 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
410 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
411 }
412};
413template <typename R, typename A0, typename A1, typename A2>
414struct Wrapper<R (*)(A0, A1, A2)> {
415 template <R (*fp)(A0, A1, A2)>
416 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
417 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
418 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
419 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
420 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
421 }
422};
423template <typename T, typename A0, typename A1, typename A2>
424struct Wrapper<void (T::*)(A0, A1, A2)> {
425 template <void (T::*fp)(A0, A1, A2)>
426 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
427 ((static_cast<T *>(gen->GetObject())->*fp)(
428 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
429 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
430 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
431 }
432};
433template <typename T, typename R, typename A0, typename A1, typename A2>
434struct Wrapper<R (T::*)(A0, A1, A2)> {
435 template <R (T::*fp)(A0, A1, A2)>
436 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
437 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
438 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
439 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
440 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
441 }
442};
443template <typename T, typename A0, typename A1, typename A2>
444struct Wrapper<void (T::*)(A0, A1, A2) const> {
445 template <void (T::*fp)(A0, A1, A2) const>
446 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
447 ((static_cast<T *>(gen->GetObject())->*fp)(
448 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
449 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
450 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
451 }
452};
453template <typename T, typename R, typename A0, typename A1, typename A2>
454struct Wrapper<R (T::*)(A0, A1, A2) const> {
455 template <R (T::*fp)(A0, A1, A2) const>
456 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
457 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
458 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
459 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
460 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
461 }
462};
463template <typename T, typename A0, typename A1, typename A2>
464struct WrapperGlobal<void (T::*)(A0, A1, A2)> {
465 template <void (T::*fp)(A0, A1, A2)>
466 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
467 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
468 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
469 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
470 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
471 }
472};
473template <typename T, typename R, typename A0, typename A1, typename A2>
474struct WrapperGlobal<R (T::*)(A0, A1, A2)> {
475 template <R (T::*fp)(A0, A1, A2)>
476 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
477 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
478 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
479 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
480 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
481 }
482};
483template <typename T, typename A0, typename A1, typename A2>
484struct WrapperGlobal<void (T::*)(A0, A1, A2) const> {
485 template <void (T::*fp)(A0, A1, A2) const>
486 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
487 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
488 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
489 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
490 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
491 }
492};
493template <typename T, typename R, typename A0, typename A1, typename A2>
494struct WrapperGlobal<R (T::*)(A0, A1, A2) const> {
495 template <R (T::*fp)(A0, A1, A2) const>
496 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
497 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
498 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
499 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
500 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
501 }
502};
503template <typename T, typename A0, typename A1, typename A2>
504struct ObjFirst<void (*)(T, A0, A1, A2)> {
505 template <void (*fp)(T, A0, A1, A2)>
506 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
507 ((fp)(
508 Proxy<T>::cast(gen->GetObject()),
509 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
510 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
511 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
512 }
513};
514template <typename T, typename R, typename A0, typename A1, typename A2>
515struct ObjFirst<R (*)(T, A0, A1, A2)> {
516 template <R (*fp)(T, A0, A1, A2)>
517 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
518 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
519 Proxy<T>::cast(gen->GetObject()),
520 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
521 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
522 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
523 }
524};
525template <typename T, typename A0, typename A1, typename A2>
526struct ObjLast<void (*)(A0, A1, A2, T)> {
527 template <void (*fp)(A0, A1, A2, T)>
528 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
529 ((fp)(
530 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
531 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
532 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
533 Proxy<T>::cast(gen->GetObject())));
534 }
535};
536template <typename T, typename R, typename A0, typename A1, typename A2>
537struct ObjLast<R (*)(A0, A1, A2, T)> {
538 template <R (*fp)(A0, A1, A2, T)>
539 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
540 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
541 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
542 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
543 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
544 Proxy<T>::cast(gen->GetObject())));
545 }
546};
547template <typename T, typename A0, typename A1, typename A2>
548struct Constructor <T (A0, A1, A2)> {
549 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
550 new (gen->GetObject()) T(
551 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
552 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
553 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value);
554 }
555};
556template <typename A0, typename A1, typename A2, typename A3>
557struct Wrapper<void (*)(A0, A1, A2, A3)> {
558 template <void (*fp)(A0, A1, A2, A3)>
559 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
560 ((fp)(
561 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
562 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
563 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
564 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
565 }
566};
567template <typename R, typename A0, typename A1, typename A2, typename A3>
568struct Wrapper<R (*)(A0, A1, A2, A3)> {
569 template <R (*fp)(A0, A1, A2, A3)>
570 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
571 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
572 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
573 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
574 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
575 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
576 }
577};
578template <typename T, typename A0, typename A1, typename A2, typename A3>
579struct Wrapper<void (T::*)(A0, A1, A2, A3)> {
580 template <void (T::*fp)(A0, A1, A2, A3)>
581 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
582 ((static_cast<T *>(gen->GetObject())->*fp)(
583 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
584 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
585 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
586 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
587 }
588};
589template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
590struct Wrapper<R (T::*)(A0, A1, A2, A3)> {
591 template <R (T::*fp)(A0, A1, A2, A3)>
592 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
593 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
594 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
595 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
596 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
597 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
598 }
599};
600template <typename T, typename A0, typename A1, typename A2, typename A3>
601struct Wrapper<void (T::*)(A0, A1, A2, A3) const> {
602 template <void (T::*fp)(A0, A1, A2, A3) const>
603 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
604 ((static_cast<T *>(gen->GetObject())->*fp)(
605 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
606 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
607 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
608 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
609 }
610};
611template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
612struct Wrapper<R (T::*)(A0, A1, A2, A3) const> {
613 template <R (T::*fp)(A0, A1, A2, A3) const>
614 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
615 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
616 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
617 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
618 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
619 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
620 }
621};
622template <typename T, typename A0, typename A1, typename A2, typename A3>
623struct WrapperGlobal<void (T::*)(A0, A1, A2, A3)> {
624 template <void (T::*fp)(A0, A1, A2, A3)>
625 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
626 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
627 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
628 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
629 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
630 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
631 }
632};
633template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
634struct WrapperGlobal<R (T::*)(A0, A1, A2, A3)> {
635 template <R (T::*fp)(A0, A1, A2, A3)>
636 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
637 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
638 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
639 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
640 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
641 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
642 }
643};
644template <typename T, typename A0, typename A1, typename A2, typename A3>
645struct WrapperGlobal<void (T::*)(A0, A1, A2, A3) const> {
646 template <void (T::*fp)(A0, A1, A2, A3) const>
647 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
648 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
649 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
650 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
651 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
652 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
653 }
654};
655template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
656struct WrapperGlobal<R (T::*)(A0, A1, A2, A3) const> {
657 template <R (T::*fp)(A0, A1, A2, A3) const>
658 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
659 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
660 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
661 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
662 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
663 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
664 }
665};
666template <typename T, typename A0, typename A1, typename A2, typename A3>
667struct ObjFirst<void (*)(T, A0, A1, A2, A3)> {
668 template <void (*fp)(T, A0, A1, A2, A3)>
669 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
670 ((fp)(
671 Proxy<T>::cast(gen->GetObject()),
672 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
673 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
674 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
675 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
676 }
677};
678template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
679struct ObjFirst<R (*)(T, A0, A1, A2, A3)> {
680 template <R (*fp)(T, A0, A1, A2, A3)>
681 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
682 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
683 Proxy<T>::cast(gen->GetObject()),
684 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
685 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
686 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
687 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
688 }
689};
690template <typename T, typename A0, typename A1, typename A2, typename A3>
691struct ObjLast<void (*)(A0, A1, A2, A3, T)> {
692 template <void (*fp)(A0, A1, A2, A3, T)>
693 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
694 ((fp)(
695 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
696 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
697 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
698 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
699 Proxy<T>::cast(gen->GetObject())));
700 }
701};
702template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
703struct ObjLast<R (*)(A0, A1, A2, A3, T)> {
704 template <R (*fp)(A0, A1, A2, A3, T)>
705 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
706 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
707 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
708 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
709 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
710 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
711 Proxy<T>::cast(gen->GetObject())));
712 }
713};
714template <typename T, typename A0, typename A1, typename A2, typename A3>
715struct Constructor <T (A0, A1, A2, A3)> {
716 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
717 new (gen->GetObject()) T(
718 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
719 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
720 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
721 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value);
722 }
723};
724template <typename A0, typename A1, typename A2, typename A3, typename A4>
725struct Wrapper<void (*)(A0, A1, A2, A3, A4)> {
726 template <void (*fp)(A0, A1, A2, A3, A4)>
727 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
728 ((fp)(
729 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
730 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
731 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
732 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
733 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
734 }
735};
736template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
737struct Wrapper<R (*)(A0, A1, A2, A3, A4)> {
738 template <R (*fp)(A0, A1, A2, A3, A4)>
739 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
740 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
741 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
742 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
743 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
744 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
745 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
746 }
747};
748template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
749struct Wrapper<void (T::*)(A0, A1, A2, A3, A4)> {
750 template <void (T::*fp)(A0, A1, A2, A3, A4)>
751 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
752 ((static_cast<T *>(gen->GetObject())->*fp)(
753 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
754 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
755 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
756 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
757 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
758 }
759};
760template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
761struct Wrapper<R (T::*)(A0, A1, A2, A3, A4)> {
762 template <R (T::*fp)(A0, A1, A2, A3, A4)>
763 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
764 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
765 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
766 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
767 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
768 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
769 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
770 }
771};
772template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
773struct Wrapper<void (T::*)(A0, A1, A2, A3, A4) const> {
774 template <void (T::*fp)(A0, A1, A2, A3, A4) const>
775 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
776 ((static_cast<T *>(gen->GetObject())->*fp)(
777 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
778 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
779 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
780 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
781 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
782 }
783};
784template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
785struct Wrapper<R (T::*)(A0, A1, A2, A3, A4) const> {
786 template <R (T::*fp)(A0, A1, A2, A3, A4) const>
787 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
788 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
789 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
790 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
791 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
792 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
793 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
794 }
795};
796template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
797struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4)> {
798 template <void (T::*fp)(A0, A1, A2, A3, A4)>
799 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
800 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
801 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
802 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
803 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
804 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
805 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
806 }
807};
808template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
809struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4)> {
810 template <R (T::*fp)(A0, A1, A2, A3, A4)>
811 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
812 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
813 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
814 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
815 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
816 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
817 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
818 }
819};
820template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
821struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4) const> {
822 template <void (T::*fp)(A0, A1, A2, A3, A4) const>
823 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
824 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
825 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
826 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
827 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
828 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
829 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
830 }
831};
832template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
833struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4) const> {
834 template <R (T::*fp)(A0, A1, A2, A3, A4) const>
835 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
836 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
837 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
838 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
839 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
840 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
841 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
842 }
843};
844template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
845struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4)> {
846 template <void (*fp)(T, A0, A1, A2, A3, A4)>
847 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
848 ((fp)(
849 Proxy<T>::cast(gen->GetObject()),
850 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
851 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
852 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
853 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
854 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
855 }
856};
857template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
858struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4)> {
859 template <R (*fp)(T, A0, A1, A2, A3, A4)>
860 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
861 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
862 Proxy<T>::cast(gen->GetObject()),
863 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
864 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
865 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
866 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
867 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
868 }
869};
870template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
871struct ObjLast<void (*)(A0, A1, A2, A3, A4, T)> {
872 template <void (*fp)(A0, A1, A2, A3, A4, T)>
873 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
874 ((fp)(
875 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
876 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
877 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
878 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
879 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
880 Proxy<T>::cast(gen->GetObject())));
881 }
882};
883template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
884struct ObjLast<R (*)(A0, A1, A2, A3, A4, T)> {
885 template <R (*fp)(A0, A1, A2, A3, A4, T)>
886 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
887 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
888 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
889 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
890 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
891 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
892 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
893 Proxy<T>::cast(gen->GetObject())));
894 }
895};
896template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
897struct Constructor <T (A0, A1, A2, A3, A4)> {
898 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
899 new (gen->GetObject()) T(
900 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
901 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
902 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
903 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
904 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value);
905 }
906};
907template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
908struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5)> {
909 template <void (*fp)(A0, A1, A2, A3, A4, A5)>
910 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
911 ((fp)(
912 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
913 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
914 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
915 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
916 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
917 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
918 }
919};
920template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
921struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5)> {
922 template <R (*fp)(A0, A1, A2, A3, A4, A5)>
923 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
924 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
925 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
926 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
927 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
928 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
929 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
930 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
931 }
932};
933template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
934struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5)> {
935 template <void (T::*fp)(A0, A1, A2, A3, A4, A5)>
936 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
937 ((static_cast<T *>(gen->GetObject())->*fp)(
938 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
939 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
940 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
941 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
942 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
943 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
944 }
945};
946template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
947struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5)> {
948 template <R (T::*fp)(A0, A1, A2, A3, A4, A5)>
949 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
950 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
951 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
952 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
953 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
954 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
955 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
956 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
957 }
958};
959template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
960struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5) const> {
961 template <void (T::*fp)(A0, A1, A2, A3, A4, A5) const>
962 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
963 ((static_cast<T *>(gen->GetObject())->*fp)(
964 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
965 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
966 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
967 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
968 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
969 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
970 }
971};
972template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
973struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5) const> {
974 template <R (T::*fp)(A0, A1, A2, A3, A4, A5) const>
975 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
976 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
977 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
978 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
979 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
980 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
981 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
982 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
983 }
984};
985template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
986struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4, A5)> {
987 template <void (T::*fp)(A0, A1, A2, A3, A4, A5)>
988 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
989 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
990 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
991 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
992 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
993 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
994 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
995 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
996 }
997};
998template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
999struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4, A5)> {
1000 template <R (T::*fp)(A0, A1, A2, A3, A4, A5)>
1001 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1002 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1003 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1004 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1005 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1006 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1007 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1008 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
1009 }
1010};
1011template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1012struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4, A5) const> {
1013 template <void (T::*fp)(A0, A1, A2, A3, A4, A5) const>
1014 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1015 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1016 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1017 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1018 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1019 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1020 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1021 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
1022 }
1023};
1024template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1025struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4, A5) const> {
1026 template <R (T::*fp)(A0, A1, A2, A3, A4, A5) const>
1027 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1028 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1029 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1030 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1031 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1032 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1033 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1034 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
1035 }
1036};
1037template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1038struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5)> {
1039 template <void (*fp)(T, A0, A1, A2, A3, A4, A5)>
1040 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1041 ((fp)(
1042 Proxy<T>::cast(gen->GetObject()),
1043 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1044 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1045 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1046 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1047 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1048 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
1049 }
1050};
1051template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1052struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5)> {
1053 template <R (*fp)(T, A0, A1, A2, A3, A4, A5)>
1054 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1055 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1056 Proxy<T>::cast(gen->GetObject()),
1057 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1058 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1059 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1060 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1061 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1062 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
1063 }
1064};
1065template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1066struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, T)> {
1067 template <void (*fp)(A0, A1, A2, A3, A4, A5, T)>
1068 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1069 ((fp)(
1070 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1071 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1072 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1073 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1074 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1075 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1076 Proxy<T>::cast(gen->GetObject())));
1077 }
1078};
1079template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1080struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, T)> {
1081 template <R (*fp)(A0, A1, A2, A3, A4, A5, T)>
1082 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1083 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1084 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1085 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1086 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1087 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1088 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1089 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1090 Proxy<T>::cast(gen->GetObject())));
1091 }
1092};
1093template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
1094struct Constructor <T (A0, A1, A2, A3, A4, A5)> {
1095 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1096 new (gen->GetObject()) T(
1097 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1098 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1099 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1100 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1101 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1102 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value);
1103 }
1104};
1105template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1106struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6)> {
1107 template <void (*fp)(A0, A1, A2, A3, A4, A5, A6)>
1108 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1109 ((fp)(
1110 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1111 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1112 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1113 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1114 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1115 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1116 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1117 }
1118};
1119template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1120struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6)> {
1121 template <R (*fp)(A0, A1, A2, A3, A4, A5, A6)>
1122 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1123 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1124 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1125 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1126 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1127 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1128 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1129 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1130 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1131 }
1132};
1133template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1134struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6)> {
1135 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6)>
1136 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1137 ((static_cast<T *>(gen->GetObject())->*fp)(
1138 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1139 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1140 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1141 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1142 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1143 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1144 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1145 }
1146};
1147template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1148struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6)> {
1149 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6)>
1150 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1151 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
1152 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1153 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1154 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1155 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1156 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1157 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1158 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1159 }
1160};
1161template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1162struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6) const> {
1163 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6) const>
1164 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1165 ((static_cast<T *>(gen->GetObject())->*fp)(
1166 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1167 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1168 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1169 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1170 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1171 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1172 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1173 }
1174};
1175template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1176struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6) const> {
1177 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6) const>
1178 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1179 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
1180 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1181 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1182 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1183 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1184 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1185 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1186 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1187 }
1188};
1189template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1190struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4, A5, A6)> {
1191 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6)>
1192 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1193 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1194 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1195 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1196 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1197 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1198 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1199 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1200 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1201 }
1202};
1203template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1204struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4, A5, A6)> {
1205 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6)>
1206 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1207 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1208 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1209 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1210 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1211 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1212 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1213 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1214 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1215 }
1216};
1217template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1218struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4, A5, A6) const> {
1219 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6) const>
1220 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1221 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1222 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1223 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1224 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1225 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1226 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1227 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1228 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1229 }
1230};
1231template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1232struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4, A5, A6) const> {
1233 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6) const>
1234 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1235 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1236 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1237 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1238 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1239 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1240 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1241 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1242 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1243 }
1244};
1245template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1246struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6)> {
1247 template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6)>
1248 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1249 ((fp)(
1250 Proxy<T>::cast(gen->GetObject()),
1251 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1252 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1253 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1254 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1255 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1256 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1257 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1258 }
1259};
1260template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1261struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6)> {
1262 template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6)>
1263 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1264 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1265 Proxy<T>::cast(gen->GetObject()),
1266 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1267 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1268 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1269 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1270 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1271 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1272 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
1273 }
1274};
1275template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1276struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, T)> {
1277 template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, T)>
1278 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1279 ((fp)(
1280 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1281 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1282 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1283 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1284 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1285 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1286 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1287 Proxy<T>::cast(gen->GetObject())));
1288 }
1289};
1290template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1291struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, T)> {
1292 template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, T)>
1293 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1294 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1295 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1296 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1297 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1298 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1299 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1300 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1301 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1302 Proxy<T>::cast(gen->GetObject())));
1303 }
1304};
1305template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1306struct Constructor <T (A0, A1, A2, A3, A4, A5, A6)> {
1307 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1308 new (gen->GetObject()) T(
1309 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1310 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1311 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1312 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1313 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1314 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1315 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value);
1316 }
1317};
1318template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1319struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
1320 template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
1321 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1322 ((fp)(
1323 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1324 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1325 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1326 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1327 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1328 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1329 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1330 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1331 }
1332};
1333template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1334struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
1335 template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
1336 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1337 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1338 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1339 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1340 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1341 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1342 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1343 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1344 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1345 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1346 }
1347};
1348template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1349struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
1350 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
1351 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1352 ((static_cast<T *>(gen->GetObject())->*fp)(
1353 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1354 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1355 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1356 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1357 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1358 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1359 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1360 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1361 }
1362};
1363template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1364struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
1365 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
1366 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1367 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
1368 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1369 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1370 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1371 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1372 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1373 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1374 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1375 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1376 }
1377};
1378template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1379struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const> {
1380 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7) const>
1381 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1382 ((static_cast<T *>(gen->GetObject())->*fp)(
1383 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1384 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1385 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1386 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1387 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1388 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1389 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1390 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1391 }
1392};
1393template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1394struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const> {
1395 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7) const>
1396 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1397 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
1398 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1399 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1400 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1401 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1402 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1403 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1404 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1405 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1406 }
1407};
1408template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1409struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
1410 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
1411 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1412 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1413 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1414 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1415 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1416 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1417 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1418 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1419 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1420 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1421 }
1422};
1423template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1424struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
1425 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
1426 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1427 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1428 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1429 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1430 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1431 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1432 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1433 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1434 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1435 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1436 }
1437};
1438template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1439struct WrapperGlobal<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const> {
1440 template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7) const>
1441 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1442 ((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1443 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1444 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1445 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1446 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1447 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1448 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1449 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1450 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1451 }
1452};
1453template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1454struct WrapperGlobal<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const> {
1455 template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7) const>
1456 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1457 new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetAuxiliary())->*fp)(
1458 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1459 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1460 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1461 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1462 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1463 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1464 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1465 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1466 }
1467};
1468template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1469struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7)> {
1470 template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7)>
1471 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1472 ((fp)(
1473 Proxy<T>::cast(gen->GetObject()),
1474 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1475 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1476 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1477 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1478 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1479 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1480 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1481 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1482 }
1483};
1484template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1485struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7)> {
1486 template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7)>
1487 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1488 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1489 Proxy<T>::cast(gen->GetObject()),
1490 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1491 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1492 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1493 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1494 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1495 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1496 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1497 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
1498 }
1499};
1500template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1501struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, T)> {
1502 template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, T)>
1503 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1504 ((fp)(
1505 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1506 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1507 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1508 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1509 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1510 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1511 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1512 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
1513 Proxy<T>::cast(gen->GetObject())));
1514 }
1515};
1516template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1517struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, T)> {
1518 template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, T)>
1519 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1520 new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
1521 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1522 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1523 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1524 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1525 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1526 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1527 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1528 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
1529 Proxy<T>::cast(gen->GetObject())));
1530 }
1531};
1532template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1533struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7)> {
1534 static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
1535 new (gen->GetObject()) T(
1536 static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
1537 static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
1538 static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
1539 static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
1540 static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
1541 static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
1542 static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
1543 static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value);
1544 }
1545};
1546template <typename T>
1547struct Id {
1548 template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr f(void) { return asFUNCTION(&Wrapper<T>::template f<fn_ptr>); }
1549 template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr fg(void) { return asFUNCTION(&WrapperGlobal<T>::template f<fn_ptr>); }
1550 template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr of(void) { return asFUNCTION(&ObjFirst<T>::template f<fn_ptr>); }
1551 template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr ol(void) { return asFUNCTION(&ObjLast<T>::template f<fn_ptr>); }
1552};
1553
1554template <typename T>
1555Id<T> id(T fn_ptr) { return Id<T>(); }
1556
1557// On GNUC it is necessary to use the template keyword as disambiguator.
1558// MSVC seems to accept both with or without the template keyword.
1559#if defined(__GNUC__)
1560 #define TMPL template
1561#else
1562 #define TMPL
1563#endif
1564
1565#define WRAP_FN(name) (::gw::id(name).TMPL f< name >())
1566#define WRAP_MFN(ClassType, name) (::gw::id(&ClassType::name).TMPL f< &ClassType::name >())
1567#define WRAP_MFN_GLOBAL(ClassType, name) (::gw::id(&ClassType::name).TMPL fg< &ClassType::name >())
1568#define WRAP_OBJ_FIRST(name) (::gw::id(name).TMPL of< name >())
1569#define WRAP_OBJ_LAST(name) (::gw::id(name).TMPL ol< name >())
1570
1571#define WRAP_FN_PR(name, Parameters, ReturnType) asFUNCTION((::gw::Wrapper<ReturnType (*)Parameters>::TMPL f< name >))
1572#if defined(__clang__)
1573 // Clang doesn't like the use of AS_METHOD_AMBIGUITY_CAST in the inner template
1574 #define WRAP_MFN_PR(ClassType, name, Parameters, ReturnType) asFUNCTION((::gw::Wrapper<ReturnType (ClassType::*)Parameters>::TMPL f< &ClassType::name >))
1575 #define WRAP_MFN_GLOBAL_PR(ClassType, name, Parameters, ReturnType) asFUNCTION((::gw::WrapperGlobal<ReturnType (ClassType::*)Parameters>::TMPL f< &ClassType::name >))
1576#else
1577 #define WRAP_MFN_PR(ClassType, name, Parameters, ReturnType) asFUNCTION((::gw::Wrapper<ReturnType (ClassType::*)Parameters>::TMPL f< AS_METHOD_AMBIGUITY_CAST(ReturnType (ClassType::*)Parameters)(&ClassType::name) >))
1578 #define WRAP_MFN_GLOBAL_PR(ClassType, name, Parameters, ReturnType) asFUNCTION((::gw::WrapperGlobal<ReturnType (ClassType::*)Parameters>::TMPL f< AS_METHOD_AMBIGUITY_CAST(ReturnType (ClassType::*)Parameters)(&ClassType::name) >))
1579#endif
1580#define WRAP_OBJ_FIRST_PR(name, Parameters, ReturnType) asFUNCTION((::gw::ObjFirst<ReturnType (*)Parameters>::TMPL f< name >))
1581#define WRAP_OBJ_LAST_PR(name, Parameters, ReturnType) asFUNCTION((::gw::ObjLast<ReturnType (*)Parameters>::TMPL f< name >))
1582
1583#define WRAP_CON(ClassType, Parameters) asFUNCTION((::gw::Constructor<ClassType Parameters>::f))
1584#define WRAP_DES(ClassType) asFUNCTION((::gw::destroy<ClassType>))
1585
1586} // end namespace gw
1587
1588#endif
static T cast(void *ptr)
Proxy & operator=(const Proxy &)
Proxy(const Proxy &)
Proxy(T value)
void destroy(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
Id< T > id(T fn_ptr)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
AS_NAMESPACE_QUALIFIER asSFuncPtr fg(void)
AS_NAMESPACE_QUALIFIER asSFuncPtr f(void)
AS_NAMESPACE_QUALIFIER asSFuncPtr ol(void)
AS_NAMESPACE_QUALIFIER asSFuncPtr of(void)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)
static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric *gen)