1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Merge pull request #10581 from hpvb/fix-gcc6+

Make cast_to a static member of Object.
This commit is contained in:
Rémi Verschelde
2017-08-25 08:37:38 +02:00
committed by GitHub
185 changed files with 1336 additions and 1490 deletions

View File

@@ -372,8 +372,8 @@ static GDCompletionIdentifier _get_type_from_variant(const Variant &p_variant) {
Object *obj = p_variant;
if (obj) {
/*
if (obj->cast_to<GDNativeClass>()) {
t.obj_type=obj->cast_to<GDNativeClass>()->get_name();
if (Object::cast_to<GDNativeClass>(obj)) {
t.obj_type=Object::cast_to<GDNativeClass>(obj)->get_name();
t.value=Variant();
} else {
*/
@@ -597,8 +597,7 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
if (id.operator String() == "new" && base.value.get_type() == Variant::OBJECT) {
Object *obj = base.value;
if (obj && obj->cast_to<GDNativeClass>()) {
GDNativeClass *gdnc = obj->cast_to<GDNativeClass>();
if (GDNativeClass *gdnc = Object::cast_to<GDNativeClass>(obj)) {
r_type.type = Variant::OBJECT;
r_type.value = Variant();
r_type.obj_type = gdnc->get_name();
@@ -1509,48 +1508,45 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
if (id.value.get_type()) {
Object *obj = id.value;
if (obj) {
GDScript *scr = Object::cast_to<GDScript>(obj);
if (scr) {
while (scr) {
GDScript *scr = obj->cast_to<GDScript>();
if (scr) {
while (scr) {
for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
if (E->get()->is_static() && p_method == E->get()->get_name()) {
arghint = "static func " + String(p_method) + "(";
for (int i = 0; i < E->get()->get_argument_count(); i++) {
if (i > 0)
arghint += ", ";
else
arghint += " ";
if (i == p_argidx) {
arghint += String::chr(0xFFFF);
}
arghint += "var " + E->get()->get_argument_name(i);
int deffrom = E->get()->get_argument_count() - E->get()->get_default_argument_count();
if (i >= deffrom) {
int defidx = deffrom - i;
if (defidx >= 0 && defidx < E->get()->get_default_argument_count()) {
arghint += "=" + E->get()->get_default_argument(defidx).get_construct_string();
}
}
if (i == p_argidx) {
arghint += String::chr(0xFFFF);
for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
if (E->get()->is_static() && p_method == E->get()->get_name()) {
arghint = "static func " + String(p_method) + "(";
for (int i = 0; i < E->get()->get_argument_count(); i++) {
if (i > 0)
arghint += ", ";
else
arghint += " ";
if (i == p_argidx) {
arghint += String::chr(0xFFFF);
}
arghint += "var " + E->get()->get_argument_name(i);
int deffrom = E->get()->get_argument_count() - E->get()->get_default_argument_count();
if (i >= deffrom) {
int defidx = deffrom - i;
if (defidx >= 0 && defidx < E->get()->get_default_argument_count()) {
arghint += "=" + E->get()->get_default_argument(defidx).get_construct_string();
}
}
arghint += ")";
return; //found
if (i == p_argidx) {
arghint += String::chr(0xFFFF);
}
}
arghint += ")";
return; //found
}
if (scr->get_base().is_valid())
scr = scr->get_base().ptr();
else
scr = NULL;
}
} else {
on_script = obj->get_script();
if (scr->get_base().is_valid())
scr = scr->get_base().ptr();
else
scr = NULL;
}
} else {
on_script = obj->get_script();
}
}
@@ -2221,30 +2217,27 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
if (t.value.get_type()) {
Object *obj = t.value;
if (obj) {
GDScript *scr = Object::cast_to<GDScript>(obj);
if (scr) {
while (scr) {
GDScript *scr = obj->cast_to<GDScript>();
if (scr) {
while (scr) {
if (!isfunction) {
for (const Map<StringName, Variant>::Element *E = scr->get_constants().front(); E; E = E->next()) {
options.insert(E->key());
}
if (!isfunction) {
for (const Map<StringName, Variant>::Element *E = scr->get_constants().front(); E; E = E->next()) {
options.insert(E->key());
}
for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
if (E->get()->is_static())
options.insert(E->key());
}
if (scr->get_base().is_valid())
scr = scr->get_base().ptr();
else
scr = NULL;
}
} else {
on_script = obj->get_script();
for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
if (E->get()->is_static())
options.insert(E->key());
}
if (scr->get_base().is_valid())
scr = scr->get_base().ptr();
else
scr = NULL;
}
} else {
on_script = obj->get_script();
}
}
@@ -2836,9 +2829,9 @@ Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol
Object *obj = value;
if (obj) {
if (obj->cast_to<GDNativeClass>()) {
if (Object::cast_to<GDNativeClass>(obj)) {
r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
r_result.class_name = obj->cast_to<GDNativeClass>()->get_name();
r_result.class_name = Object::cast_to<GDNativeClass>(obj)->get_name();
} else {
r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;