Пример #1
0
H5DataSet * H5File::OpenDataSet(const std::string &name) {
  size_t id = mCurrentId;
  mCurrentId++;
  H5DataSet *ds = new H5DataSet(id);
  string groupName, dsName;
  FillInGroupFromName(name, groupName, dsName);
  hid_t group = GetOrCreateGroup(mHFile, groupName);
  ds->SetGroup(group);
  ds->SetParent(this);
  ds->SetName(dsName);
  /* Save old error handler */
  herr_t (*old_func)(hid_t, void *);
  void *old_client_data;
  H5Eget_auto(H5E_DEFAULT, &old_func, &old_client_data);
  /* Turn off error handling */
  H5Eset_auto(H5E_DEFAULT, NULL, NULL);
  if (ds->OpenDataSet()) {
    mDSMap[id] = ds;
    H5Eset_auto(H5E_DEFAULT, old_func, old_client_data);
    return mDSMap[id];
  }
  /* Restore previous error handler */
  H5Eset_auto(H5E_DEFAULT, old_func, old_client_data);
  delete ds;
  return NULL;
}