SG
Size: a a a
МВ
mixin template GRegisterStaticType(Typename, string gtypename)
{
private extern(C) static void init_g_object(void* self) {
auto asGObject = cast(GObject*)self;
new Typename(asGObject);
}
static GType getType()
{
static GType type = GType.INVALID;
if (type == GType.INVALID) {
alias ParentType = BaseClassesTuple!Typename[0];
GType parent_g_type = ParentType.getType();
GTypeQuery parent_type_query;
Type.query(parent_g_type, parent_type_query);
static GTypeInfo info = {
parent_type_query.classSize,
null,
null,
null,
null,
null,
parent_type_query.instanceSize,
0,
&init_g_object,
null
};
type = Type.registerStatic(parent_g_type, gtypename, &info, cast(GTypeFlags) 0);
}
return type;
}
}
МВ
МВ
МВ
МВ
МВ
МВ
mixin template ConstructorFromGObjectStruct() {
this(GObject * gstruct, bool owned = false) {
super(gstruct, false);
}
}
private extern(C) static void init_g_object(void* self, void* klass) {
auto asGObject = cast(GObject*)self;
auto t = new Typename(asGObject);
t.ref_();
}
class A : ObjectG'
{
mixin ConstructorFromGObjectStruct!();
mixin GRegisterStaticType!(A, "TestTypeA");
// this() {
// super(getType, []);
// }
~this() {
}
}
МВ
МВ
МВ
МВ
МВ
МВ
МВ
МВ
0
МВ
МВ