src/ai/api/squirrel_export.awk
author rubidium
Mon, 26 May 2008 20:00:18 +0000
branchnoai
changeset 10722 6ea1daff57aa
parent 10358 73d8177db39e
child 10734 06f95974ac15
permissions -rw-r--r--
(svn r13272) [NoAI] -Codechange: strdup all parameter strings coming from Squirrel going into the API after the possible WChar* -> char* conversion and free them after return.
[NoAI] -Fix: signs getting strange names because the FS2OTTD buffer was already overwritten by commands/print attempts of other AIs.
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) {
10722
6ea1daff57aa (svn r13272) [NoAI] -Codechange: strdup all parameter strings coming from Squirrel going into the API after the possible WChar* -> char* conversion and free them after return.
rubidium
parents: 10358
diff changeset
    21
	print "	template <> "       name " *GetParam(ForceType<"       name " *>, HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (" name " *)instance; }"
6ea1daff57aa (svn r13272) [NoAI] -Codechange: strdup all parameter strings coming from Squirrel going into the API after the possible WChar* -> char* conversion and free them after return.
rubidium
parents: 10358
diff changeset
    22
	print "	template <> "       name " &GetParam(ForceType<"       name " &>, HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }"
6ea1daff57aa (svn r13272) [NoAI] -Codechange: strdup all parameter strings coming from Squirrel going into the API after the possible WChar* -> char* conversion and free them after return.
rubidium
parents: 10358
diff changeset
    23
	print "	template <> const " name " *GetParam(ForceType<const " name " *>, HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (" name " *)instance; }"
6ea1daff57aa (svn r13272) [NoAI] -Codechange: strdup all parameter strings coming from Squirrel going into the API after the possible WChar* -> char* conversion and free them after return.
rubidium
parents: 10358
diff changeset
    24
	print "	template <> const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index, SQConvertedStrings *str) { 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
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
    31
	enum_string_to_error_size = 0
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
    32
	enum_error_to_string_size = 0
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    33
	struct_size = 0
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    34
	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
    35
	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
    36
	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
    37
	super_cls = ""
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    38
	cls = ""
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    39
	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
    40
	cls_level = 0
10289
d9c1adea89be (svn r12821) [NoAI] -Fix: some awk implementation fail to understand eol other than \n
glx
parents: 10212
diff changeset
    41
	RS = "\r|\n"
9526
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
9596
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
    44
/@file/ {
10338
fb4e0030116d (svn r12879) [NoAI] -Fix: two bugs in $Id$ handling of squirrel_export, and one fix for future problems
truebrain
parents: 10289
diff changeset
    45
	# Break it in two lines, so SVN doesn't replace it
fb4e0030116d (svn r12879) [NoAI] -Fix: two bugs in $Id$ handling of squirrel_export, and one fix for future problems
truebrain
parents: 10289
diff changeset
    46
	printf "/* $I"
fb4e0030116d (svn r12879) [NoAI] -Fix: two bugs in $Id$ handling of squirrel_export, and one fix for future problems
truebrain
parents: 10289
diff changeset
    47
	print "d$ */"
10212
1e0a2a182253 (svn r12744) [NoAI] -Fix: added a comment to all .hpp.sq that those files are autogenerated, and shouldn't be manually altered
truebrain
parents: 9861
diff changeset
    48
	print "/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */"
1e0a2a182253 (svn r12744) [NoAI] -Fix: added a comment to all .hpp.sq that those files are autogenerated, and shouldn't be manually altered
truebrain
parents: 9861
diff changeset
    49
	print ""
9596
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
    50
	print "#include \"" $3 "\""
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
    51
}
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
    52
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    53
# 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
    54
/#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
    55
/^#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
    56
{ 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
    57
9587
b0716d4c0128 (svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents: 9583
diff changeset
    58
# Ignore forward declarations of classes
b0716d4c0128 (svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents: 9583
diff changeset
    59
/^(	*)class(.*);/ { next; }
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    60
# 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
    61
/^(	*)class/     {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    62
	if (cls_level == 0) {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    63
		public = "false"
9610
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
    64
		cls_param[0] = ""
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
    65
		cls_param[1] = 1
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
    66
		cls_param[2] = "x"
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    67
		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
    68
		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
    69
			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
    70
		} 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
    71
			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
    72
		}
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    73
	} else if (cls_level == 1) {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    74
		struct_size++
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    75
		structs[struct_size] = cls "::" $2
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    76
	}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    77
	cls_level++
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    78
	next
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    79
}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    80
/^(	*)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
    81
/^(	*)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
    82
/^(	*)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
    83
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    84
# Ignore the comments
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    85
/^#/             { next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    86
/\/\*.*\*\//     { comment = "false"; next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    87
/\/\*/           { comment = "true";  next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    88
/\*\//           { comment = "false"; next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    89
{ 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
    90
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    91
# We need to make specialized conversions for 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
    92
/^(	*)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
    93
	cls_level++
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    94
	if (public == "false") next
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    95
	if (cls_level != 1) next
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    96
	struct_size++
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
    97
	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
    98
	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
    99
}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   100
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   101
# 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
   102
/^(	*)enum/ {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   103
	cls_level++
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   104
	if (public == "false") next;
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   105
	in_enum = "true"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   106
	enum_size++
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   107
	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
   108
	next
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   109
}
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
# 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
   112
/};/ {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   113
	cls_level--
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   114
	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
   115
		in_enum = "false";
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   116
		next;
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
	if (cls == "") {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   119
		next;
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   120
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   121
	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
   122
	next;
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   123
}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   124
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   125
# 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
   126
/^([ 	]*)$/ {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   127
	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
   128
	spaces = "                                                               ";
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   129
	public = "false"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   130
	namespace_opened = "false"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   131
9596
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
   132
	print ""
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
   133
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   134
	# 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
   135
	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
   136
		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
   137
			print "namespace SQConvert {"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   138
			namespace_opened = "true"
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
		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
   141
		for (i = 1; i <= enum_size; i++) {
10722
6ea1daff57aa (svn r13272) [NoAI] -Codechange: strdup all parameter strings coming from Squirrel going into the API after the possible WChar* -> char* conversion and free them after return.
rubidium
parents: 10358
diff changeset
   142
			print "	template <> " enums[i] " GetParam(ForceType<" enums[i] ">, HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (" enums[i] ")tmp; }"
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   143
			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
   144
			delete enums[i]
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   145
		}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   146
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   147
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   148
	# 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
   149
	if (struct_size != 0) {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   150
		if (namespace_opened == "false") {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   151
			print "namespace SQConvert {"
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   152
			namespace_opened = "true"
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   153
		}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   154
		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
   155
		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
   156
			dump_class_templates(structs[i])
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   157
			delete structs[i]
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   158
		}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   159
	}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   160
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   161
	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
   162
		print "namespace SQConvert {"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   163
		namespace_opened = "true"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   164
	} else {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   165
		print ""
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   166
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   167
	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
   168
	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
   169
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   170
	print "}; // namespace SQConvert"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   171
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   172
	print "";
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   173
	# 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
   174
	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
   175
	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
   176
	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
   177
		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
   178
	} else {
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   179
		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
   180
	}
10358
73d8177db39e (svn r12899) [NoAI] -Add: added AIEventCompany(New|Merger|InTrouble|Bankrupt) (Yexo)
truebrain
parents: 10338
diff changeset
   181
	if (virtual_class == "false" && super_cls != "AIEvent") {
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
   182
		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
   183
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   184
	print ""
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   185
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   186
	# Enum values
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   187
	mlen = 0
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   188
	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
   189
		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
   190
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   191
	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
   192
		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
   193
		delete enum_value[i]
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   194
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   195
	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
   196
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   197
	# Mapping of OTTD strings to errors
9844
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   198
	mlen = 0
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   199
	for (i = 1; i <= enum_string_to_error_size; i++) {
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   200
		if (mlen <= length(enum_string_to_error_mapping_string[i])) mlen = length(enum_string_to_error_mapping_string[i])
9844
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   201
	}
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   202
	for (i = 1; i <= enum_string_to_error_size; i++) {
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   203
		print "	AIError::RegisterErrorMap(" enum_string_to_error_mapping_string[i] ", " substr(spaces, 1, mlen - length(enum_string_to_error_mapping_string[i]))  cls "::" enum_string_to_error_mapping_error[i] ");"
9844
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   204
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   205
		delete enum_string_to_error_mapping_string[i]
9844
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   206
	}
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   207
	if (enum_string_to_error_size != 0) print ""
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   208
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   209
	# Mapping of errors to human 'readable' strings.
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   210
	mlen = 0
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   211
	for (i = 1; i <= enum_error_to_string_size; i++) {
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   212
		if (mlen <= length(enum_error_to_string_mapping[i])) mlen = length(enum_error_to_string_mapping[i])
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   213
	}
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   214
	for (i = 1; i <= enum_error_to_string_size; i++) {
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   215
		print "	AIError::RegisterErrorMapString(" cls "::" enum_error_to_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_to_string_mapping[i])) "\"" enum_error_to_string_mapping[i] "\");"
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   216
		delete enum_error_to_string_mapping[i]
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   217
	}
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   218
	if (enum_error_to_string_size != 0) print ""
9844
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   219
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   220
	# Static methods
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   221
	mlen = 0
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   222
	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
   223
		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
   224
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   225
	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
   226
		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
   227
		delete static_methods[i]
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   228
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   229
	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
   230
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   231
	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
   232
		# Non-static methods
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   233
		mlen = 0
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   234
		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
   235
			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
   236
		}
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   237
		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
   238
			if (methods[i, 2] == "v") {
be51ea0adc29 (svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents: 9741
diff changeset
   239
				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
   240
			} else {
be51ea0adc29 (svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents: 9741
diff changeset
   241
				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
   242
			}
9572
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   243
			delete methods[i]
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   244
		}
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   245
		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
   246
	}
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   247
	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
   248
	print "}"
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   249
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
   250
	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
   251
	enum_value_size = 0
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   252
	enum_string_to_error_size = 0
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   253
	enum_error_to_string_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
   254
	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
   255
	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
   256
	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
   257
	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
   258
	cls = ""
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   259
	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
   260
	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
   261
}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   262
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   263
# 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
   264
{ 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
   265
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   266
# Add enums
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   267
{
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   268
	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
   269
		enum_value_size++
9681
3997f1ce203a (svn r10630) [NoAI] -Fix: allow enums to not have a predefined value for Squirrel
truelight
parents: 9680
diff changeset
   270
		sub(",", "", $1)
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   271
		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
   272
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   273
		# 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
   274
		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
   275
			# syntax:
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   276
			# enum ErrorMessages {
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   277
			#	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
   278
			# }
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   279
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   280
			# Set the mappings
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   281
			if (match($0, "\\[.*\\]") != 0) {
9844
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   282
				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
   283
				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
   284
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   285
				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
   286
				for (i = 1; i <= length(mapitems); i++) {
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   287
					enum_string_to_error_size++
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   288
					enum_string_to_error_mapping_string[enum_string_to_error_size] = mapitems[i]
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   289
					enum_string_to_error_mapping_error[enum_string_to_error_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
   290
				}
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   291
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   292
				enum_error_to_string_size++
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   293
				enum_error_to_string_mapping[enum_error_to_string_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
   294
			}
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   295
		}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   296
		next
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   297
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   298
}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   299
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   300
# Add a method to the list
9587
b0716d4c0128 (svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents: 9583
diff changeset
   301
/^.*\(.*\).*$/ {
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   302
	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
   303
	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
   304
539c48d64eea (svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents: 9527
diff changeset
   305
	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
   306
	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
   307
		virtual_class = "true"
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   308
	}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   309
	gsub("virtual", "", $0)
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   310
	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
   311
	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
   312
	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
   313
	param_s = $0
9533
2c692ffdf5e4 (svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents: 9532
diff changeset
   314
	gsub("\\*", "", $0)
2c692ffdf5e4 (svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents: 9532
diff changeset
   315
	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
   316
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
	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
   318
	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
   319
9609
f0dbf5850145 (svn r9767) [NoAI] -Add: add support for params in the constructor (via C++ templates)
truelight
parents: 9596
diff changeset
   320
	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
   321
	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
   322
		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
   323
		if (param_s == "") next
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
   324
	} 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
   325
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
   326
	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
   327
	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
   328
	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
   329
		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
   330
		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
   331
			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
   332
				types = types "s"
9651
6e2860c67455 (svn r10551) [NoAI] -Add: added SQ support for "void *"
truelight
parents: 9635
diff changeset
   333
			} else if (match(params[len], "^void")) {
6e2860c67455 (svn r10551) [NoAI] -Add: added SQ support for "void *"
truelight
parents: 9635
diff changeset
   334
				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
   335
			} else {
9583
c233c2897a45 (svn r9607) [NoAI] -Fix: instances should be 'x', not 'p' in SQ param list
truelight
parents: 9572
diff changeset
   336
				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
   337
			}
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
   338
		} 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
   339
			types = types "b"
9814
be51ea0adc29 (svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents: 9741
diff changeset
   340
		} 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
   341
			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
   342
		} 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
   343
			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
   344
		}
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
   345
	}
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
   346
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
   347
	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
   348
		cls_param[1] = len;
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
   349
		cls_param[2] = types;
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
   350
	} 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
   351
		static_method_size++
9542
fccf685f68ea (svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents: 9541
diff changeset
   352
		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
   353
		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
   354
		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
   355
	} 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
   356
		method_size++
9542
fccf685f68ea (svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents: 9541
diff changeset
   357
		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
   358
		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
   359
		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
   360
	}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   361
	next
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   362
}