summaryrefslogtreecommitdiffstats
path: root/binding_generator/src/main.rs
diff options
context:
space:
mode:
authorKarroffel <therzog@mail.de>2017-03-05 03:02:29 +0100
committerKarroffel <therzog@mail.de>2017-03-05 03:02:29 +0100
commita15e7b7189c7e08ddea10d79d51c2b6db7ad16bb (patch)
treecfafdfb4b78c51ae9623d83b023a12bb01aeafb3 /binding_generator/src/main.rs
parentedc249647461201db3b3c62cae667521e3a03ee8 (diff)
downloadredot-cpp-a15e7b7189c7e08ddea10d79d51c2b6db7ad16bb.tar.gz
I hate templates
Diffstat (limited to 'binding_generator/src/main.rs')
-rw-r--r--binding_generator/src/main.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/binding_generator/src/main.rs b/binding_generator/src/main.rs
index f30b448..f9748f1 100644
--- a/binding_generator/src/main.rs
+++ b/binding_generator/src/main.rs
@@ -142,6 +142,12 @@ fn generate_class_content(forward_declares: &String, class: &GodotClass) -> Stri
contents = contents + "\t}\n\n\n";
}
+ if class.base_class != "" {
+ contents = contents + "\tvoid _init() {\n";
+ contents = contents + "\t\t\n";
+ contents = contents + "\t}\n\n";
+ }
+
if class.instanciable {
contents = contents + "\tstatic " + strip_name(&class.name) + "& _new();\n";
contents = contents + "\tvoid _destroy();\n\n";
@@ -227,7 +233,7 @@ fn generate_class_content(forward_declares: &String, class: &GodotClass) -> Stri
contents = contents + "namespace godot {\n\n";
contents = contents + "" + strip_name(&class.name) + "& " + strip_name(&class.name) + "::_new() {\n";
- contents = contents + "\tObject *ptr = ClassDB::instance(\"" + class.name.as_str() + "\");\n";
+ contents = contents + "\tObject ptr = ClassDB::instance(\"" + class.name.as_str() + "\");\n";
contents = contents + "\treturn reinterpret_cast<" + strip_name(&class.name) + "&>(ptr);";
contents = contents + "}\n\n";
@@ -235,6 +241,15 @@ fn generate_class_content(forward_declares: &String, class: &GodotClass) -> Stri
contents = contents + "\tgodot_object_destroy(__core_object);\n";
contents = contents + "}\n\n\n";
+ if class.base_class == "" {
+ // Object
+ contents = contents + "Variant::operator Object()const {\n\n";
+
+ contents = contents + "\treturn Object(godot_variant_as_object(&_godot_variant));\n\n";
+
+ contents = contents + "}\n\n";
+ }
+
contents = contents + "}\n";
}
@@ -260,6 +275,7 @@ fn escape_cpp(name: &String) -> &str {
match name.as_str() {
"class" => "_class",
"char" => "_char",
+ "short" => "_short",
x => x
}
} \ No newline at end of file