void registerNativeDataInfo(const StringData* name, size_t sz, NativeDataInfo::InitFunc init, NativeDataInfo::CopyFunc copy, NativeDataInfo::DestroyFunc destroy, NativeDataInfo::SweepFunc sweep, NativeDataInfo::SleepFunc sleep, NativeDataInfo::WakeupFunc wakeup, NativeDataInfo::ScanFunc scan) { assert(s_nativedatainfo.find(name) == s_nativedatainfo.end()); assert((sleep == nullptr && wakeup == nullptr) || (sleep != nullptr && wakeup != nullptr)); assert(scan); NativeDataInfo info; info.sz = sz; info.odattrs = ObjectData::Attribute::HasNativeData; info.init = init; info.copy = copy; info.destroy = destroy; info.sweep = sweep; info.sleep = sleep; info.wakeup = wakeup; info.scan = scan; s_nativedatainfo[name] = info; }
NativeDataInfo* getNativeDataInfo(const StringData* name) { auto it = s_nativedatainfo.find(name); if (it == s_nativedatainfo.end()) { return nullptr; } return &it->second; }
void registerNativeDataInfo(const StringData* name, size_t sz, NativeDataInfo::InitFunc init, NativeDataInfo::CopyFunc copy, NativeDataInfo::DestroyFunc destroy, NativeDataInfo::SweepFunc sweep) { assert(s_nativedatainfo.find(name) == s_nativedatainfo.end()); NativeDataInfo info; info.sz = sz; info.odattrs = ObjectData::Attribute::HasNativeData; info.init = init; info.copy = copy; info.destroy = destroy; info.sweep = sweep; s_nativedatainfo[name] = info; }