Beispiel #1
0
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;
}
Beispiel #2
0
NativeDataInfo* getNativeDataInfo(const StringData* name) {
  auto it = s_nativedatainfo.find(name);
  if (it == s_nativedatainfo.end()) {
    return nullptr;
  }
  return &it->second;
}
Beispiel #3
0
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;
}