Example #1
0
        public void GetTree(HDFObjectInfo parent, H5LocId id, string name, string path)
        {
            try
             {
            H5GroupId root_id = H5G.open(id, name);
            parent.NItems = H5G.getNumObjects(root_id);

            for (ulong i = 0; i < (ulong)parent.NItems; i++)
            {
               HDFObjectInfo info = new HDFObjectInfo();

               info.Index = i;
               info.Name = H5G.getObjectNameByIndex(root_id, (ulong)i);
               ObjectInfo h5oi = H5G.getObjectInfo(root_id, info.Name, false);
               info.Type = h5oi.objectType;
               info.Path = path;

               if (info.Type == H5GType.GROUP)
               {
                  info.Path += info.Name + "/";
                  info.Parent = parent;
                  GetTree(info, root_id, info.Name, info.Path);
                  info.IsProperty = true;

                  foreach (HDFObjectInfo obj in info.Children)
                  {
                     obj.Parent = info;

                     if (obj.Type != H5GType.DATASET)
                     {
                        info.IsProperty = false;
                        break;
                     }
                  }
               }
               else
               {
                  info.Path += info.Name;
                  info.Parent = parent;

                  if (info.Type == H5GType.DATASET)
                  {
                     H5DataSetId dsid = H5D.open(root_id, info.Name);
                     H5DataSpaceId dspid = H5D.getSpace(dsid);

                     info.DataTypeId = H5D.getType(dsid);
                     info.Size = H5T.getSize(info.DataTypeId);
                     info.Class = H5T.getClass(info.DataTypeId);
                     info.NativeType = H5T.getNativeType(info.DataTypeId, H5T.Direction.DESCEND);
                     info.Dims = H5S.getSimpleExtentDims(dspid);
                     info.NDims = H5S.getSimpleExtentNDims(dspid);
                     info.MaxDims = H5S.getSimpleExtentMaxDims(dspid);
                     info.Parent.HasDatasets = true;

                     H5S.close(dspid);
                     H5D.close(dsid);
                  }
               }

               parent.Children.Add(info);
            }

            H5G.close(root_id);
             }
             catch (Exception ex)
             {
            last_exception = ex;
             }
        }
Example #2
0
        public List<HDFObjectInfo> GetRootObjects()
        {
            try
             {
            List<HDFObjectInfo> list = new List<HDFObjectInfo>();

            H5GroupId root_id = H5G.open(file_id, "/");
            long n_objs = H5G.getNumObjects(root_id);

            for (ulong i = 0; i < (ulong)n_objs; i++)
            {
               HDFObjectInfo info = new HDFObjectInfo();

               info.Index = i;
               info.Name = H5G.getObjectNameByIndex(root_id, i);
               ObjectInfo h5oi = H5G.getObjectInfo(root_id, info.Name, false);
               info.Type = h5oi.objectType;

               list.Add(info);
            }

            H5G.close(root_id);

            return list;
             }
             catch (Exception ex)
             {
            last_exception = ex;
            return null;
             }
        }