通过setval 可以为属性添加单个值;而setvale则为属性添加多个值。
每个属性有自己名字,ID号,数据类型,读写权限,回调函数。而这些则维护在QTSSDictionaryMap中。
在QTSSDictionaryMap中,存放了QTSSAttrInfoDict** fAttrArray,靠这个数组来维护前面说的每个属性。
而QTSSAttrInfoDict又派生于QTSSDictionary,所以他们是属性的属性。
在QTSSDictionary中总有一个指向QTSSDictionaryMap的指针,来维护QTSSDictionary中的每一个属性的“名字,ID号,数据类型,读写权限,回调函数”。
切记:QTSSDictionary中才存有真正的属性,每一个属性可以有一个或多个值。而在QTSSDictionaryMap中对应的fAttrArray[QTSS_AttributeID]中维护的是属性的属性。包含了属性的“名字,ID号,数据类型,读写权限,回调函数”。
sDictionaryMaps[kModuleDictIndex] = new QTSSDictionaryMap(qtssModNumParams);
所有的QTSS_Object其实都是void*指针,来指向派生于QTSSDictionary的实例化对象。
typedef void* QTSS_Object;
typedef QTSS_Object QTSS_RTPStreamObject;
typedef QTSS_Object QTSS_RTSPSessionObject;
typedef QTSS_Object QTSS_RTSPRequestObject;
typedef QTSS_Object QTSS_RTSPHeaderObject;
typedef QTSS_Object QTSS_ClientSessionObject;
typedef QTSS_Object QTSS_ServerObject;
typedef QTSS_Object QTSS_PrefsObject;
typedef QTSS_Object QTSS_TextMessagesObject;
typedef QTSS_Object QTSS_FileObject;
typedef QTSS_Object QTSS_ModuleObject;
typedef QTSS_Object QTSS_ModulePrefsObject;
typedef QTSS_Object QTSS_AttrInfoObject;
typedef QTSS_Object QTSS_UserProfileObject;
typedef QTSS_Object QTSS_ConnectedUserObject;