====== XGroup ====== **//Inherited from//** [[class::domain::nitem|NItem]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XGroup从NItem继承,是封装了特定类型的对象集合的数据及其方法的工具类,它的类型标识为"CGROUP"。 XGroup为特定类型的对象集合构建一个带有名字属性的身份ID哈希表,特定类型有域类型、集合类型一起指定,特别的,对于来自模型的对象,域类型为模型的ID。 基于XHash构建的身份ID哈希表可以快速判断某个对象是否在该对象集合里,它提供的访问迭代方法和XManager一起使用可以高效的访问集合内的对象。 **//Members//** * int [[xgroup#m_idomain|m_iDomain]] * int [[xgroup#m_igrptype|m_iGrpType]] * RGBAColor [[xgroup#m_color|m_Color]] * IDHash * [[xgroup#m_pitems|m_pItems]] **//Public interface//** * [[xgroup#xgroup1|XGroup]](ulong id, XMemPool * hashpool) * [[xgroup#~xgroup|~XGroup]]() * void [[xgroup#clear|clear]]() * void [[xgroup#setgrouptype|setGroupType]](TypeID type) * TypeID [[xgroup#getgrouptype|getGroupType]]() const * void [[xgroup#setdomainid|setDomainID]](DomainID type) * int [[xgroup#getdomainid|getDomainID]]() const * void [[xgroup#insertitem|insertItem]](ulong id) * void [[xgroup#removeitem|removeItem]](ulong id) * bool [[xgroup#hasitem|hasItem]](ulong id) const * int [[xgroup#getitemcount|getItemCount]]() const * bool [[xgroup#getmodeltargets|getModelTargets]](XModel * mdl, vector * tars) const * void [[xgroup#convertfacettoelements|convertFacetToElements]](XManager * elemFacetMgr) * void [[xgroup#binditemiterator|bindItemIterator]](IDIterator * iter) const * void [[xgroup#settargets|setTargets]](vector * tars) * void [[xgroup#settargets|setTargets]](vector * tars) * virtual void [[xgroup#write|write]](XBinaryIO * io) * virtual ErrorCode [[xgroup#read|read]](XBinaryIO * io) * RGBAColor [[xgroup#getcolor|getColor]]() const * void [[xgroup#setcolor|setColor]](RGBAColor c) ---- {{anchor:m_idomain}} **int m_iDomain** 集合域类型 {{anchor:m_igrptype}} **int m_iGrpType** 集合对象类型 {{anchor:m_color}} **RGBAColor m_Color** 集合颜色 {{anchor:m_pitems}} **IDHash * m_pItems** 对象ID哈希表 ---- {{anchor:xgroup1}} **XGroup(ulong id, XMemPool * hashpool)** *function: *parameters: - [i]ulong id: 构造函数 - [i] XMemPool * hashpool: 内存池 *return value: 无 {{anchor:~xgroup}} **~XGroup()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:clear}} **void clear()** *function: 清空对象集合 *parameters: NULL *return value: 无 {{anchor:setgrouptype}} **void setGroupType(TypeID type)** *function: 设置集合对象类型 *parameters: - [i]TypeID type: 集合对象类型 *return value: 无 {{anchor:getgrouptype}} **TypeID getGroupType() const** *function: 获取集合对象类型 *parameters: NULL *return value: 集合对象类型 {{anchor:setdomainid}} **void setDomainID(DomainID type)** *function: 设置域类型 *parameters: - [i]DomainID type: 域类型 *return value: 无 {{anchor:getdomainid}} **int getDomainID() const** *function: 获取集合域类型 *parameters: NULL *return value: 集合域类型 {{anchor:insertitem}} **void insertItem(ulong id)** *function: 插入对象 *parameters: - [i]ulong id: 对象ID *return value: 无 {{anchor:removeitem}} **void removeItem(ulong id)** *function: 删除对象 *parameters: - [i]ulong id: 对象ID *return value: 无 {{anchor:hasitem}} **bool hasItem(ulong id) const** *function: 校验集合是否包含对象 *parameters: - [i]ulong id: 对象ID *return value: 无 {{anchor:getitemcount}} **int getItemCount() const** *function: 获取集合内对象的个数 *parameters: NULL *return value: 无 {{anchor:getmodeltargets}} **bool getModelTargets(XModel * mdl, vector * tars) const** *function: 在该集合为模型内的对象集合时,从集合对象ID获取指定模型内的对象指针数组 *parameters: - [i]XModel * mdl: 模型 - [i] vector * tars: 模型内的对象指针数组 *return value: 成功获取返回true,否则返回false {{anchor:convertfacettoelements}} **void convertFacetToElements(XManager * elemFacetMgr)** *function: 将单元面对象(XElementFacet)转换为面单元 *parameters: - [i]XManager * elemFacetMgr: 单元面对象管理器 *return value: 无 {{anchor:binditemiterator}} **void bindItemIterator(IDIterator * iter) const** *function: 绑定对象ID迭代访问器 *parameters: - [i]IDIterator * iter: 对象ID迭代访问器 *return value: 无 {{anchor:settargets}} **void setTargets(vector * tars)** *function: 从XUniqueObjectID数组设置集合内的对象(一般用于从XPicker中直接设定集合对象) *parameters: - [i]vector * tars: XUniqueObjectID对象标识数组 *return value: 无 {{anchor:settargets}} **void setTargets(vector * tars)** *function: 从XUniqueObjectID数组设置集合内的对象(一般用于从XPicker中直接设定集合对象) *parameters: - [i]vector * tars: XUniqueObjectID对象标识数组 *return value: 无 {{anchor:write}} **virtual void write(XBinaryIO * io)** *function: 将对象数据写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 无 {{anchor:read}} **virtual ErrorCode read(XBinaryIO * io)** *function: 从二进制文件中读取对象数据 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 如成功读取返回Error_None, 否则返回相应错误码 {{anchor:getcolor}} **RGBAColor getColor() const** *function: 获取颜色 *parameters: NULL *return value: 集合颜色 {{anchor:setcolor}} **void setColor(RGBAColor c)** *function: 设置集合颜色(在面集中使用) *parameters: - [i]RGBAColor c: 集合颜色 *return value: 无