src/ai/api/squirrel_export.awk
branchnoai
changeset 9844 738b8f69675f
parent 9828 38be66875b45
child 9861 53fc03195e31
equal deleted inserted replaced
9843:29f34a179daf 9844:738b8f69675f
    26 }
    26 }
    27 
    27 
    28 BEGIN {
    28 BEGIN {
    29 	enum_size = 0
    29 	enum_size = 0
    30 	enum_value_size = 0
    30 	enum_value_size = 0
       
    31 	enum_error_size = 0
    31 	struct_size = 0
    32 	struct_size = 0
    32 	method_size = 0
    33 	method_size = 0
    33 	static_method_size = 0
    34 	static_method_size = 0
    34 	virtual_class = "false"
    35 	virtual_class = "false"
    35 	super_cls = ""
    36 	super_cls = ""
   184 		print "	SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\""  enum_value[i] "\");"
   185 		print "	SQ" cls ".DefSQConst(engine, " cls "::" enum_value[i] ", " substr(spaces, 1, mlen - length(enum_value[i])) "\""  enum_value[i] "\");"
   185 		delete enum_value[i]
   186 		delete enum_value[i]
   186 	}
   187 	}
   187 	if (enum_value_size != 0) print ""
   188 	if (enum_value_size != 0) print ""
   188 
   189 
       
   190 	mlen = 0
       
   191 	for (i = 1; i <= enum_error_size; i++) {
       
   192 		if (mlen <= length(enum_error_string_mapping[i])) mlen = length(enum_error_string_mapping[i])
       
   193 	}
       
   194 	for (i = 1; i <= enum_error_size; i++) {
       
   195 		print "	AIError::RegisterErrorMap      (" enum_error_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_string_mapping[i]))  cls "::" enum_error_value_mapping[i] ");"
       
   196 		print "	AIError::RegisterErrorMapString(" enum_error_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_string_mapping[i]) + length(cls) + 1) "\"" enum_error_value_mapping[i] "\");"
       
   197 
       
   198 		delete enum_error_string_mapping[i]
       
   199 		delete enum_error_value_mapping[i]
       
   200 	}
       
   201 	if (enum_error_size != 0) print ""
       
   202 
   189 	# Static methods
   203 	# Static methods
   190 	mlen = 0
   204 	mlen = 0
   191 	for (i = 1; i <= static_method_size; i++) {
   205 	for (i = 1; i <= static_method_size; i++) {
   192 		if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0])
   206 		if (mlen <= length(static_methods[i, 0])) mlen = length(static_methods[i, 0])
   193 	}
   207 	}
   216 	print "	SQ" cls ".PostRegister(engine);"
   230 	print "	SQ" cls ".PostRegister(engine);"
   217 	print "}"
   231 	print "}"
   218 
   232 
   219 	enum_size = 0
   233 	enum_size = 0
   220 	enum_value_size = 0
   234 	enum_value_size = 0
       
   235 	enum_error_size = 0
   221 	struct_size = 0
   236 	struct_size = 0
   222 	method_size = 0
   237 	method_size = 0
   223 	static_method_size = 0
   238 	static_method_size = 0
   224 	virtual_class = "false"
   239 	virtual_class = "false"
   225 	cls = ""
   240 	cls = ""
   234 {
   249 {
   235 	if (in_enum == "true") {
   250 	if (in_enum == "true") {
   236 		enum_value_size++
   251 		enum_value_size++
   237 		sub(",", "", $1)
   252 		sub(",", "", $1)
   238 		enum_value[enum_value_size] = $1
   253 		enum_value[enum_value_size] = $1
       
   254 
       
   255 		# Check if this a special error enum
       
   256 		if (match(enums[enum_size], ".*::ErrorMessages") != 0) {
       
   257 			# syntax:
       
   258 			# enum ErrorMessages {
       
   259 			#	ERR_SOME_ERROR,	// [STR_ITEM1, STR_ITEM2, ...]
       
   260 			# }
       
   261 
       
   262 			# Set the mappings
       
   263 			if (match($0, "\\[.+\\]") != 0) {
       
   264 				mappings = substr($0, RSTART, RLENGTH);
       
   265 				gsub("([\\[[:space:]\\]])", "", mappings);
       
   266 
       
   267 				split(mappings, mapitems, ",");
       
   268 				for (i = 1; i <= length(mapitems); i++) {
       
   269 					enum_error_size++
       
   270 					enum_error_string_mapping[enum_error_size] = mapitems[i]
       
   271 					enum_error_value_mapping[enum_error_size] = $1
       
   272 				}
       
   273 
       
   274 				# Mark this index as an error
       
   275 				enum_is_error_mapping[enum_value_size] = 1
       
   276 			}
       
   277 		}
   239 		next
   278 		next
   240 	}
   279 	}
   241 }
   280 }
   242 
   281 
   243 # Add a method to the list
   282 # Add a method to the list