XManager(TypeID domainType, int initHashSize, XMemPool * memPool, int defaultMemSize)
| 原型 | XManager(TypeID domainType, int initHashSize, XMemPool * memPool, int defaultMemSize) |
| 描述 | 构造函数 |
| 参数 | [i]TypeID domainType: 域类型ID [i] int initHashSize: 初始对象数目规模 [i] XMemPool * memPool: 对象内存池 [i] int defaultMemSize: 默认内存池大小 |
| 返回值 | 无 |
XManager(TypeID domainType)
| 原型 | XManager(TypeID domainType) |
| 描述 | 构造函数 |
| 参数 | [i]TypeID domainType: 域类型ID |
| 返回值 | 无 |
static ulong registerCItem(const char * itemTypeString, TypeID domainType, AllocItemFunc itemAlloc, FreeItemFunc itemFree, TypeID itemType = DItem_Unknown)
| 原型 | static ulong registerCItem(const char * itemTypeString, TypeID domainType, AllocItemFunc itemAlloc, FreeItemFunc itemFree, TypeID itemType = DItem_Unknown) |
| 描述 | 注册数据对象类型 |
| 参数 | [i]const char * itemTypeString: 数据对象类型字符串标识 [i] TypeID domainType: 域类型 [i] AllocItemFunc itemAlloc: 数据对象构造API [i] FreeItemFunc itemFree: 数据对象析构API [i] TypeID itemType = DItem_Unknown: 强制指定数据对象类型ID |
| 返回值 | 返回数据对象类型ID,itemType为DItem_Unknown时ID为程序自动分配(以域类型ID*10000为基数自动递增),否则为指定的ID |
static ulong registerDomain(const char * domainTypeString, TypeID domainType = Domain_Unknown)
| 原型 | static ulong registerDomain(const char * domainTypeString, TypeID domainType = Domain_Unknown) |
| 描述 | 注册对象管理器 |
| 参数 | [i]const char * domainTypeString: 域类型字符串标识 [i] TypeID domainType = Domain_Unknown: 强制指定域类型ID |
| 返回值 | 返回对象管理器的域类型ID,domainType为Domain_Unknown时ID为程序自动分配(从1递增),否则为指定的ID |
static const char * getCtypeString(ulong ctype)
| 原型 | static const char * getCtypeString(ulong ctype) |
| 描述 | 获取类型ID为ctype的字符串标识(类型可能为数据对象类型,也可能为域类型) |
| 参数 | [i]ulong ctype: 给定的类型ID |
| 返回值 | 字符串标识 |
static ulong getCtype(const char * typeString)
| 原型 | static ulong getCtype(const char * typeString) |
| 描述 | 获取与给定字符串标识对应的类型ID |
| 参数 | [i]const char * typeString: 字符串标识 |
| 返回值 | 类型ID |
static ulong getNextDomainType()
| 原型 | static ulong getNextDomainType() |
| 描述 | 获取下一个可用的域类型ID,一般在注册对象管理器时调用 |
| 参数 | 无 |
| 返回值 | 下一个可用的域类型ID |
static bool updateNextDomainType(ulong curType)
| 原型 | static bool updateNextDomainType(ulong curType) |
| 描述 | 根据curType更新下一个可用的域类型ID,如当前的最大域类型ID不大于curType,则设置下一个类型ID为curType加1 |
| 参数 | [i]ulong curType: 当前有效的域类型ID |
| 返回值 | 返回true |
static TypeID getNextCtype(ulong domain)
| 原型 | static TypeID getNextCtype(ulong domain) |
| 描述 | 在domain域内获取下一个对象类型ID |
| 参数 | [i]ulong domain: 指定域类型ID |
| 返回值 | 下一个对象类型ID |
static AllocItemFunc * getItemAllocTable(TypeID domainType)
| 原型 | static AllocItemFunc * getItemAllocTable(TypeID domainType) |
| 描述 | 获取指定域的构造函数数组 |
| 参数 | [i]TypeID domainType: 指定域ID |
| 返回值 | 指定域的构造函数数组 |
static FreeItemFunc * getItemFreeTable(TypeID domainType)
| 原型 | static FreeItemFunc * getItemFreeTable(TypeID domainType) |
| 描述 | 获取指定域的析构函数数组 |
| 参数 | [i]TypeID domainType: 指定域ID |
| 返回值 | 指定域的析构函数数组 |
DomainType getDomainType() const
| 原型 | DomainType getDomainType() const |
| 描述 | 获取管理器的域ID |
| 参数 | 无 |
| 返回值 | 域ID |
bool isAutomaticItemType() const
| 原型 | bool isAutomaticItemType() const |
| 描述 | 数据对象类型是否自动赋予类型ID |
| 参数 | 无 |
| 返回值 | 如数据对象是自动赋予类型ID返回true,否则返回false |
void registerToRecorder(OpnRecorder * rec, int domainID = -1)
| 原型 | void registerToRecorder(OpnRecorder * rec, int domainID = -1) |
| 描述 | 将管理器注册到数据对象记录器中,用于记录数据的操作历史 |
| 参数 | [i]OpnRecorder * rec: 数据操作记录器 [i] int domainID = -1: 指定管理器的注册序号,如为-1则有程序自动给定 |
| 返回值 | 无 |
virtual void addItem(XItem * item)
| 原型 | virtual void addItem(XItem * item) |
| 描述 | 将数据对象添加到管理器中 |
| 参数 | [i]XItem * item: 数据对象 |
| 返回值 | 无 |
virtual void collectItems(vector<const XItem*> * itemArr, TypeID tid = DItem_Unknown)
| 原型 | virtual void collectItems(vector<const XItem*> * itemArr, TypeID tid = DItem_Unknown) |
| 描述 | 收集管理器中的数据对象 |
| 参数 | [i]vector<const XItem*> * itemArr: 数据对象数组 [i] TypeID tid = DItem_Unknown: 指定收集的数据对象子类型,如为DItem_Unknown,收集所有的对象 |
| 返回值 | 无 |
virtual void updateAfterRenumber(TypeID tid = DItem_Unknown)
| 原型 | virtual void updateAfterRenumber(TypeID tid = DItem_Unknown) |
| 描述 | 在指定类型的数据对象重新编号后更新管理器 |
| 参数 | [i]TypeID tid = DItem_Unknown: 重新编号的数据对象类型ID,如为DItem_Unknown表示任意对象重新编号之后都更新管理器 |
| 返回值 | 无 |
XItem * newItem(int tid = 0)
| 原型 | XItem * newItem(int tid = 0) |
| 描述 | 构造类型为tid的数据对象,该数据对象不能被索引 |
| 参数 | [i]int tid = 0: 指定数据对象类型ID, 如该管理器只管理一种数据对象则tid可给0值 |
| 返回值 | 新建对象指针 |
XItem * createItem(ulong id = 0, int tid = 0)
| 原型 | XItem * createItem(ulong id = 0, int tid = 0) |
| 描述 | 新建数据对象并加入到管理器中(可通过ID索引数据对象) |
| 参数 | [i]ulong id = 0: 数据对象的ID,如为0,则ID为自动分配 [i] int tid = 0:数据对象的类型ID |
| 返回值 | 数据对象的指针 |
void destroyItem(XItem * itm, bool bDestruct = true)
| 原型 | void destroyItem(XItem * itm, bool bDestruct = true) |
| 描述 | 销毁对象 |
| 参数 | [i]XItem * itm: 数据对象指针 [i] bool bDestruct = true: 是否延迟销毁 |
| 返回值 | 无 |
const XItem * getItem(ulong id) const
| 原型 | const XItem * getItem(ulong id) const |
| 描述 | 通过ID索引数据对象 |
| 参数 | [i]ulong id: 数据对象ID |
| 返回值 | 数据对象指针,如ID为id的对象不存在返回NULL |
virtual void setPrevNext(XItem * item, int prevID, int nextID)
| 原型 | virtual void setPrevNext(XItem * item, int prevID, int nextID) |
| 描述 | 为有序对象设置前置后置对象 |
| 参数 | [i]XItem * item: 有序对象 [i] int prevID: 前置对象ID [i] int nextID: 后置对象ID |
| 返回值 | 无 |
virtual void serializePrevNext(XBinaryIO * io, XItem * obj, bool bSave)
| 原型 | virtual void serializePrevNext(XBinaryIO * io, XItem * obj, bool bSave) |
| 描述 | 序列化有序对象,在记录数据操作时调用 |
| 参数 | [i]XBinaryIO * io: 二进制文件句柄 [i] XItem * obj: 有序对象 [i] bool bSave: 是否保存 |
| 返回值 | 无 |
virtual void write(XH5IO * io, H5Obj * grp)
| 原型 | virtual void write(XH5IO * io, H5Obj * grp) |
| 描述 | 将数据对象写入到H5文件中 |
| 参数 | [i]XH5IO * io: H5文件句柄 [i] H5Obj * grp: 管理器所在的H5节点 |
| 返回值 | 无 |
XItem * serializeRecord(XBinaryIO * io, int & opn, bool bUndo)
| 原型 | XItem * serializeRecord(XBinaryIO * io, int & opn, bool bUndo) |
| 描述 | 在undo或redo时序列化对象 |
| 参数 | [i]XBinaryIO * io: 二进制文件句柄 [i] int & opn: 数据的操作类型(增加、删除或修改) [i] bool bUndo: 是否undo |
| 返回值 | 返回数据对象的指针 |
virtual void serialize(XBinaryIO * io, XItem * obj, bool bSave) = 0
| 原型 | virtual void serialize(XBinaryIO * io, XItem * obj, bool bSave) = 0 |
| 描述 | 序列化数据对象 |
| 参数 | [i]XBinaryIO * io: 二进制文件句柄 [i] XItem * obj: 数据对象 [i] bool bSave: 是否保存 |
| 返回值 | 无 |
virtual void serializeLinks(XBinaryIO * io, XItem * obj, bool bSave)
| 原型 | virtual void serializeLinks(XBinaryIO * io, XItem * obj, bool bSave) |
| 描述 | 序列化数据对象的引用对象 |
| 参数 | [i]XBinaryIO * io: 二进制文件句柄 [i] XItem * obj: 数据对象 [i] bool bSave: 是否保存 |
| 返回值 | 无 |
virtual void linkItem(XItem * master, const XItem * slave, bool bAttach)
| 原型 | virtual void linkItem(XItem * master, const XItem * slave, bool bAttach) |
| 描述 | 定义数据对象的引用关系 |
| 参数 | [i]XItem * master: 数据对象 [i] const XItem * slave: 被应用的对象 [i] bool bAttach: 是否添加引用关系(如否则为解除引用关系) |
| 返回值 | 无 |
virtual const XItem * getLinkItem(TypeID type, ulong id)
| 原型 | virtual const XItem * getLinkItem(TypeID type, ulong id) |
| 描述 | 获取引用对象 |
| 参数 | [i]TypeID type: 引用对象类型 [i] ulong id: 引用对象ID |
| 返回值 | 引用对象指针 |
virtual void bindLinkManager(TypeID domanType, XManager * mgr)
| 原型 | virtual void bindLinkManager(TypeID domanType, XManager * mgr) |
| 描述 | 设置引用对象管理器(用来索引引用对象) |
| 参数 | [i]TypeID domanType: 引用对象的域ID [i] XManager * mgr: 引用对象的管理器 |
| 返回值 | 无 |
void serializeLinkItem(XBinaryIO * record, const XItem *& obj, bool bSave)
| 原型 | void serializeLinkItem(XBinaryIO * record, const XItem *& obj, bool bSave) |
| 描述 | 序列化引用对象(用于记录数据操作) |
| 参数 | [i]XBinaryIO * io: 数据操作记录文件句柄 [i] const XItem *& obj: 数据对象 [i] bool bSave: 是否保存 |
| 返回值 | 无 |
void bindItemIterator(ItemIterator * iter) const
| 原型 | void bindItemIterator(ItemIterator * iter) const |
| 描述 | 绑定对象遍历器 |
| 参数 | [i]ItemIterator * iter: 对象遍历器 |
| 返回值 | 无 |
ulong getItemCount() const
| 原型 | ulong getItemCount() const |
| 描述 | 获取对象数目 |
| 参数 | 无 |
| 返回值 | 对象数目 |
virtual void clear()
| 原型 | virtual void clear() |
| 描述 | 清空对象 |
| 参数 | 无 |
| 返回值 | 无 |
virtual void recordExchange(XItem * item, XBinaryIO * io)
| 原型 | virtual void recordExchange(XItem * item, XBinaryIO * io) |
| 描述 | 从数据操作记录文件中存取数据对象 |
| 参数 | [i]XItem * item: 数据对象 [i] XBinaryIO * io: 数据操作记录文件句柄 |
| 返回值 | 无 |
ulong getNextItemId() const
| 原型 | ulong getNextItemId() const |
| 描述 | 获取下一个对象ID(为对象自动分配ID时使用) |
| 参数 | 无 |
| 返回值 | 下一个对象ID |
void setNextItemId(ulong id)
| 原型 | void setNextItemId(ulong id) |
| 描述 | 设置下一个对象ID(为对象自动分配ID时使用) |
| 参数 | [i]ulong id: 下一个对象ID |
| 返回值 | 无 |
void getNextItemName(const char * curName, string * name) const
| 原型 | void getNextItemName(const char * curName, string * name) const |
| 描述 | 根据当前名字获取下一个可用命名 |
| 参数 | [i]const char * curName: 当前名字 [i] string * name: 下一个名字 |
| 返回值 | 无 |
void sortItemById(vector<ItemPtr> * item_list) const
| 原型 | void sortItemById(vector<ItemPtr> * item_list) const |
| 描述 | 将数据对象按照ID的升序排列输出为对象数组 |
| 参数 | [i]vector<ItemPtr> * item_list: 对象数组 |
| 返回值 | 无 |
void sortItemByName(vector<NItem*> * item_list)
| 原型 | void sortItemByName(vector<NItem*> * item_list) |
| 描述 | 将数据对象按照对象名的升序排列输出为数组 |
| 参数 | [i]vector<NItem*> * item_list: 对象指针数组 |
| 返回值 | 无 |
const NItem * getItemByName(const char * name, ulong excludeID = 0)
| 原型 | const NItem * getItemByName(const char * name, ulong excludeID = 0) |
| 描述 | 通过名字索引对象 |
| 参数 | [i]const char * name: 对象名字 [i] ulong excludeID = 0: 排除给定ID(不为0)的对象 |
| 返回值 | 对象指针 |
void updateAllCache()
| 原型 | void updateAllCache() |
| 描述 | 更新所有数据对象的缓存信息 |
| 参数 | 无 |
| 返回值 | 无 |
virtual bool getObjectPropertySheet(const XItem * obj, vector<ObjPropertyEntry> * prpSheet)
| 原型 | virtual bool getObjectPropertySheet(const XItem * obj, vector<ObjPropertyEntry> * prpSheet) |
| 描述 | 获取数据对象的属性清单 |
| 参数 | [i]const XItem * obj: 数据对象 [i] vector<ObjPropertyEntry> * prpSheet: 属性清单 |
| 返回值 | 成功获取返回true,否则返回false |
void reIndexItem(const XItem * item, ulong ulNewID)
| 原型 | void reIndexItem(const XItem * item, ulong ulNewID) |
| 描述 | 对数据对象重新编号 |
| 参数 | [i]const XItem * item: 数据对象 [i] ulong ulNewID: 新的编号 |
| 返回值 | 无 |
virtual void updatePrevNext(XItem * item, int prevID, int nextID)
| 原型 | virtual void updatePrevNext(XItem * item, int prevID, int nextID) |
| 描述 | 更新有序对象的前后对象信息 |
| 参数 | [i]XItem * item: 有序对象 [i] int prevID: 前置对象ID [i] int nextID: 后置对象ID |
| 返回值 | 无 |