gobject专题

Gobject tutorial 九

The GObject messaging system Closures closure是一个抽象、通用的概念,它包含一个函数和一些变量。作用就是实现函数回调功能。 我们看看GLib对closure是怎么定义的。 /*** GClosure:* @in_marshal: Indicates whether the closure is currently being invoked wi

Gobject tutorial 七

The GObject base class GObject是一个fundamental classed instantiatable type,它的功能如下: 内存管理构建/销毁实例set/get属性方法信号 /*** GObjectClass:* @g_type_class: the parent class* @constructor: the @constructor functio

Gobject tutorial 六

Instantiatable classed types Initialization and destruction 类型的实例化是通过函数g_tpye_create_instance()实现的。这个函数首先会查找与类型相关的GTypeInfo结构体,之后,查询结构体中的instance_size和 instance policy即 n_preallocs(在 2.10版本后废弃)。 如果正

Gobject tutorial 四

Class initialization process Initialization process of TNumberClass TNumber是abstract类型,不能直接实例化,也不能直接创建其class。但,当第一次创建其衍生类的实例时,TNumbe classr就会被初始化。 对于TNumberClass的初始化流程如下: 在应用程序main函数启动之前,GObjectCl

Gobject tutorial 三

Derivable type and abstract type Derivable type 在GLib中,类型可以分为两种。一种是可以被继承的(derivable),一种是不能被继承的(final)。二者的主要区别是,final 类型对象的类结构中,除了其父类外,再无其他成员。而derivable类型对象的类结构中会存在其他成员, 且derivable类型的类对其衍生类是可见的。对于上篇我

Gobject tutorial 二

Type system and registration process Gobject本身是一个基础对象类型。我们平常并不会直接使用。通常我们都是使用其衍生类型,比如,各种类型的GtkWidget。 本次,我们聊聊如何创建一个Gobject的衍生对象。我们的例子是实现一个表示数字的对象。尽管c语言中有int、double等类型来表示数字。然而我们的例子与他们并不冲突。对此,我们需要从更抽象的

Gobject tutorial 一

参考: https://github.com/ToshioCP/Gobject-tutorial/tree/main?tab=readme-ov-file Gobject class and instance Gobject 实例是通过函数g_object_new创建的。Gobject不仅包含实例还包含类。 Gobject的类是在第一次调用g_object_new函数时被创建的。并且对于

简单的GObject程序-入门

为了看看GObject的构造析构问题做的一个简单的程序,话不多说: 文件结构:glib_books.h glib_books.c glib_test1.c Makefile   //定义了一个books的类 //glib_books.h #ifndef _GLIB_BOOKS_H_ #define _GLIB_BOOKS_H_ #include <glib-object.h> #de