====== OrderItem ====== **//Inherited from//** [[class::domain::xitem|XItem]], **//Inherited by//** NULL **//Friend class//** XManager, **//Description//** OrderItem是一种顺序对象,它为主从关系对象的从对象(Slave Object)提供了统一的基类,主从关系对象是XT数据框架约定的一种特定关系,在该约定中,对于每一个从对象最多属于一个主对象(也可以为空),比如,一个单元最多属于一个几何实体。为了保证在主对象中遍历从对象的顺序一定(如果顺序不一定,由于计算机的截断误差等将无法保证涉及该主从对象的算法结果保持一致),从对象必须保证一定的顺序关系(Order),它通过存储对象的前后相邻对象来保证这一顺序关系,而主对象也会存储首尾从对象(通过[[class::domain::ordercontainer|OrderContainer]]实现)。这样的数据结构设计虽然使用了多余的空间用来保存相邻对象以及主对象的引用,但主对象也不需要用单独的数组等数据结构来保存子对象的引用,能够充分利用内存池的特点,总体上内存的使用更加合理;同时,顺序访问和随机访问(通过对象管理器的接口)的性能都可以得到最大程度的优化,对主从关系对象的修改(比如删除、添加)也更加简洁、方便。 **//Members//** * const OrderItem * [[orderitem#m_pprev|m_pPrev]] * const OrderItem * [[orderitem#m_pnext|m_pNext]] * const XItem * [[orderitem#m_pmaster|m_pMaster]] **//Public interface//** * [[orderitem#orderitem1|OrderItem]](ulong id = 0, TypeID tid = 0) * void [[orderitem#setprev|setPrev]](const OrderItem * el) * void [[orderitem#setnext|setNext]](const OrderItem * el) * const OrderItem * [[orderitem#next|next]]() const * const OrderItem * [[orderitem#prev|prev]]() const * void [[orderitem#cut|cut]]() * void [[orderitem#setmaster|setMaster]](const XItem * el) * const XItem * [[orderitem#getmaster|getMaster]]() const * void [[orderitem#setprevnextid|setPrevNextID]](int prevID, int nextID) ---- {{anchor:m_pprev}} **const OrderItem * m_pPrev** 前相邻对象 {{anchor:m_pnext}} **const OrderItem * m_pNext** 后相邻对象 {{anchor:m_pmaster}} **const XItem * m_pMaster** 所属主对象 ---- {{anchor:orderitem1}} **OrderItem(ulong id = 0, TypeID tid = 0) ** *function: 构造函数 *parameters: - [i]ulong id = 0: 对象身份ID - [i] TypeID tid = 0: 对象类型标识 *return value: 无 {{anchor:setprev}} **void setPrev(const OrderItem * el)** *function: 设置前相邻对象 *parameters: - [i]const OrderItem * el: 前相邻对象指针 *return value: 无 {{anchor:setnext}} **void setNext(const OrderItem * el)** *function: 设置后相邻对象 *parameters: - [i]const OrderItem * el: 后相邻对象指针 *return value: 无 {{anchor:next}} **const OrderItem * next() const** *function: 获取后相邻对象 *parameters: NULL *return value: 后相邻对象指针 {{anchor:prev}} **const OrderItem * prev() const** *function: 获取前相邻对象 *parameters: NULL *return value: 前相邻对象指针 {{anchor:cut}} **void cut()** *function: 从当前的主从关系中剪除自己 *parameters: NULL *return value: 无 {{anchor:setmaster}} **void setMaster(const XItem * el)** *function: 设置所属主对象 *parameters: - [i]const XItem * el: 所属主对象指针 *return value: 无 {{anchor:getmaster}} **const XItem * getMaster() const** *function: 获取所属主对象 *parameters: NULL *return value: 所属主对象指针 {{anchor:setprevnextid}} **void setPrevNextID(int prevID, int nextID)** *function: 将相邻对象的ID转换为对象指针,用于文件IO中临时存取对象ID *parameters: - [i]int prevID: 前相邻对象ID - [i] int nextID: 后相邻对象ID *return value: 无