diff options
author | Karroffel <therzog@mail.de> | 2017-03-05 03:02:29 +0100 |
---|---|---|
committer | Karroffel <therzog@mail.de> | 2017-03-05 03:02:29 +0100 |
commit | a15e7b7189c7e08ddea10d79d51c2b6db7ad16bb (patch) | |
tree | cfafdfb4b78c51ae9623d83b023a12bb01aeafb3 /binding_generator/src/main.rs | |
parent | edc249647461201db3b3c62cae667521e3a03ee8 (diff) | |
download | redot-cpp-a15e7b7189c7e08ddea10d79d51c2b6db7ad16bb.tar.gz |
I hate templates
Diffstat (limited to 'binding_generator/src/main.rs')
-rw-r--r-- | binding_generator/src/main.rs | 18 |
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 |