diff -r 6a2e35738593 -r 539c48d64eea src/ai/api/squirrel_export.awk --- a/src/ai/api/squirrel_export.awk Sun Mar 25 16:46:57 2007 +0000 +++ b/src/ai/api/squirrel_export.awk Sun Mar 25 17:43:40 2007 +0000 @@ -18,9 +18,10 @@ BEGIN { enum_size = 0 + enum_value_size = 0 struct_size = 0 method_size = 0 - enum_value_size = 0 + static_method_size = 0 cls = "" start_squirrel_define_on_next_line = "false" cls_level = 0 @@ -120,36 +121,53 @@ 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]) + if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) + 1 } - for (i = 1; i <= method_size; i++) { - if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1 #one character (&) longer - } - for (i = 1; i <= enum_value_size; i++) { - print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, mlen - length(enum_value[i]) + 1) "\"" enum_value[i] "\");" + print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, 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])) mlen = length(static_methods[i]) + 1 + } + for (i = 1; i <= static_method_size; i++) { + print " SQ" cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i] ", " substr(spaces, 0, mlen - length(static_methods[i])) "\"" static_methods[i] "\");" + delete static_methods[i] + } + if (static_method_size != 0) print "" + # Non-static methods + mlen = 0 for (i = 1; i <= method_size; i++) { - print " SQ" cls ".DefSQFunction(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");" + if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1 + } + for (i = 1; i <= method_size; i++) { + print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");" delete methods[i] } - print "" + if (method_size != 0) print "" + print " SQ" cls ".PostRegister(engine);" print "}" print "#endif /* DEFINE_SQUIRREL_CLASS */" + enum_size = 0 + enum_value_size = 0 + struct_size = 0 + method_size = 0 + static_method_size = 0 cls = "" start_squirrel_define_on_next_line = "false" - enum_size = 0 - struct_size = 0 - method_size = 0 + cls_level = 0 } # Skip non-public functions @@ -167,12 +185,20 @@ # Add a method to the list /^.*$/ { if (cls_level != 1) next + + is_static = match($0, "static") gsub("virtual", "", $0) gsub("static", "", $0) + gsub("const", "", $0) gsub("\*", "", $0) gsub("\(.*", "", $0) if ($2 == "") next - method_size++ - methods[method_size] = $2 + if (is_static) { + static_method_size++ + static_methods[static_method_size] = $2 + } else { + method_size++ + methods[method_size] = $2 + } next }