(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters. noai
authorrubidium
Sat, 31 Mar 2007 12:34:38 +0000
branchnoai
changeset 9572 6a78470c53f3
parent 9571 e3e55bb09f12
child 9573 fa56261c7142
(svn r9535) [NoAI] -Codechange: don't export virtual classes, only their class signature for parameters.
src/ai/api/squirrel_export.awk
src/ai/api/squirrel_export.sh
--- a/src/ai/api/squirrel_export.awk	Wed Mar 28 09:11:09 2007 +0000
+++ b/src/ai/api/squirrel_export.awk	Sat Mar 31 12:34:38 2007 +0000
@@ -22,6 +22,7 @@
 	struct_size = 0
 	method_size = 0
 	static_method_size = 0
+	virtual_class = "false"
 	cls = ""
 	start_squirrel_define_on_next_line = "false"
 	cls_level = 0
@@ -137,50 +138,52 @@
 	# TODO returning...
 
 	print "}; // namespace SQConvert"
-	print "";
-
-	# Then do the registration functions of the class. */
-	print "void SQ" cls "Register(Squirrel *engine) {"
-	print "	DefSQClass <" cls "> SQ" cls "(\"" cls "\");"
-	print "	SQ" cls ".PreRegister(engine);"
-	print "	SQ" cls ".AddConstructor(engine);"
-	print ""
-
-	# Enum values
-	mlen = 0
-	for (i = 1; i <= enum_value_size; i++) {
-		if (mlen <= length(enum_value[i])) mlen = length(enum_value[i])
-	}
-	for (i = 1; i <= enum_value_size; i++) {
-		print "	SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\""  enum_value[i] "\");"
-		delete enum_value[i]
-	}
-	if (enum_value_size != 0) print ""
 
-	# Static methods
-	mlen = 0
-	for (i = 1; i <= static_method_size; i++) {
-		if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0])
-	}
-	for (i = 1; i <= static_method_size; i++) {
-		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] "\");"
-		delete static_methods[i]
-	}
-	if (static_method_size != 0) print ""
+	if (virtual_class == "false") {
+		print "";
+		# Then do the registration functions of the class. */
+		print "void SQ" cls "Register(Squirrel *engine) {"
+		print "	DefSQClass <" cls "> SQ" cls "(\"" cls "\");"
+		print "	SQ" cls ".PreRegister(engine);"
+		print "	SQ" cls ".AddConstructor(engine);"
+		print ""
 
-	# Non-static methods
-	mlen = 0
-	for (i = 1; i <= method_size; i++) {
-		if (mlen <= length(methods[i, 0])) mlen = length(methods[i, 0])
+		# Enum values
+		mlen = 0
+		for (i = 1; i <= enum_value_size; i++) {
+			if (mlen <= length(enum_value[i])) mlen = length(enum_value[i])
+		}
+		for (i = 1; i <= enum_value_size; i++) {
+			print "	SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\""  enum_value[i] "\");"
+			delete enum_value[i]
+		}
+		if (enum_value_size != 0) print ""
+
+		# Static methods
+		mlen = 0
+		for (i = 1; i <= static_method_size; i++) {
+			if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0])
+		}
+		for (i = 1; i <= static_method_size; i++) {
+			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] "\");"
+			delete static_methods[i]
+		}
+		if (static_method_size != 0) print ""
+
+		# Non-static methods
+		mlen = 0
+		for (i = 1; i <= method_size; i++) {
+			if (mlen <= length(methods[i, 0])) mlen = length(methods[i, 0])
+		}
+		for (i = 1; i <= method_size; i++) {
+			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] "\");"
+			delete methods[i]
+		}
+		if (method_size != 0) print ""
+
+		print "	SQ" cls ".PostRegister(engine);"
+		print "}"
 	}
-	for (i = 1; i <= method_size; i++) {
-		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] "\");"
-		delete methods[i]
-	}
-	if (method_size != 0) print ""
-
-	print "	SQ" cls ".PostRegister(engine);"
-	print "}"
 
 	print "#endif /* DEFINE_SQUIRREL_CLASS */"
 
@@ -189,6 +192,7 @@
 	struct_size = 0
 	method_size = 0
 	static_method_size = 0
+	virtual_class = "false"
 	cls = ""
 	start_squirrel_define_on_next_line = "false"
 	cls_level = 0
@@ -211,6 +215,9 @@
 	if (cls_level != 1) next
 
 	is_static = match($0, "static")
+	if (match($0, "virtual")) {
+		virtual_class = "true"
+	}
 	gsub("virtual", "", $0)
 	gsub("static", "", $0)
 	gsub("const", "", $0)
--- a/src/ai/api/squirrel_export.sh	Wed Mar 28 09:11:09 2007 +0000
+++ b/src/ai/api/squirrel_export.sh	Sat Mar 31 12:34:38 2007 +0000
@@ -10,6 +10,7 @@
 	awk -f squirrel_export.awk ${f} > ${f}.tmp
 	if [ -n "`diff ${f} ${f}.tmp`" ]; then
 		mv ${f}.tmp ${f}
+		echo "Updated: ${f}"
 	else
 		rm -f ${f}.tmp
 	fi
@@ -60,6 +61,7 @@
 
 if [ -n "`diff ${f} ${f}.tmp`" ]; then
 	mv ${f}.tmp ${f}
+	echo "Updated: ${f}"
 else
 	rm -f ${f}.tmp
 fi