wrap16.h 165 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932
  1. // This file was generated by the angelscript autowrapper addon
  2. // Modified by Nathanial Lydick for Urho3D (including the addition of the above notice)
  3. #ifndef AS_GEN_WRAPPER_H
  4. #define AS_GEN_WRAPPER_H
  5. #ifndef ANGELSCRIPT_H
  6. // Avoid having to inform include path if header is already include before
  7. #include <angelscript.h>
  8. #endif
  9. #include <new>
  10. namespace gw {
  11. template <typename T> class Proxy {
  12. public:
  13. T value;
  14. Proxy(T value) : value(value) {}
  15. static T cast(void * ptr) {
  16. return reinterpret_cast<Proxy<T> *>(&ptr)->value;
  17. }
  18. private:
  19. Proxy(const Proxy &);
  20. Proxy & operator=(const Proxy &);
  21. };
  22. template <typename T> struct Wrapper {};
  23. template <typename T> struct ObjFirst {};
  24. template <typename T> struct ObjLast {};
  25. template <typename T> struct Constructor {};
  26. template <typename T>
  27. void destroy(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  28. static_cast<T *>(gen->GetObject())->~T();
  29. }
  30. template <>
  31. struct Wrapper<void (*)(void)> {
  32. template <void (*fp)(void)>
  33. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  34. ((fp)());
  35. }
  36. };
  37. template <typename R>
  38. struct Wrapper<R (*)(void)> {
  39. template <R (*fp)(void)>
  40. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  41. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)());
  42. }
  43. };
  44. template <typename T>
  45. struct Wrapper<void (T::*)(void)> {
  46. template <void (T::*fp)(void)>
  47. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  48. ((static_cast<T *>(gen->GetObject())->*fp)());
  49. }
  50. };
  51. template <typename T, typename R>
  52. struct Wrapper<R (T::*)(void)> {
  53. template <R (T::*fp)(void)>
  54. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  55. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)());
  56. }
  57. };
  58. template <typename T>
  59. struct Wrapper<void (T::*)(void) const> {
  60. template <void (T::*fp)(void) const>
  61. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  62. ((static_cast<T *>(gen->GetObject())->*fp)());
  63. }
  64. };
  65. template <typename T, typename R>
  66. struct Wrapper<R (T::*)(void) const> {
  67. template <R (T::*fp)(void) const>
  68. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  69. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)());
  70. }
  71. };
  72. template <typename T>
  73. struct ObjFirst<void (*)(T)> {
  74. template <void (*fp)(T)>
  75. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  76. ((fp)(
  77. Proxy<T>::cast(gen->GetObject())));
  78. }
  79. };
  80. template <typename T, typename R>
  81. struct ObjFirst<R (*)(T)> {
  82. template <R (*fp)(T)>
  83. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  84. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  85. Proxy<T>::cast(gen->GetObject())));
  86. }
  87. };
  88. template <typename T>
  89. struct ObjLast<void (*)(T)> {
  90. template <void (*fp)(T)>
  91. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  92. ((fp)(
  93. Proxy<T>::cast(gen->GetObject())));
  94. }
  95. };
  96. template <typename T, typename R>
  97. struct ObjLast<R (*)(T)> {
  98. template <R (*fp)(T)>
  99. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  100. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  101. Proxy<T>::cast(gen->GetObject())));
  102. }
  103. };
  104. template <typename T>
  105. struct Constructor <T ()> {
  106. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  107. new (gen->GetObject()) T();
  108. }
  109. };
  110. template <typename A0>
  111. struct Wrapper<void (*)(A0)> {
  112. template <void (*fp)(A0)>
  113. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  114. ((fp)(
  115. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  116. }
  117. };
  118. template <typename R, typename A0>
  119. struct Wrapper<R (*)(A0)> {
  120. template <R (*fp)(A0)>
  121. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  122. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  123. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  124. }
  125. };
  126. template <typename T, typename A0>
  127. struct Wrapper<void (T::*)(A0)> {
  128. template <void (T::*fp)(A0)>
  129. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  130. ((static_cast<T *>(gen->GetObject())->*fp)(
  131. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  132. }
  133. };
  134. template <typename T, typename R, typename A0>
  135. struct Wrapper<R (T::*)(A0)> {
  136. template <R (T::*fp)(A0)>
  137. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  138. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  139. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  140. }
  141. };
  142. template <typename T, typename A0>
  143. struct Wrapper<void (T::*)(A0) const> {
  144. template <void (T::*fp)(A0) const>
  145. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  146. ((static_cast<T *>(gen->GetObject())->*fp)(
  147. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  148. }
  149. };
  150. template <typename T, typename R, typename A0>
  151. struct Wrapper<R (T::*)(A0) const> {
  152. template <R (T::*fp)(A0) const>
  153. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  154. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  155. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  156. }
  157. };
  158. template <typename T, typename A0>
  159. struct ObjFirst<void (*)(T, A0)> {
  160. template <void (*fp)(T, A0)>
  161. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  162. ((fp)(
  163. Proxy<T>::cast(gen->GetObject()),
  164. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  165. }
  166. };
  167. template <typename T, typename R, typename A0>
  168. struct ObjFirst<R (*)(T, A0)> {
  169. template <R (*fp)(T, A0)>
  170. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  171. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  172. Proxy<T>::cast(gen->GetObject()),
  173. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value));
  174. }
  175. };
  176. template <typename T, typename A0>
  177. struct ObjLast<void (*)(A0, T)> {
  178. template <void (*fp)(A0, T)>
  179. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  180. ((fp)(
  181. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  182. Proxy<T>::cast(gen->GetObject())));
  183. }
  184. };
  185. template <typename T, typename R, typename A0>
  186. struct ObjLast<R (*)(A0, T)> {
  187. template <R (*fp)(A0, T)>
  188. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  189. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  190. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  191. Proxy<T>::cast(gen->GetObject())));
  192. }
  193. };
  194. template <typename T, typename A0>
  195. struct Constructor <T (A0)> {
  196. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  197. new (gen->GetObject()) T(
  198. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value);
  199. }
  200. };
  201. template <typename A0, typename A1>
  202. struct Wrapper<void (*)(A0, A1)> {
  203. template <void (*fp)(A0, A1)>
  204. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  205. ((fp)(
  206. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  207. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  208. }
  209. };
  210. template <typename R, typename A0, typename A1>
  211. struct Wrapper<R (*)(A0, A1)> {
  212. template <R (*fp)(A0, A1)>
  213. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  214. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  215. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  216. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  217. }
  218. };
  219. template <typename T, typename A0, typename A1>
  220. struct Wrapper<void (T::*)(A0, A1)> {
  221. template <void (T::*fp)(A0, A1)>
  222. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  223. ((static_cast<T *>(gen->GetObject())->*fp)(
  224. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  225. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  226. }
  227. };
  228. template <typename T, typename R, typename A0, typename A1>
  229. struct Wrapper<R (T::*)(A0, A1)> {
  230. template <R (T::*fp)(A0, A1)>
  231. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  232. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  233. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  234. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  235. }
  236. };
  237. template <typename T, typename A0, typename A1>
  238. struct Wrapper<void (T::*)(A0, A1) const> {
  239. template <void (T::*fp)(A0, A1) const>
  240. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  241. ((static_cast<T *>(gen->GetObject())->*fp)(
  242. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  243. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  244. }
  245. };
  246. template <typename T, typename R, typename A0, typename A1>
  247. struct Wrapper<R (T::*)(A0, A1) const> {
  248. template <R (T::*fp)(A0, A1) const>
  249. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  250. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  251. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  252. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  253. }
  254. };
  255. template <typename T, typename A0, typename A1>
  256. struct ObjFirst<void (*)(T, A0, A1)> {
  257. template <void (*fp)(T, A0, A1)>
  258. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  259. ((fp)(
  260. Proxy<T>::cast(gen->GetObject()),
  261. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  262. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  263. }
  264. };
  265. template <typename T, typename R, typename A0, typename A1>
  266. struct ObjFirst<R (*)(T, A0, A1)> {
  267. template <R (*fp)(T, A0, A1)>
  268. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  269. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  270. Proxy<T>::cast(gen->GetObject()),
  271. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  272. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value));
  273. }
  274. };
  275. template <typename T, typename A0, typename A1>
  276. struct ObjLast<void (*)(A0, A1, T)> {
  277. template <void (*fp)(A0, A1, T)>
  278. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  279. ((fp)(
  280. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  281. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  282. Proxy<T>::cast(gen->GetObject())));
  283. }
  284. };
  285. template <typename T, typename R, typename A0, typename A1>
  286. struct ObjLast<R (*)(A0, A1, T)> {
  287. template <R (*fp)(A0, A1, T)>
  288. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  289. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  290. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  291. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  292. Proxy<T>::cast(gen->GetObject())));
  293. }
  294. };
  295. template <typename T, typename A0, typename A1>
  296. struct Constructor <T (A0, A1)> {
  297. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  298. new (gen->GetObject()) T(
  299. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  300. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value);
  301. }
  302. };
  303. template <typename A0, typename A1, typename A2>
  304. struct Wrapper<void (*)(A0, A1, A2)> {
  305. template <void (*fp)(A0, A1, A2)>
  306. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  307. ((fp)(
  308. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  309. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  310. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  311. }
  312. };
  313. template <typename R, typename A0, typename A1, typename A2>
  314. struct Wrapper<R (*)(A0, A1, A2)> {
  315. template <R (*fp)(A0, A1, A2)>
  316. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  317. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  318. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  319. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  320. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  321. }
  322. };
  323. template <typename T, typename A0, typename A1, typename A2>
  324. struct Wrapper<void (T::*)(A0, A1, A2)> {
  325. template <void (T::*fp)(A0, A1, A2)>
  326. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  327. ((static_cast<T *>(gen->GetObject())->*fp)(
  328. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  329. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  330. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  331. }
  332. };
  333. template <typename T, typename R, typename A0, typename A1, typename A2>
  334. struct Wrapper<R (T::*)(A0, A1, A2)> {
  335. template <R (T::*fp)(A0, A1, A2)>
  336. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  337. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  338. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  339. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  340. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  341. }
  342. };
  343. template <typename T, typename A0, typename A1, typename A2>
  344. struct Wrapper<void (T::*)(A0, A1, A2) const> {
  345. template <void (T::*fp)(A0, A1, A2) const>
  346. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  347. ((static_cast<T *>(gen->GetObject())->*fp)(
  348. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  349. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  350. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  351. }
  352. };
  353. template <typename T, typename R, typename A0, typename A1, typename A2>
  354. struct Wrapper<R (T::*)(A0, A1, A2) const> {
  355. template <R (T::*fp)(A0, A1, A2) const>
  356. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  357. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  358. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  359. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  360. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  361. }
  362. };
  363. template <typename T, typename A0, typename A1, typename A2>
  364. struct ObjFirst<void (*)(T, A0, A1, A2)> {
  365. template <void (*fp)(T, A0, A1, A2)>
  366. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  367. ((fp)(
  368. Proxy<T>::cast(gen->GetObject()),
  369. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  370. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  371. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  372. }
  373. };
  374. template <typename T, typename R, typename A0, typename A1, typename A2>
  375. struct ObjFirst<R (*)(T, A0, A1, A2)> {
  376. template <R (*fp)(T, A0, A1, A2)>
  377. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  378. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  379. Proxy<T>::cast(gen->GetObject()),
  380. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  381. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  382. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value));
  383. }
  384. };
  385. template <typename T, typename A0, typename A1, typename A2>
  386. struct ObjLast<void (*)(A0, A1, A2, T)> {
  387. template <void (*fp)(A0, A1, A2, T)>
  388. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  389. ((fp)(
  390. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  391. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  392. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  393. Proxy<T>::cast(gen->GetObject())));
  394. }
  395. };
  396. template <typename T, typename R, typename A0, typename A1, typename A2>
  397. struct ObjLast<R (*)(A0, A1, A2, T)> {
  398. template <R (*fp)(A0, A1, A2, T)>
  399. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  400. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  401. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  402. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  403. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  404. Proxy<T>::cast(gen->GetObject())));
  405. }
  406. };
  407. template <typename T, typename A0, typename A1, typename A2>
  408. struct Constructor <T (A0, A1, A2)> {
  409. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  410. new (gen->GetObject()) T(
  411. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  412. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  413. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value);
  414. }
  415. };
  416. template <typename A0, typename A1, typename A2, typename A3>
  417. struct Wrapper<void (*)(A0, A1, A2, A3)> {
  418. template <void (*fp)(A0, A1, A2, A3)>
  419. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  420. ((fp)(
  421. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  422. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  423. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  424. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  425. }
  426. };
  427. template <typename R, typename A0, typename A1, typename A2, typename A3>
  428. struct Wrapper<R (*)(A0, A1, A2, A3)> {
  429. template <R (*fp)(A0, A1, A2, A3)>
  430. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  431. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  432. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  433. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  434. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  435. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  436. }
  437. };
  438. template <typename T, typename A0, typename A1, typename A2, typename A3>
  439. struct Wrapper<void (T::*)(A0, A1, A2, A3)> {
  440. template <void (T::*fp)(A0, A1, A2, A3)>
  441. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  442. ((static_cast<T *>(gen->GetObject())->*fp)(
  443. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  444. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  445. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  446. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  447. }
  448. };
  449. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
  450. struct Wrapper<R (T::*)(A0, A1, A2, A3)> {
  451. template <R (T::*fp)(A0, A1, A2, A3)>
  452. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  453. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  454. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  455. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  456. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  457. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  458. }
  459. };
  460. template <typename T, typename A0, typename A1, typename A2, typename A3>
  461. struct Wrapper<void (T::*)(A0, A1, A2, A3) const> {
  462. template <void (T::*fp)(A0, A1, A2, A3) const>
  463. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  464. ((static_cast<T *>(gen->GetObject())->*fp)(
  465. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  466. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  467. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  468. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  469. }
  470. };
  471. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
  472. struct Wrapper<R (T::*)(A0, A1, A2, A3) const> {
  473. template <R (T::*fp)(A0, A1, A2, A3) const>
  474. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  475. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  476. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  477. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  478. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  479. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  480. }
  481. };
  482. template <typename T, typename A0, typename A1, typename A2, typename A3>
  483. struct ObjFirst<void (*)(T, A0, A1, A2, A3)> {
  484. template <void (*fp)(T, A0, A1, A2, A3)>
  485. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  486. ((fp)(
  487. Proxy<T>::cast(gen->GetObject()),
  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. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  492. }
  493. };
  494. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
  495. struct ObjFirst<R (*)(T, A0, A1, A2, A3)> {
  496. template <R (*fp)(T, A0, A1, A2, A3)>
  497. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  498. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  499. Proxy<T>::cast(gen->GetObject()),
  500. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  501. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  502. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  503. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value));
  504. }
  505. };
  506. template <typename T, typename A0, typename A1, typename A2, typename A3>
  507. struct ObjLast<void (*)(A0, A1, A2, A3, T)> {
  508. template <void (*fp)(A0, A1, A2, A3, T)>
  509. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  510. ((fp)(
  511. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  512. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  513. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  514. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  515. Proxy<T>::cast(gen->GetObject())));
  516. }
  517. };
  518. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
  519. struct ObjLast<R (*)(A0, A1, A2, A3, T)> {
  520. template <R (*fp)(A0, A1, A2, A3, T)>
  521. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  522. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  523. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  524. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  525. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  526. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  527. Proxy<T>::cast(gen->GetObject())));
  528. }
  529. };
  530. template <typename T, typename A0, typename A1, typename A2, typename A3>
  531. struct Constructor <T (A0, A1, A2, A3)> {
  532. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  533. new (gen->GetObject()) T(
  534. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  535. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  536. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  537. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value);
  538. }
  539. };
  540. template <typename A0, typename A1, typename A2, typename A3, typename A4>
  541. struct Wrapper<void (*)(A0, A1, A2, A3, A4)> {
  542. template <void (*fp)(A0, A1, A2, A3, A4)>
  543. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  544. ((fp)(
  545. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  546. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  547. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  548. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  549. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  550. }
  551. };
  552. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
  553. struct Wrapper<R (*)(A0, A1, A2, A3, A4)> {
  554. template <R (*fp)(A0, A1, A2, A3, A4)>
  555. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  556. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  557. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  558. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  559. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  560. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  561. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  562. }
  563. };
  564. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
  565. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4)> {
  566. template <void (T::*fp)(A0, A1, A2, A3, A4)>
  567. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  568. ((static_cast<T *>(gen->GetObject())->*fp)(
  569. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  570. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  571. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  572. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  573. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  574. }
  575. };
  576. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
  577. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4)> {
  578. template <R (T::*fp)(A0, A1, A2, A3, A4)>
  579. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  580. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  581. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  582. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  583. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  584. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  585. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  586. }
  587. };
  588. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
  589. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4) const> {
  590. template <void (T::*fp)(A0, A1, A2, A3, A4) const>
  591. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  592. ((static_cast<T *>(gen->GetObject())->*fp)(
  593. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  594. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  595. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  596. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  597. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  598. }
  599. };
  600. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
  601. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4) const> {
  602. template <R (T::*fp)(A0, A1, A2, A3, A4) const>
  603. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  604. new (gen->GetAddressOfReturnLocation()) Proxy<R>((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. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  610. }
  611. };
  612. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
  613. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4)> {
  614. template <void (*fp)(T, A0, A1, A2, A3, A4)>
  615. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  616. ((fp)(
  617. Proxy<T>::cast(gen->GetObject()),
  618. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  619. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  620. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  621. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  622. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  623. }
  624. };
  625. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
  626. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4)> {
  627. template <R (*fp)(T, A0, A1, A2, A3, A4)>
  628. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  629. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  630. Proxy<T>::cast(gen->GetObject()),
  631. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  632. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  633. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  634. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  635. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value));
  636. }
  637. };
  638. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
  639. struct ObjLast<void (*)(A0, A1, A2, A3, A4, T)> {
  640. template <void (*fp)(A0, A1, A2, A3, A4, T)>
  641. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  642. ((fp)(
  643. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  644. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  645. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  646. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  647. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  648. Proxy<T>::cast(gen->GetObject())));
  649. }
  650. };
  651. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
  652. struct ObjLast<R (*)(A0, A1, A2, A3, A4, T)> {
  653. template <R (*fp)(A0, A1, A2, A3, A4, T)>
  654. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  655. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  656. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  657. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  658. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  659. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  660. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  661. Proxy<T>::cast(gen->GetObject())));
  662. }
  663. };
  664. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4>
  665. struct Constructor <T (A0, A1, A2, A3, A4)> {
  666. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  667. new (gen->GetObject()) T(
  668. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  669. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  670. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  671. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  672. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value);
  673. }
  674. };
  675. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  676. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5)> {
  677. template <void (*fp)(A0, A1, A2, A3, A4, A5)>
  678. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  679. ((fp)(
  680. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  681. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  682. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  683. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  684. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  685. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  686. }
  687. };
  688. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  689. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5)> {
  690. template <R (*fp)(A0, A1, A2, A3, A4, A5)>
  691. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  692. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  693. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  694. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  695. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  696. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  697. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  698. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  699. }
  700. };
  701. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  702. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5)> {
  703. template <void (T::*fp)(A0, A1, A2, A3, A4, A5)>
  704. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  705. ((static_cast<T *>(gen->GetObject())->*fp)(
  706. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  707. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  708. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  709. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  710. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  711. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  712. }
  713. };
  714. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  715. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5)> {
  716. template <R (T::*fp)(A0, A1, A2, A3, A4, A5)>
  717. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  718. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  719. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  720. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  721. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  722. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  723. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  724. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  725. }
  726. };
  727. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  728. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5) const> {
  729. template <void (T::*fp)(A0, A1, A2, A3, A4, A5) const>
  730. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  731. ((static_cast<T *>(gen->GetObject())->*fp)(
  732. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  733. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  734. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  735. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  736. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  737. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  738. }
  739. };
  740. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  741. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5) const> {
  742. template <R (T::*fp)(A0, A1, A2, A3, A4, A5) const>
  743. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  744. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  745. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  746. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  747. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  748. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  749. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  750. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  751. }
  752. };
  753. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  754. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5)> {
  755. template <void (*fp)(T, A0, A1, A2, A3, A4, A5)>
  756. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  757. ((fp)(
  758. Proxy<T>::cast(gen->GetObject()),
  759. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  760. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  761. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  762. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  763. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  764. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  765. }
  766. };
  767. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  768. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5)> {
  769. template <R (*fp)(T, A0, A1, A2, A3, A4, A5)>
  770. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  771. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  772. Proxy<T>::cast(gen->GetObject()),
  773. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  774. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  775. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  776. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  777. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  778. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value));
  779. }
  780. };
  781. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  782. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, T)> {
  783. template <void (*fp)(A0, A1, A2, A3, A4, A5, T)>
  784. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  785. ((fp)(
  786. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  787. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  788. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  789. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  790. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  791. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  792. Proxy<T>::cast(gen->GetObject())));
  793. }
  794. };
  795. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  796. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, T)> {
  797. template <R (*fp)(A0, A1, A2, A3, A4, A5, T)>
  798. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  799. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  800. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  801. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  802. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  803. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  804. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  805. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  806. Proxy<T>::cast(gen->GetObject())));
  807. }
  808. };
  809. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
  810. struct Constructor <T (A0, A1, A2, A3, A4, A5)> {
  811. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  812. new (gen->GetObject()) T(
  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. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value);
  819. }
  820. };
  821. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  822. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6)> {
  823. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6)>
  824. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  825. ((fp)(
  826. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  827. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  828. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  829. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  830. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  831. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  832. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  833. }
  834. };
  835. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  836. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6)> {
  837. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6)>
  838. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  839. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  840. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  841. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  842. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  843. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  844. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  845. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  846. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  847. }
  848. };
  849. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  850. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6)> {
  851. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6)>
  852. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  853. ((static_cast<T *>(gen->GetObject())->*fp)(
  854. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  855. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  856. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  857. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  858. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  859. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  860. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  861. }
  862. };
  863. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  864. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6)> {
  865. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6)>
  866. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  867. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  868. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  869. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  870. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  871. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  872. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  873. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  874. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  875. }
  876. };
  877. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  878. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6) const> {
  879. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6) const>
  880. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  881. ((static_cast<T *>(gen->GetObject())->*fp)(
  882. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  883. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  884. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  885. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  886. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  887. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  888. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  889. }
  890. };
  891. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  892. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6) const> {
  893. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6) const>
  894. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  895. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  896. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  897. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  898. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  899. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  900. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  901. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  902. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  903. }
  904. };
  905. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  906. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6)> {
  907. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6)>
  908. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  909. ((fp)(
  910. Proxy<T>::cast(gen->GetObject()),
  911. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  912. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  913. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  914. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  915. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  916. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  917. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  918. }
  919. };
  920. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  921. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6)> {
  922. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6)>
  923. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  924. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  925. Proxy<T>::cast(gen->GetObject()),
  926. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  927. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  928. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  929. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  930. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  931. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  932. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value));
  933. }
  934. };
  935. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  936. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, T)> {
  937. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, T)>
  938. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  939. ((fp)(
  940. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  941. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  942. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  943. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  944. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  945. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  946. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  947. Proxy<T>::cast(gen->GetObject())));
  948. }
  949. };
  950. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  951. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, T)> {
  952. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, T)>
  953. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  954. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  955. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  956. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  957. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  958. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  959. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  960. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  961. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  962. Proxy<T>::cast(gen->GetObject())));
  963. }
  964. };
  965. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
  966. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6)> {
  967. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  968. new (gen->GetObject()) T(
  969. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  970. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  971. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  972. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  973. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  974. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  975. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value);
  976. }
  977. };
  978. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  979. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
  980. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
  981. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  982. ((fp)(
  983. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  984. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  985. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  986. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  987. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  988. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  989. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  990. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  991. }
  992. };
  993. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  994. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
  995. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
  996. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  997. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  998. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  999. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1000. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1001. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1002. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1003. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1004. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1005. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1006. }
  1007. };
  1008. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1009. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
  1010. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
  1011. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1012. ((static_cast<T *>(gen->GetObject())->*fp)(
  1013. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1014. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1015. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1016. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1017. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1018. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1019. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1020. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1021. }
  1022. };
  1023. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1024. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7)> {
  1025. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7)>
  1026. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1027. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1028. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1029. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1030. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1031. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1032. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1033. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1034. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1035. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1036. }
  1037. };
  1038. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1039. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const> {
  1040. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7) const>
  1041. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1042. ((static_cast<T *>(gen->GetObject())->*fp)(
  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. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1050. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1051. }
  1052. };
  1053. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1054. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7) const> {
  1055. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7) const>
  1056. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1057. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1058. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1059. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1060. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1061. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1062. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1063. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1064. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1065. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1066. }
  1067. };
  1068. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1069. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7)> {
  1070. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7)>
  1071. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1072. ((fp)(
  1073. Proxy<T>::cast(gen->GetObject()),
  1074. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1075. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1076. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1077. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1078. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1079. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1080. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1081. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1082. }
  1083. };
  1084. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1085. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7)> {
  1086. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7)>
  1087. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1088. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1089. Proxy<T>::cast(gen->GetObject()),
  1090. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1091. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1092. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1093. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1094. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1095. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1096. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1097. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value));
  1098. }
  1099. };
  1100. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1101. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, T)> {
  1102. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, T)>
  1103. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1104. ((fp)(
  1105. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1106. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1107. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1108. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1109. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1110. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1111. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1112. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1113. Proxy<T>::cast(gen->GetObject())));
  1114. }
  1115. };
  1116. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1117. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, T)> {
  1118. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, T)>
  1119. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1120. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1121. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1122. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1123. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1124. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1125. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1126. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1127. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1128. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1129. Proxy<T>::cast(gen->GetObject())));
  1130. }
  1131. };
  1132. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
  1133. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7)> {
  1134. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1135. new (gen->GetObject()) T(
  1136. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1137. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1138. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1139. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1140. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1141. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1142. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1143. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value);
  1144. }
  1145. };
  1146. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1147. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1148. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8)>
  1149. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1150. ((fp)(
  1151. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1152. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1153. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1154. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1155. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1156. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1157. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1158. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1159. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1160. }
  1161. };
  1162. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1163. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1164. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8)>
  1165. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1166. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1167. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1168. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1169. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1170. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1171. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1172. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1173. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1174. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1175. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1176. }
  1177. };
  1178. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1179. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1180. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8)>
  1181. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1182. ((static_cast<T *>(gen->GetObject())->*fp)(
  1183. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1184. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1185. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1186. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1187. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1188. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1189. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1190. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1191. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1192. }
  1193. };
  1194. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1195. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1196. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8)>
  1197. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1198. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1199. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1200. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1201. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1202. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1203. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1204. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1205. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1206. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1207. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1208. }
  1209. };
  1210. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1211. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const> {
  1212. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const>
  1213. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1214. ((static_cast<T *>(gen->GetObject())->*fp)(
  1215. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1216. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1217. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1218. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1219. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1220. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1221. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1222. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1223. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1224. }
  1225. };
  1226. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1227. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const> {
  1228. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const>
  1229. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1230. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1231. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1232. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1233. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1234. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1235. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1236. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1237. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1238. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1239. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1240. }
  1241. };
  1242. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1243. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1244. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8)>
  1245. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1246. ((fp)(
  1247. Proxy<T>::cast(gen->GetObject()),
  1248. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1249. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1250. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1251. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1252. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1253. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1254. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1255. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1256. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1257. }
  1258. };
  1259. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1260. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1261. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8)>
  1262. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1263. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1264. Proxy<T>::cast(gen->GetObject()),
  1265. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1266. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1267. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1268. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1269. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1270. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1271. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1272. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1273. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value));
  1274. }
  1275. };
  1276. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1277. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, T)> {
  1278. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, T)>
  1279. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1280. ((fp)(
  1281. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1282. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1283. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1284. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1285. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1286. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1287. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1288. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1289. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1290. Proxy<T>::cast(gen->GetObject())));
  1291. }
  1292. };
  1293. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1294. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, T)> {
  1295. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, T)>
  1296. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1297. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1298. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1299. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1300. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1301. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1302. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1303. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1304. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1305. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1306. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1307. Proxy<T>::cast(gen->GetObject())));
  1308. }
  1309. };
  1310. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
  1311. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
  1312. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1313. new (gen->GetObject()) T(
  1314. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1315. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1316. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1317. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1318. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1319. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1320. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1321. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1322. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value);
  1323. }
  1324. };
  1325. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1326. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1327. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>
  1328. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1329. ((fp)(
  1330. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1331. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1332. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1333. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1334. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1335. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1336. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1337. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1338. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1339. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1340. }
  1341. };
  1342. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1343. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1344. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>
  1345. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1346. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1347. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1348. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1349. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1350. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1351. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1352. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1353. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1354. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1355. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1356. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1357. }
  1358. };
  1359. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1360. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1361. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>
  1362. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1363. ((static_cast<T *>(gen->GetObject())->*fp)(
  1364. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1365. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1366. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1367. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1368. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1369. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1370. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1371. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1372. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1373. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1374. }
  1375. };
  1376. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1377. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1378. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>
  1379. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1380. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1381. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1382. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1383. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1384. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1385. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1386. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1387. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1388. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1389. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1390. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1391. }
  1392. };
  1393. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1394. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) const> {
  1395. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) const>
  1396. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1397. ((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. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1407. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1408. }
  1409. };
  1410. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1411. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) const> {
  1412. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) const>
  1413. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1414. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1415. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1416. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1417. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1418. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1419. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1420. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1421. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1422. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1423. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1424. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1425. }
  1426. };
  1427. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1428. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1429. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>
  1430. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1431. ((fp)(
  1432. Proxy<T>::cast(gen->GetObject()),
  1433. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1434. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1435. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1436. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1437. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1438. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1439. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1440. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1441. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1442. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1443. }
  1444. };
  1445. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1446. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1447. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)>
  1448. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1449. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1450. Proxy<T>::cast(gen->GetObject()),
  1451. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1452. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1453. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1454. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1455. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1456. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1457. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1458. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1459. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1460. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value));
  1461. }
  1462. };
  1463. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1464. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, T)> {
  1465. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, T)>
  1466. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1467. ((fp)(
  1468. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1469. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1470. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1471. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1472. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1473. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1474. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1475. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1476. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1477. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1478. Proxy<T>::cast(gen->GetObject())));
  1479. }
  1480. };
  1481. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1482. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, T)> {
  1483. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, T)>
  1484. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1485. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1486. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1487. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1488. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1489. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1490. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1491. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1492. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1493. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1494. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1495. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1496. Proxy<T>::cast(gen->GetObject())));
  1497. }
  1498. };
  1499. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
  1500. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
  1501. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1502. new (gen->GetObject()) T(
  1503. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1504. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1505. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1506. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1507. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1508. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1509. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1510. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1511. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1512. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value);
  1513. }
  1514. };
  1515. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1516. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1517. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
  1518. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1519. ((fp)(
  1520. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1521. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1522. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1523. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1524. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1525. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1526. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1527. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1528. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1529. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1530. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1531. }
  1532. };
  1533. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1534. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1535. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
  1536. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1537. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1538. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1539. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1540. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1541. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1542. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1543. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1544. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1545. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1546. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1547. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1548. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1549. }
  1550. };
  1551. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1552. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1553. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
  1554. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1555. ((static_cast<T *>(gen->GetObject())->*fp)(
  1556. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1557. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1558. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1559. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1560. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1561. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1562. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1563. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1564. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1565. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1566. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1567. }
  1568. };
  1569. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1570. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1571. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
  1572. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1573. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1574. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1575. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1576. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1577. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1578. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1579. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1580. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1581. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1582. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1583. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1584. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1585. }
  1586. };
  1587. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1588. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const> {
  1589. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const>
  1590. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1591. ((static_cast<T *>(gen->GetObject())->*fp)(
  1592. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1593. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1594. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1595. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1596. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1597. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1598. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1599. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1600. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1601. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1602. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1603. }
  1604. };
  1605. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1606. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const> {
  1607. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const>
  1608. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1609. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1610. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1611. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1612. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1613. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1614. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1615. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1616. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1617. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1618. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1619. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1620. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1621. }
  1622. };
  1623. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1624. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1625. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
  1626. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1627. ((fp)(
  1628. Proxy<T>::cast(gen->GetObject()),
  1629. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1630. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1631. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1632. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1633. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1634. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1635. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1636. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1637. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1638. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1639. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1640. }
  1641. };
  1642. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1643. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1644. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
  1645. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1646. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1647. Proxy<T>::cast(gen->GetObject()),
  1648. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1649. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1650. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1651. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1652. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1653. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1654. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1655. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1656. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1657. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1658. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value));
  1659. }
  1660. };
  1661. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1662. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T)> {
  1663. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T)>
  1664. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1665. ((fp)(
  1666. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1667. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1668. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1669. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1670. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1671. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1672. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1673. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1674. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1675. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1676. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1677. Proxy<T>::cast(gen->GetObject())));
  1678. }
  1679. };
  1680. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1681. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T)> {
  1682. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T)>
  1683. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1684. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1685. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1686. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1687. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1688. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1689. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1690. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1691. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1692. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1693. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1694. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1695. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1696. Proxy<T>::cast(gen->GetObject())));
  1697. }
  1698. };
  1699. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
  1700. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
  1701. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1702. new (gen->GetObject()) T(
  1703. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1704. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1705. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1706. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1707. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1708. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1709. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1710. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1711. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1712. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1713. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value);
  1714. }
  1715. };
  1716. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1717. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1718. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>
  1719. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1720. ((fp)(
  1721. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1722. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1723. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1724. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1725. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1726. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1727. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1728. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1729. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1730. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1731. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1732. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1733. }
  1734. };
  1735. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1736. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1737. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>
  1738. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1739. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1740. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1741. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1742. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1743. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1744. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1745. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1746. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1747. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1748. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1749. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1750. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1751. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1752. }
  1753. };
  1754. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1755. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1756. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>
  1757. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1758. ((static_cast<T *>(gen->GetObject())->*fp)(
  1759. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1760. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1761. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1762. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1763. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1764. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1765. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1766. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1767. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1768. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1769. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1770. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1771. }
  1772. };
  1773. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1774. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1775. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>
  1776. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1777. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1778. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1779. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1780. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1781. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1782. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1783. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1784. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1785. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1786. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1787. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1788. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1789. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1790. }
  1791. };
  1792. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1793. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const> {
  1794. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const>
  1795. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1796. ((static_cast<T *>(gen->GetObject())->*fp)(
  1797. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1798. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1799. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1800. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1801. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1802. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1803. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1804. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1805. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1806. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1807. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1808. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1809. }
  1810. };
  1811. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1812. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const> {
  1813. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const>
  1814. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1815. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1816. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1817. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1818. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1819. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1820. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1821. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1822. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1823. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1824. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1825. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1826. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1827. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1828. }
  1829. };
  1830. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1831. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1832. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>
  1833. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1834. ((fp)(
  1835. Proxy<T>::cast(gen->GetObject()),
  1836. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1837. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1838. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1839. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1840. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1841. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1842. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1843. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1844. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1845. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1846. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1847. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1848. }
  1849. };
  1850. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1851. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1852. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)>
  1853. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1854. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1855. Proxy<T>::cast(gen->GetObject()),
  1856. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1857. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1858. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1859. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1860. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1861. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1862. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1863. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1864. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1865. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1866. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1867. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value));
  1868. }
  1869. };
  1870. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1871. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, T)> {
  1872. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, T)>
  1873. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1874. ((fp)(
  1875. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1876. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1877. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1878. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1879. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1880. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1881. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1882. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1883. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1884. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1885. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1886. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  1887. Proxy<T>::cast(gen->GetObject())));
  1888. }
  1889. };
  1890. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1891. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, T)> {
  1892. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, T)>
  1893. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1894. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1895. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1896. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1897. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1898. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1899. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1900. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1901. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1902. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1903. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1904. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1905. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1906. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  1907. Proxy<T>::cast(gen->GetObject())));
  1908. }
  1909. };
  1910. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
  1911. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)> {
  1912. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1913. new (gen->GetObject()) T(
  1914. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1915. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1916. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1917. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1918. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1919. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1920. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1921. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1922. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1923. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1924. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1925. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value);
  1926. }
  1927. };
  1928. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  1929. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  1930. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>
  1931. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1932. ((fp)(
  1933. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1934. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1935. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1936. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1937. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1938. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1939. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1940. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1941. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1942. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1943. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1944. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  1945. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  1946. }
  1947. };
  1948. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  1949. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  1950. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>
  1951. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1952. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  1953. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1954. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1955. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1956. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1957. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1958. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1959. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1960. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1961. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1962. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1963. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1964. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  1965. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  1966. }
  1967. };
  1968. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  1969. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  1970. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>
  1971. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1972. ((static_cast<T *>(gen->GetObject())->*fp)(
  1973. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1974. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1975. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1976. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1977. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1978. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1979. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  1980. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  1981. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  1982. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  1983. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  1984. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  1985. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  1986. }
  1987. };
  1988. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  1989. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  1990. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>
  1991. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  1992. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  1993. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  1994. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  1995. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  1996. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  1997. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  1998. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  1999. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2000. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2001. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2002. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2003. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2004. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2005. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  2006. }
  2007. };
  2008. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2009. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const> {
  2010. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const>
  2011. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2012. ((static_cast<T *>(gen->GetObject())->*fp)(
  2013. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2014. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2015. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2016. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2017. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2018. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2019. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2020. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2021. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2022. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2023. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2024. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2025. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  2026. }
  2027. };
  2028. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2029. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const> {
  2030. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const>
  2031. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2032. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2033. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2034. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2035. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2036. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2037. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2038. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2039. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2040. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2041. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2042. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2043. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2044. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2045. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  2046. }
  2047. };
  2048. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2049. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  2050. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>
  2051. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2052. ((fp)(
  2053. Proxy<T>::cast(gen->GetObject()),
  2054. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2055. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2056. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2057. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2058. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2059. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2060. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2061. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2062. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2063. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2064. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2065. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2066. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  2067. }
  2068. };
  2069. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2070. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  2071. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)>
  2072. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2073. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2074. Proxy<T>::cast(gen->GetObject()),
  2075. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2076. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2077. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2078. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2079. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2080. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2081. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2082. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2083. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2084. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2085. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2086. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2087. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value));
  2088. }
  2089. };
  2090. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2091. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, T)> {
  2092. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, T)>
  2093. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2094. ((fp)(
  2095. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2096. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2097. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2098. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2099. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2100. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2101. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2102. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2103. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2104. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2105. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2106. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2107. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2108. Proxy<T>::cast(gen->GetObject())));
  2109. }
  2110. };
  2111. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2112. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, T)> {
  2113. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, T)>
  2114. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2115. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2116. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2117. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2118. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2119. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2120. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2121. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2122. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2123. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2124. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2125. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2126. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2127. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2128. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2129. Proxy<T>::cast(gen->GetObject())));
  2130. }
  2131. };
  2132. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
  2133. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)> {
  2134. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2135. new (gen->GetObject()) T(
  2136. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2137. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2138. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2139. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2140. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2141. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2142. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2143. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2144. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2145. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2146. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2147. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2148. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value);
  2149. }
  2150. };
  2151. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2152. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2153. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>
  2154. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2155. ((fp)(
  2156. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2157. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2158. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2159. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2160. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2161. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2162. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2163. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2164. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2165. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2166. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2167. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2168. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2169. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2170. }
  2171. };
  2172. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2173. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2174. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>
  2175. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2176. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2177. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2178. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2179. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2180. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2181. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2182. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2183. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2184. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2185. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2186. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2187. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2188. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2189. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2190. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2191. }
  2192. };
  2193. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2194. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2195. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>
  2196. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2197. ((static_cast<T *>(gen->GetObject())->*fp)(
  2198. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2199. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2200. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2201. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2202. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2203. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2204. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2205. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2206. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2207. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2208. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2209. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2210. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2211. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2212. }
  2213. };
  2214. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2215. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2216. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>
  2217. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2218. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2219. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2220. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2221. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2222. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2223. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2224. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2225. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2226. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2227. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2228. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2229. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2230. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2231. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2232. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2233. }
  2234. };
  2235. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2236. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const> {
  2237. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const>
  2238. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2239. ((static_cast<T *>(gen->GetObject())->*fp)(
  2240. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2241. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2242. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2243. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2244. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2245. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2246. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2247. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2248. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2249. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2250. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2251. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2252. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2253. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2254. }
  2255. };
  2256. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2257. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const> {
  2258. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const>
  2259. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2260. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2261. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2262. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2263. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2264. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2265. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2266. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2267. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2268. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2269. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2270. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2271. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2272. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2273. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2274. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2275. }
  2276. };
  2277. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2278. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2279. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>
  2280. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2281. ((fp)(
  2282. Proxy<T>::cast(gen->GetObject()),
  2283. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2284. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2285. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2286. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2287. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2288. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2289. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2290. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2291. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2292. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2293. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2294. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2295. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2296. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2297. }
  2298. };
  2299. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2300. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2301. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)>
  2302. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2303. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2304. Proxy<T>::cast(gen->GetObject()),
  2305. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2306. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2307. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2308. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2309. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2310. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2311. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2312. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2313. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2314. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2315. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2316. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2317. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2318. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value));
  2319. }
  2320. };
  2321. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2322. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, T)> {
  2323. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, T)>
  2324. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2325. ((fp)(
  2326. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2327. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2328. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2329. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2330. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2331. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2332. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2333. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2334. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2335. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2336. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2337. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2338. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2339. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2340. Proxy<T>::cast(gen->GetObject())));
  2341. }
  2342. };
  2343. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2344. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, T)> {
  2345. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, T)>
  2346. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2347. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2348. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2349. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2350. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2351. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2352. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2353. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2354. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2355. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2356. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2357. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2358. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2359. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2360. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2361. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2362. Proxy<T>::cast(gen->GetObject())));
  2363. }
  2364. };
  2365. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
  2366. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)> {
  2367. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2368. new (gen->GetObject()) T(
  2369. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2370. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2371. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2372. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2373. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2374. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2375. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2376. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2377. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2378. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2379. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2380. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2381. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2382. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value);
  2383. }
  2384. };
  2385. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2386. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2387. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>
  2388. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2389. ((fp)(
  2390. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2391. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2392. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2393. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2394. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2395. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2396. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2397. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2398. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2399. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2400. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2401. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2402. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2403. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2404. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2405. }
  2406. };
  2407. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2408. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2409. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>
  2410. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2411. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2412. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2413. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2414. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2415. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2416. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2417. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2418. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2419. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2420. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2421. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2422. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2423. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2424. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2425. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2426. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2427. }
  2428. };
  2429. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2430. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2431. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>
  2432. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2433. ((static_cast<T *>(gen->GetObject())->*fp)(
  2434. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2435. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2436. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2437. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2438. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2439. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2440. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2441. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2442. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2443. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2444. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2445. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2446. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2447. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2448. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2449. }
  2450. };
  2451. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2452. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2453. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>
  2454. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2455. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2456. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2457. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2458. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2459. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2460. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2461. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2462. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2463. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2464. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2465. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2466. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2467. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2468. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2469. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2470. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2471. }
  2472. };
  2473. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2474. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const> {
  2475. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const>
  2476. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2477. ((static_cast<T *>(gen->GetObject())->*fp)(
  2478. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2479. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2480. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2481. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2482. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2483. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2484. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2485. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2486. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2487. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2488. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2489. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2490. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2491. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2492. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2493. }
  2494. };
  2495. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2496. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const> {
  2497. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const>
  2498. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2499. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2500. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2501. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2502. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2503. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2504. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2505. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2506. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2507. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2508. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2509. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2510. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2511. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2512. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2513. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2514. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2515. }
  2516. };
  2517. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2518. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2519. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>
  2520. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2521. ((fp)(
  2522. Proxy<T>::cast(gen->GetObject()),
  2523. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2524. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2525. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2526. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2527. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2528. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2529. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2530. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2531. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2532. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2533. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2534. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2535. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2536. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2537. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2538. }
  2539. };
  2540. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2541. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2542. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)>
  2543. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2544. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2545. Proxy<T>::cast(gen->GetObject()),
  2546. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2547. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2548. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2549. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2550. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2551. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2552. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2553. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2554. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2555. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2556. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2557. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2558. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2559. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2560. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value));
  2561. }
  2562. };
  2563. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2564. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, T)> {
  2565. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, T)>
  2566. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2567. ((fp)(
  2568. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2569. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2570. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2571. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2572. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2573. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2574. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2575. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2576. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2577. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2578. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2579. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2580. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2581. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2582. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2583. Proxy<T>::cast(gen->GetObject())));
  2584. }
  2585. };
  2586. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2587. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, T)> {
  2588. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, T)>
  2589. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2590. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2591. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2592. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2593. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2594. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2595. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2596. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2597. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2598. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2599. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2600. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2601. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2602. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2603. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2604. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2605. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2606. Proxy<T>::cast(gen->GetObject())));
  2607. }
  2608. };
  2609. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
  2610. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)> {
  2611. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2612. new (gen->GetObject()) T(
  2613. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2614. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2615. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2616. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2617. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2618. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2619. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2620. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2621. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2622. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2623. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2624. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2625. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2626. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2627. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value);
  2628. }
  2629. };
  2630. template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2631. struct Wrapper<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2632. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>
  2633. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2634. ((fp)(
  2635. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2636. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2637. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2638. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2639. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2640. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2641. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2642. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2643. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2644. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2645. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2646. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2647. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2648. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2649. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2650. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2651. }
  2652. };
  2653. template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2654. struct Wrapper<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2655. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>
  2656. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2657. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2658. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2659. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2660. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2661. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2662. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2663. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2664. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2665. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2666. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2667. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2668. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2669. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2670. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2671. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2672. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2673. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2674. }
  2675. };
  2676. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2677. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2678. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>
  2679. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2680. ((static_cast<T *>(gen->GetObject())->*fp)(
  2681. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2682. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2683. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2684. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2685. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2686. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2687. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2688. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2689. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2690. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2691. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2692. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2693. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2694. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2695. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2696. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2697. }
  2698. };
  2699. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2700. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2701. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>
  2702. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2703. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2704. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2705. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2706. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2707. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2708. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2709. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2710. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2711. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2712. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2713. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2714. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2715. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2716. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2717. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2718. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2719. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2720. }
  2721. };
  2722. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2723. struct Wrapper<void (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) const> {
  2724. template <void (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) const>
  2725. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2726. ((static_cast<T *>(gen->GetObject())->*fp)(
  2727. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2728. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2729. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2730. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2731. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2732. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2733. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2734. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2735. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2736. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2737. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2738. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2739. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2740. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2741. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2742. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2743. }
  2744. };
  2745. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2746. struct Wrapper<R (T::*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) const> {
  2747. template <R (T::*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) const>
  2748. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2749. new (gen->GetAddressOfReturnLocation()) Proxy<R>((static_cast<T *>(gen->GetObject())->*fp)(
  2750. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2751. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2752. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2753. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2754. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2755. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2756. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2757. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2758. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2759. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2760. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2761. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2762. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2763. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2764. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2765. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2766. }
  2767. };
  2768. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2769. struct ObjFirst<void (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2770. template <void (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>
  2771. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2772. ((fp)(
  2773. Proxy<T>::cast(gen->GetObject()),
  2774. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2775. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2776. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2777. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2778. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2779. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2780. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2781. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2782. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2783. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2784. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2785. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2786. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2787. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2788. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2789. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2790. }
  2791. };
  2792. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2793. struct ObjFirst<R (*)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2794. template <R (*fp)(T, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)>
  2795. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2796. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2797. Proxy<T>::cast(gen->GetObject()),
  2798. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2799. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2800. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2801. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2802. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2803. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2804. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2805. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2806. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2807. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2808. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2809. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2810. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2811. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2812. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2813. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value));
  2814. }
  2815. };
  2816. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2817. struct ObjLast<void (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, T)> {
  2818. template <void (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, T)>
  2819. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2820. ((fp)(
  2821. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2822. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2823. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2824. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2825. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2826. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2827. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2828. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2829. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2830. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2831. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2832. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2833. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2834. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2835. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2836. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value,
  2837. Proxy<T>::cast(gen->GetObject())));
  2838. }
  2839. };
  2840. template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2841. struct ObjLast<R (*)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, T)> {
  2842. template <R (*fp)(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, T)>
  2843. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2844. new (gen->GetAddressOfReturnLocation()) Proxy<R>((fp)(
  2845. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2846. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2847. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2848. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2849. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2850. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2851. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2852. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2853. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2854. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2855. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2856. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2857. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2858. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2859. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2860. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value,
  2861. Proxy<T>::cast(gen->GetObject())));
  2862. }
  2863. };
  2864. template <typename T, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
  2865. struct Constructor <T (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)> {
  2866. static void f(AS_NAMESPACE_QUALIFIER asIScriptGeneric * gen) {
  2867. new (gen->GetObject()) T(
  2868. static_cast<Proxy <A0> *>(gen->GetAddressOfArg(0))->value,
  2869. static_cast<Proxy <A1> *>(gen->GetAddressOfArg(1))->value,
  2870. static_cast<Proxy <A2> *>(gen->GetAddressOfArg(2))->value,
  2871. static_cast<Proxy <A3> *>(gen->GetAddressOfArg(3))->value,
  2872. static_cast<Proxy <A4> *>(gen->GetAddressOfArg(4))->value,
  2873. static_cast<Proxy <A5> *>(gen->GetAddressOfArg(5))->value,
  2874. static_cast<Proxy <A6> *>(gen->GetAddressOfArg(6))->value,
  2875. static_cast<Proxy <A7> *>(gen->GetAddressOfArg(7))->value,
  2876. static_cast<Proxy <A8> *>(gen->GetAddressOfArg(8))->value,
  2877. static_cast<Proxy <A9> *>(gen->GetAddressOfArg(9))->value,
  2878. static_cast<Proxy <A10> *>(gen->GetAddressOfArg(10))->value,
  2879. static_cast<Proxy <A11> *>(gen->GetAddressOfArg(11))->value,
  2880. static_cast<Proxy <A12> *>(gen->GetAddressOfArg(12))->value,
  2881. static_cast<Proxy <A13> *>(gen->GetAddressOfArg(13))->value,
  2882. static_cast<Proxy <A14> *>(gen->GetAddressOfArg(14))->value,
  2883. static_cast<Proxy <A15> *>(gen->GetAddressOfArg(15))->value);
  2884. }
  2885. };
  2886. template <typename T>
  2887. struct Id {
  2888. template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr f(void) { return asFunctionPtr(&Wrapper<T>::template f<fn_ptr>); }
  2889. template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr of(void) { return asFunctionPtr(&ObjFirst<T>::template f<fn_ptr>); }
  2890. template <T fn_ptr> AS_NAMESPACE_QUALIFIER asSFuncPtr ol(void) { return asFunctionPtr(&ObjLast<T>::template f<fn_ptr>); }
  2891. };
  2892. template <typename T>
  2893. Id<T> id(T fn_ptr) { return Id<T>(); }
  2894. // On some versions of GNUC it is necessary to use the template keyword as disambiguator,
  2895. // on others the template keyword gives an error, hence the need for the following define.
  2896. // MSVC on the other hand seems to accept both with or without the template keyword.
  2897. #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || (__GNUC__ == 5))
  2898. // GNUC 4.4.3 doesn't need the template keyword, and
  2899. // hopefully upcoming versions won't need it either
  2900. #define TMPL template
  2901. #else
  2902. #define TMPL
  2903. #endif
  2904. #define WRAP_FN(name) (::gw::id(name).TMPL f< name >())
  2905. #define WRAP_MFN(ClassType, name) (::gw::id(&ClassType::name).TMPL f< &ClassType::name >())
  2906. #define WRAP_OBJ_FIRST(name) (::gw::id(name).TMPL of< name >())
  2907. #define WRAP_OBJ_LAST(name) (::gw::id(name).TMPL ol< name >())
  2908. #define WRAP_FN_PR(name, Parameters, ReturnType) asFunctionPtr((::gw::Wrapper<ReturnType (*)Parameters>::TMPL f< name >))
  2909. // Urho3D: The template method did not compile for me (emscripten and gcc), hence the lambda stuff in the wrap.h file
  2910. //#define WRAP_MFN_PR(ClassType, name, Parameters, ReturnType) asFunctionPtr<asGENFUNC_t>((::gw::Wrapper<ReturnType (ClassType::*)Parameters>::TMPL f< &ClassType::name >))
  2911. #define WRAP_OBJ_FIRST_PR(name, Parameters, ReturnType) asFunctionPtr((::gw::ObjFirst<ReturnType (*)Parameters>::TMPL f< name >))
  2912. #define WRAP_OBJ_LAST_PR(name, Parameters, ReturnType) asFunctionPtr((::gw::ObjLast<ReturnType (*)Parameters>::TMPL f< name >))
  2913. #define WRAP_CON(ClassType, Parameters) asFunctionPtr((::gw::Constructor<ClassType Parameters>::f))
  2914. #define WRAP_DES(ClassType) asFunctionPtr((::gw::destroy<ClassType>))
  2915. } // end namespace gw
  2916. // Urho3D: The template method did not compile for me (emscripten and gcc), hence the lambda stuff in the wrap.h file
  2917. #include "wrap.h"
  2918. #endif