mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-30 21:21:10 +00:00 
			
		
		
		
	Fix GDNative API generator after changes to MethodBind
This commit is contained in:
		
							parent
							
								
									bbb4ee90ce
								
							
						
					
					
						commit
						415f7da025
					
				
					 3 changed files with 25 additions and 20 deletions
				
			
		|  | @ -1,7 +1,7 @@ | |||
| 
 | ||||
| 
 | ||||
| def can_build(platform): | ||||
|     return False | ||||
|     return True | ||||
| 
 | ||||
| 
 | ||||
| def configure(env): | ||||
|  |  | |||
|  | @ -118,6 +118,25 @@ struct ClassAPI { | |||
| 	List<EnumAPI> enums; | ||||
| }; | ||||
| 
 | ||||
| static String get_type_name(const PropertyInfo &info) { | ||||
| 	if (info.type == Variant::INT && (info.usage & PROPERTY_USAGE_CLASS_IS_ENUM)) { | ||||
| 		return String("enum.") + String(info.class_name).replace(".", "::"); | ||||
| 	} | ||||
| 	if (info.class_name != StringName()) { | ||||
| 		return info.class_name; | ||||
| 	} | ||||
| 	if (info.hint == PROPERTY_HINT_RESOURCE_TYPE) { | ||||
| 		return info.hint_string; | ||||
| 	} | ||||
| 	if (info.type == Variant::NIL && (info.usage & PROPERTY_USAGE_NIL_IS_VARIANT)) { | ||||
| 		return "Variant"; | ||||
| 	} | ||||
| 	if (info.type == Variant::NIL) { | ||||
| 		return "void"; | ||||
| 	} | ||||
| 	return Variant::get_type_name(info.type); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Reads the entire Godot API to a list | ||||
|  */ | ||||
|  | @ -201,12 +220,8 @@ List<ClassAPI> generate_c_api_classes() { | |||
| 					if (argument.name.find(":") != -1) { | ||||
| 						type = argument.name.get_slice(":", 1); | ||||
| 						name = argument.name.get_slice(":", 0); | ||||
| 					} else if (argument.hint == PROPERTY_HINT_RESOURCE_TYPE) { | ||||
| 						type = argument.hint_string; | ||||
| 					} else if (argument.type == Variant::NIL) { | ||||
| 						type = "Variant"; | ||||
| 					} else { | ||||
| 						type = Variant::get_type_name(argument.type); | ||||
| 						type = get_type_name(argument); | ||||
| 					} | ||||
| 
 | ||||
| 					signal.argument_names.push_back(name); | ||||
|  | @ -240,12 +255,8 @@ List<ClassAPI> generate_c_api_classes() { | |||
| 				if (p->get().name.find(":") != -1) { | ||||
| 					property_api.type = p->get().name.get_slice(":", 1); | ||||
| 					property_api.name = p->get().name.get_slice(":", 0); | ||||
| 				} else if (p->get().hint == PROPERTY_HINT_RESOURCE_TYPE) { | ||||
| 					property_api.type = p->get().hint_string; | ||||
| 				} else if (p->get().type == Variant::NIL) { | ||||
| 					property_api.type = "Variant"; | ||||
| 				} else { | ||||
| 					property_api.type = Variant::get_type_name(p->get().type); | ||||
| 					property_api.type = get_type_name(p->get()); | ||||
| 				} | ||||
| 
 | ||||
| 				if (!property_api.setter.empty() || !property_api.getter.empty()) { | ||||
|  | @ -267,17 +278,11 @@ List<ClassAPI> generate_c_api_classes() { | |||
| 				//method name
 | ||||
| 				method_api.method_name = m->get().name; | ||||
| 				//method return type
 | ||||
| 				if (method_bind && method_bind->get_return_type() != StringName()) { | ||||
| 					method_api.return_type = method_bind->get_return_type(); | ||||
| 				} else if (method_api.method_name.find(":") != -1) { | ||||
| 				if (method_api.method_name.find(":") != -1) { | ||||
| 					method_api.return_type = method_api.method_name.get_slice(":", 1); | ||||
| 					method_api.method_name = method_api.method_name.get_slice(":", 0); | ||||
| 				} else if (m->get().return_val.type != Variant::NIL) { | ||||
| 					method_api.return_type = m->get().return_val.hint == PROPERTY_HINT_RESOURCE_TYPE ? m->get().return_val.hint_string : Variant::get_type_name(m->get().return_val.type); | ||||
| 				} else if (m->get().return_val.name != "") { | ||||
| 					method_api.return_type = m->get().return_val.name; | ||||
| 				} else { | ||||
| 					method_api.return_type = "void"; | ||||
| 					method_api.return_type = get_type_name(m->get().return_val); | ||||
| 				} | ||||
| 
 | ||||
| 				method_api.argument_count = method_info.arguments.size(); | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| 
 | ||||
| 
 | ||||
| def can_build(platform): | ||||
|     return False | ||||
|     return True | ||||
| 
 | ||||
| 
 | ||||
| def configure(env): | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ruslan Mustakov
						Ruslan Mustakov