author | rubidium |
Sun, 25 Mar 2007 17:43:40 +0000 | |
branch | noai |
changeset 9532 | 539c48d64eea |
parent 9527 | f709c97a5d9f |
child 9533 | 2c692ffdf5e4 |
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 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
19 |
BEGIN { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
20 |
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
|
21 |
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
|
22 |
struct_size = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
23 |
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
|
24 |
static_method_size = 0 |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
25 |
cls = "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
26 |
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
|
27 |
cls_level = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
28 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
29 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
30 |
# 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
|
31 |
/#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
|
32 |
/^#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
|
33 |
{ 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
|
34 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
35 |
{ print $0; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
36 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
37 |
# We only want to have public functions exported for now |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
38 |
/^( *)class/ { if (cls_level == 0) { public = "false"; cls = $2;} cls_level++; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
39 |
/^( *)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
|
40 |
/^( *)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
|
41 |
/^( *)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
|
42 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
43 |
# Ignore the comments |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
44 |
/^#/ { next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
45 |
/\/\*.*\*\// { comment = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
46 |
/\/\*/ { comment = "true"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
47 |
/\*\// { comment = "false"; next; } |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
48 |
{ 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
|
49 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
50 |
# 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
|
51 |
/^( *)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
|
52 |
cls_level++ |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
53 |
# 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
|
54 |
# struct_size++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
55 |
# 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
|
56 |
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
|
57 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
58 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
59 |
# 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
|
60 |
/^( *)enum/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
61 |
cls_level++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
62 |
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
|
63 |
in_enum = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
64 |
enum_size++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
65 |
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
|
66 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
67 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
68 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
69 |
# 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
|
70 |
/};/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
71 |
cls_level-- |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
72 |
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
|
73 |
in_enum = "false"; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
74 |
next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
75 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
76 |
if (cls == "") { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
77 |
next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
78 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
79 |
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
|
80 |
next; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
81 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
82 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
83 |
# 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
|
84 |
/^([ ]*)$/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
85 |
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
|
86 |
spaces = " "; |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
87 |
public = "false" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
88 |
print "#ifdef DEFINE_SQUIRREL_CLASS" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
89 |
namespace_opened = "false" |
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 |
# 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
|
92 |
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
|
93 |
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
|
94 |
print "namespace SQConvert {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
95 |
namespace_opened = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
96 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
97 |
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
|
98 |
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
|
99 |
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
|
100 |
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
|
101 |
delete enums[i] |
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 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
105 |
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
|
106 |
print "namespace SQConvert {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
107 |
namespace_opened = "true" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
108 |
} else { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
109 |
print "" |
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 |
print " /* Allow " cls " to be used as Squirrel parameter */" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
112 |
print " template <> " cls " *GetParam(ForceType<" cls " *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" cls " *)instance; }" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
113 |
# TODO returning... |
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 |
print "}; // namespace SQConvert" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
116 |
print ""; |
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 |
# Then do the registration functions of the class. */ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
119 |
print "void SQ" cls "Register(Squirrel *engine) {" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
120 |
print " DefSQClass <" cls "> SQ" cls "(\"" cls "\");" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
121 |
print " SQ" cls ".PreRegister(engine);" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
122 |
print " SQ" cls ".AddConstructor(engine);" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
123 |
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
|
124 |
|
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
125 |
# Enum values |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
126 |
mlen = 0 |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
127 |
for (i = 1; i <= enum_value_size; i++) { |
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
|
128 |
if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) + 1 |
9526
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 |
for (i = 1; i <= enum_value_size; i++) { |
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
|
131 |
print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, mlen - length(enum_value[i])) "\"" enum_value[i] "\");" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
132 |
delete enum_value[i] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
133 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
134 |
if (enum_value_size != 0) print "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
135 |
|
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
|
136 |
# Static methods |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
137 |
mlen = 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
|
138 |
for (i = 1; i <= static_method_size; i++) { |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
139 |
if (mlen <= length(static_methods[i])) mlen = length(static_methods[i]) + 1 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
140 |
} |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
141 |
for (i = 1; i <= static_method_size; i++) { |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
142 |
print " SQ" cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i] ", " substr(spaces, 0, mlen - length(static_methods[i])) "\"" static_methods[i] "\");" |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
143 |
delete static_methods[i] |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
144 |
} |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
145 |
if (static_method_size != 0) print "" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
146 |
|
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
|
147 |
# Non-static methods |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
148 |
mlen = 0 |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
149 |
for (i = 1; i <= method_size; i++) { |
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
|
150 |
if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
151 |
} |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
152 |
for (i = 1; i <= method_size; i++) { |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
153 |
print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");" |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
154 |
delete methods[i] |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
155 |
} |
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
|
156 |
if (method_size != 0) print "" |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
157 |
|
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
158 |
print " SQ" cls ".PostRegister(engine);" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
159 |
print "}" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
160 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
161 |
print "#endif /* DEFINE_SQUIRREL_CLASS */" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
162 |
|
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
|
163 |
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
|
164 |
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
|
165 |
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
|
166 |
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
|
167 |
static_method_size = 0 |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
168 |
cls = "" |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
169 |
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
|
170 |
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
|
171 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
172 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
173 |
# 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
|
174 |
{ 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
|
175 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
176 |
# Add enums |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
177 |
{ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
178 |
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
|
179 |
enum_value_size++ |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
180 |
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
|
181 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
182 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
183 |
} |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
184 |
|
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
185 |
# Add a method to the list |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
186 |
/^.*$/ { |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
187 |
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
|
188 |
|
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
189 |
is_static = match($0, "static") |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
190 |
gsub("virtual", "", $0) |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
191 |
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
|
192 |
gsub("const", "", $0) |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
193 |
gsub("\*", "", $0) |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
194 |
gsub("\(.*", "", $0) |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
195 |
if ($2 == "") 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
|
196 |
if (is_static) { |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
197 |
static_method_size++ |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
198 |
static_methods[static_method_size] = $2 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
199 |
} 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
|
200 |
method_size++ |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
201 |
methods[method_size] = $2 |
539c48d64eea
(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents:
9527
diff
changeset
|
202 |
} |
9526
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
203 |
next |
a4ad60ba03be
(svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff
changeset
|
204 |
} |