author | truelight |
Wed, 02 May 2007 12:56:01 +0000 | |
branch | noai |
changeset 9610 | 5cebcd43a1ec |
parent 9609 | f0dbf5850145 |
child 9635 | 9ee82e091af7 |
permissions | -rw-r--r-- |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
1 |
# |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
2 |
# Awk script to automatically generate the code needed |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
3 |
# to export the AI API to Squirrel. |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
4 |
# |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
5 |
# Note that arrays are 1 based... |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
6 |
# |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
7 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
8 |
# Simple insertion sort. |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
9 |
function array_sort(ARRAY, ELEMENTS, temp, i, j) { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
10 |
for (i = 2; i <= ELEMENTS; i++) |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
11 |
for (j = i; ARRAY[j - 1] > ARRAY[j]; --j) { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
12 |
temp = ARRAY[j] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
13 |
ARRAY[j] = ARRAY[j - 1] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
14 |
ARRAY[j - 1] = temp |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
15 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
16 |
return |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
17 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
18 |
|
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
19 |
function dump_class_templates(name) { |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
20 |
print " template <> " name " *GetParam(ForceType<" name " *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }" |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
21 |
print " template <> " name " &GetParam(ForceType<" name " &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
22 |
print " template <> const " name " *GetParam(ForceType<const " name " *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }" |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
23 |
print " template <> const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
24 |
} |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
25 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
26 |
BEGIN { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
27 |
enum_size = 0 |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
28 |
enum_value_size = 0 |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
29 |
struct_size = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
30 |
method_size = 0 |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
31 |
static_method_size = 0 |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
32 |
virtual_class = "false" |
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
33 |
super_cls = "" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
34 |
cls = "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
35 |
start_squirrel_define_on_next_line = "false" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
36 |
cls_level = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
37 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
38 |
|
9596
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
39 |
/@file/ { |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
40 |
print "#include \"" $3 "\"" |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
41 |
} |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
42 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
43 |
# Remove the old squirrel stuff |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
44 |
/#ifdef DEFINE_SQUIRREL_CLASS/ { squirrel_stuff = "true"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
45 |
/^#endif \/\* DEFINE_SQUIRREL_CLASS \*\// { if (squirrel_stuff == "true") { squirrel_stuff = "false"; next; } } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
46 |
{ if (squirrel_stuff == "true") next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
47 |
|
9587
b0716d4c0128
(svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents:
9583
diff
changeset
|
48 |
# Ignore forward declarations of classes |
b0716d4c0128
(svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents:
9583
diff
changeset
|
49 |
/^( *)class(.*);/ { next; } |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
50 |
# We only want to have public functions exported for now |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
51 |
/^( *)class/ { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
52 |
if (cls_level == 0) { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
53 |
public = "false" |
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
54 |
cls_param[0] = "" |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
55 |
cls_param[1] = 1 |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
56 |
cls_param[2] = "x" |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
57 |
cls = $2 |
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
58 |
if (match($4, "public") || match($4, "protected") || match($4, "private")) { |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
59 |
super_cls = $5 |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
60 |
} else { |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
61 |
super_cls = $4 |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
62 |
} |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
63 |
} else if (cls_level == 1) { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
64 |
struct_size++ |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
65 |
structs[struct_size] = cls "::" $2 |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
66 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
67 |
cls_level++ |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
68 |
next |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
69 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
70 |
/^( *)public/ { if (cls_level == 1) public = "true"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
71 |
/^( *)protected/ { if (cls_level == 1) public = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
72 |
/^( *)private/ { if (cls_level == 1) public = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
73 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
74 |
# Ignore the comments |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
75 |
/^#/ { next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
76 |
/\/\*.*\*\// { comment = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
77 |
/\/\*/ { comment = "true"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
78 |
/\*\// { comment = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
79 |
{ if (comment == "true") next } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
80 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
81 |
# We need to make specialized conversions for structs |
9527
f709c97a5d9f
(svn r9447) [NoAI] -Fix (r9446): commented out a little too much code, i.e. code that wasn't unused yet ;)
rubidium
parents:
9526
diff
changeset
|
82 |
/^( *)struct/ { |
f709c97a5d9f
(svn r9447) [NoAI] -Fix (r9446): commented out a little too much code, i.e. code that wasn't unused yet ;)
rubidium
parents:
9526
diff
changeset
|
83 |
cls_level++ |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
84 |
if (public == "false") next |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
85 |
if (cls_level != 1) next |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
86 |
struct_size++ |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
87 |
structs[struct_size] = cls "::" $2 |
9527
f709c97a5d9f
(svn r9447) [NoAI] -Fix (r9446): commented out a little too much code, i.e. code that wasn't unused yet ;)
rubidium
parents:
9526
diff
changeset
|
88 |
next |
f709c97a5d9f
(svn r9447) [NoAI] -Fix (r9446): commented out a little too much code, i.e. code that wasn't unused yet ;)
rubidium
parents:
9526
diff
changeset
|
89 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
90 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
91 |
# We need to make specialized conversions for enums |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
92 |
/^( *)enum/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
93 |
cls_level++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
94 |
if (public == "false") next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
95 |
in_enum = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
96 |
enum_size++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
97 |
enums[enum_size] = cls "::" $2 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
98 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
99 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
100 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
101 |
# Maybe the end of the class, if so we can start with the Squirrel export pretty soon |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
102 |
/};/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
103 |
cls_level-- |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
104 |
if (cls_level != 0) { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
105 |
in_enum = "false"; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
106 |
next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
107 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
108 |
if (cls == "") { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
109 |
next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
110 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
111 |
start_squirrel_define_on_next_line = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
112 |
next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
113 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
114 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
115 |
# Empty/white lines. When we may do the Squirrel export, do that export. |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
116 |
/^([ ]*)$/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
117 |
if (start_squirrel_define_on_next_line == "false") next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
118 |
spaces = " "; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
119 |
public = "false" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
120 |
namespace_opened = "false" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
121 |
|
9596
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
122 |
print "" |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
123 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
124 |
# First check whether we have enums to print |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
125 |
if (enum_size != 0) { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
126 |
if (namespace_opened == "false") { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
127 |
print "namespace SQConvert {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
128 |
namespace_opened = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
129 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
130 |
print " /* Allow enums to be used as Squirrel parameters */" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
131 |
for (i = 1; i <= enum_size; i++) { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
132 |
print " template <> " enums[i] " GetParam(ForceType<" enums[i] ">, HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (" enums[i] ")tmp; }" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
133 |
print " template <> int Return<" enums[i] ">(HSQUIRRELVM vm, " enums[i] " res) { sq_pushinteger(vm, (int32)res); return 1; }" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
134 |
delete enums[i] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
135 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
136 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
137 |
|
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
138 |
# Then check whether we have structs/classes to print |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
139 |
if (struct_size != 0) { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
140 |
if (namespace_opened == "false") { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
141 |
print "namespace SQConvert {" |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
142 |
namespace_opened = "true" |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
143 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
144 |
print " /* Allow inner classes/structs to be used as Squirrel parameters */" |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
145 |
for (i = 1; i <= struct_size; i++) { |
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
146 |
dump_class_templates(structs[i]) |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
147 |
delete structs[i] |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
148 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
149 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
150 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
151 |
if (namespace_opened == "false") { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
152 |
print "namespace SQConvert {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
153 |
namespace_opened = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
154 |
} else { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
155 |
print "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
156 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
157 |
print " /* Allow " cls " to be used as Squirrel parameter */" |
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
158 |
dump_class_templates(cls) |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
159 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
160 |
print "}; // namespace SQConvert" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
161 |
|
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
162 |
if (virtual_class == "false") { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
163 |
print ""; |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
164 |
# Then do the registration functions of the class. */ |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
165 |
print "void SQ" cls "Register(Squirrel *engine) {" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
166 |
print " DefSQClass <" cls "> SQ" cls "(\"" cls "\");" |
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
167 |
if (super_cls == "AIObject" || super_cls == "AIAbstractList::Valuator") { |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
168 |
print " SQ" cls ".PreRegister(engine);" |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
169 |
} else { |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
170 |
print " SQ" cls ".PreRegister(engine, \"" super_cls "\");" |
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
171 |
} |
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
172 |
print " SQ" cls ".AddConstructor<void (" cls "::*)(" cls_param[0] ")>(engine, " cls_param[1] ", \"" cls_param[2] "\");" |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
173 |
print "" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
174 |
|
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
175 |
# Enum values |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
176 |
mlen = 0 |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
177 |
for (i = 1; i <= enum_value_size; i++) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
178 |
if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
179 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
180 |
for (i = 1; i <= enum_value_size; i++) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
181 |
print " SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\"" enum_value[i] "\");" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
182 |
delete enum_value[i] |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
183 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
184 |
if (enum_value_size != 0) print "" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
185 |
|
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
186 |
# Static methods |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
187 |
mlen = 0 |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
188 |
for (i = 1; i <= static_method_size; i++) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
189 |
if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0]) |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
190 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
191 |
for (i = 1; i <= static_method_size; i++) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
192 |
print " SQ" cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i, 0] ", " substr(spaces, 1, mlen - length(static_methods[i, 0])) "\"" static_methods[i, 0] "\", " substr(spaces, 1, mlen - length(static_methods[i, 0])) "" static_methods[i, 1] ", \"" static_methods[i, 2] "\");" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
193 |
delete static_methods[i] |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
194 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
195 |
if (static_method_size != 0) print "" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
196 |
|
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
197 |
# Non-static methods |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
198 |
mlen = 0 |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
199 |
for (i = 1; i <= method_size; i++) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
200 |
if (mlen <= length(methods[i, 0])) mlen = length(methods[i, 0]) |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
201 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
202 |
for (i = 1; i <= method_size; i++) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
203 |
print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0])) "\"" methods[i, 0] "\", " substr(spaces, 1, mlen - length(methods[i, 0])) "" methods[i, 1] ", \"" methods[i, 2] "\");" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
204 |
delete methods[i] |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
205 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
206 |
if (method_size != 0) print "" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
207 |
|
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
208 |
print " SQ" cls ".PostRegister(engine);" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
209 |
print "}" |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
210 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
211 |
|
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
212 |
enum_size = 0 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
213 |
enum_value_size = 0 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
214 |
struct_size = 0 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
215 |
method_size = 0 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
216 |
static_method_size = 0 |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
217 |
virtual_class = "false" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
218 |
cls = "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
219 |
start_squirrel_define_on_next_line = "false" |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
220 |
cls_level = 0 |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
221 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
222 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
223 |
# Skip non-public functions |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
224 |
{ if (public == "false") next } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
225 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
226 |
# Add enums |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
227 |
{ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
228 |
if (in_enum == "true") { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
229 |
enum_value_size++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
230 |
enum_value[enum_value_size] = $1 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
231 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
232 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
233 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
234 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
235 |
# Add a method to the list |
9587
b0716d4c0128
(svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents:
9583
diff
changeset
|
236 |
/^.*\(.*\).*$/ { |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
237 |
if (cls_level != 1) next |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
238 |
|
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
239 |
is_static = match($0, "static") |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
240 |
if (match($0, "virtual")) { |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
241 |
virtual_class = "true" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
242 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
243 |
gsub("virtual", "", $0) |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
244 |
gsub("static", "", $0) |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
245 |
gsub("const", "", $0) |
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
246 |
param_s = $0 |
9533
2c692ffdf5e4
(svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents:
9532
diff
changeset
|
247 |
gsub("\\*", "", $0) |
2c692ffdf5e4
(svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents:
9532
diff
changeset
|
248 |
gsub("\\(.*", "", $0) |
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
249 |
|
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
250 |
sub(".*\\(", "", param_s) |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
251 |
sub("\\).*", "", param_s) |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
252 |
|
9609
f0dbf5850145
(svn r9767) [NoAI] -Add: add support for params in the constructor (via C++ templates)
truelight
parents:
9596
diff
changeset
|
253 |
funcname = $2 |
f0dbf5850145
(svn r9767) [NoAI] -Add: add support for params in the constructor (via C++ templates)
truelight
parents:
9596
diff
changeset
|
254 |
if ($1 == cls) { |
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
255 |
cls_param[0] = param_s |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
256 |
if (param_s == "") next |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
257 |
} else if (funcname == "") next |
9609
f0dbf5850145
(svn r9767) [NoAI] -Add: add support for params in the constructor (via C++ templates)
truelight
parents:
9596
diff
changeset
|
258 |
|
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
259 |
split(param_s, params, ",") |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
260 |
types = "x" |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
261 |
for (len = 1; params[len] != ""; len++) { |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
262 |
sub("^[ ]*", "", params[len]) |
9594
5009a30f320a
(svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes.
rubidium
parents:
9587
diff
changeset
|
263 |
if (match(params[len], "\\*") || match(params[len], "&")) { |
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
264 |
if (match(params[len], "^char")) { |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
265 |
types = types "s" |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
266 |
} else { |
9583
c233c2897a45
(svn r9607) [NoAI] -Fix: instances should be 'x', not 'p' in SQ param list
truelight
parents:
9572
diff
changeset
|
267 |
types = types "x" |
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
268 |
} |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
269 |
} else if (match(params[len], "^bool")) { |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
270 |
types = types "b" |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
271 |
} else { |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
272 |
types = types "i" |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
273 |
} |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
274 |
} |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
275 |
|
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
276 |
if ($1 == cls) { |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
277 |
cls_param[1] = len; |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
278 |
cls_param[2] = types; |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
279 |
} else if (is_static) { |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
280 |
static_method_size++ |
9542
fccf685f68ea
(svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents:
9541
diff
changeset
|
281 |
static_methods[static_method_size, 0] = funcname |
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
282 |
static_methods[static_method_size, 1] = len |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
283 |
static_methods[static_method_size, 2] = types |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
284 |
} else { |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
285 |
method_size++ |
9542
fccf685f68ea
(svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents:
9541
diff
changeset
|
286 |
methods[method_size, 0] = funcname |
9541
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
287 |
methods[method_size, 1] = len |
4bb34cea7fad
(svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents:
9533
diff
changeset
|
288 |
methods[method_size, 2] = types |
9532
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
289 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
290 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
291 |
} |