mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-02 07:23:41 +02:00
catch when adding an interface to an ancestor of a child that already
Wed Mar 7 19:02:51 2001 Tim Janik <timj@gtk.org> * gtype.c (type_node_add_iface_entry_W): catch when adding an interface to an ancestor of a child that already conforms to this interface. currently we spew a warning here, should we be silent? (g_type_interface_add_prerequisite): new function to add a prerequisite type to an interface, that must succeed an instance is_a prerequisite type check before the interface can be added to an instance. the prerequisite types are also suuported in is_a checks of the interface. (g_type_instance_is_a): (g_type_check_instance_cast): (g_type_check_instance): cleanups and optimizations. (g_type_class_is_a): (g_type_check_class_cast): same, also prevented these from accepting interface types, as class structures don't nest interfaces.
This commit is contained in:
@@ -283,25 +283,27 @@ struct _GTypeValueTable
|
||||
GTypeCValue *collect_values,
|
||||
guint collect_flags);
|
||||
};
|
||||
GType g_type_register_static (GType parent_type,
|
||||
const gchar *type_name,
|
||||
const GTypeInfo *info,
|
||||
GTypeFlags flags);
|
||||
GType g_type_register_dynamic (GType parent_type,
|
||||
const gchar *type_name,
|
||||
GTypePlugin *plugin,
|
||||
GTypeFlags flags);
|
||||
GType g_type_register_fundamental (GType type_id,
|
||||
const gchar *type_name,
|
||||
const GTypeInfo *info,
|
||||
const GTypeFundamentalInfo *finfo,
|
||||
GTypeFlags flags);
|
||||
void g_type_add_interface_static (GType instance_type,
|
||||
GType interface_type,
|
||||
const GInterfaceInfo *info);
|
||||
void g_type_add_interface_dynamic (GType instance_type,
|
||||
GType interface_type,
|
||||
GTypePlugin *plugin);
|
||||
GType g_type_register_static (GType parent_type,
|
||||
const gchar *type_name,
|
||||
const GTypeInfo *info,
|
||||
GTypeFlags flags);
|
||||
GType g_type_register_dynamic (GType parent_type,
|
||||
const gchar *type_name,
|
||||
GTypePlugin *plugin,
|
||||
GTypeFlags flags);
|
||||
GType g_type_register_fundamental (GType type_id,
|
||||
const gchar *type_name,
|
||||
const GTypeInfo *info,
|
||||
const GTypeFundamentalInfo *finfo,
|
||||
GTypeFlags flags);
|
||||
void g_type_add_interface_static (GType instance_type,
|
||||
GType interface_type,
|
||||
const GInterfaceInfo *info);
|
||||
void g_type_add_interface_dynamic (GType instance_type,
|
||||
GType interface_type,
|
||||
GTypePlugin *plugin);
|
||||
void g_type_interface_add_prerequisite (GType interface_type,
|
||||
GType prerequisite_type);
|
||||
|
||||
|
||||
/* --- protected (for fundamental type implementations) --- */
|
||||
|
Reference in New Issue
Block a user