author | truelight |
Fri, 16 Mar 2007 09:57:39 +0000 | |
branch | noai |
changeset 9437 | 28e0105114a4 |
parent 9434 | 2e71647c2c1c |
child 9480 | d071f885f918 |
permissions | -rw-r--r-- |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
1 |
/* $Id$ */ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
2 |
|
9424
90e9aa6326f3
(svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents:
9387
diff
changeset
|
3 |
/** @file squirrel_helper.hpp declarations and parts of the implementation of the class for convert code */ |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
4 |
|
9424
90e9aa6326f3
(svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents:
9387
diff
changeset
|
5 |
#ifndef SQUIRREL_HELPER_HPP |
90e9aa6326f3
(svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents:
9387
diff
changeset
|
6 |
#define SQUIRREL_HELPER_HPP |
90e9aa6326f3
(svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents:
9387
diff
changeset
|
7 |
|
90e9aa6326f3
(svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents:
9387
diff
changeset
|
8 |
#include <squirrel.h> |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
9 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
10 |
/** |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
11 |
* The Squirrel convert class. It doesn't have an instance, the methods only are used. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
12 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
13 |
class SQConvert { |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
14 |
public: |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
15 |
/** |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
16 |
* Special class to make it possible for the compiler to pick the correct GetParam(). |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
17 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
18 |
template <typename T> class ForceType { }; |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
19 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
20 |
/** |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
21 |
* To return a value to squirrel, we call this function. It converts to the right format. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
22 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
23 |
template <typename T> static int Return(HSQUIRRELVM vm, T t); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
24 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
25 |
/** |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
26 |
* To get a param from squirrel, we call this function. It converts to the right format. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
27 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
28 |
template <typename T> static T GetParam(ForceType<T>, HSQUIRRELVM vm, int index); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
29 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
30 |
/** |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
31 |
* The real C++ caller for function with a return value and 0 params. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
32 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
33 |
template <typename CL, typename RT> |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
34 |
static int SQCall(CL *instance, RT (CL::*func)(), HSQUIRRELVM vm) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
35 |
{ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
36 |
return Return(vm, (instance->*func)()); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
37 |
} |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
38 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
39 |
/** |
9437
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
40 |
* The real C++ caller for function with no return value and 0 params. |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
41 |
*/ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
42 |
template <typename CL> |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
43 |
static int SQCall(CL *instance, void (CL::*func)(), HSQUIRRELVM vm) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
44 |
{ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
45 |
(instance->*func)(); |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
46 |
return 0; |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
47 |
} |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
48 |
|
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
49 |
/** |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
50 |
* The real C++ caller for function with a return value and 1 param. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
51 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
52 |
template <typename CL, typename RT, typename P1> |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
53 |
static int SQCall(CL *instance, RT (CL::*func)(P1), HSQUIRRELVM vm) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
54 |
{ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
55 |
return Return(vm, (instance->*func)( |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
56 |
GetParam(ForceType<P1>(), vm, 2) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
57 |
)); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
58 |
} |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
59 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
60 |
/** |
9437
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
61 |
* The real C++ caller for function with no return value and 1 param. |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
62 |
*/ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
63 |
template <typename CL, typename P1> |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
64 |
static int SQCall(CL *instance, void (CL::*func)(P1), HSQUIRRELVM vm) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
65 |
{ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
66 |
(instance->*func)( |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
67 |
GetParam(ForceType<P1>(), vm, 2) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
68 |
); |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
69 |
return 0; |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
70 |
} |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
71 |
|
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
72 |
/** |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
73 |
* The real C++ caller for function with a return value and 2 params. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
74 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
75 |
template <typename CL, typename RT, typename P1, typename P2> |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
76 |
static int SQCall(CL *instance, RT (CL::*func)(P1, P2), HSQUIRRELVM vm) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
77 |
{ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
78 |
return Return(vm, (instance->*func)( |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
79 |
GetParam(ForceType<P1>(), vm, 2), |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
80 |
GetParam(ForceType<P2>(), vm, 3) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
81 |
)); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
82 |
} |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
83 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
84 |
/** |
9437
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
85 |
* The real C++ caller for function with no return value and 2 params. |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
86 |
*/ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
87 |
template <typename CL, typename P1, typename P2> |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
88 |
static int SQCall(CL *instance, void (CL::*func)(P1, P2), HSQUIRRELVM vm) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
89 |
{ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
90 |
(instance->*func)( |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
91 |
GetParam(ForceType<P1>(), vm, 2), |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
92 |
GetParam(ForceType<P2>(), vm, 3) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
93 |
); |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
94 |
return 0; |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
95 |
} |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
96 |
|
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
97 |
/** |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
98 |
* The real C++ caller for function with a return value and 3 params. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
99 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
100 |
template <typename CL, typename RT, typename P1, typename P2, typename P3> |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
101 |
static int SQCall(CL *instance, RT (CL::*func)(P1, P2, P3), HSQUIRRELVM vm) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
102 |
{ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
103 |
return Return(vm, (instance->*func)( |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
104 |
GetParam(ForceType<P1>(), vm, 2), |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
105 |
GetParam(ForceType<P2>(), vm, 3), |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
106 |
GetParam(ForceType<P3>(), vm, 4) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
107 |
)); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
108 |
} |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
109 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
110 |
/** |
9437
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
111 |
* The real C++ caller for function with no return value and 3 params. |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
112 |
*/ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
113 |
template <typename CL, typename P1, typename P2, typename P3> |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
114 |
static int SQCall(CL *instance, void (CL::*func)(P1, P2, P3), HSQUIRRELVM vm) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
115 |
{ |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
116 |
(instance->*func)( |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
117 |
GetParam(ForceType<P1>(), vm, 2), |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
118 |
GetParam(ForceType<P2>(), vm, 3), |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
119 |
GetParam(ForceType<P3>(), vm, 4) |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
120 |
); |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
121 |
return 0; |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
122 |
} |
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
123 |
|
28e0105114a4
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents:
9434
diff
changeset
|
124 |
/** |
9387
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
125 |
* A general template for all callback functions from Squirrel. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
126 |
* In here the function_proc is recovered, and the SQCall is called that |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
127 |
* can handle this exact amount of params. |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
128 |
*/ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
129 |
template <typename CL, typename Func> |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
130 |
static SQInteger DefSQCallback(HSQUIRRELVM vm) |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
131 |
{ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
132 |
/* Find the amount of params we got */ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
133 |
int nparam = sq_gettop(vm); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
134 |
SQUserPointer ptr = NULL; |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
135 |
SQUserPointer instance = NULL; |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
136 |
|
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
137 |
/* Get the 'real' instance of this class */ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
138 |
sq_getinstanceup(vm, 1, &instance, 0); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
139 |
/* Get the real function pointer */ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
140 |
sq_getuserdata(vm, nparam, &ptr, 0); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
141 |
/* Deligate it to a template that can handle this specific function */ |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
142 |
return SQCall((CL *)instance, *(Func *)ptr, vm); |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
143 |
} |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
144 |
}; |
4255a0a2d272
(svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff
changeset
|
145 |
|
9424
90e9aa6326f3
(svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents:
9387
diff
changeset
|
146 |
#endif /* SQUIRREL_HELPER_HPP */ |