[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

 

有兴趣者可以在这里下载

 

 

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

相关文章推荐

Android Open Source:陌陌(momo)源代码及实现(大部分UI+功能)

 Android Open Source:陌陌(momo)源代码及实现(大部分UI+功能) 这是一个Android开源代码实现了陌陌的大部分ui及ui相关的事件操作及功能,代码运行结果如图所示...

Android studio 下使用 StaggeredGridView open source plug (11.26)

StaggeredGridView 详解 在网上 阅读了大量的Android studio 下怎么引用Library 结果都在我的项目中没有把这个StaggeredGridVie...

IntelliJ IDEA :decompiled.class file bytecode version:52.0(java 8) ,open source file.

引入第三方jar包或者查看Java源码的时候,经常遇到问题如下: decompiled.class file bytecode version:52.0(java 8) ,   open source...

How to Contribute to Open Source Projects

转载至:http://drdobbs.com/open-source/231000080Brian Behlendorf, the founder of the Apache Web Server p...
  • RFC2008
  • RFC2008
  • 2011年07月05日 13:20
  • 408

iphone Apps of open source

参考 [1]http://maniacdev.com/2010/06/35-open-source-iphone-app-store-apps-updated-with-10-new-apps/ ...

30 Great Open Source Mac Apps

An open source application is a piece of software for which the source code is available and in the ...
  • yuanya
  • yuanya
  • 2014年03月15日 15:46
  • 761

Hackers and the Open Source Revolution

Hackers and the Open Source Revolution By Vivek Shangari on February 25, 2012 in Blogs, Devel...
  • xkfz008
  • xkfz008
  • 2012年05月08日 11:36
  • 956

Compact Framework 上的 Open Source UI Library

1. XrossOne Mobile GDI+     2. AlphaMobileControls  3. Silvermoon [Demo 影片]   4. Composite UI Framew...

收集的一些android open source app

1.  10 Open Source Android Apps which every Android developer must look into  http://sudarmuthu.com...

从开源界发现的商机——What Business Can Learn from Open Source

越来越多的公司将目光聚焦到开源界。20年前微软差点就在服务器领域横扫天下,开源社区阻止了这一切的发生。目前大部分的互联网服务都是基于开源的Linux系统。如果你要坚持使用Windows系统,需要向公司...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[open source]gclassfactory 发布
举报原因:
原因补充:

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