[DLScript] more API fixes

This commit is contained in:
Karroffel 2017-04-06 01:49:09 +02:00
parent 71a99d5517
commit 7d914a289c
3 changed files with 12 additions and 2 deletions

View File

@ -230,16 +230,18 @@ List<ClassAPI> generate_c_api_classes() {
method_api.has_varargs = method_bind && method_bind->is_vararg(); method_api.has_varargs = method_bind && method_bind->is_vararg();
// Method flags // Method flags
if (method_bind && method_bind->get_hint_flags()) { if (method_info.flags) {
const uint32_t flags = method_info.flags; const uint32_t flags = method_info.flags;
method_api.is_editor = flags & METHOD_FLAG_EDITOR; method_api.is_editor = flags & METHOD_FLAG_EDITOR;
method_api.is_noscript = flags & METHOD_FLAG_NOSCRIPT; method_api.is_noscript = flags & METHOD_FLAG_NOSCRIPT;
method_api.is_const = flags & METHOD_FLAG_CONST; method_api.is_const = flags & METHOD_FLAG_CONST;
method_api.is_reverse = flags & METHOD_FLAG_REVERSE; method_api.is_reverse = flags & METHOD_FLAG_REVERSE;
method_api.is_virtual = flags & METHOD_FLAG_VIRTUAL || method_info.name[0] == '_'; method_api.is_virtual = flags & METHOD_FLAG_VIRTUAL;
method_api.is_from_script = flags & METHOD_FLAG_FROM_SCRIPT; method_api.is_from_script = flags & METHOD_FLAG_FROM_SCRIPT;
} }
method_api.is_virtual = method_api.is_virtual || method_api.method_name[0] == '_';
// method argument name and type // method argument name and type
for (int i = 0; i < method_api.argument_count; i++) { for (int i = 0; i < method_api.argument_count; i++) {
@ -346,6 +348,7 @@ static List<String> generate_c_api_json(const List<ClassAPI> &p_api) {
source.push_back(String("\t\t\t\t\"is_const\": ") + (e->get().is_const ? "true" : "false") + ",\n"); source.push_back(String("\t\t\t\t\"is_const\": ") + (e->get().is_const ? "true" : "false") + ",\n");
source.push_back(String("\t\t\t\t\"is_reverse\": ") + (e->get().is_reverse ? "true" : "false") + ",\n"); source.push_back(String("\t\t\t\t\"is_reverse\": ") + (e->get().is_reverse ? "true" : "false") + ",\n");
source.push_back(String("\t\t\t\t\"is_virtual\": ") + (e->get().is_virtual ? "true" : "false") + ",\n"); source.push_back(String("\t\t\t\t\"is_virtual\": ") + (e->get().is_virtual ? "true" : "false") + ",\n");
source.push_back(String("\t\t\t\t\"has_varargs\": ") + (e->get().has_varargs ? "true" : "false") + ",\n");
source.push_back(String("\t\t\t\t\"is_from_script\": ") + (e->get().is_from_script ? "true" : "false") + ",\n"); source.push_back(String("\t\t\t\t\"is_from_script\": ") + (e->get().is_from_script ? "true" : "false") + ",\n");
source.push_back("\t\t\t\t\"arguments\": [\n"); source.push_back("\t\t\t\t\"arguments\": [\n");
for (int i = 0; i < e->get().argument_names.size(); i++) { for (int i = 0; i < e->get().argument_names.size(); i++) {

View File

@ -20,6 +20,12 @@ void GDAPI godot_node_path_new(godot_node_path *p_np, const godot_string *p_from
memnew_placement_custom(np, NodePath, NodePath(*from)); memnew_placement_custom(np, NodePath, NodePath(*from));
} }
void GDAPI godot_node_path_copy(godot_node_path *p_np, const godot_node_path *p_from) {
NodePath *np = (NodePath *)p_np;
NodePath *from = (NodePath *)p_from;
*np = *from;
}
godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx) { godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx) {
const NodePath *np = (const NodePath *)p_np; const NodePath *np = (const NodePath *)p_np;
godot_string str; godot_string str;

View File

@ -16,6 +16,7 @@ typedef struct godot_node_path {
#include "../godot.h" #include "../godot.h"
void GDAPI godot_node_path_new(godot_node_path *p_np, const godot_string *p_from); void GDAPI godot_node_path_new(godot_node_path *p_np, const godot_string *p_from);
void GDAPI godot_node_path_copy(godot_node_path *p_np, const godot_node_path *p_from);
godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx); godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx);
godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_np); godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_np);