<?xml version='1.0' encoding='utf-8' /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head> <title>GtkAda: Glib.Types</title> <link rel='stylesheet' href='gtkada_rm.css' type='text/css'> <script src='gtkada_rm.js' type='text/javascript'></script> </head><body> <div id='objectName'> <span><a href='index.html'><img src='home.png' alt='Toc' title='Table of Contents'/></a> <a href='gallery.html'><img src='gallery.png' alt='Gallery' title='Widgets gallery'/></a> <a href='entities.html'><img src='entities.png' alt='Index' title='Global Index'/></a> <a href='tree.html'><img src='tree.png' alt='Tree' title='Widgets Inheritance Tree'/></a> </span> Glib.Types </div> <!-- objectName --> <div id='leftSide'> <div id='navigation'> <h2>Navigation</h2> <ul> <li><a href='#Description' onclick='return switchPage("page1")'>Description</a></li> <li><a href='#Types' onclick='return switchPage("page1")'>Types</a></li> <li><a href='#Subprograms' onclick='return switchPage("page1")'>Subprograms</a> <ul> <li><a href='#Subprograms__General' onclick='return switchPage("page1")'>General</a></li> <li><a href='#Subprograms__Interfaces' onclick='return switchPage("page1")'>Interfaces</a></li> </ul> </li> </ul> </div> <!-- navigation --> </div> <!-- leftSide --> <div id='documentation'> <ul id='notebook'> <li id='tab_page1' class='current'><a href='' onclick='return !switchPage("page1")'>Entities</a></li> </ul> <!-- notebook --> <div id='notebook_page1' class='notebookPage'> <a name='Description'></a> <div class='description'> <h2>Description</h2> This package provides an interface to the type system in <a href='glib.html'>Glib</a>. These types provide an object-oriented framework (through inheritance and interfaces), as well as reference-counting, signals and properties on these types. <p> Most of the time, you DO NOT need to use this package, only when you are working with the introspection capabilities of glib. <p> See the other glib packages for more subprograms to manipulate these types. In particular, <a href='glib-properties.html'>Glib.Properties</a> describes the properties system, that provide the base for dynamic introspection. See also <a href='glib.html'>Glib</a> itself, which contains several general subprograms, and <a href='glib-object.html'>Glib.Object</a> that provides the root object for any type hierarchy based on glib. </div> <!-- description --> <a name='Types'></a> <div id='types'> <h2>Types</h2> <ul> <li><a name='GType_Interface_'></a> <div class='profile'><b>type</b> GType_Interface <b>is</b> <b>private</b>;</div> <div class='comment'></div></li> </ul> </div> <!-- types --> <a name='Subprograms'> </a> <a name='Subprograms__General'> </a> <div id='subprograms'> <h2>Subprograms</h2> <ul> <li><a name='Class_Peek_1_'></a> <div class='profile'><b>function</b> <span class='name'>Class_Peek</span> (T : GType) <b>return</b> <a href='glib.html'>Glib.GType_Class</a>;</div> <a name='Class_Ref_2_'></a> <div class='profile'><b>function</b> <span class='name'>Class_Ref</span> (T : GType) <b>return</b> <a href='glib.html'>Glib.GType_Class</a>;</div> <div class='comment'>Return the class structure encapsulated in <tt>T</tt>. <a href='glib-types.html#Class_Ref_2_'>Class_Ref</a> will create the class on-demand if it doesn't exist yet, but <a href='glib-types.html#Class_Peek_1_'>Class_Peek</a> might return null if the class hasn't been referenced before. <a href='glib-types.html#Class_Ref_2_'>Class_Ref</a> also increments the reference counting for the returned value </div></li> <li><a name='Class_Unref_3_'></a> <div class='profile'><b>procedure</b> <span class='name'>Class_Unref</span> (T : GType);</div> <div class='comment'>Decrement the reference counting on the associated class. When it reaches 0, the class may be finalized by the type system. </div></li> <li><a name='Depth_4_'></a> <div class='profile'><b>function</b> <span class='name'>Depth</span> (T : GType) <b>return</b> Guint;</div> <div class='comment'>Returns the length of the ancestry of the passed in type. This includes the type itself, so that e.g. a fundamental type has depth 1. </div></li> <li><a name='Is_A_5_'></a> <div class='profile'><b>function</b> <span class='name'>Is_A</span> (T : GType; Is_A_Type : GType) <b>return</b> Boolean;</div> <div class='comment'>If <tt>Is_A_Type</tt> is a derivable type, check whether type is a descendant of <tt>Is_A_Type</tt>. If <tt>Is_A_Type</tt> is an interface, check whether type conforms to it. </div></li> <a name='Subprograms__Interfaces'></a> <h3>Interfaces</h3> <div class='description'><a href='glib-types.html#Interfaces_7_'>Interfaces</a> are similar, in concept, to those found in Ada 2005 or in Java. They define a set of subprograms that any type implementing the interface must also define. They are different from standard inheritance since no implementation of these subprograms can be provided in the interface itself. </div> <li><a name='To_Object_6_'></a> <div class='profile'><b>function</b> <span class='name'>To_Object</span> (Interf : GType_Interface) <b>return</b> <a href='glib-object.html'>Glib.Object.GObject</a>;</div> <div class='comment'>Return the object that the interface represents. This is slightly different from using Implements.To_Object, in the case when the object wasn't created through Ada. In such a case, GtkAda needs to create an Ada wrapper around the object, and will choose a different tagged type: - Implements.To_Object creates a tagged type of type Object_Type. - This function creates a GObject, which you cannot cast easily to some other tagged type afterward. Both behave the same when the object was created from Ada. </div></li> <li><a name='Interfaces_7_'></a> <div class='profile'><b>function</b> <span class='name'>Interfaces</span> (T : GType) <b>return</b> GType_Array;</div> <div class='comment'>Return the list of interfaces implemented by objects of a given type. </div></li> <li><a name='Is_Interface_8_'></a> <div class='profile'><b>function</b> <span class='name'>Is_Interface</span> (T : GType) <b>return</b> Boolean;</div> <div class='comment'>Whether <tt>T</tt> represents an interface type description </div></li> <li><a name='Default_Interface_Peek_9_'></a> <div class='profile'><b>function</b> <span class='name'>Default_Interface_Peek</span> (T : GType) <b>return</b> <a href='glib-object.html'>Glib.Object.Interface_Vtable</a>;</div> <a name='Default_Interface_Ref_10_'></a> <div class='profile'><b>function</b> <span class='name'>Default_Interface_Ref</span> (T : GType) <b>return</b> <a href='glib-object.html'>Glib.Object.Interface_Vtable</a>;</div> <div class='comment'>If the interface type <tt>T</tt> is currently in use, returns its default interface vtable. <a href='glib-types.html#Default_Interface_Ref_10_'>Default_Interface_Ref</a> will create the default vtable for the type if the type is not currently in use. This is useful when you want to make sure that signals and properties for an interface have been installed. </div></li> </ul> </div> <!-- subprograms --> </div> <!-- notebook_page1 --> <div id='notebook_page3' class='notebookPage'> </div> <!-- notebook_page3 --> </div> <!-- documentation --> <div id='rightSide'> <div id='Index'> <h2>Alphabetical Index</h2> <ul> <li><a href='#Class_Peek_1_' onclick='return switchPage("page1")'>Class_Peek</a></li> <li><a href='#Class_Ref_2_' onclick='return switchPage("page1")'>Class_Ref</a></li> <li><a href='#Class_Unref_3_' onclick='return switchPage("page1")'>Class_Unref</a></li> <li><a href='#Default_Interface_Peek_9_' onclick='return switchPage("page1")'>Default_Interface_Peek</a></li> <li><a href='#Default_Interface_Ref_10_' onclick='return switchPage("page1")'>Default_Interface_Ref</a></li> <li><a href='#Depth_4_' onclick='return switchPage("page1")'>Depth</a></li> <li><a href='#Interfaces_7_' onclick='return switchPage("page1")'>Interfaces</a></li> <li><a href='#Is_A_5_' onclick='return switchPage("page1")'>Is_A</a></li> <li><a href='#Is_Interface_8_' onclick='return switchPage("page1")'>Is_Interface</a></li> <li><a href='#To_Object_6_' onclick='return switchPage("page1")'>To_Object</a></li> </ul> </div> <!-- Index --> </div> <!-- rightSide --> <script language='javascript'>switchPage('page1'); adjust_height()</script> </body> </html>