src/ai/api/squirrel_export.awk
author truebrain
Fri, 18 Jul 2008 00:15:14 +0000
branchnoai
changeset 11165 a725845fcc01
parent 11058 3305a425f55b
permissions -rw-r--r--
(svn r13723) [NoAI] -Add: added AIIndustry::GetStockpiledCargo() (Yexo)
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) {
10734
06f95974ac15 (svn r13284) [NoAI] -Change r13272: make the auto-free-pointers much more general, so in the future we can use it for other things, and not limited to strings
truebrain
parents: 10722
diff changeset
    21
	print "	template <> "       name " *GetParam(ForceType<"       name " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (" name " *)instance; }"
06f95974ac15 (svn r13284) [NoAI] -Change r13272: make the auto-free-pointers much more general, so in the future we can use it for other things, and not limited to strings
truebrain
parents: 10722
diff changeset
    22
	print "	template <> "       name " &GetParam(ForceType<"       name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }"
06f95974ac15 (svn r13284) [NoAI] -Change r13272: make the auto-free-pointers much more general, so in the future we can use it for other things, and not limited to strings
truebrain
parents: 10722
diff changeset
    23
	print "	template <> const " name " *GetParam(ForceType<const " name " *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (" name " *)instance; }"
06f95974ac15 (svn r13284) [NoAI] -Change r13272: make the auto-free-pointers much more general, so in the future we can use it for other things, and not limited to strings
truebrain
parents: 10722
diff changeset
    24
	print "	template <> const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { 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
11058
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    84
# Ignore special doxygen blocks
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    85
/^#ifndef DOXYGEN_SKIP/ { doxygen_skip = "next"; next; }
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    86
/^#ifdef DOXYGEN_SKIP/  { doxygen_skip = "true"; next; }
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    87
/^#endif/               { doxygen_skip = "false"; next; }
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    88
/^#else/                {
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    89
	if (doxygen_skip == "next") {
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    90
		doxygen_skip = "true";
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    91
	} else {
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    92
		doxygen_skip = "false";
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    93
	}
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    94
	next;
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    95
}
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    96
{ if (doxygen_skip == "true") next }
3305a425f55b (svn r13615) [NoAI] -Fix: fixed most, if not all, problems around AIAbstractList. It is now safe to remove values while looping, among other things.
truebrain
parents: 10992
diff changeset
    97
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    98
# Ignore the comments
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
    99
/^#/             { next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   100
/\/\*.*\*\//     { comment = "false"; next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   101
/\/\*/           { comment = "true";  next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   102
/\*\//           { comment = "false"; next; }
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   103
{ 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
   104
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   105
# 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
   106
/^(	*)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
   107
	cls_level++
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   108
	if (public == "false") next
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   109
	if (cls_level != 1) next
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   110
	struct_size++
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   111
	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
   112
	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
   113
}
9526
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
# 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
   116
/^(	*)enum/ {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   117
	cls_level++
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   118
	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
   119
	in_enum = "true"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   120
	enum_size++
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   121
	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
   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
# 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
   126
/};/ {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   127
	cls_level--
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   128
	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
   129
		in_enum = "false";
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   130
		next;
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   131
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   132
	if (cls == "") {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   133
		next;
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   134
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   135
	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
   136
	next;
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   137
}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   138
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   139
# 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
   140
/^([ 	]*)$/ {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   141
	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
   142
	spaces = "                                                               ";
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   143
	public = "false"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   144
	namespace_opened = "false"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   145
9596
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
   146
	print ""
8af5a1399842 (svn r9629) [NoAI] -Codechange: move the squirrel export functions out of the API header files.
rubidium
parents: 9594
diff changeset
   147
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   148
	# 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
   149
	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
   150
		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
   151
			print "namespace SQConvert {"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   152
			namespace_opened = "true"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   153
		}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   154
		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
   155
		for (i = 1; i <= enum_size; i++) {
10734
06f95974ac15 (svn r13284) [NoAI] -Change r13272: make the auto-free-pointers much more general, so in the future we can use it for other things, and not limited to strings
truebrain
parents: 10722
diff changeset
   156
			print "	template <> " enums[i] " GetParam(ForceType<" enums[i] ">, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { 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
   157
			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
   158
			delete enums[i]
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   159
		}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   160
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   161
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   162
	# 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
   163
	if (struct_size != 0) {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   164
		if (namespace_opened == "false") {
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   165
			print "namespace SQConvert {"
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   166
			namespace_opened = "true"
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   167
		}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   168
		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
   169
		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
   170
			dump_class_templates(structs[i])
9567
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   171
			delete structs[i]
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   172
		}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   173
	}
d73c84a7875d (svn r9509) [NoAI] -Add: inner-class/struct support for parameters.
rubidium
parents: 9547
diff changeset
   174
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   175
	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
   176
		print "namespace SQConvert {"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   177
		namespace_opened = "true"
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   178
	} else {
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   179
		print ""
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   180
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   181
	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
   182
	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
   183
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   184
	print "}; // namespace SQConvert"
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
	print "";
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   187
	# 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
   188
	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
   189
	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
   190
	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
   191
		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
   192
	} else {
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   193
		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
   194
	}
10358
73d8177db39e (svn r12899) [NoAI] -Add: added AIEventCompany(New|Merger|InTrouble|Bankrupt) (Yexo)
truebrain
parents: 10338
diff changeset
   195
	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
   196
		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
   197
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   198
	print ""
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   199
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   200
	# Enum values
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   201
	mlen = 0
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   202
	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
   203
		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
   204
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   205
	for (i = 1; i <= enum_value_size; i++) {
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   206
		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
   207
		delete enum_value[i]
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   208
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   209
	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
   210
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   211
	# 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
   212
	mlen = 0
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   213
	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
   214
		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
   215
	}
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   216
	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
   217
		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
   218
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   219
		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
   220
	}
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   221
	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
   222
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   223
	# 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
   224
	mlen = 0
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   225
	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
   226
		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
   227
	}
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   228
	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
   229
		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
   230
		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
   231
	}
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   232
	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
   233
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   234
	# Static methods
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   235
	mlen = 0
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   236
	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
   237
		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
   238
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   239
	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
   240
		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
   241
		delete static_methods[i]
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   242
	}
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   243
	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
   244
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   245
	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
   246
		# Non-static methods
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   247
		mlen = 0
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   248
		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
   249
			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
   250
		}
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   251
		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
   252
			if (methods[i, 2] == "v") {
be51ea0adc29 (svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents: 9741
diff changeset
   253
				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
   254
			} else {
be51ea0adc29 (svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents: 9741
diff changeset
   255
				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
   256
			}
9572
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   257
			delete methods[i]
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   258
		}
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   259
		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
   260
	}
9653
50e2eb4abf46 (svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents: 9651
diff changeset
   261
	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
   262
	print "}"
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   263
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
   264
	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
   265
	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
   266
	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
   267
	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
   268
	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
   269
	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
   270
	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
   271
	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
   272
	cls = ""
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   273
	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
   274
	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
   275
}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   276
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   277
# 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
   278
{ 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
   279
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   280
# Add enums
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   281
{
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   282
	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
   283
		enum_value_size++
9681
3997f1ce203a (svn r10630) [NoAI] -Fix: allow enums to not have a predefined value for Squirrel
truelight
parents: 9680
diff changeset
   284
		sub(",", "", $1)
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   285
		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
   286
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   287
		# 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
   288
		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
   289
			# syntax:
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   290
			# enum ErrorMessages {
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   291
			#	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
   292
			# }
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   293
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   294
			# 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
   295
			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
   296
				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
   297
				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
   298
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   299
				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
   300
				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
   301
					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
   302
					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
   303
					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
   304
				}
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   305
9861
53fc03195e31 (svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
rubidium
parents: 9844
diff changeset
   306
				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
   307
				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
   308
			}
738b8f69675f (svn r12510) [NoAI] -Add: added AIError, which allows you to catch errors triggered by commands (Morloth)
truebrain
parents: 9828
diff changeset
   309
		}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   310
		next
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   311
	}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   312
}
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   313
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   314
# Add a method to the list
9587
b0716d4c0128 (svn r9612) [NoAI] -Fix: ignore forward class defines in squirrel_export
truelight
parents: 9583
diff changeset
   315
