[h5py] 339/455: Implement H5Rget_name (LL and HL)
Ghislain Vaillant
ghisvail-guest at moszumanska.debian.org
Thu Jul 2 18:19:48 UTC 2015
This is an automated email from the git hooks/post-receive script.
ghisvail-guest pushed a commit to annotated tag 1.3.0
in repository h5py.
commit f822c5426bbf6754c77cbe201e5d7876931288d7
Author: andrewcollette <andrew.collette at gmail.com>
Date: Tue Jan 5 00:09:01 2010 +0000
Implement H5Rget_name (LL and HL)
---
h5py/defs.pxd | 4 +++-
h5py/h5r.pyx | 19 +++++++++++++++++++
h5py/highlevel.py | 5 ++++-
3 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/h5py/defs.pxd b/h5py/defs.pxd
index b451a7a..6b60e13 100644
--- a/h5py/defs.pxd
+++ b/h5py/defs.pxd
@@ -813,7 +813,9 @@ cdef extern from "hdf5.h":
hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *
H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *
-
+ IF H5PY_18API:
+ ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *
+
# === H5S - Dataspaces ========================================================
cdef extern from "hdf5.h":
diff --git a/h5py/h5r.pyx b/h5py/h5r.pyx
index cdc28e7..85c508a 100644
--- a/h5py/h5r.pyx
+++ b/h5py/h5r.pyx
@@ -122,6 +122,25 @@ def get_obj_type(Reference ref not None, ObjectID id not None):
return None
return <int>H5Rget_obj_type(id.id, <H5R_type_t>ref.typecode, &ref.ref)
+IF H5PY_18API:
+ def get_name(Reference ref not None, ObjectID loc not None):
+ """(Reference ref, ObjectID loc) => STRING name
+
+ Determine the name of the object pointed to by this reference.
+ Requires the HDF5 1.8 API.
+ """
+ cdef ssize_t namesize = 0
+ cdef char* namebuf = NULL
+
+ namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, NULL, 0)
+ if namesize > 0:
+ namebuf = <char*>malloc(namesize+1)
+ try:
+ namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, namebuf, namesize+1)
+ return namebuf
+ finally:
+ free(namebuf)
+
cdef class Reference:
"""
diff --git a/h5py/highlevel.py b/h5py/highlevel.py
index 4a46228..e6ce09b 100644
--- a/h5py/highlevel.py
+++ b/h5py/highlevel.py
@@ -90,7 +90,10 @@ class HLObject(object):
@property
def name(self):
"""Name of this object in the HDF5 file. Not necessarily unique."""
- return h5i.get_name(self.id)
+ name = h5i.get_name(self.id)
+ if name is None and config.API_18:
+ name = h5py.h5r.get_name(self.ref)
+ return name
@property
def attrs(self):
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/h5py.git
More information about the debian-science-commits
mailing list