====== ExternalRefManager ====== **//Inherited from//** [[class::domain::xmanager|XManager]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** ExternalRefManager从XManager继承,是外部引用对象管理器,所有外部引用对象的创建、销毁、访问以及修改都通过调用它的通用接口完成。它的域识别码是Domain_ExternalRef,类型名是"DEXTERNALREF"。 为了降低耦合性,外部引用的数据解析和使用由回调函数执行,ExternalRefManager提供了接口用于注册绑定响应的回调函数, **//Members//** * FuncExtractExternalField [[externalrefmanager#m_fpextractexternalfield|m_fpExtractExternalField]] **//Public interface//** * [[externalrefmanager#externalrefmanager1|ExternalRefManager]](OpnRecorder * rec, XMemPool * pool = 0) * [[externalrefmanager#~externalrefmanager|~ExternalRefManager]]() * void [[externalrefmanager#serialize|serialize]](XBinaryIO * io, XItem * obj, bool bSave) * void [[externalrefmanager#registerfuncextractexternalfield|registerFuncExtractExternalField]](FuncExtractExternalField func) * bool [[externalrefmanager#extractexternalfield|extractExternalField]](const XExternalRef * ref, const char * param, vector * datas) * void [[externalrefmanager#write|write]](XH5IO * io, H5Obj * grp) * bool [[externalrefmanager#read|read]](XH5IO * io, H5Obj * grp) ---- {{anchor:m_fpextractexternalfield}} **FuncExtractExternalField m_fpExtractExternalField** ---- {{anchor:externalrefmanager1}} **ExternalRefManager(OpnRecorder * rec, XMemPool * pool = 0)** *function: 构造函数 *parameters: - [i]OpnRecorder * rec: 数据操作记录器 - [i] XMemPool * pool = 0: 内存池 *return value: 无 {{anchor:~externalrefmanager}} **~ExternalRefManager()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:serialize}} **void serialize(XBinaryIO * io, XItem * obj, bool bSave)** *function: 在undo、redo时从数据操作记录文件中序列化数据对象 *parameters: - [i]XBinaryIO * io: 二进制数据操作记录文件句柄 - [i] XItem * obj: 数据对象 - [i] bool bSave: 是否保存数据对象 *return value: 无 {{anchor:registerfuncextractexternalfield}} **void registerFuncExtractExternalField(FuncExtractExternalField func)** *function: 注册解析外部引用数据的回调函数 *parameters: - [i]FuncExtractExternalField func: 解析外部引用数据的回调函数 *return value: 无 {{anchor:extractexternalfield}} **bool extractExternalField(const XExternalRef * ref, const char * param, vector * datas)** *function: 提前外部引用数据,一般通过调用注册好的回调函数完成 *parameters: - [i]const XExternalRef * ref: 外部引用对象 - [i] const char * param: 提前参数字符串 - [i] vector * datas: 被提前的数据点 *return value: 成功提前返回true,否则返回false {{anchor:write}} **void write(XH5IO * io, H5Obj * grp)** *function: 将管理的所有对象数据写入到HDF5文件中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对象管理器对应的HDF5节点 *return value: 无 {{anchor:read}} **bool read(XH5IO * io, H5Obj * grp)** *function: 从HDF5文件中读取对象数据到管理器中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对象管理器对应的HDF5节点 *return value: 完整读取返回true,否则返回false