/^.*\(.*\).*$/ {
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   316
	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
   317
	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
   318
539c48d64eea (svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
rubidium
parents: 9527
diff changeset
   319
	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
   320
	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
   321
		virtual_class = "true"
6a78470c53f3 (svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
rubidium
parents: 9567
diff changeset
   322
	}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   323
	gsub("virtual", "", $0)
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   324
	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
   325
	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
   326
	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
   327
	param_s = $0
9533
2c692ffdf5e4 (svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents: 9532
diff changeset
   328
	gsub("\\*", "", $0)
2c692ffdf5e4 (svn r9454) [NoAI] -Fix: remove mawk <-> gawk incompatabilities from the Squirrel export.
rubidium
parents: 9532
diff changeset
   329
	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
   330
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
	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
   332
	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
   333
9609
f0dbf5850145 (svn r9767) [NoAI] -Add: add support for params in the constructor (via C++ templates)
truelight
parents: 9596
diff changeset
   334
	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
   335
	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
   336
		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
   337
		if (param_s == "") next
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
   338
	} 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
   339
9541
4bb34cea7fad (svn r9463) [NoAI] -Codechange: update squirrel export script to generate the correct amount and type of parameters, so that can be checked.
rubidium
parents: 9533
diff changeset
   340
	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
   341
	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
   342
	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
   343
		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
   344
		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
   345
			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
   346
				types = types "s"
9651
6e2860c67455 (svn r10551) [NoAI] -Add: added SQ support for "void *"
truelight
parents: 9635
diff changeset
   347
			} else if (match(params[len], "^void")) {
6e2860c67455 (svn r10551) [NoAI] -Add: added SQ support for "void *"
truelight
parents: 9635
diff changeset
   348
				types = types "p"
10992
4dd4f4327c3a (svn r13546) [NoAI] -Codechange: add support to pass arrays with integers to C++ functions.
rubidium
parents: 10734
diff changeset
   349
			} else if (match(params[len], "^Array")) {
4dd4f4327c3a (svn r13546) [NoAI] -Codechange: add support to pass arrays with integers to C++ functions.
rubidium
parents: 10734
diff changeset
   350
				types = types "a"
4dd4f4327c3a (svn r13546) [NoAI] -Codechange: add support to pass arrays with integers to C++ functions.
rubidium
parents: 10734
diff changeset
   351
			} else if (match(params[len], "^struct Array")) {
4dd4f4327c3a (svn r13546) [NoAI] -Codechange: add support to pass arrays with integers to C++ functions.
rubidium
parents: 10734
diff changeset
   352
				types = types "a"
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
			} else {
9583
c233c2897a45 (svn r9607) [NoAI] -Fix: instances should be 'x', not 'p' in SQ param list
truelight
parents: 9572
diff changeset
   354
				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
   355
			}
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
   356
		} 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
   357
			types = types "b"
9814
be51ea0adc29 (svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
truebrain
parents: 9741
diff changeset
   358
		} 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
   359
			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
   360
		} 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
   361
			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
   362
		}
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
   363
	}
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
   364
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
   365
	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
   366
		cls_param[1] = len;
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
   367
		cls_param[2] = types;
5cebcd43a1ec (svn r9768) [NoAI] -Fix: check if the amount of params for constructor are correct
truelight
parents: 9609
diff changeset
   368
	} 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
   369
		static_method_size++
9542
fccf685f68ea (svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents: 9541
diff changeset
   370
		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
   371
		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
   372
		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
   373
	} 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
   374
		method_size++
9542
fccf685f68ea (svn r9464) [NoAI] -Fix: make squirrel export script work with gawk again (silly stuff)
truelight
parents: 9541
diff changeset
   375
		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
   376
		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
   377
		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
   378
	}
9526
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   379
	next
a4ad60ba03be (svn r9446) [NoAI] -Add: simple script to make changing/adding classes to export a little simpler.
rubidium
parents:
diff changeset
   380
}