diff --git a/generated/gtkd/gtkd/Implement.d b/generated/gtkd/gtkd/Implement.d index cae3b6ae3..1c3cbd914 100644 --- a/generated/gtkd/gtkd/Implement.d +++ b/generated/gtkd/gtkd/Implement.d @@ -106,8 +106,7 @@ template ImplementClassImpl(Klass, Impl) "\t"~ Klass.stringof ~"Class parentClass;\n"~ "}\n\n"; - result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n"~ - "protected static "~ Klass.stringof ~"Class* parentClass = null;\n\n"; + result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n\n"; result ~= "protected override void* getStruct()\n"~ "{\n"~ @@ -145,7 +144,7 @@ template ImplementClassImpl(Klass, Impl) { result ~= "static void "~ toCamelCase!Impl() ~"ClassInit (void* klass)\n"~ "{\n"~ - "\tparentClass = cast("~ Klass.stringof ~"Class*) g_type_class_peek_parent(klass);\n"; + "\t"~ fullyQualifiedName!(getClass!Klass) ~"* "~ toCamelCase!(getClass!Klass)() ~" = cast("~ fullyQualifiedName!(getClass!Klass) ~"*)klass;\n"; result ~= setFunctionPointers!(getClass!Klass)(); @@ -175,10 +174,7 @@ template ImplementClassImpl(Klass, Impl) !implements!Impl(toCamelCase!Impl() ~ names[i].capitalizeFirst) ) //TODO: __traits(isOverrideFunction, Foo.foo) ? { - static if ( is(GtkClass == getClass!Klass) ) - result ~= "\tparentClass."~ names[i] ~" = &"~ toCamelCase!Impl() ~ names[i].capitalizeFirst ~";\n"; - else - result ~= "\t"~ toCamelCase!GtkClass() ~"."~ names[i] ~" = &"~ toCamelCase!Impl() ~ names[i].capitalizeFirst ~";\n"; + result ~= "\t"~ toCamelCase!GtkClass() ~"."~ names[i] ~" = &"~ toCamelCase!Impl() ~ names[i].capitalizeFirst ~";\n"; } } @@ -209,16 +205,6 @@ template ImplementClassImpl(Klass, Impl) return result; } - - template getClass(Instance) - { - mixin("import "~ getClassImport!Instance() ~"; alias getClass = "~ Instance.stringof ~"Class;"); - } - - private string getClassImport(Klass)() - { - return fullyQualifiedName!Klass.replace("."~ Klass.stringof, ""); - } } template ImplementInterfaceImpl(Base, Klass, Impl) @@ -248,8 +234,7 @@ template ImplementInterfaceImpl(Base, Klass, Impl) "\t"~ Base.stringof ~"Class parentClass;\n"~ "}\n\n"; - result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n"~ - "protected static "~ Base.stringof ~"Class* parentClass = null;\n\n"; + result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n\n"; result ~= "protected override void* getStruct()\n"~ "{\n"~ @@ -306,7 +291,7 @@ template ImplementInterfaceImpl(Base, Klass, Impl) { result ~= "static void "~ toCamelCase!Impl() ~"ClassInit (void* klass)\n"~ "{\n"~ - "\tparentClass = cast("~ Base.stringof ~"Class*) g_type_class_peek_parent(klass);\n"~ + "\t"~ fullyQualifiedName!(getClass!Base) ~"* "~ toCamelCase!(getClass!Base)() ~" = cast("~ fullyQualifiedName!(getClass!Base) ~"*)klass;\n"~ "}\n\n"; } @@ -370,6 +355,16 @@ private string getTypeImport(Iface)() return fullyQualifiedName!Iface.replace("types."~ Iface.stringof, "functions"); } +template getClass(Instance) +{ + mixin("import "~ getClassImport!Instance() ~"; alias getClass = "~ Instance.stringof ~"Class;"); +} + +private string getClassImport(Klass)() +{ + return fullyQualifiedName!Klass.replace("."~ Klass.stringof, ""); +} + private string getWrapFunction(Impl, Member, string name)() { string result; diff --git a/src/gtkd/Implement.d b/src/gtkd/Implement.d index 9e827ad64..1c3cbd914 100644 --- a/src/gtkd/Implement.d +++ b/src/gtkd/Implement.d @@ -87,6 +87,7 @@ template ImplementClassImpl(Klass, Impl) string result; result ~= "import glib.Str;\n"~ + "import gobject.ObjectG;\n"~ "import gobject.Type : Type;\n"~ "import gobject.c.functions : g_type_class_peek_parent, g_object_get_data;\n"; @@ -105,8 +106,7 @@ template ImplementClassImpl(Klass, Impl) "\t"~ Klass.stringof ~"Class parentClass;\n"~ "}\n\n"; - result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n"~ - "protected static "~ Klass.stringof ~"Class* parentClass = null;\n\n"; + result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n\n"; result ~= "protected override void* getStruct()\n"~ "{\n"~ @@ -144,7 +144,7 @@ template ImplementClassImpl(Klass, Impl) { result ~= "static void "~ toCamelCase!Impl() ~"ClassInit (void* klass)\n"~ "{\n"~ - "\tparentClass = cast("~ Klass.stringof ~"Class*) g_type_class_peek_parent(klass);\n"; + "\t"~ fullyQualifiedName!(getClass!Klass) ~"* "~ toCamelCase!(getClass!Klass)() ~" = cast("~ fullyQualifiedName!(getClass!Klass) ~"*)klass;\n"; result ~= setFunctionPointers!(getClass!Klass)(); @@ -205,16 +205,6 @@ template ImplementClassImpl(Klass, Impl) return result; } - - template getClass(Instance) - { - mixin("import "~ getClassImport!Instance() ~"; alias getClass = "~ Instance.stringof ~"Class;"); - } - - private string getClassImport(Klass)() - { - return fullyQualifiedName!Klass.replace("."~ Klass.stringof, ""); - } } template ImplementInterfaceImpl(Base, Klass, Impl) @@ -244,8 +234,7 @@ template ImplementInterfaceImpl(Base, Klass, Impl) "\t"~ Base.stringof ~"Class parentClass;\n"~ "}\n\n"; - result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n"~ - "protected static "~ Base.stringof ~"Class* parentClass = null;\n\n"; + result ~= "protected "~ toPascalCase!Impl() ~"* "~ toCamelCase!Impl() ~";\n\n"; result ~= "protected override void* getStruct()\n"~ "{\n"~ @@ -302,7 +291,7 @@ template ImplementInterfaceImpl(Base, Klass, Impl) { result ~= "static void "~ toCamelCase!Impl() ~"ClassInit (void* klass)\n"~ "{\n"~ - "\tparentClass = cast("~ Base.stringof ~"Class*) g_type_class_peek_parent(klass);\n"~ + "\t"~ fullyQualifiedName!(getClass!Base) ~"* "~ toCamelCase!(getClass!Base)() ~" = cast("~ fullyQualifiedName!(getClass!Base) ~"*)klass;\n"~ "}\n\n"; } @@ -366,6 +355,16 @@ private string getTypeImport(Iface)() return fullyQualifiedName!Iface.replace("types."~ Iface.stringof, "functions"); } +template getClass(Instance) +{ + mixin("import "~ getClassImport!Instance() ~"; alias getClass = "~ Instance.stringof ~"Class;"); +} + +private string getClassImport(Klass)() +{ + return fullyQualifiedName!Klass.replace("."~ Klass.stringof, ""); +} + private string getWrapFunction(Impl, Member, string name)() { string result;