⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtype.sgml

📁 GLib是GTK+和GNOME工程的基础底层核心程序库
💻 SGML
📖 第 1 页 / 共 5 页
字号:
<refentry id="gobject-GType"><refmeta><refentrytitle>GType</refentrytitle><manvolnum>3</manvolnum><refmiscinfo>GOBJECT Library</refmiscinfo></refmeta><refnamediv><refname>GType</refname><refpurpose>The GLib Runtime type identification and management system</refpurpose></refnamediv><refsynopsisdiv><title>Synopsis</title><synopsis>#include &lt;gobject.h&gt;typedef     <link linkend="GType">GType</link>;#define     <link linkend="G-TYPE-FUNDAMENTAL-CAPS">G_TYPE_FUNDAMENTAL</link>              (type)#define     <link linkend="G-TYPE-FUNDAMENTAL-MAX-CAPS">G_TYPE_FUNDAMENTAL_MAX</link>#define     <link linkend="G-TYPE-FUNDAMENTAL-SHIFT-CAPS">G_TYPE_FUNDAMENTAL_SHIFT</link>#define     <link linkend="G-TYPE-MAKE-FUNDAMENTAL-CAPS">G_TYPE_MAKE_FUNDAMENTAL</link>         (x)#define     <link linkend="G-TYPE-IS-ABSTRACT-CAPS">G_TYPE_IS_ABSTRACT</link>              (type)#define     <link linkend="G-TYPE-IS-DERIVED-CAPS">G_TYPE_IS_DERIVED</link>               (type)#define     <link linkend="G-TYPE-IS-FUNDAMENTAL-CAPS">G_TYPE_IS_FUNDAMENTAL</link>           (type)#define     <link linkend="G-TYPE-IS-VALUE-TYPE-CAPS">G_TYPE_IS_VALUE_TYPE</link>            (type)#define     <link linkend="G-TYPE-HAS-VALUE-TABLE-CAPS">G_TYPE_HAS_VALUE_TABLE</link>          (type)#define     <link linkend="G-TYPE-IS-CLASSED-CAPS">G_TYPE_IS_CLASSED</link>               (type)#define     <link linkend="G-TYPE-IS-INSTANTIATABLE-CAPS">G_TYPE_IS_INSTANTIATABLE</link>        (type)#define     <link linkend="G-TYPE-IS-DERIVABLE-CAPS">G_TYPE_IS_DERIVABLE</link>             (type)#define     <link linkend="G-TYPE-IS-DEEP-DERIVABLE-CAPS">G_TYPE_IS_DEEP_DERIVABLE</link>        (type)#define     <link linkend="G-TYPE-IS-INTERFACE-CAPS">G_TYPE_IS_INTERFACE</link>             (type)struct      <link linkend="GTypeInterface">GTypeInterface</link>;struct      <link linkend="GTypeInstance">GTypeInstance</link>;struct      <link linkend="GTypeInfo">GTypeInfo</link>;struct      <link linkend="GTypeFundamentalInfo">GTypeFundamentalInfo</link>;struct      <link linkend="GInterfaceInfo">GInterfaceInfo</link>;struct      <link linkend="GTypeValueTable">GTypeValueTable</link>;#define     <link linkend="G-TYPE-FROM-INSTANCE-CAPS">G_TYPE_FROM_INSTANCE</link>            (instance)#define     <link linkend="G-TYPE-FROM-CLASS-CAPS">G_TYPE_FROM_CLASS</link>               (g_class)#define     <link linkend="G-TYPE-FROM-INTERFACE-CAPS">G_TYPE_FROM_INTERFACE</link>           (g_iface)#define     <link linkend="G-TYPE-INSTANCE-GET-CLASS-CAPS">G_TYPE_INSTANCE_GET_CLASS</link>       (instance, g_type, c_type)#define     <link linkend="G-TYPE-INSTANCE-GET-INTERFACE-CAPS">G_TYPE_INSTANCE_GET_INTERFACE</link>   (instance, g_type, c_type)#define     <link linkend="G-TYPE-CHECK-INSTANCE-CAPS">G_TYPE_CHECK_INSTANCE</link>           (instance)#define     <link linkend="G-TYPE-CHECK-INSTANCE-CAST-CAPS">G_TYPE_CHECK_INSTANCE_CAST</link>      (instance, g_type, c_type)#define     <link linkend="G-TYPE-CHECK-INSTANCE-TYPE-CAPS">G_TYPE_CHECK_INSTANCE_TYPE</link>      (instance, g_type)#define     <link linkend="G-TYPE-CHECK-CLASS-CAST-CAPS">G_TYPE_CHECK_CLASS_CAST</link>         (g_class, g_type, c_type)#define     <link linkend="G-TYPE-CHECK-CLASS-TYPE-CAPS">G_TYPE_CHECK_CLASS_TYPE</link>         (g_class, g_type)#define     <link linkend="G-TYPE-CHECK-VALUE-CAPS">G_TYPE_CHECK_VALUE</link>              (value)#define     <link linkend="G-TYPE-CHECK-VALUE-TYPE-CAPS">G_TYPE_CHECK_VALUE_TYPE</link>         (value, g_type)#define     <link linkend="G-TYPE-FLAG-RESERVED-ID-BIT-CAPS">G_TYPE_FLAG_RESERVED_ID_BIT</link>void        <link linkend="g-type-init">g_type_init</link>                     (void);enum        <link linkend="GTypeDebugFlags">GTypeDebugFlags</link>;void        <link linkend="g-type-init-with-debug-flags">g_type_init_with_debug_flags</link>    (<link linkend="GTypeDebugFlags">GTypeDebugFlags</link> debug_flags);G_CONST_RETURN <link linkend="gchar">gchar</link>* <link linkend="g-type-name">g_type_name</link>           (<link linkend="GType">GType</link> type);<link linkend="GQuark">GQuark</link>      <link linkend="g-type-qname">g_type_qname</link>                    (<link linkend="GType">GType</link> type);<link linkend="GType">GType</link>       <link linkend="g-type-from-name">g_type_from_name</link>                (const <link linkend="gchar">gchar</link> *name);<link linkend="GType">GType</link>       <link linkend="g-type-parent">g_type_parent</link>                   (<link linkend="GType">GType</link> type);<link linkend="guint">guint</link>       <link linkend="g-type-depth">g_type_depth</link>                    (<link linkend="GType">GType</link> type);<link linkend="GType">GType</link>       <link linkend="g-type-next-base">g_type_next_base</link>                (<link linkend="GType">GType</link> leaf_type,                                             <link linkend="GType">GType</link> root_type);<link linkend="gboolean">gboolean</link>    <link linkend="g-type-is-a">g_type_is_a</link>                     (<link linkend="GType">GType</link> type,                                             <link linkend="GType">GType</link> is_a_type);<link linkend="gpointer">gpointer</link>    <link linkend="g-type-class-ref">g_type_class_ref</link>                (<link linkend="GType">GType</link> type);<link linkend="gpointer">gpointer</link>    <link linkend="g-type-class-peek">g_type_class_peek</link>               (<link linkend="GType">GType</link> type);void        <link linkend="g-type-class-unref">g_type_class_unref</link>              (<link linkend="gpointer">gpointer</link> g_class);<link linkend="gpointer">gpointer</link>    <link linkend="g-type-class-peek-parent">g_type_class_peek_parent</link>        (<link linkend="gpointer">gpointer</link> g_class);<link linkend="gpointer">gpointer</link>    <link linkend="g-type-interface-peek">g_type_interface_peek</link>           (<link linkend="gpointer">gpointer</link> instance_class,                                             <link linkend="GType">GType</link> iface_type);<link linkend="gpointer">gpointer</link>    <link linkend="g-type-interface-peek-parent">g_type_interface_peek_parent</link>    (<link linkend="gpointer">gpointer</link> g_iface);<link linkend="GType">GType</link>*      <link linkend="g-type-children">g_type_children</link>                 (<link linkend="GType">GType</link> type,                                             <link linkend="guint">guint</link> *n_children);<link linkend="GType">GType</link>*      <link linkend="g-type-interfaces">g_type_interfaces</link>               (<link linkend="GType">GType</link> type,                                             <link linkend="guint">guint</link> *n_interfaces);void        <link linkend="g-type-set-qdata">g_type_set_qdata</link>                (<link linkend="GType">GType</link> type,                                             <link linkend="GQuark">GQuark</link> quark,                                             <link linkend="gpointer">gpointer</link> data);<link linkend="gpointer">gpointer</link>    <link linkend="g-type-get-qdata">g_type_get_qdata</link>                (<link linkend="GType">GType</link> type,                                             <link linkend="GQuark">GQuark</link> quark);void        <link linkend="g-type-query">g_type_query</link>                    (<link linkend="GType">GType</link> type,                                             <link linkend="GTypeQuery">GTypeQuery</link> *query);struct      <link linkend="GTypeQuery">GTypeQuery</link>;void        (<link linkend="GBaseInitFunc">*GBaseInitFunc</link>)                (<link linkend="gpointer">gpointer</link> g_class);void        (<link linkend="GBaseFinalizeFunc">*GBaseFinalizeFunc</link>)            (<link linkend="gpointer">gpointer</link> g_class);void        (<link linkend="GClassInitFunc">*GClassInitFunc</link>)               (<link linkend="gpointer">gpointer</link> g_class,                                             <link linkend="gpointer">gpointer</link> class_data);void        (<link linkend="GClassFinalizeFunc">*GClassFinalizeFunc</link>)           (<link linkend="gpointer">gpointer</link> g_class,                                             <link linkend="gpointer">gpointer</link> class_data);void        (<link linkend="GInstanceInitFunc">*GInstanceInitFunc</link>)            (<link linkend="GTypeInstance">GTypeInstance</link> *instance,                                             <link linkend="gpointer">gpointer</link> g_class);void        (<link linkend="GInterfaceInitFunc">*GInterfaceInitFunc</link>)           (<link linkend="gpointer">gpointer</link> g_iface,                                             <link linkend="gpointer">gpointer</link> iface_data);void        (<link linkend="GInterfaceFinalizeFunc">*GInterfaceFinalizeFunc</link>)       (<link linkend="gpointer">gpointer</link> g_iface,                                             <link linkend="gpointer">gpointer</link> iface_data);<link linkend="gboolean">gboolean</link>    (<link linkend="GTypeClassCacheFunc">*GTypeClassCacheFunc</link>)          (<link linkend="gpointer">gpointer</link> cache_data,                                             <link linkend="GTypeClass">GTypeClass</link> *g_class);enum        <link linkend="GTypeFlags">GTypeFlags</link>;enum        <link linkend="GTypeFundamentalFlags">GTypeFundamentalFlags</link>;<link linkend="GType">GType</link>       <link linkend="g-type-register-static">g_type_register_static</link>          (<link linkend="GType">GType</link> parent_type,                                             const <link linkend="gchar">gchar</link> *type_name,                                             const <link linkend="GTypeInfo">GTypeInfo</link> *info,                                             <link linkend="GTypeFlags">GTypeFlags</link> flags);<link linkend="GType">GType</link>       <link linkend="g-type-register-dynamic">g_type_register_dynamic</link>         (<link linkend="GType">GType</link> parent_type,                                             const <link linkend="gchar">gchar</link> *type_name,                                             <link linkend="GTypePlugin">GTypePlugin</link> *plugin,                                             <link linkend="GTypeFlags">GTypeFlags</link> flags);<link linkend="GType">GType</link>       <link linkend="g-type-register-fundamental">g_type_register_fundamental</link>     (<link linkend="GType">GType</link> type_id,                                             const <link linkend="gchar">gchar</link> *type_name,                                             const <link linkend="GTypeInfo">GTypeInfo</link> *info,                                             const <link linkend="GTypeFundamentalInfo">GTypeFundamentalInfo</link> *finfo,                                             <link linkend="GTypeFlags">GTypeFlags</link> flags);void        <link linkend="g-type-add-interface-static">g_type_add_interface_static</link>     (<link linkend="GType">GType</link> instance_type,                                             <link linkend="GType">GType</link> interface_type,                                             const <link linkend="GInterfaceInfo">GInterfaceInfo</link> *info);void        <link linkend="g-type-add-interface-dynamic">g_type_add_interface_dynamic</link>    (<link linkend="GType">GType</link> instance_type,                                             <link linkend="GType">GType</link> interface_type,                                             <link linkend="GTypePlugin">GTypePlugin</link> *plugin);void        <link linkend="g-type-interface-add-prerequisite">g_type_interface_add_prerequisite</link>                                            (<link linkend="GType">GType</link> interface_type,                                             <link linkend="GType">GType</link> prerequisite_type);<link linkend="GTypePlugin">GTypePlugin</link>* <link linkend="g-type-get-plugin">g_type_get_plugin</link>              (<link linkend="GType">GType</link> type);<link linkend="GTypePlugin">GTypePlugin</link>* <link linkend="g-type-interface-get-plugin">g_type_interface_get_plugin</link>    (<link linkend="GType">GType</link> instance_type,                                             <link linkend="GType">GType</link> implementation_type);<link linkend="GType">GType</link>       <link linkend="g-type-fundamental-next">g_type_fundamental_next</link>         (void);<link linkend="GType">GType</link>       <link linkend="g-type-fundamental">g_type_fundamental</link>              (<link linkend="GType">GType</link> type_id);<link linkend="GTypeInstance">GTypeInstance</link>* <link linkend="g-type-create-instance">g_type_create_instance</link>       (<link linkend="GType">GType</link> type);void        <link linkend="g-type-free-instance">g_type_free_instance</link>            (<link linkend="GTypeInstance">GTypeInstance</link> *instance);void        <link linkend="g-type-add-class-cache-func">g_type_add_class_cache_func</link>     (<link linkend="gpointer">gpointer</link> cache_data,                                             <link linkend="GTypeClassCacheFunc">GTypeClassCacheFunc</link> cache_func);void        <link linkend="g-type-remove-class-cache-func">g_type_remove_class_cache_func</link>  (<link linkend="gpointer">gpointer</link> cache_data,                                             <link linkend="GTypeClassCacheFunc">GTypeClassCacheFunc</link> cache_func);void        <link linkend="g-type-class-unref-uncached">g_type_class_unref_uncached</link>     (<link linkend="gpointer">gpointer</link> g_class);<link linkend="GTypeValueTable">GTypeValueTable</link>* <link linkend="g-type-value-table-peek">g_type_value_table_peek</link>    (<link linkend="GType">GType</link> type);#define     <link linkend="G-TYPE-INVALID-CAPS">G_TYPE_INVALID</link>#define     <link linkend="G-TYPE-NONE-CAPS">G_TYPE_NONE</link>#define     <link linkend="G-TYPE-INTERFACE-CAPS">G_TYPE_INTERFACE</link>#define     <link linkend="G-TYPE-CHAR-CAPS">G_TYPE_CHAR</link>#define     <link linkend="G-TYPE-UCHAR-CAPS">G_TYPE_UCHAR</link>#define     <link linkend="G-TYPE-BOOLEAN-CAPS">G_TYPE_BOOLEAN</link>#define     <link linkend="G-TYPE-INT-CAPS">G_TYPE_INT</link>#define     <link linkend="G-TYPE-UINT-CAPS">G_TYPE_UINT</link>#define     <link linkend="G-TYPE-LONG-CAPS">G_TYPE_LONG</link>#define     <link linkend="G-TYPE-ULONG-CAPS">G_TYPE_ULONG</link>#define     <link linkend="G-TYPE-INT64-CAPS">G_TYPE_INT64</link>#define     <link linkend="G-TYPE-UINT64-CAPS">G_TYPE_UINT64</link>#define     <link linkend="G-TYPE-ENUM-CAPS">G_TYPE_ENUM</link>#define     <link linkend="G-TYPE-FLAGS-CAPS">G_TYPE_FLAGS</link>#define     <link linkend="G-TYPE-FLOAT-CAPS">G_TYPE_FLOAT</link>#define     <link linkend="G-TYPE-DOUBLE-CAPS">G_TYPE_DOUBLE</link>#define     <link linkend="G-TYPE-STRING-CAPS">G_TYPE_STRING</link>#define     <link linkend="G-TYPE-POINTER-CAPS">G_TYPE_POINTER</link>#define     <link linkend="G-TYPE-BOXED-CAPS">G_TYPE_BOXED</link>#define     <link linkend="G-TYPE-PARAM-CAPS">G_TYPE_PARAM</link>#define     <link linkend="G-TYPE-OBJECT-CAPS">G_TYPE_OBJECT</link>#define     <link linkend="G-TYPE-RESERVED-GLIB-FIRST-CAPS">G_TYPE_RESERVED_GLIB_FIRST</link>#define     <link linkend="G-TYPE-RESERVED-GLIB-LAST-CAPS">G_TYPE_RESERVED_GLIB_LAST</link>#define     <link linkend="G-TYPE-RESERVED-BSE-FIRST-CAPS">G_TYPE_RESERVED_BSE_FIRST</link>#define     <link linkend="G-TYPE-RESERVED-BSE-LAST-CAPS">G_TYPE_RESERVED_BSE_LAST</link>#define     <link linkend="G-TYPE-RESERVED-USER-FIRST-CAPS">G_TYPE_RESERVED_USER_FIRST</link></synopsis></refsynopsisdiv><refsect1><title>Description</title><para>The GType API is the foundation of the GObject system.  It provides thefacilities for registering and managing all fundamental data types,user-defined object and interface types.  Before using any GTypeor GObject functions, <link linkend="g-type-init">g_type_init</link>() must be called to initialize thetype system.</para><para>For type creation and registration purposes, all types fall into one oftwo categories: static or dynamic.  Static types are never loaded orunloaded at run-time as dynamic types may be.  Static types are createdwith <link linkend="g-type-register-static">g_type_register_static</link>() that gets type specific information passedin via a <link linkend="GTypeInfo">GTypeInfo</link> structure.Dynamic types are created with <link linkend="g-type-register-dynamic">g_type_register_dynamic</link>() which takes a<link linkend="GTypePlugin">GTypePlugin</link> structure instead. The remaining type information (the<link linkend="GTypeInfo">GTypeInfo</link> structure) is retrived during runtime through <link linkend="GTypePlugin">GTypePlugin</link>and the g_type_plugin_*() API.These registration functions are usually called only once from a function whose only purpose is to return the type identifier for a specific class.  Once the type (or class or interface) is registered,it may be instantiated, inherited, or implemented depending on exactlywhat sort of type it is.There is also a third registration function for registering fundamentaltypes called <link linkend="g-type-register-fundamental">g_type_register_fundamental</link>() which requires both a <link linkend="GTypeInfo">GTypeInfo</link>structure and a GTypeFundamentalInfo structure but it is seldom usedsince most fundamental types are predefined rather than user-defined.</para></refsect1><refsect1><title>Details</title><refsect2><title><anchor id="GType">GType</title><para>A numerical value which represents the unique identifier of a registeredtype.</para></refsect2><refsect2><title><anchor id="G-TYPE-FUNDAMENTAL-CAPS">G_TYPE_FUNDAMENTAL()</title><programlisting>#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))</programlisting><para>Returns <link linkend="TRUE-CAPS">TRUE</link> if <parameter>type</parameter> is a fundamental data type such as <link linkend="G-TYPE-INT-CAPS">G_TYPE_INT</link> or<link linkend="G-TYPE-POINTER-CAPS">G_TYPE_POINTER</link>. Fundamental types are types that serve as fundaments forthe derived types, thus they are the roots of distinct inheritance hierarchies.</para><informaltable pgwide="1" frame="none" role="params"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry align="right"><parameter>type</parameter>&nbsp;:</entry><entry>A <link linkend="GType">GType</link> value.</entry></row></tbody></tgroup></informaltable></refsect2><refsect2><title><anchor id="G-TYPE-FUNDAMENTAL-MAX-CAPS">G_TYPE_FUNDAMENTAL_MAX</title><programlisting>#define	G_TYPE_FUNDAMENTAL_MAX		(255 &lt;&lt; G_TYPE_FUNDAMENTAL_SHIFT)</programlisting><para>An integer constant that represents the number of identifiers reservedfor types that are assigned at compile-time.</para></refsect2><refsect2><title><anchor id="G-TYPE-FUNDAMENTAL-SHIFT-CAPS">G_TYPE_FUNDAMENTAL_SHIFT</title><programlisting>#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)</programlisting><para></para></refsect2><refsect2><title><anchor id="G-TYPE-MAKE-FUNDAMENTAL-CAPS">G_TYPE_MAKE_FUNDAMENTAL()</title><programlisting>#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) &lt;&lt; G_TYPE_FUNDAMENTAL_SHIFT))</programlisting><para></para><informaltable pgwide="1" frame="none" role="params"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry align="right"><parameter>x</parameter>&nbsp;:</entry><entry></entry></row></tbody></tgroup></informaltable></refsect2><refsect2><title><anchor id="G-TYPE-IS-ABSTRACT-CAPS">G_TYPE_IS_ABSTRACT()</title><programlisting>#define G_TYPE_IS_ABSTRACT(type)                (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))</programlisting><para>Returns <link linkend="TRUE-CAPS">TRUE</link> if <parameter>type</parameter> is an abstract type.  An abstract type can not beinstantiated and is normally used as an abstract base class forderived classes.</para><informaltable pgwide="1" frame="none" role="params"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry align="right"><parameter>type</parameter>&nbsp;:</entry><entry>A <link linkend="GType">GType</link> value.</entry></row></tbody></tgroup></informaltable></refsect2>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -