元对象系统的整体结构分析
2010-12-04 18:06
357 查看
注:此文是从我的QQ空间里移出来的,因为觉的用那么多空间,blog了太累了,它发表于 2009年12月31日 13:58
-----------------------------------------------------------------------------------------------------------------------------------------------------
本文转自:我朋友的QQ空间,如需要转载,请注明本地址
元对象系统的整体结构分析
忙了一天了,终于有时间清静下来,可以做下自己的事情了。今天继续分析我们的元对象系统。
今天的入手点还是在qmetaobject.h文件,昨天看到了QMetaMethod类,总的来说,该类就是提供了一种新的函数调用方法,至于其中的具体实现,在今后的分析中继续研究了。接下来是QMetaEnum类,该类的主要功能是将元对象系统中的名字与id相对应。QMetaProperty类则是负责属性部分,QMetaClassInfo保存了类信息。QMetaObjectPrivate类则是真正负责系统核心实现的部分。
分析,从QMetaObjectPrivate类的定义开始:
int revision;
int className;
int classInfoCount, classInfoData;
int methodCount, methodData;
int propertyCount, propertyData;
int enumeratorCount, enumeratorData;
int constructorCount, constructorData; //since revision 2
int flags; //since revision 3
int signalCount; //since revision 4
QMetaObjectPrivate类定义了struct类型,这样,所有变量都是公用的,我们先从字面上猜测一下其含义:
int revision;这个单词是修订的意思,具体含义不是很明白;
int className;这个很明显了,保存了对应类的类名,
int classInfoCount, classInfoData;这两个应该是保存类相关信息的,可能会与元对象编译器生成的那个文件中一开始的结构体相关。
int methodCount, methodData;同上
int propertyCount, propertyData; 同上
int enumeratorCount, enumeratorData; 同上
int constructorCount, constructorData; //since revision 2同上
int flags; //since revision 3
int signalCount; //since revision 4
结合这里,我想就比较清楚了:
static const uint qt_meta_data_MainWindow[] = {
// content:
4, // revision
0, // classname
0, 0, // classinfo
4, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
2, // signalCount
// signals: signature, parameters, type, tag, flags
12, 11, 11, 11, 0x05,
20, 11, 11, 11, 0x05,
// slots: signature, parameters, type, tag, flags
25, 11, 11, 11, 0x09,
38, 11, 11, 11, 0x09,
0 // eod
};
好了,今天就只能分析到这里了,电池没电了,也太累了,需要休息,明天继续。
-----------------------------------------------------------------------------------------------------------------------------------------------------
本文转自:我朋友的QQ空间,如需要转载,请注明本地址
元对象系统的整体结构分析
忙了一天了,终于有时间清静下来,可以做下自己的事情了。今天继续分析我们的元对象系统。
今天的入手点还是在qmetaobject.h文件,昨天看到了QMetaMethod类,总的来说,该类就是提供了一种新的函数调用方法,至于其中的具体实现,在今后的分析中继续研究了。接下来是QMetaEnum类,该类的主要功能是将元对象系统中的名字与id相对应。QMetaProperty类则是负责属性部分,QMetaClassInfo保存了类信息。QMetaObjectPrivate类则是真正负责系统核心实现的部分。
分析,从QMetaObjectPrivate类的定义开始:
int revision;
int className;
int classInfoCount, classInfoData;
int methodCount, methodData;
int propertyCount, propertyData;
int enumeratorCount, enumeratorData;
int constructorCount, constructorData; //since revision 2
int flags; //since revision 3
int signalCount; //since revision 4
QMetaObjectPrivate类定义了struct类型,这样,所有变量都是公用的,我们先从字面上猜测一下其含义:
int revision;这个单词是修订的意思,具体含义不是很明白;
int className;这个很明显了,保存了对应类的类名,
int classInfoCount, classInfoData;这两个应该是保存类相关信息的,可能会与元对象编译器生成的那个文件中一开始的结构体相关。
int methodCount, methodData;同上
int propertyCount, propertyData; 同上
int enumeratorCount, enumeratorData; 同上
int constructorCount, constructorData; //since revision 2同上
int flags; //since revision 3
int signalCount; //since revision 4
结合这里,我想就比较清楚了:
static const uint qt_meta_data_MainWindow[] = {
// content:
4, // revision
0, // classname
0, 0, // classinfo
4, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
2, // signalCount
// signals: signature, parameters, type, tag, flags
12, 11, 11, 11, 0x05,
20, 11, 11, 11, 0x05,
// slots: signature, parameters, type, tag, flags
25, 11, 11, 11, 0x09,
38, 11, 11, 11, 0x09,
0 // eod
};
好了,今天就只能分析到这里了,电池没电了,也太累了,需要休息,明天继续。
相关文章推荐
- 元对象系统的整体结构分析(续三)
- 元对象系统的整体结构分析(续二)
- 元对象系统的整体结构分析(续一)
- 面向对象系统分析设计过程-整体思路
- ext2文件系统结构分析
- 内核poll和select系统调用的图解(1)-poll系统调用的整体结构图
- LevelDB场景分析1--整体结构分析
- 安全隐患分析和基本系统结构信息的收集
- Android 制定的ROM包(文件系统根目录结构分析)
- 网络爬虫系统Heritrix的结构分析
- Android系统层次结构及分析
- [译]OOSE第4章:面向对象系统的研发 4.3 面向对象的分析
- 面向对象技术之系统分析—状态图
- 分析Ext2文件系统结构。
- 深入分析ADO.NET中的DataSet对象的结构以及操作方法
- 面向对象系统设计与分析专题<5>__用例模型
- 2 (phonegap源码分析)整体结构
- 【双目视觉探索路6】整体代码结构分析与作业完成(未完待续)
- MediaInfo源代码分析 1:整体结构