Exemplo n.º 1
0
        public void H5Tarray_createTest2()
        {
            hsize_t[] dims  = new hsize_t[] { 3, 3 };
            hid_t     dtype = H5T.array_create(H5T.IEEE_F64LE, 0, dims);

            Assert.IsFalse(dtype >= 0);
        }
Exemplo n.º 2
0
        public void H5Tarray_createTest3()
        {
            hsize_t[] dims  = new hsize_t[] { 3, 3 };
            hid_t     dtype = H5T.array_create(Utilities.RandomInvalidHandle(),
                                               (uint)dims.Length, dims);

            Assert.IsFalse(dtype >= 0);
        }
Exemplo n.º 3
0
        public void H5Tarray_createTest1()
        {
            hsize_t[] dims  = new hsize_t[] { 3, 3 };
            hid_t     dtype = H5T.array_create(H5T.IEEE_F64LE, (uint)dims.Length,
                                               dims);

            Assert.IsTrue(dtype >= 0);
            Assert.IsTrue(H5T.close(dtype) >= 0);
        }
Exemplo n.º 4
0
        public static unsafe void AddArray(long fileId, ContainerType container)
        {
            long res;

            var typeId = H5T.array_create(H5T.NATIVE_INT32, 2, new ulong[] { 4, 5 });
            var dims   = new ulong[] { 2, 3 };

            fixed(void *dataPtr = TestData.ArrayData)
            {
                TestUtils.Add(container, fileId, "array", "array", typeId, dataPtr, dims);
            }

            res = H5T.close(typeId);
        }
Exemplo n.º 5
0
        public static IEnumerable <OffsetInfo> GetCompoundInfo(Type type, bool ieee = false)
        {
            //Type t = typeof(T);
            var strtype = H5T.copy(H5T.C_S1);
            int strsize = (int)H5T.get_size(strtype);
            int curSize = 0;
            List <OffsetInfo> offsets = new List <OffsetInfo>();

            foreach (var x in type.GetFields())
            {
                //var fldType = x.FieldType;
                //OffsetInfo oi = new OffsetInfo()
                //{
                //    name = x.Name,
                //    type = fldType,
                //    datatype = ieee ? GetDatatypeIEEE(fldType) : GetDatatype(fldType),
                //    size = fldType == typeof(string) ? StringLength(x) : Marshal.SizeOf(fldType),
                //    offset = 0 + curSize
                //};
                var fldType             = x.FieldType;
                var marshallAsAttribute = type.GetMember(x.Name).Select(m => m.GetCustomAttribute <MarshalAsAttribute>()).FirstOrDefault();

                OffsetInfo oi = new OffsetInfo()
                {
                    name     = x.Name,
                    type     = fldType,
                    datatype = !fldType.IsArray ? ieee ? GetDatatypeIEEE(fldType) : GetDatatype(fldType)
                : H5T.array_create(ieee ? GetDatatypeIEEE(fldType.GetElementType()) : GetDatatype(fldType.GetElementType()), (uint)fldType.GetArrayRank(), Enumerable.Range(0, fldType.GetArrayRank()).Select(i => (ulong)marshallAsAttribute.SizeConst).ToArray()),
                    size   = fldType == typeof(string) ? StringLength(x) : !fldType.IsArray ? Marshal.SizeOf(fldType) : Marshal.SizeOf(fldType.GetElementType()) * marshallAsAttribute.SizeConst,
                    offset = 0 + curSize
                };
                if (oi.datatype == H5T.C_S1)
                {
                    strtype = H5T.copy(H5T.C_S1);
                    H5T.set_size(strtype, new IntPtr(oi.size));
                    oi.datatype = strtype;
                }
                if (oi.datatype == H5T.STD_I64BE)
                {
                    oi.size = oi.size * 2;
                }
                curSize = curSize + oi.size;

                offsets.Add(oi);
            }

            /* poging om ook properties te bewaren.
             * foreach (var x in type.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public))
             * {
             *  bool saveProperty = false;
             *  bool isNotPublic = x.PropertyType.Attributes != TypeAttributes.Public;
             *  foreach (Attribute attr in Attribute.GetCustomAttributes(x))
             *  {
             *      var legAttr = attr as Hdf5SaveAttribute;
             *      var kind = legAttr?.SaveKind;
             *      bool saveAndPrivateProp = isNotPublic && kind == Hdf5Save.Save;
             *      bool doNotSaveProp = (kind == Hdf5Save.DoNotSave) ;
             *      if (saveAndPrivateProp && !doNotSaveProp)
             *      {
             *          saveProperty = true;
             *          continue;
             *      }
             *
             *  }
             *  if (!saveProperty)
             *      continue;
             *  var propType = x.PropertyType;
             *  OffsetInfo oi = new OffsetInfo()
             *  {
             *      name = x.Name,
             *      type = propType,
             *      datatype = ieee ? GetDatatypeIEEE(propType) : GetDatatype(propType),
             *      size = propType == typeof(string) ? stringLength(x) : Marshal.SizeOf(propType),
             *      offset = 0 + curSize
             *  };
             *  if (oi.datatype == H5T.C_S1)
             *  {
             *      strtype = H5T.copy(H5T.C_S1);
             *      H5T.set_size(strtype, new IntPtr(oi.size));
             *      oi.datatype = strtype;
             *  }
             *  if (oi.datatype == H5T.STD_I64BE)
             *      oi.size = oi.size * 2;
             *  curSize = curSize + oi.size;
             *
             *  offsets.Add(oi);
             * }*/
            H5T.close(strtype);
            return(offsets);
        }