author | truebrain |
Mon, 31 Mar 2008 10:55:13 +0000 | |
branch | noai |
changeset 9844 | 738b8f69675f |
parent 9828 | 38be66875b45 |
child 9861 | 53fc03195e31 |
permissions | -rw-r--r-- |
9820
8c116d4c6033
(svn r12423) [NoAI] -Change: bring a little more uniformness into the first few lines of the API related files (add missing /* $Id$ */ and such).
rubidium
parents:
9814
diff
changeset
|
1 |
# $Id$ |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
2 |
# |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
3 |
# 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
|
4 |
# 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
|
5 |
# |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
6 |
# 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
|
7 |
# |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
8 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
9 |
# Simple insertion sort. |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
10 |
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
|
11 |
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
|
12 |
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
|
13 |
temp = ARRAY[j] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
14 |
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
|
15 |
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
|
16 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
17 |
return |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
18 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
19 |
|
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
|
20 |
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
|
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 <> " 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
|
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 |
print " template <> const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" |
9680
5ed7bbfd51c7
(svn r10629) [NoAI] -Fix: on returning a class instance which is NULL, do not make a wrapper SQ, but return a NULL pointer too
truelight
parents:
9679
diff
changeset
|
25 |
print " template <> int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"" name "\", res, NULL, DefSQDestructorCallback<" name ">); return 1; }" |
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
|
26 |
} |
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
|
27 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
28 |
BEGIN { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
29 |
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
|
30 |
enum_value_size = 0 |
9844
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
31 |
enum_error_size = 0 |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
32 |
struct_size = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
33 |
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
|
34 |
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
|
35 |
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
|
36 |
super_cls = "" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
37 |
cls = "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
38 |
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
|
39 |
cls_level = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
40 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
41 |
|
9596
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
42 |
/@file/ { |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
43 |
print "#include \"" $3 "\"" |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
44 |
} |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
45 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
46 |
# 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
|
47 |
/#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
|
48 |
/^#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
|
49 |
{ 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
|
50 |
|
9587
b0716d4c0128
(svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents:
9583
diff
changeset
|
51 |
# Ignore forward declarations of classes |
b0716d4c0128
(svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents:
9583
diff
changeset
|
52 |
/^( *)class(.*);/ { next; } |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
53 |
# 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
|
54 |
/^( *)class/ { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
55 |
if (cls_level == 0) { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
56 |
public = "false" |
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
57 |
cls_param[0] = "" |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
58 |
cls_param[1] = 1 |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
59 |
cls_param[2] = "x" |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
60 |
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
|
61 |
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
|
62 |
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
|
63 |
} 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
|
64 |
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
|
65 |
} |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
66 |
} else if (cls_level == 1) { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
67 |
struct_size++ |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
68 |
structs[struct_size] = cls "::" $2 |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
69 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
70 |
cls_level++ |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
71 |
next |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
72 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
73 |
/^( *)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
|
74 |
/^( *)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
|
75 |
/^( *)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
|
76 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
77 |
# Ignore the comments |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
78 |
/^#/ { next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
79 |
/\/\*.*\*\// { comment = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
80 |
/\/\*/ { comment = "true"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
81 |
/\*\// { comment = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
82 |
{ 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
|
83 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
84 |
# 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
|
85 |
/^( *)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
|
86 |
cls_level++ |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
87 |
if (public == "false") next |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
88 |
if (cls_level != 1) next |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
89 |
struct_size++ |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
90 |
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
|
91 |
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
|
92 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
93 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
94 |
# 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
|
95 |
/^( *)enum/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
96 |
cls_level++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
97 |
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
|
98 |
in_enum = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
99 |
enum_size++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
100 |
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
|
101 |
next |
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 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
104 |
# 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
|
105 |
/};/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
106 |
cls_level-- |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
107 |
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
|
108 |
in_enum = "false"; |
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 |
if (cls == "") { |
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 |
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
|
115 |
next; |
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 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
118 |
# 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
|
119 |
/^([ ]*)$/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
120 |
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
|
121 |
spaces = " "; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
122 |
public = "false" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
123 |
namespace_opened = "false" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
124 |
|
9596
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
125 |
print "" |
8af5a1399842
(svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents:
9594
diff
changeset
|
126 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
127 |
# 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
|
128 |
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
|
129 |
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
|
130 |
print "namespace SQConvert {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
131 |
namespace_opened = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
132 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
133 |
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
|
134 |
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
|
135 |
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
|
136 |
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
|
137 |
delete enums[i] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
138 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
139 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
140 |
|
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
141 |
# 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
|
142 |
if (struct_size != 0) { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
143 |
if (namespace_opened == "false") { |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
144 |
print "namespace SQConvert {" |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
145 |
namespace_opened = "true" |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
146 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
147 |
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
|
148 |
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
|
149 |
dump_class_templates(structs[i]) |
9567
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
150 |
delete structs[i] |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
151 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
152 |
} |
d73c84a7875d
(svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents:
9547
diff
changeset
|
153 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
154 |
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
|
155 |
print "namespace SQConvert {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
156 |
namespace_opened = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
157 |
} else { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
158 |
print "" |
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 " /* 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
|
161 |
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
|
162 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
163 |
print "}; // namespace SQConvert" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
164 |
|
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
165 |
print ""; |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
166 |
# Then do the registration functions of the class. */ |
9741
53c1c5850e01
(svn r12221) [NoAI] -Fix: Register functions are no _Register functions, and always on top of the sort list
truebrain
parents:
9681
diff
changeset
|
167 |
print "void SQ" cls "_Register(Squirrel *engine) {" |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
168 |
print " DefSQClass <" cls "> SQ" cls "(\"" cls "\");" |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
169 |
if (super_cls == "AIObject" || super_cls == "AIAbstractList::Valuator") { |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
170 |
print " SQ" cls ".PreRegister(engine);" |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
171 |
} else { |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
172 |
print " SQ" cls ".PreRegister(engine, \"" super_cls "\");" |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
173 |
} |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
174 |
if (virtual_class == "false") { |
9635
9ee82e091af7
(svn r10526) [NoAI] -Fix: a class with params for the constructor lost his instance when called from SQ (templates can be really useful ;))
truelight
parents:
9610
diff
changeset
|
175 |
print " SQ" cls ".AddConstructor<void (" cls "::*)(" cls_param[0] "), " cls_param[1]">(engine, \"" cls_param[2] "\");" |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
176 |
} |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
177 |
print "" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
178 |
|
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
179 |
# Enum values |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
180 |
mlen = 0 |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
181 |
for (i = 1; i <= enum_value_size; i++) { |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
182 |
if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
183 |
} |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
184 |
for (i = 1; i <= enum_value_size; i++) { |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
185 |
print " SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\"" enum_value[i] "\");" |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
186 |
delete enum_value[i] |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
187 |
} |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
188 |
if (enum_value_size != 0) print "" |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
189 |
|
9844
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
190 |
mlen = 0 |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
191 |
for (i = 1; i <= enum_error_size; i++) { |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
192 |
if (mlen <= length(enum_error_string_mapping[i])) mlen = length(enum_error_string_mapping[i]) |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
193 |
} |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
194 |
for (i = 1; i <= enum_error_size; i++) { |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
195 |
print " AIError::RegisterErrorMap (" enum_error_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_string_mapping[i])) cls "::" enum_error_value_mapping[i] ");" |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
196 |
print " AIError::RegisterErrorMapString(" enum_error_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_string_mapping[i]) + length(cls) + 1) "\"" enum_error_value_mapping[i] "\");" |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
197 |
|
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
198 |
delete enum_error_string_mapping[i] |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
199 |
delete enum_error_value_mapping[i] |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
200 |
} |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
201 |
if (enum_error_size != 0) print "" |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
202 |
|
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
203 |
# Static methods |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
204 |
mlen = 0 |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
205 |
for (i = 1; i <= static_method_size; i++) { |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
206 |
if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0]) |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
207 |
} |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
208 |
for (i = 1; i <= static_method_size; i++) { |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
209 |
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] "\");" |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
210 |
delete static_methods[i] |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
211 |
} |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
212 |
if (static_method_size != 0) print "" |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
213 |
|
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
214 |
if (virtual_class == "false") { |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
215 |
# Non-static methods |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
216 |
mlen = 0 |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
217 |
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
|
218 |
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
|
219 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
220 |
for (i = 1; i <= method_size; i++) { |
9814
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
221 |
if (methods[i, 2] == "v") { |
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
222 |
print " SQ" cls ".DefSQAdvancedMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0]) - 8) "\"" methods[i, 0] "\");" |
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
223 |
} else { |
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
224 |
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] "\");" |
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
225 |
} |
9572
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
226 |
delete methods[i] |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
227 |
} |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
228 |
if (method_size != 0) 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
|
229 |
} |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
230 |
print " SQ" cls ".PostRegister(engine);" |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
231 |
print "}" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
232 |
|
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
|
233 |
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
|
234 |
enum_value_size = 0 |
9844
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
235 |
enum_error_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
|
236 |
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
|
237 |
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
|
238 |
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
|
239 |
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
|
240 |
cls = "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
241 |
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
|
242 |
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
|
243 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
244 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
245 |
# 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
|
246 |
{ 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
|
247 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
248 |
# Add enums |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
249 |
{ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
250 |
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
|
251 |
enum_value_size++ |
9681
3997f1ce203a
(svn r10630) [NoAI] -Fix: allow enums to not have a predefined value for Squirrel
truelight
parents:
9680
diff
changeset
|
252 |
sub(",", "", $1) |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
253 |
enum_value[enum_value_size] = $1 |
9844
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
254 |
|
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
255 |
# Check if this a special error enum |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
256 |
if (match(enums[enum_size], ".*::ErrorMessages") != 0) { |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
257 |
# syntax: |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
258 |
# enum ErrorMessages { |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
259 |
# ERR_SOME_ERROR, // [STR_ITEM1, STR_ITEM2, ...] |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
260 |
# } |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
261 |
|
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
262 |
# Set the mappings |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
263 |
if (match($0, "\\[.+\\]") != 0) { |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
264 |
mappings = substr($0, RSTART, RLENGTH); |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
265 |
gsub("([\\[[:space:]\\]])", "", mappings); |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
266 |
|
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
267 |
split(mappings, mapitems, ","); |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
268 |
for (i = 1; i <= length(mapitems); i++) { |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
269 |
enum_error_size++ |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
270 |
enum_error_string_mapping[enum_error_size] = mapitems[i] |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
271 |
enum_error_value_mapping[enum_error_size] = $1 |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
272 |
} |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
273 |
|
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
274 |
# Mark this index as an error |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
275 |
enum_is_error_mapping[enum_value_size] = 1 |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
276 |
} |
738b8f69675f
(svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents:
9828
diff
changeset
|
277 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
278 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
279 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
280 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
281 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
282 |
# Add a method to the list |
9587
b0716d4c0128
(svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents:
9583
diff
changeset
|
283 |
/^.*\(.*\).*$/ { |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
284 |
if (cls_level != 1) next |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9651
diff
changeset
|
285 |
if (match($0, "~")) 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
|
286 |
|
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
287 |
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
|
288 |
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
|
289 |
virtual_class = "true" |
6a78470c53f3
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents:
9567
diff
changeset
|
290 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
291 |
gsub("virtual", "", $0) |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
292 |
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
|
293 |
gsub("const", "", $0) |
9828
38be66875b45
(svn r12487) [NoAI] -Fix: the export script didn't properly determine the parameters of some functions.
rubidium
parents:
9820
diff
changeset
|
294 |
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
|
295 |
param_s = $0 |
9533
2c692ffdf5e4
(svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents:
9532
diff
changeset
|
296 |
gsub("\\*", "", $0) |
2c692ffdf5e4
(svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents:
9532
diff
changeset
|
297 |
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
|
298 |
|
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
|
299 |
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
|
300 |
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
|
301 |
|
9609
f0dbf5850145
(svn r9767) [NoAI] -Add: add support for params in the constructor (via C++ templates)
truelight
parents:
9596
diff
changeset
|
302 |
funcname = $2 |
9677
96e8d3f0412d
(svn r10616) [NoAI] -Fix: only see a method as constructors if they do not have an other function name
truelight
parents:
9674
diff
changeset
|
303 |
if ($1 == cls && funcname == "") { |
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
304 |
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
|
305 |
if (param_s == "") next |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
306 |
} 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
|
307 |
|
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
|
308 |
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
|
309 |
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
|
310 |
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
|
311 |
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
|
312 |
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
|
313 |
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
|
314 |
types = types "s" |
9651
6e2860c67455
(svn r10551) [NoAI] -Add: added SQ support for "void *"
truelight
parents:
9635
diff
changeset
|
315 |
} else if (match(params[len], "^void")) { |
6e2860c67455
(svn r10551) [NoAI] -Add: added SQ support for "void *"
truelight
parents:
9635
diff
changeset
|
316 |
types = types "p" |
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
|
317 |
} else { |
9583
c233c2897a45
(svn r9607) [NoAI] -Fix: instances should be 'x', not 'p' in SQ param list
truelight
parents:
9572
diff
changeset
|
318 |
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
|
319 |
} |
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
|
320 |
} 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
|
321 |
types = types "b" |
9814
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
322 |
} else if (match(params[len], "^HSQUIRRELVM")) { |
be51ea0adc29
(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents:
9741
diff
changeset
|
323 |
types = "v" |
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
|
324 |
} 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
|
325 |
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
|
326 |
} |
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
|
327 |
} |
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
|
328 |
|
9677
96e8d3f0412d
(svn r10616) [NoAI] -Fix: only see a method as constructors if they do not have an other function name
truelight
parents:
9674
diff
changeset
|
329 |
if ($1 == cls && funcname == "") { |
9610
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
330 |
cls_param[1] = len; |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
331 |
cls_param[2] = types; |
5cebcd43a1ec
(svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents:
9609
diff
changeset
|
332 |
} 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
|
333 |
static_method_size++ |
9542
fccf685f68ea
(svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents:
9541
diff
changeset
|
334 |
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
|
335 |
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
|
336 |
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
|
337 |
} 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
|
338 |
method_size++ |
9542
fccf685f68ea
(svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents:
9541
diff
changeset
|
339 |
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
|
340 |
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
|
341 |
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
|
342 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
343 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
344 |
} |