[open source]gclassfactory 发布

原创 2006年05月22日 21:11:00

gclassfactory发布

 

转载时请注明出处:http://blog.csdn.net/absurd/

 

gclassfactory是一个代码产生器,根据类的描述信息产生gobject代码,思想源于D-BUSdbus-binding-tool-glib,有少量代码也源于此。之所以要开发gclassfactory,主要原因有:

 

1.         Glib无疑设计得很精致,但要写一个gobject子类却比较累,要定义一大堆宏、要安装属性、要创建signal等等,完全是体力活。单调重复必有规律可循,有规律可循就可自动产生,这是我一贯的思路。

2.         尽管接触glib有几个月了,但有些部分仍然理解得不够透彻,使用得也不够熟练。写gclassfactory目的之一,就是利用glib这一套来做个实际的东西,以便加深对glib的理解。

3.         这段时间在研究ORM。我希望到时候,ORM的代码可以自动产生出来,所以先写一个研究性的代码产生器,了解其中可能存在的问题,ORM代码产生器可以在此基础上扩展。

4.         autoconf配置软件包。以前只是用autoconf去配置编译别人的软件包,没有在自己的软件包使用autoconf,所以借此契机学习一下autoconf

 

gclassfactory像大多数代码产生器一样,基本模式是管道-过滤器(Pipe-filter),从类的描述文件到中间表示,再到实际产生的代码。为了便于扩展,gclassfactory完全是插件式设计的,框架部分只有少量代码,其它绝大部分功能都通过插件扩展,由于时间所限只实现了几个简单的扩展:

 

1.         不限制类的描述信息格式。可以是XML格式的,可以是IDL格式,也可以是其它任何格式的。每种文件格式对应一个插件共享库,在运行时通过命令行参数指定,这个插件共享库的功能就是把文件读到内存中,用中间格式表示出来。这类插件称为loader,要求实现loader接口。目前只实现了XML格式的。

2.         不限制产生的代码。你可以用它产生gobject子类的代码,可以用它来产生测试程序,也可以用它来产生ORM的代码。每种代码产生器都是一个插件。在运行时通过命令行参数指定,这个插件共享库的功能就是把中间格式转换成目标格式(即产生的代码)。这类插件称为coder,要求实现coder接口。目前只实现了gobject子类代码产生器。

 

由于完全是利用周末时间写的,已经占去两个周末了。没有时间花太多精力在上面,代码仍然有些粗糙,没办法,暂时先告一个段落吧,等到写O/RM时再优化。

 

 

修改历史:

2006-5-6 0.1 创建

2006-5-18 0.2

a)         增加产生注释的功能,注释的格式为gtk-doc格式。

b)        允许定制文件头的内容。

c)        修改了一些BUG

2006-5-24 0.3修改了一些BUG

2006-5-28 0.4 修改了一些BUG。这段时间开发桌面模块,用它产生了十几个类,在使用过程对它不断完善,目前gclassfactory仍然有些缺陷,但基本上可用吧。

2006-8-24 0.5 修改一个关于signalBUG

2006-8-27 0.6 修改一个关于disposeBUG

 

有兴趣者可以在这里下载

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

[open source] skinbuilder发布

[open source] skinbuilder发布 转载时请注明出处:http://blog.csdn.net/absurd 前段时间我们介绍了matchbox-nest模拟器,该模拟器要求提供一...
  • absurd
  • absurd
  • 2006年09月13日 22:37
  • 5639

[open source]Dotdesktop 发布

Dotdesktop发布 转载时请注明出处:http://blog.csdn.net/absurd.desktop是linux桌面环境下一种配置文件,它的详细说明可以参考http://standard...
  • absurd
  • absurd
  • 2006年05月22日 21:38
  • 2126

[open source] xmlconfig发布

[open source] xmlconfig发布 转载时请注明出处:http://blog.csdn.net/absurd xmlconfig是一个读取XML 格式配置文件的库。它的优点是接口简单,...
  • absurd
  • absurd
  • 2006年08月09日 21:55
  • 2657

[open source] cilc发布

[open source] cilc发布 转载时请注明出处:http://blog.csdn.net/absurd 很早以前打算写一个小工具去产生封装AT Command的代码,但是由于自己对AT C...
  • absurd
  • absurd
  • 2006年08月09日 22:08
  • 2578

什么是开源软件(Open source software)

开源软件(Open source software) 开源软件(英文全称:Open source software,英文缩写:OSS,中文全称:开放源代码软件)是一种源代码可以任意获取的计算机软...
  • adparking
  • adparking
  • 2012年02月09日 11:34
  • 2394

【Note2】用keil对工程编译时,工程中已经包含的文件会报错:cannot open source input file usb_conf.h No such file or directory

错误举例: ..\..\Libraries\STM32_USB-FS-Device_Driver\inc\usb_type.h(21): error:  #5: cannot open source ...
  • kobesdu
  • kobesdu
  • 2014年08月01日 15:15
  • 14983

iar7.3建立工程报错:cannot open the source file "XXXxxx.h

当确定头文件等设置都没有问题的时候,可以试一试下面的方法去解决,我亲身体验完美通过: 方法一. STM32工程 从IAR6.0 转到 IAR6.3 用IAR6.3打开IAR6.0 的工程,编译的...
  • xiaoxiongli
  • xiaoxiongli
  • 2015年11月03日 17:57
  • 4183

Android Open Source Project Analysisx

Android Open Source Project Analysis作者: 郭孝星 邮箱: guoxiaoxingse@163.com 博客: https://guoxiaoxing.gith...
  • AllenWells
  • AllenWells
  • 2017年03月09日 17:14
  • 678

VS2012出现“cannot open source file "iostream"”

1、创建或打开一个控制台应用 2、点击“Property Manager”--->右击“Debug|Win32” ---->点击“Property”----->点击“VC++ Directories...
  • lj695242104
  • lj695242104
  • 2013年11月27日 14:05
  • 4522

VS2013: Intellisense cannot open source file “*.h”

We need to change the below settings: VC++ directories->Include Directories: $(VCInstallDir)includ...
  • huangkangying
  • huangkangying
  • 2016年02月05日 14:32
  • 2055
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[open source]gclassfactory 发布
举报原因:
原因补充:

(最多只允许输入30个字)