--- 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)