src/ai/api/squirrel_export.awk
branchnoai
changeset 9653 50e2eb4abf46
parent 9651 6e2860c67455
child 9673 ee4f133c84ec
equal deleted inserted replaced
9652:c15bf5355b95 9653:50e2eb4abf46
   157 	print "	/* Allow " cls " to be used as Squirrel parameter */"
   157 	print "	/* Allow " cls " to be used as Squirrel parameter */"
   158 	dump_class_templates(cls)
   158 	dump_class_templates(cls)
   159 
   159 
   160 	print "}; // namespace SQConvert"
   160 	print "}; // namespace SQConvert"
   161 
   161 
       
   162 	print "";
       
   163 	# Then do the registration functions of the class. */
       
   164 	print "void SQ" cls "Register(Squirrel *engine) {"
       
   165 	print "	DefSQClass <" cls "> SQ" cls "(\"" cls "\");"
       
   166 	if (super_cls == "AIObject" || super_cls == "AIAbstractList::Valuator") {
       
   167 		print "	SQ" cls ".PreRegister(engine);"
       
   168 	} else {
       
   169 		print "	SQ" cls ".PreRegister(engine, \"" super_cls "\");"
       
   170 	}
   162 	if (virtual_class == "false") {
   171 	if (virtual_class == "false") {
   163 		print "";
       
   164 		# Then do the registration functions of the class. */
       
   165 		print "void SQ" cls "Register(Squirrel *engine) {"
       
   166 		print "	DefSQClass <" cls "> SQ" cls "(\"" cls "\");"
       
   167 		if (super_cls == "AIObject" || super_cls == "AIAbstractList::Valuator") {
       
   168 			print "	SQ" cls ".PreRegister(engine);"
       
   169 		} else {
       
   170 			print "	SQ" cls ".PreRegister(engine, \"" super_cls "\");"
       
   171 		}
       
   172 		print "	SQ" cls ".AddConstructor<void (" cls "::*)(" cls_param[0] "), " cls_param[1]">(engine, \"" cls_param[2] "\");"
   172 		print "	SQ" cls ".AddConstructor<void (" cls "::*)(" cls_param[0] "), " cls_param[1]">(engine, \"" cls_param[2] "\");"
   173 		print ""
   173 	}
   174 
   174 	print ""
   175 		# Enum values
   175 
   176 		mlen = 0
   176 	# Enum values
   177 		for (i = 1; i <= enum_value_size; i++) {
   177 	mlen = 0
   178 			if (mlen <= length(enum_value[i])) mlen = length(enum_value[i])
   178 	for (i = 1; i <= enum_value_size; i++) {
   179 		}
   179 		if (mlen <= length(enum_value[i])) mlen = length(enum_value[i])
   180 		for (i = 1; i <= enum_value_size; i++) {
   180 	}
   181 			print "	SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\""  enum_value[i] "\");"
   181 	for (i = 1; i <= enum_value_size; i++) {
   182 			delete enum_value[i]
   182 		print "	SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\""  enum_value[i] "\");"
   183 		}
   183 		delete enum_value[i]
   184 		if (enum_value_size != 0) print ""
   184 	}
   185 
   185 	if (enum_value_size != 0) print ""
   186 		# Static methods
   186 
   187 		mlen = 0
   187 	# Static methods
   188 		for (i = 1; i <= static_method_size; i++) {
   188 	mlen = 0
   189 			if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0])
   189 	for (i = 1; i <= static_method_size; i++) {
   190 		}
   190 		if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0])
   191 		for (i = 1; i <= static_method_size; i++) {
   191 	}
   192 			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] "\");"
   192 	for (i = 1; i <= static_method_size; i++) {
   193 			delete static_methods[i]
   193 		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] "\");"
   194 		}
   194 		delete static_methods[i]
   195 		if (static_method_size != 0) print ""
   195 	}
   196 
   196 	if (static_method_size != 0) print ""
       
   197 
       
   198 	if (virtual_class == "false") {
   197 		# Non-static methods
   199 		# Non-static methods
   198 		mlen = 0
   200 		mlen = 0
   199 		for (i = 1; i <= method_size; i++) {
   201 		for (i = 1; i <= method_size; i++) {
   200 			if (mlen <= length(methods[i, 0])) mlen = length(methods[i, 0])
   202 			if (mlen <= length(methods[i, 0])) mlen = length(methods[i, 0])
   201 		}
   203 		}
   202 		for (i = 1; i <= method_size; i++) {
   204 		for (i = 1; i <= method_size; i++) {
   203 			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] "\");"
   205 			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] "\");"
   204 			delete methods[i]
   206 			delete methods[i]
   205 		}
   207 		}
   206 		if (method_size != 0) print ""
   208 		if (method_size != 0) print ""
   207 
   209 	}
   208 		print "	SQ" cls ".PostRegister(engine);"
   210 	print "	SQ" cls ".PostRegister(engine);"
   209 		print "}"
   211 	print "}"
   210 	}
       
   211 
   212 
   212 	enum_size = 0
   213 	enum_size = 0
   213 	enum_value_size = 0
   214 	enum_value_size = 0
   214 	struct_size = 0
   215 	struct_size = 0
   215 	method_size = 0
   216 	method_size = 0
   233 }
   234 }
   234 
   235 
   235 # Add a method to the list
   236 # Add a method to the list
   236 /^.*\(.*\).*$/ {
   237 /^.*\(.*\).*$/ {
   237 	if (cls_level != 1) next
   238 	if (cls_level != 1) next
       
   239 	if (match($0, "~")) next
   238 
   240 
   239 	is_static = match($0, "static")
   241 	is_static = match($0, "static")
   240 	if (match($0, "virtual")) {
   242 	if (match($0, "virtual")) {
   241 		virtual_class = "true"
   243 		virtual_class = "true"
   242 	}
   244 	}