+static void add_class_private(Class *c, Method *m)
+{
+ const char *dynamic = c->dynamic ? "_DYNAMIC" : "";
+
+ if (!privates)
+ return;
+
+ out_printf(out, "\n#if !defined(G_DEFINE%s_TYPE_EXTENDED)"
+ " || !defined(G_ADD_PRIVATE%s)\n"
+ "\tg_type_class_add_private(%s, sizeof(%sPrivate));\n"
+ "#endif\n",
+ dynamic, dynamic,
+ ((FuncArg *)m->args->data)->name, typebase);
+}
+
+static void get_instance_private(Class *c, Method *m)
+{
+ const char *self = ((FuncArg *)m->args->data)->name;
+ const char *dynamic = c->dynamic ? "_DYNAMIC" : "";
+
+ if (!privates) {
+ if (always_private_struct) {
+ out_printf(out, "\t%s->_priv = NULL;\n", self);
+ }
+
+ return;
+ }
+
+ out_printf(out, "\t%s->_priv = (%sPrivate *)\n"
+ "#if defined(G_DEFINE%s_TYPE_EXTENDED)"
+ " && defined(G_ADD_PRIVATE%s)\n"
+ "\t\t%s_get_instance_private(%s);\n"
+ "#else\n"
+ "\t\tG_TYPE_INSTANCE_GET_PRIVATE\n"
+ "\t\t\t( %s\n"
+ "\t\t\t, %s\n"
+ "\t\t\t, %sPrivate\n"
+ "\t\t\t);\n"
+ "#endif\n",
+ self, typebase,
+ dynamic, dynamic,
+ funcbase, self,
+ self, macrotype, typebase);
+}
+