GObject
GLib Object System,也叫GObject,是一个免费的库(由LGPL授权)。它提供了一个可移植的对象系统,清晰的跨语言互用性。GObject被设计成既可以直接在C语言中使用,也可以通过绑定,用于其它语言。
历史
GObject只依赖于GLib和libc,它是GNOME的基石,被广泛应用于GTK+,Pango,Accessibility Toolkit及大多数高层次GNOME库和应用程序。在GTK+2.0 之前,GObject代码是GTK+代码的一部分。(名字“GObject ” 当时还未使用——共同的基类叫GtkObject)
由于它的通用性,GTK+2.0把这个对象系统给抽取成一个分离的库。 再这个过程中,GtkObject内和GUI无关的部分被移到GObject中,GObject成为新的共同基类。自从2002年3月11日(GTK+2.0发布),GObject作为一个分离开的库已经被很多非GUI的程序所使用,例如命令行和server应用程序。
和Gilb的关系
尽管GObject有它自己的文档集,并且通常被编译成它自己的共享文件,但是GObject的源代码位于GLib的源代码树,并且和GLib一起发布。因此,GObject采用GLib的版本号,典型地和Glib打包在一起(例如,Debian把GObject放在libglib2.0包族)。
类型系统
GObject框架最基础的一层是一个叫做GType的泛化的动态的类型系统。GType系统保存着所有对象的运行时描述符,这样可以利用“胶水”代码便于多语言绑定。这个类型系统可以处理任何单继承类结构,附加地也可以处理