/* Returns: (transfer none) (type GObject.TypeInterface): the corresponding #GTypeInterface structure of the parent type of the instance type to which @g_iface belongs, or NULL if the parent type doesn't conform to the interface  */
gpointer g_type_interface_peek_parent(gpointer g_iface)
/* Returns: (transfer none) (type GObject.TypeInterface): the corresponding #GTypeInterface structure of the parent type of the instance type to which @g_iface belongs, or NULL if the parent type doesn't conform to the interface  */
gpointer g_type_interface_peek_parent(gpointer g_iface)
{
  TypeNode *node;
  TypeNode *iface;
  gpointer vtable = NULL;
  GTypeInterface *iface_class = g_iface;
  g_return_val_if_fail (g_iface != NULL, NULL);
  iface = lookup_type_node_I (iface_class->g_type);
  node = lookup_type_node_I (iface_class->g_instance_type);
  if (node)
    node = lookup_type_node_I (NODE_PARENT_TYPE (node));
  if (node && node->is_instantiatable && iface)
    type_lookup_iface_vtable_I (node, iface, &vtable);
  else if (node)
    g_warning (G_STRLOC ": invalid interface pointer '%p'", g_iface);
  return vtable;
}