GObject参考手册(5)--不可实例和不可类化的类型:基础类型
来源:互联网 发布:阿里云服务器干嘛用的 编辑:程序博客网 时间:2024/05/17 08:38
本文引用自http://imtx.cn,原文作者:TualatriX
译者TualatriX注: GLib中的基础类型,如gchar,gint都是从char,int用typedef定义来的。但是仅仅是如此吗?
原来不是。它们还得注册在GLib的类型系统中,并由g_value来实现相关功能。现在看这些还云里雾里的,慢慢琢磨。
原文:http://library.gnome.org/devel/gobject/2.14/gtype-non-instantiable.html
在类型系统中,许多类型是不可实例化而且没有父类的。大多数这些类型是最基础的基本类型,如gchar,它由g_value_types_init注册(在gvaluetypes.c中)。
如果想在类型系统中注册这样一个类型,你仅仅需要用0来填充GTypeInfo结构。
GTypeInfo info = { 0, /* class_size */ NULL, /* base_init */ NULL, /* base_destroy */ NULL, /* class_init */ NULL, /* class_destroy */ NULL, /* class_data */ 0, /* instance_size */ 0, /* n_preallocs */ NULL, /* instance_init */ NULL, /* value_table */ }; static const GTypeValueTable value_table = { value_init_long0, /* value_init */ NULL, /* value_free */ value_copy_long0, /* value_copy */ NULL, /* value_peek_pointer */ "i", /* collect_format */ value_collect_int, /* collect_value */ "p", /* lcopy_format */ value_lcopy_char, /* lcopy_value */ }; info.value_table = &value_table; type = g_type_register_fundamental (G_TYPE_CHAR, "gchar", &info, &finfo, 0);
使用不可实例的类型似乎是无用的:定义一个不能实例化的类型有什么好处呢?大多数这种类型与GValue用作一块:一个GValue由一个整型或一个字符串来初始化,再被传递了一个已注册类型的value_table。GValue(以基本类型延伸)最有用的时候是在与对象的属性和信号用在一块时。
- GObject参考手册(5)--不可实例和不可类化的类型:基础类型
- GObject参考手册(7)--不可实例的类型:接口
- GObject参考手册(6)--可实例化的类型:对象
- GObject参考手册(3)--GLib动态类型系统
- C#类型基础----不可变类型
- python的可变类型和不可变类型
- 可变类型和不可变类型
- real类型的不可fillchar
- 不可实例化的类
- GObject参考手册(2)--概念:GObject的开发背景
- GObject参考手册(9)--GObject的内存管理
- GObject参考手册(10)--GObject的对象属性
- python类的可变类型成员和不可变类型成员的区别
- scala基础--->不可变类型操作
- GObject参考手册(8)--基类:GObject
- Java中String类型的不可变性和驻留池
- 不可变类型
- 为什么String类型是不可变的?
- 开心,笑笑,嘻嘻!!!
- GObject参考手册(3)--GLib动态类型系统
- SSD 590+直流数字驱动器手册(3)[声明:本人仅仅用来做翻译练习,同时对这个590+产品进行学习,对版权问题不承担责任]
- GObject参考手册(4)--GLib的一些规范
- 备份与恢复数据库的存储过程
- GObject参考手册(5)--不可实例和不可类化的类型:基础类型
- GObject参考手册(6)--可实例化的类型:对象
- port linux kernel ntfs 2 eCos[3]
- javascript实现checkbox,多选 : 最多可选 2 项
- 飞鸽中100 Continue的解决办法
- 10个你闻所未闻的奇趣网站
- javascript中的style对象
- jboss 4.2.x下面部署seam examples(seam起步)
- [C++ ] MFC 中 另类的 控制编辑框 字符方法~!