[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