gnome glib gobject
ze_zhang
Linux 平台下开发者
展开
-
使用C语言进行面向对象的开发--GObject入门[1]
C语言是简单的,因为它本身并没有什么特别的内容,标准C并没有提供多少函数(其实一般用不到的提供了很多),也没有提供面向对象的机制,但也正因此使得要用C编写“美丽”的程序变得复杂起来。复杂的原因其实很简单,一切的一切都要我们自己去实现。最近这段时间集中攻了下GObject,虽然只是会了些皮毛,但还是要寥寥写上几句,省着以后忘记了,又要从头整,毕竟GObject的学习是件令人头转载 2010-05-04 19:42:00 · 361 阅读 · 0 评论 -
D-Bus学习(四):基础小例子(同步和异步)
从Tutorial中学习基本概念后,进入实战阶段,通过学习,我们给出连个小例子,同步例子和异步例子。类型和GType的映射 在D-Bus编程中,基础类型和GType的映射表格如下。在后面的程序小例子中我们会看到具体如何对应。D-Bus basic typeGTypeFree functionNotesBYTEG_TYPE_BOO原创 2010-05-18 14:29:00 · 407 阅读 · 0 评论 -
D-Bus学习(一):总体介绍
D-Bus的方式在移动手机操作系统中非常重要,包括Maemo,Moblin等以Linux为基础的操作系统。估计Andriod也大量使用。D-Bus的相关学习资料见:http://www.freedesktop.org/wiki/Software/dbus ,在网上也有大量的学习资料,在http://blog.chinaunix.net/u3/111961/ 中有不少的中文资料,收集了很多网络资原创 2010-05-18 11:11:00 · 345 阅读 · 0 评论 -
D-Bus学习(六):Method的收发小例子
我们继续学习D-Bus,参考http://dbus.freedesktop.org/doc/dbus/libdbus-tutorial.html ,相关的API接口reference参考http://dbus.freedesktop.org/doc/dbus/api/html/modules.html 。从底层,即libdbus学习如何发送Method以及如何等待应答,在上上次学习中,给出了同转载 2010-05-18 16:19:00 · 480 阅读 · 0 评论 -
D-Bus学习(五):Signal的收发小例子
我们继续学习D-Bus,参考http://dbus.freedesktop.org/doc/dbus/libdbus-tutorial.html ,从底层,即libdbus学习如何发送signal,以及如何监听signal。signal在D-Bus的Daemon中广播,为了提高效率,只发送给向daemon注册要求该singal的对象。 这个图我画了很久,我希望原创 2010-05-18 15:18:00 · 404 阅读 · 0 评论 -
D-Bus学习(三):消息
消息通过D-Bus在进程间传递。有四类消息:一、Method call消息:将触发对象的一个method 二、Method return消息:触发的方法返回的结果 三、Error消息:触发的方法返回一个异常 四、Signal消息:通知,可以看作为事件消息。 一个消息有消息头header,里面有field,有一个消息体body,里面有参数arguments。消息头包含消息原创 2010-05-18 14:12:00 · 378 阅读 · 0 评论 -
D-Bus学习(二):基本概念
原生对象和对象路径 所有使用D-BUS的应用程序都包含一些对象, 当经由一个D-BUS连接收到一条消息时,该消息是被发往一个对象而不是整个应用程序。在开发中程序框架定义着这样的对象,例如JAVA,GObject,QObject等等,在D-Bus中成为native object。 对于底层的D-Bus协议,即libdbus API,并不理会这些native ob原创 2010-05-18 11:37:00 · 413 阅读 · 0 评论 -
浅析GLib
GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。GLib需要一个支持线程的转载 2010-05-08 11:15:00 · 288 阅读 · 0 评论 -
GObject对象系统 (3)
信号的定义和应用 在GObject系统中,信号是一种定制对象行为的手段,同时也是一种多种用途的通知机制。初学者可能是在GTK+中首先接触到信号这一概念的,事实上在普通的字符界面编程中也可以正常应用,这可能是很多初学者未曾想到的。一个对象可以没有信号,也可以有多个信号。当有一或多个信号时,信号的名称定义是必不可少的,此时C语言的枚举类型的功能就凸显出来了,用LAST_SIGNAL转载 2010-05-08 10:17:00 · 438 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[4]
Part 4 接上文.前面定义了几个结构,我们可以把那些东西放在一个jc_boy.h文件中,下面开始介绍如何去实现这个BOY类,也就是要放在jc_boy.c中的部分。对于GObject而言,有了实例结构,有了类结构,自然要有如何初始化的函数,毕竟这是C语言吗,没有那么方便的事儿。相应的,对应于jc_boy,要定义jc_boy_init和jc_boy_class_init两个转载 2010-05-05 08:32:00 · 392 阅读 · 0 评论 -
GObject对象系统 (2)
对象的实现下面的代码实现了上面的Boy对象的定义: /* boy.c */#include "boy.h"enum { BOY_BORN, LAST_SIGNAL };static gint boy_signals[LAST_SIGNAL] = { 0 };static void boy_cry (void);static void boy_b转载 2010-05-05 11:38:00 · 458 阅读 · 0 评论 -
GObject对象系统 (1)
简单的说,GObject对象系统是一个建立在GLIB基础上的,用C语言完成的,具有跨平台特色的、灵活的、可扩展的、非常容易映射到其它语言的面向对象的框架。如果你是一个C语言的执着的追随者,你没有理由不研究一下它。 前言大多数现代的计算机语言都带有自己的类型和对象系统,并附带算法结构。正象GLib提供的基本类型和算法结构(如链表、哈希表等)一样,GObject的对象转载 2010-05-05 09:40:00 · 340 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[5]
接上文 这一部分简要介绍下类的析构,或者成为终结。 还是多说几句,也算是对前文的补充 1.生成一个类是由父到子,析构的时候自然与之相对是由子到父。 2.GObject的内存管理并没有采用垃圾回收的方式【JAVA就采用此方式】,而是采用了引用计数的方式。 具体垃圾回收是怎么回事儿,本人还不清楚,所以就不提了。引用计数还了解一些, 但也不是此处的重点【哎,又写了点废转载 2010-05-05 09:04:00 · 511 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[3]
Part 3 终于要谈正题了,如何使用GObject去构建一个所谓的“对象”呢?其实是一件简单但却痛苦的事情。 在罗列代码之前,还是要啰嗦两句。GObject中每个类要定义两个结构体,假设你要定义的类型为People,那么你要定义两个结构分别名为People和PeopleClass,估计刚接触的人会有些晕,一般的C++啊,JAVA什么的都是直接一个cla原创 2010-05-04 20:04:00 · 516 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[2]
PART 2.在正式开始GObject的学习之前,还要简单提一下大名鼎鼎的建立在GObject系统之上的桌面图形库Gtk,先来个最简单的程序看看。#include int main( int argc, char *argv[]){GtkWidget *window; gtk_init(&argc, &argv); window = gtk_windo原创 2010-05-04 19:57:00 · 383 阅读 · 0 评论 -
dbus example
我们继续学习D-Bus,参考http://dbus.freedesktop.org/doc/dbus/libdbus-tutorial.html ,相关的API接口reference参考http://dbus.freedesktop.org/doc/dbus/api/html/modules.html 。从底层,即libdbus学习如何发送Method以及如何等待应答,在上上次学习中,转载 2010-05-19 19:15:00 · 1209 阅读 · 0 评论