[新闻] dxpcom v0.1 发布
h_rain
2007-04-21
XULRunner的release有1.8.1.3了,dxpcom转换的还是1.8.0.4的版本吗?
|
|
qiezi
2007-04-22
是的,接口部分应该没什么变化吧,有时间可以比较一下。
目前我想除了BUG修复以外,暂停增加新的功能,用点时间看能不能重新写一个idl转换器。 |
|
qiezi
2007-04-22
刚刚作了些修改,把xulrunner里面1080个public的idl都导过来了,原来只有190多个。
也修正了xpidl转换工具的一些小BUG,比如: struct XXX xxx 在D里面不需要struct这个关键字。 const char* const * 和const char** const *这种C++特有的东西,转换成char**和char***就可以了。 一些关键字冲突,比如version/scope,转换时在后面加一个下划线。 目前D直接转换过来返回值风格的测试编译都可以通过,除了nsISelection2以外,这个是给C++用的,它使用了nsCOMArray泛型类,可以把这个文件删除,也可以实现一个D版本的nsCOMArray,用struct和它保持二进制就可以了,有空不妨看看这个~~ 所以目前能正常工作的应该只是返回值风格的接口,不过也有1000多个了,足够写点例子出来。异常风格的我还需要修改xpidl,否则手工参与的工作量太大。 暂缓发布新版本吧,准备下周,一周时间来处理异常风格。虽然跳票了,不过新增加的资源可是比0.1版本的多了好几倍,svn提交了好半天呢还没完成。最重要的,目前代码库里的返回值风格代码是用修改过的xpidl工具自动生成的,完全没有手工修正。 xpidl还有一些要增加的功能,比如生成时指定模块路径,现在生成的mozilla.xpcom是写死在代码里的。做这个功能有点麻烦,就是不同的库在一起时,使用不同的模块路径,如果让它自动判断? |
|
qiezi
2007-04-22
狂晕~十几分钟svn还没完成。。
|
|
qiezi
2007-04-22
我去弄个1.8.1.3看看有没有什么变化。
|
|
qiezi
2007-04-22
竟然没拷完整,还有500多个没弄上来,现在一起再上传~~现在idl文件总数是1341个。
|
|
qiezi
2007-04-22
src/mozilla/xpcom/nsISelection2.d
src/mozilla/xpcom/nsINavBookmarksService.d src/mozilla/xpcom/nsIAnnotationService.d 这3个文件是C++才有的,所以里面用了一些模板类。 |
|
qiezi
2007-04-22
nsIDOM*依旧是有严重的依赖问题,我不打算再手工去处理了,昨天处理了好几个小时。准备看看如何解决它。
|
|
qiezi
2007-04-22
想到个取巧的办法。C++由于是预编译来包含文件,所以它把所有可能用到的DOM方面的idl都在domstubs.idl里面包含了,D里面这种办法就不行了。
可以把所有的import写在domstubs.d里面,和现在生成的代码一样,不生成module声明。然后在各个文件里import domstubs的地方改成mixin(import("domstubs.d"))就可以了,只要处理一下-J参数。 |
|
h_rain
2007-04-22
呵呵,蛮复杂了。
刚得闲,报到。 |