Knowledge (XXG)

GObject

Source đź“ť

1237: 146: 1153:, and other common memory allocators which allow a program to cope with or even fully recover from out-of-memory situations without simply crashing. This tends to work against including GObject in software where resilience in the face of limited memory is important, or where very many or very large objects are commonly handled. The g_try_new() can be used when a memory allocation is more likely to fail (for a large object for example), but this cannot grant that the allocation will not fail elsewhere in the code. 2487: 2477: 1066: 1004: 2497: 1185:
these overlaps are not allowed.) In contrast, since C does not support any form of overloading or namespacing, authors of C libraries will typically use explicit prefixes to ensure the global uniqueness of their exported names. Hence, despite being object-oriented, a GObject-based library written in
1168:
that works across all C++ compilers (which is not usually the case, since either the Itanium ABI or the Microsoft ABI are usually followed), a library compiled with one C++ compiler is not always able to call a library compiled with a different one. If such compatibility is required, the C++ methods
828:
can be declared in the public header file, but defined only in the implementation file, with the effect that the private data is opaque to users, but transparent to the implementor. If the private structure is registered with GType, it will be automatically allocated by the object system. Indeed, it
693:
to represent this structure, and provide functions for copying and freeing. GObject ships with a handful of boxed types wrapping simple GLib data types. Another use for boxed types is as a way to wrap foreign objects in a tagged container that the type system can identify and will know how to copy
1197:
in other languages). This emphasis derives from the fact that GObject was specifically designed to meet the needs of a GUI toolkit. Whilst there are signal libraries for most object-oriented languages out there, in the case of GObject it is built into the object system. Because of this, a typical
764:
Signals are the primary mechanism by which closures are invoked. Objects register signal listeners with the type system, specifying a mapping between a given signal and a given closure. Upon emission of a registered signal, that signal's closure is invoked. In GTK, all native GUI events (such as
633:
type) that one wishes to use in some way that is related to the object system — for example, as the type of an object property — should be registered with the type system. Typically, the initialization code that takes care of registering these types is generated by an automated tool
353:, while some are complex but not reference-counted. When the type system “copies” a reference-counted object, it will typically just increase its reference count, whereas when copying a complex, non-reference-counted object (such as a string), it will typically create an actual copy by 1156:
Another important difference is that while C++ and Objective-C are separate languages, GObject is strictly a library and as such does not introduce any new syntax or compiler intelligence. For example, when writing GObject-based C code, it is frequently necessary to perform explicit
807:(this ensures that all instances begin with a pointer to the class structure, since all fundamental instantiable types share this property). After the data belonging to the superclass, the structure can hold any instance-specific variables, corresponding to C++ member variables. 392:: the types from which all other types are derived. These make up a relatively closed set, but although the average user is not expected to create their own fundamental types, the possibility does exist and has been exploited to create custom 815:
code, such as manual definitions of type casting macros and obscure type registration incantations. Also, since a C structure cannot have access modifiers like “public”, “protected”, or “private”, workarounds must be used to provide
364:, a type of generic container that can hold values of any type known by the type system. Such containers are particularly useful when interacting with dynamically typed language environments in which all native values reside in such 1218:
allows easy use of underlying GObject signals using standard C++. Of course, other implementations of signals are available on almost all platforms, although sometimes an extra library is needed, such as Boost.Signals2 for C++.
644:
Some data structures that are too simple to be made full-fledged class types (with all the overhead incurred) may still need to be registered with the type system. For example, we might have a class to which we want to add a
758:. Support exists for closures written in C and C++, as well as arbitrary languages (when bindings are provided). This allows code written in (for example) Python and Java to be invoked via a GObject closure. 1134:. (Though both also offer many other features beyond just their respective object systems.) An easily observed difference between C++ and GObject is that GObject (like Java) does not support 708:), it is often a good idea to create a derived pointer type, documenting the fact that the pointers should reference a particular kind of object, even though nothing else is said about it. 1173:
to ensure the uniqueness of all exported symbols. (This is necessary because, for example, two different classes may have identically named member functions, one function name may be
274:, the new common baseclass. Having existed as a separate library since March 11, 2002 (the release date of GTK+ 2.0), the GObject library is now used by many non-GUI programs such as 1169:
must be exported as plain C functions, partly defeating the purpose of the C++ object system. The problem occurs in part because different C++ compilers use different kinds of
1161:. Hence, “C with GObject”, also called "glib-flavored C", considered as a language separate from plain C, is a strict superset of plain C — like Objective C, but unlike C++. 349:
The type system knows how to copy, assign, and destroy values belonging to any of the registered types. This is trivial for types like integers, but many complex objects are
255:
and applications. Prior to GTK+ 2.0, code similar to GObject was part of the GTK codebase. (The name “GObject” was not yet in use — the common baseclass was called
714:
Most types in a GObject application will be classes — in the normal object-oriented sense of the word — derived directly or indirectly from the root class,
963:, a language that is designed primarily to work with GObject and which converts to C, is likely to make working with GObject or writing GObject based libraries nicer. 298:
source tree and is distributed along with GLib. For this reason, GObject uses the GLib version numbers and is typically packaged together with GLib (for example,
947:
Writing GObject code in C in the first place, however, is relatively verbose. The library takes a good deal of time to learn, and programmers with experience in
2521: 793:
of a C++ class. It must begin with the class structure of the superclass. Following that, it will hold a set of function pointers — one for each
912:
Though many GObject applications are written entirely in C, the GObject system maps well into the native object systems of many other languages, like
723: 606:) associated to the type of the instance. For this reason, any instantiable type must be classed. Contrapositively, any non-classed type (such as 1455: 2531: 951:
object-oriented languages often find it somewhat tedious to work with GObject in C. For example, creating a subclass (even just a subclass of
1242: 1199: 817: 262:
At the release of GTK+ 2.0, the object system was extracted into a separate library due to its general utility. In the process, most non-
990:, in the case of Glade—and then obtain a list of all properties of the class, complete with type information and documentation strings. 1145:'s g_malloc() memory allocation function will cause the program to exit unconditionally upon memory exhaustion, unlike the C library's 1768: 1699: 1556: 1113: 1047: 881: 115: 1014: 2526: 2250: 1741: 975: 614:) must be non-instantiable. On the other hand, most classed types are instantiable, but some, such as interface types, are not. 2490: 1126:
Since GObject provides a mostly complete object system for C, it can be seen as an alternative to C-derived languages such as
1937: 1254: 1091: 849: 1745: 1492: 1198:
GObject application will tend to use signals to a much larger extent than a non-GObject application would, making GObject
925: 804: 1375: 1165: 803:
The instance structure, which will exist in one copy per object instance, must begin with the instance structure of the
1607: 1597: 1325: 1250: 960: 917: 861: 845: 755: 719: 1076: 1029: 598:. An important characteristic of these types is that the first bytes of any instance always contain a pointer to the 145: 2039: 877: 1095: 1080: 1025: 2301: 1258: 921: 841: 700:
Sometimes, for objects that need to be neither copied or reference-counted nor freed, even a boxed type would be
335: 1423: 2541: 2536: 1753: 1505: 1399: 1262: 1194: 1087: 979: 204: 69: 1865: 1223: 1158: 978:. The introspective capabilities are used by language bindings and user interface design applications like 2271: 2024: 622:
The types that are derived from the built-in GObject fundamental types fall roughly into four categories:
974:
like classes and interfaces are created by GObject applications at runtime, and provide good support for
575:
structures, which are used to wrap simple value objects or foreign objects in reference-counted “boxes” (
2372: 2306: 1592: 1538: 343: 244: 765:
mouse motion and keyboard actions) can generate GObject signals for listeners to potentially act upon.
2266: 2077: 1135: 2179: 1945: 1880: 1546: 853: 377: 98: 560:
a base interface type, analogous to the base class type but representing the root of the standard
2398: 2321: 2215: 1981: 1689: 1203: 1190: 1174: 967: 812: 350: 323: 279: 1350: 385: 1311: 2448: 2408: 2347: 2235: 2103: 1485: 354: 290:
Though GObject has its own separate set of documentation and is usually compiled into its own
203:
and transparent cross-language interoperability. GObject is designed for use both directly in
41: 1986: 173: 169: 2443: 2423: 2200: 2174: 2082: 1885: 1875: 1724: 1207: 956: 941: 208: 196: 110: 103: 76: 2393: 2362: 1996: 1786: 1657: 937: 701: 393: 820:. One approach is to include a pointer to the private data — conventionally called 704:. While such objects can be used in GObject by simply treating them as opaque pointers ( 2061: 1905: 1900: 1684: 1585: 1186:
C will always use the same external symbol names regardless of which compiler is used.
983: 933: 794: 331: 291: 177: 81: 2515: 2352: 1781: 1758: 1612: 1170: 894: 629:
In general, every enumerated type and every integer-based bitfield type (i.e., every
603: 200: 193: 150: 17: 582:
a type for “parameter specification objects,” which are used in GObject to describe
2546: 2480: 2403: 2296: 2276: 2225: 2169: 1910: 1704: 1478: 365: 318:
called GType. The GType system holds a runtime description of all objects allowing
275: 154: 91: 1215: 1150: 840:
To address some of these complexities, several higher-level languages exist that
811:
Defining a class in the GObject framework is complex, requiring large amounts of
2009: 2004: 1895: 1890: 1870: 1860: 1855: 1811: 1694: 1637: 1182: 1131: 1065: 929: 880:
middleware layer between C libraries (using GObject) and language bindings, cf.
315: 211:
to other languages to provide transparent cross-language interoperability, e.g.
157: 726:, can contain implemented methods. GObject interfaces can thus be described as 2453: 2210: 1826: 1714: 1709: 1450: 1283: 1232: 1178: 987: 971: 948: 690: 572: 496: 126: 36: 2500: 1297: 2342: 2291: 2149: 2087: 1915: 1679: 1669: 1566: 797:
of the class. Class-specific variables can be used to emulate class members.
481: 319: 314:
At the most basic level of the GObject framework lies a generic and dynamic
252: 212: 1470: 594:
Types that can be instantiated automatically by the type system are called
1214:, the official C++ wrappers to Glib/GTK respectively, the sibling project 649:
property, whose values should be instances of a structure that looks like
2458: 2357: 2337: 2311: 2281: 2230: 2205: 2154: 2128: 2123: 2118: 2108: 2066: 2019: 1816: 1719: 1617: 583: 322:
to facilitate multiple language bindings. The type system can handle any
2438: 2428: 2240: 2056: 1796: 1791: 1647: 1642: 1632: 1465: 1177:
multiple times, or identically named functions may appear in different
873: 384:. These types, together with all types that correspond to some form of 339: 2377: 2286: 2184: 2164: 2159: 2071: 1963: 1801: 1776: 1627: 1146: 790: 299: 1032:. Statements consisting only of original research should be removed. 1127: 913: 2433: 2418: 2413: 2367: 2220: 2113: 2029: 2014: 1925: 1847: 1821: 1806: 1674: 1602: 1561: 1551: 1211: 898: 774:
Each GObject class is implemented by at least two structures: the
739:
The GObject messaging system consists of two complementary parts:
727: 476:
an enumeration type and a “flags” type, both corresponding to C's
248: 240: 232: 1460: 857: 2245: 2144: 1973: 1955: 1622: 1575: 1142: 906: 295: 228: 224: 165: 161: 1474: 1533: 1528: 1520: 1501: 1189:
Perhaps the most profound difference is GObject's emphasis on
1059: 997: 902: 263: 236: 1224:
Comparison with COM, Objective-C, SOM, Windows Runtime, XPCOM
1206:
and reusable than the ones using plain C++ or Java. If using
207:
programs to provide object-oriented C-based APIs and through
893:
The combination of C and GObject is used in many successful
944:
for well-written libraries that use the GObject framework.
940:. As a result, it is usually relatively painless to create 1330:
Gnome Developer, Programming Guidelines - Specific How-Tos
480:
type, but differing in that the latter is only used for
1021: 955:) can require writing and/or copying large amounts of 180:) serve as further wrappers for their specific tasks. 2386: 2330: 2259: 2193: 2137: 2096: 2049: 2038: 1995: 1972: 1954: 1936: 1846: 1767: 1740: 1733: 1656: 1519: 1512: 986:that provides a GObject class—usually some kind of 718:. There are also interfaces, which, unlike classic 650: 553:, the root of the standard class inheritance tree ( 121: 109: 97: 87: 75: 65: 47: 35: 833:pointer, if one is willing to use the incantation 360:This basic functionality is used for implementing 396:— i.e., class hierarchies not based on the 294:file, the source code for GObject resides in the 754:A GObject closure is a generalized version of a 422:types corresponding to C's signed and unsigned 1486: 529:an opaque pointer type, corresponding to C's 8: 1253:— a GObject-based programming language with 30: 1451:The GObject Reference Manual (and tutorial) 1376:"c++ - Why Was the GObject System Created?" 1351:"How to define and implement a new GObject" 1094:. Unsourced material may be challenged and 2046: 1737: 1516: 1493: 1479: 1471: 1424:"Memory Allocation: GLib Reference Manual" 1400:"Memory Allocation: GLib Reference Manual" 970:(there are no actual metatypes in GType), 860:, offers a template syntax reminiscent of 29: 1114:Learn how and when to remove this message 1048:Learn how and when to remove this message 1312:"glib-mkenums, GObject Reference Manual" 1164:On platforms where there is no standard 852:-style syntax and is pre-processed into 144: 1275: 837:every time the private data is needed. 824:— in the instance structure. The 789:The class structure corresponds to the 495:types for single- and double-precision 376:Types that do not have any associated 982:to allow doing things like loading a 829:is not even necessary to include the 7: 2496: 1243:Free and open-source software portal 1092:adding citations to reliable sources 518:a string type, corresponding to C's 411:an empty type, corresponding to C's 1298:"GObject Reference Manual - Stable" 994:Comparisons to other object systems 549:a base class type for instances of 2522:C (programming language) libraries 626:Enumerated types and “flags” types 25: 882:List of language bindings for GTK 160:, so do the libraries bundled in 2495: 2486: 2485: 2476: 2475: 1461:GOB2 — the GObject Builder 1235: 1064: 1002: 856:C code. The GObject Builder, or 545:built-in fundamental types are: 407:built-in fundamental types are: 326:class structure, in addition to 2491:Category:Software that uses GTK 685:. To avoid having to subclass 638:and stored in a separate file. 231:, GObject is a cornerstone of 1: 2532:Free software programmed in C 966:Although they are not really 909:image manipulation program. 1028:the claims made and adding 835:G_TYPE_INSTANCE_GET_PRIVATE 2563: 1284:"GObject Reference Manual" 1221: 878:foreign function interface 2471: 1456:GObject Tutorial Aug 2004 1259:Source to source compiler 846:Vala programming language 842:source-to-source compiles 711:Class and interface types 270:class were moved up into 1754:Glade Interface Designer 1326:"Introspection, Summary" 247:, and most higher-level 153:serves as a wrapper for 2527:Free computer libraries 876:(abbreviated GIR) is a 586:for object properties ( 499:, corresponding to C's 434:, and 64-bit integers ( 266:-specific parts of the 235:and is used throughout 2025:Avant Window Navigator 897:projects, such as the 800:The instance structure 403:As of GLib 2.9.2, the 344:floating point numbers 338:, and variously sized 181: 53:; 22 years ago 2373:OpenShot Video Editor 874:GObject introspection 868:GObject Introspection 844:to GObject in C. The 199:providing a portable 148: 27:Free software library 18:GObject Introspection 1136:multiple inheritance 1088:improve this section 770:Class implementation 697:Opaque pointer types 302:puts GObject in its 1547:GTK Scene Graph Kit 1428:developer.gnome.org 1404:developer.gnome.org 968:first-class objects 786:The class structure 32: 1982:PCMan File Manager 1013:possibly contains 780:instance structure 689:, we can create a 564:inheritance tree ( 223:Depending only on 186:GLib Object System 182: 51:11 March 2002 2509: 2508: 2467: 2466: 2236:Vino (VNC server) 1866:Core Applications 1842: 1841: 1838: 1837: 1663: 1557:Language bindings 1141:GObject's use of 1124: 1123: 1116: 1058: 1057: 1050: 1015:original research 959:. However, using 942:language bindings 826:private structure 394:class hierarchies 390:fundamental types 372:Fundamental types 355:allocating memory 351:reference-counted 306:package family). 143: 142: 42:The GNOME Project 16:(Redirected from 2554: 2499: 2498: 2489: 2488: 2479: 2478: 2251:transmission-gtk 2047: 1997:Graphical shells 1738: 1661: 1517: 1506:its applications 1495: 1488: 1481: 1472: 1438: 1437: 1435: 1434: 1420: 1414: 1413: 1411: 1410: 1396: 1390: 1389: 1387: 1386: 1372: 1366: 1365: 1363: 1361: 1347: 1341: 1340: 1338: 1336: 1322: 1316: 1315: 1308: 1302: 1301: 1294: 1288: 1287: 1280: 1245: 1240: 1239: 1238: 1119: 1112: 1108: 1105: 1099: 1068: 1060: 1053: 1046: 1042: 1039: 1033: 1030:inline citations 1006: 1005: 998: 957:boilerplate code 954: 905:toolkit and the 836: 832: 823: 735:Messaging system 717: 707: 688: 684: 683: 680: 677: 674: 671: 668: 665: 662: 659: 656: 653: 648: 647:background-color 637: 632: 589: 578: 567: 566:G_TYPE_INTERFACE 556: 552: 536: 532: 525: 521: 514: 510: 506: 502: 491: 487: 479: 472: 469:a boolean type ( 465: 461: 457: 453: 449: 445: 441: 437: 433: 429: 425: 418: 414: 399: 363: 324:singly inherited 305: 286:Relation to GLib 273: 269: 258: 197:software library 139: 136: 134: 132: 130: 128: 104:Software library 77:Operating system 61: 59: 54: 33: 21: 2562: 2561: 2557: 2556: 2555: 2553: 2552: 2551: 2542:GNOME libraries 2537:Freedesktop.org 2512: 2511: 2510: 2505: 2463: 2394:Archive Manager 2382: 2326: 2255: 2189: 2133: 2092: 2041: 2034: 1991: 1968: 1950: 1932: 1834: 1763: 1729: 1660: 1658:freedesktop.org 1652: 1508: 1499: 1447: 1442: 1441: 1432: 1430: 1422: 1421: 1417: 1408: 1406: 1398: 1397: 1393: 1384: 1382: 1374: 1373: 1369: 1359: 1357: 1349: 1348: 1344: 1334: 1332: 1324: 1323: 1319: 1310: 1309: 1305: 1296: 1295: 1291: 1282: 1281: 1277: 1272: 1241: 1236: 1234: 1231: 1226: 1120: 1109: 1103: 1100: 1085: 1069: 1054: 1043: 1037: 1034: 1019: 1007: 1003: 996: 952: 891: 870: 834: 830: 821: 776:class structure 772: 737: 715: 705: 686: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 646: 635: 630: 620: 600:class structure 587: 576: 565: 554: 550: 534: 530: 523: 519: 512: 508: 504: 500: 489: 485: 477: 470: 463: 459: 455: 451: 447: 443: 439: 435: 431: 427: 423: 416: 412: 397: 388:, are known as 374: 361: 332:opaque pointers 312: 310:The type system 303: 288: 271: 267: 256: 251:libraries like 221: 125: 57: 55: 52: 48:Initial release 28: 23: 22: 15: 12: 11: 5: 2560: 2558: 2550: 2549: 2544: 2539: 2534: 2529: 2524: 2514: 2513: 2507: 2506: 2504: 2503: 2493: 2483: 2472: 2469: 2468: 2465: 2464: 2462: 2461: 2456: 2451: 2446: 2441: 2436: 2431: 2426: 2421: 2416: 2411: 2406: 2401: 2396: 2390: 2388: 2384: 2383: 2381: 2380: 2375: 2370: 2365: 2360: 2355: 2350: 2345: 2340: 2334: 2332: 2328: 2327: 2325: 2324: 2319: 2316: 2315: 2314: 2304: 2302:SoundConverter 2299: 2294: 2289: 2284: 2279: 2274: 2269: 2263: 2261: 2257: 2256: 2254: 2253: 2248: 2243: 2238: 2233: 2228: 2223: 2218: 2213: 2208: 2203: 2197: 2195: 2191: 2190: 2188: 2187: 2182: 2177: 2172: 2167: 2162: 2157: 2152: 2147: 2141: 2139: 2135: 2134: 2132: 2131: 2126: 2121: 2116: 2111: 2106: 2100: 2098: 2094: 2093: 2091: 2090: 2085: 2080: 2075: 2069: 2064: 2059: 2053: 2051: 2044: 2036: 2035: 2033: 2032: 2027: 2022: 2017: 2012: 2007: 2001: 1999: 1993: 1992: 1990: 1989: 1984: 1978: 1976: 1970: 1969: 1967: 1966: 1960: 1958: 1952: 1951: 1949: 1948: 1942: 1940: 1934: 1933: 1931: 1930: 1929: 1928: 1920: 1919: 1918: 1913: 1908: 1903: 1898: 1893: 1888: 1883: 1878: 1873: 1863: 1858: 1852: 1850: 1844: 1843: 1840: 1839: 1836: 1835: 1833: 1832: 1829: 1824: 1819: 1814: 1809: 1804: 1799: 1794: 1789: 1784: 1779: 1773: 1771: 1765: 1764: 1762: 1761: 1756: 1750: 1748: 1735: 1731: 1730: 1728: 1727: 1722: 1717: 1712: 1707: 1702: 1697: 1692: 1687: 1685:NetworkManager 1682: 1677: 1672: 1666: 1664: 1654: 1653: 1651: 1650: 1645: 1640: 1635: 1630: 1625: 1620: 1615: 1610: 1605: 1600: 1595: 1590: 1589: 1588: 1583: 1573: 1572: 1571: 1570: 1569: 1564: 1554: 1549: 1544: 1541: 1536: 1525: 1523: 1514: 1510: 1509: 1500: 1498: 1497: 1490: 1483: 1475: 1469: 1468: 1463: 1458: 1453: 1446: 1445:External links 1443: 1440: 1439: 1415: 1391: 1380:Stack Overflow 1367: 1342: 1317: 1303: 1289: 1274: 1273: 1271: 1268: 1267: 1266: 1257:-like syntax. 1247: 1246: 1230: 1227: 1122: 1121: 1072: 1070: 1063: 1056: 1055: 1010: 1008: 1001: 995: 992: 984:shared library 890: 887: 886: 885: 869: 866: 809: 808: 801: 798: 795:virtual method 787: 771: 768: 767: 766: 762: 759: 752: 736: 733: 732: 731: 712: 709: 706:G_TYPE_POINTER 698: 695: 642: 639: 627: 619: 616: 592: 591: 580: 569: 558: 539: 538: 535:G_TYPE_POINTER 527: 516: 493: 474: 471:G_TYPE_BOOLEAN 467: 420: 373: 370: 330:types such as 311: 308: 292:shared library 287: 284: 282:applications. 220: 217: 141: 140: 123: 119: 118: 113: 107: 106: 101: 95: 94: 89: 85: 84: 82:Cross-platform 79: 73: 72: 67: 63: 62: 49: 45: 44: 39: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 2559: 2548: 2545: 2543: 2540: 2538: 2535: 2533: 2530: 2528: 2525: 2523: 2520: 2519: 2517: 2502: 2494: 2492: 2484: 2482: 2474: 2473: 2470: 2460: 2457: 2455: 2452: 2450: 2447: 2445: 2442: 2440: 2437: 2435: 2432: 2430: 2427: 2425: 2422: 2420: 2417: 2415: 2412: 2410: 2407: 2405: 2402: 2400: 2397: 2395: 2392: 2391: 2389: 2385: 2379: 2376: 2374: 2371: 2369: 2366: 2364: 2361: 2359: 2356: 2354: 2353:Gnome MPlayer 2351: 2349: 2346: 2344: 2341: 2339: 2336: 2335: 2333: 2329: 2323: 2320: 2317: 2313: 2310: 2309: 2308: 2305: 2303: 2300: 2298: 2295: 2293: 2290: 2288: 2285: 2283: 2280: 2278: 2275: 2273: 2270: 2268: 2265: 2264: 2262: 2258: 2252: 2249: 2247: 2244: 2242: 2239: 2237: 2234: 2232: 2229: 2227: 2224: 2222: 2219: 2217: 2214: 2212: 2209: 2207: 2204: 2202: 2199: 2198: 2196: 2192: 2186: 2183: 2181: 2178: 2176: 2173: 2171: 2168: 2166: 2163: 2161: 2158: 2156: 2153: 2151: 2148: 2146: 2143: 2142: 2140: 2136: 2130: 2127: 2125: 2122: 2120: 2117: 2115: 2112: 2110: 2107: 2105: 2102: 2101: 2099: 2095: 2089: 2086: 2084: 2081: 2079: 2076: 2073: 2070: 2068: 2065: 2063: 2060: 2058: 2055: 2054: 2052: 2048: 2045: 2043: 2037: 2031: 2028: 2026: 2023: 2021: 2018: 2016: 2013: 2011: 2008: 2006: 2003: 2002: 2000: 1998: 1994: 1988: 1985: 1983: 1980: 1979: 1977: 1975: 1971: 1965: 1962: 1961: 1959: 1957: 1953: 1947: 1944: 1943: 1941: 1939: 1935: 1927: 1924: 1923: 1921: 1917: 1914: 1912: 1909: 1907: 1904: 1902: 1899: 1897: 1894: 1892: 1889: 1887: 1884: 1882: 1881:Character Map 1879: 1877: 1874: 1872: 1869: 1868: 1867: 1864: 1862: 1859: 1857: 1854: 1853: 1851: 1849: 1845: 1830: 1828: 1825: 1823: 1820: 1818: 1815: 1813: 1810: 1808: 1805: 1803: 1800: 1798: 1795: 1793: 1790: 1788: 1785: 1783: 1780: 1778: 1775: 1774: 1772: 1770: 1766: 1760: 1759:GNOME Builder 1757: 1755: 1752: 1751: 1749: 1747: 1743: 1739: 1736: 1732: 1726: 1723: 1721: 1718: 1716: 1713: 1711: 1708: 1706: 1703: 1701: 1698: 1696: 1693: 1691: 1688: 1686: 1683: 1681: 1678: 1676: 1673: 1671: 1668: 1667: 1665: 1659: 1655: 1649: 1646: 1644: 1641: 1639: 1636: 1634: 1631: 1629: 1626: 1624: 1621: 1619: 1616: 1614: 1611: 1609: 1606: 1604: 1601: 1599: 1596: 1594: 1591: 1587: 1584: 1582: 1579: 1578: 1577: 1574: 1568: 1565: 1563: 1560: 1559: 1558: 1555: 1553: 1550: 1548: 1545: 1542: 1540: 1537: 1535: 1532: 1531: 1530: 1527: 1526: 1524: 1522: 1518: 1515: 1511: 1507: 1503: 1496: 1491: 1489: 1484: 1482: 1477: 1476: 1473: 1467: 1466:Vala Homepage 1464: 1462: 1459: 1457: 1454: 1452: 1449: 1448: 1444: 1429: 1425: 1419: 1416: 1405: 1401: 1395: 1392: 1381: 1377: 1371: 1368: 1356: 1352: 1346: 1343: 1331: 1327: 1321: 1318: 1313: 1307: 1304: 1299: 1293: 1290: 1285: 1279: 1276: 1269: 1264: 1260: 1256: 1252: 1249: 1248: 1244: 1233: 1228: 1225: 1220: 1217: 1213: 1209: 1205: 1201: 1196: 1192: 1187: 1184: 1180: 1176: 1172: 1171:name mangling 1167: 1162: 1160: 1154: 1152: 1148: 1144: 1139: 1137: 1133: 1129: 1118: 1115: 1107: 1104:November 2018 1097: 1093: 1089: 1083: 1082: 1078: 1073:This section 1071: 1067: 1062: 1061: 1052: 1049: 1041: 1038:December 2011 1031: 1027: 1023: 1017: 1016: 1011:This section 1009: 1000: 999: 993: 991: 989: 985: 981: 977: 976:introspection 973: 969: 964: 962: 958: 950: 945: 943: 939: 935: 931: 927: 923: 919: 915: 910: 908: 904: 901:desktop, the 900: 896: 895:free software 888: 883: 879: 875: 872: 871: 867: 865: 863: 859: 855: 851: 847: 843: 838: 827: 819: 818:encapsulation 814: 806: 802: 799: 796: 792: 788: 785: 784: 783: 781: 777: 769: 763: 760: 757: 753: 750: 749: 748: 746: 742: 734: 729: 725: 721: 713: 710: 703: 699: 696: 692: 643: 640: 628: 625: 624: 623: 618:Derived types 617: 615: 613: 609: 605: 604:virtual table 601: 597: 585: 581: 574: 570: 563: 559: 555:G_TYPE_OBJECT 548: 547: 546: 544: 528: 524:G_TYPE_STRING 517: 513:G_TYPE_DOUBLE 498: 494: 483: 475: 468: 464:G_TYPE_UINT64 421: 410: 409: 408: 406: 401: 395: 391: 387: 383: 379: 371: 369: 367: 358: 356: 352: 347: 345: 341: 337: 333: 329: 325: 321: 317: 309: 307: 301: 297: 293: 285: 283: 281: 277: 265: 260: 254: 250: 246: 242: 238: 234: 230: 226: 218: 216: 214: 210: 206: 202: 201:object system 198: 195: 191: 187: 179: 175: 171: 167: 163: 159: 156: 152: 151:GNU C Library 147: 138: 124: 120: 117: 114: 112: 108: 105: 102: 100: 96: 93: 90: 86: 83: 80: 78: 74: 71: 68: 64: 50: 46: 43: 40: 38: 34: 19: 2481:Category:GTK 2404:dconf-editor 2297:Sound Juicer 2277:PulseEffects 2226:gtk-gnutella 2170:Eye of GNOME 2042:applications 1926:dconf editor 1742:GUI designer 1705:X.Org Server 1580: 1543:ClutterActor 1431:. Retrieved 1427: 1418: 1407:. Retrieved 1403: 1394: 1383:. Retrieved 1379: 1370: 1358:. Retrieved 1354: 1345: 1333:. Retrieved 1329: 1320: 1306: 1292: 1278: 1204:encapsulated 1188: 1163: 1155: 1140: 1125: 1110: 1101: 1086:Please help 1074: 1044: 1035: 1012: 965: 946: 911: 892: 839: 825: 810: 779: 775: 773: 744: 740: 738: 636:glib-mkenums 621: 611: 607: 599: 596:instantiable 595: 593: 588:G_TYPE_PARAM 577:G_TYPE_BOXED 561: 542: 540: 509:G_TYPE_FLOAT 490:G_TYPE_FLAGS 460:G_TYPE_INT64 456:G_TYPE_ULONG 440:G_TYPE_UCHAR 404: 402: 389: 381: 375: 368:containers. 359: 348: 327: 313: 289: 276:command-line 261: 222: 189: 185: 183: 158:system calls 155:Linux kernel 92:Multilingual 88:Available in 37:Developer(s) 2010:GNOME Panel 2005:GNOME Shell 1861:GNOME Games 1856:GNOME Shell 1812:Gtranslator 1734:Development 1695:libcanberra 1638:MetaTracker 1183:object code 1132:Objective-C 972:metaobjects 930:Common Lisp 813:boilerplate 641:Boxed types 602:(a form of 571:a type for 497:IEEE floats 486:G_TYPE_ENUM 452:G_TYPE_LONG 448:G_TYPE_UINT 436:G_TYPE_CHAR 417:G_TYPE_NONE 405:non-classed 382:non-classed 380:are called 366:type-tagged 328:non-classed 316:type system 2516:Categories 2454:Wine-Doors 2424:Screenshot 2307:Quod Libet 2211:Claws Mail 2083:Dictionary 1886:Dictionary 1876:Calculator 1827:UberWriter 1715:PackageKit 1710:PulseAudio 1433:2019-11-17 1409:2019-11-16 1385:2019-11-16 1270:References 1222:See also: 1202:much more 1200:components 1179:namespaces 1175:overloaded 1149:(), C++'s 1022:improve it 949:high-level 805:superclass 724:interfaces 691:boxed type 482:bit fields 444:G_TYPE_INT 386:root class 304:libglib2.0 164:(GObject, 66:Written in 58:2002-03-11 2387:Utilities 2343:Cinelerra 2292:Rhythmbox 2267:Audacious 2150:GNU Paint 2097:Education 2088:OCRFeeder 2078:Evolution 2040:3rd-party 1680:GStreamer 1670:AppStream 1567:PyGObject 1355:gnome.org 1216:libsigc++ 1181:, but in 1159:upcasting 1075:does not 1026:verifying 694:and free. 562:interface 320:glue code 268:GtkObject 257:GtkObject 253:GStreamer 213:PyGObject 127:developer 2459:Workrave 2358:Guvcview 2338:Avidemux 2312:Ex Falso 2282:Buzztrax 2231:GNU Ring 2206:Sylpheed 2194:Internet 2180:Shotwell 2155:Inkscape 2138:Graphics 2129:Celestia 2124:Ghemical 2119:GeoGebra 2109:GCompris 2067:Gnumeric 2020:GNOME Do 1938:Cinnamon 1906:Terminal 1901:Software 1817:gPHPedit 1720:HarfBuzz 1662:(shared) 1618:GNOME-DB 1513:Platform 1335:9 August 1229:See also 1193:(called 778:and the 756:callback 751:Closures 741:closures 702:overkill 584:metadata 340:integers 209:bindings 133:/gobject 116:GNU LGPL 2501:Commons 2439:Leafpad 2429:GParted 2399:Brasero 2322:Asunder 2318:EasyTag 2272:Banshee 2241:Vinagre 2216:Empathy 2057:AbiWord 1987:LXMusic 1797:Nemiver 1792:Devhelp 1782:Builder 1700:Wayland 1690:Poppler 1648:libxml2 1643:libxslt 1633:Librsvg 1613:Keyring 1581:GObject 1360:27 July 1191:signals 1096:removed 1081:sources 1020:Please 953:GObject 854:vanilla 848:uses a 761:Signals 745:signals 722:-style 716:GObject 687:GObject 634:called 608:integer 551:GObject 543:classed 400:class. 398:GObject 378:classes 336:strings 272:GObject 219:History 192:, is a 190:GObject 174:GThread 170:GModule 149:As the 135:/stable 122:Website 111:License 56: ( 31:GObject 2449:Tomboy 2409:Diodon 2378:Pitivi 2348:Cheese 2287:Exaile 2185:F-Spot 2165:gPhoto 2160:gThumb 2104:Gramps 2072:Evince 2050:Office 1964:Thunar 1922:other 1911:Videos 1802:Poedit 1777:Anjuta 1628:Hildon 1208:glibmm 1195:events 1147:malloc 988:widget 932:, and 926:Python 791:vtable 728:mixins 652:struct 612:string 531:void * 520:char * 505:double 462:, and 362:GValue 300:Debian 280:server 129:.gnome 2444:Tilda 2434:Guake 2419:gnote 2414:gedit 2368:LiVES 2331:Video 2260:Audio 2221:Ekiga 2201:Balsa 2175:Sushi 2114:DrGeo 2074:(PDF) 2030:Phosh 2015:Docky 1896:Files 1891:Disks 1871:Boxes 1848:GNOME 1822:SciTE 1807:Geany 1725:Cairo 1675:D-Bus 1603:dconf 1562:PyGTK 1552:Pango 1212:gtkmm 980:Glade 899:GNOME 889:Usage 831:_priv 822:_priv 655:color 573:boxed 501:float 249:GNOME 241:Pango 233:GNOME 188:, or 2363:Kino 2246:Uzbl 2145:GIMP 1974:LXDE 1956:Xfce 1946:Nemo 1831:PIDA 1787:Meld 1769:IDEs 1623:GVfs 1608:Vala 1598:Orca 1593:IBus 1576:GLib 1504:and 1362:2013 1337:2020 1251:Vala 1143:GLib 1130:and 1079:any 1077:cite 961:Vala 938:Mono 934:.NET 922:Ruby 918:Java 907:GIMP 862:Java 858:GOB2 743:and 720:Java 631:enum 541:The 511:and 503:and 488:and 478:enum 432:long 424:char 413:void 342:and 296:GLib 278:and 229:libc 227:and 225:GLib 194:free 184:The 176:and 166:Glib 162:GLib 131:.org 99:Type 2547:GTK 2062:Dia 1916:Web 1746:RAD 1586:GIO 1539:ATK 1534:GDK 1529:GTK 1521:GTK 1502:GTK 1261:to 1166:ABI 1151:new 1128:C++ 1090:by 1024:by 914:C++ 903:GTK 661:int 610:or 428:int 264:GUI 259:.) 245:ATK 237:GTK 178:GIO 2518:: 1744:, 1426:. 1402:. 1378:. 1353:. 1328:. 1255:C# 1138:. 928:, 924:, 920:, 916:, 864:. 850:C# 782:. 747:. 590:). 537:). 526:); 515:); 492:); 473:); 466:); 458:, 454:, 450:, 446:, 442:, 438:, 430:, 426:, 419:); 357:. 346:. 334:, 243:, 239:, 215:. 172:, 168:, 1494:e 1487:t 1480:v 1436:. 1412:. 1388:. 1364:. 1339:. 1314:. 1300:. 1286:. 1265:. 1263:C 1210:/ 1117:) 1111:( 1106:) 1102:( 1098:. 1084:. 1051:) 1045:( 1040:) 1036:( 1018:. 936:/ 884:. 730:. 682:} 679:; 676:b 673:, 670:g 667:, 664:r 658:{ 579:) 568:) 557:) 533:( 522:( 507:( 484:( 415:( 205:C 137:/ 70:C 60:) 20:)

Index

GObject Introspection
Developer(s)
The GNOME Project
C
Operating system
Cross-platform
Multilingual
Type
Software library
License
GNU LGPL
developer.gnome.org/gobject/stable/

GNU C Library
Linux kernel
system calls
GLib
Glib
GModule
GThread
GIO
free
software library
object system
C
bindings
PyGObject
GLib
libc
GNOME

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