From 346cf9f7db7f65c570237e6765dc7c5388a3b675 Mon Sep 17 00:00:00 2001 From: gheber Date: Tue, 19 Jul 2016 10:43:21 -0500 Subject: [PATCH 1/2] Fix for issue #68. We can't have a fixed array of pointers. For the expected storage layout, we have to go with a Mickey Mouse solution. --- HDF5/H5Fpublic.cs | 30 ++++++++++++++++++- .../H5Fget_metadata_read_retry_info.cs | 8 +++++ UnitTests/UnitTests.csproj | 1 + 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/HDF5/H5Fpublic.cs b/HDF5/H5Fpublic.cs index 5937943..6b67238 100644 --- a/HDF5/H5Fpublic.cs +++ b/HDF5/H5Fpublic.cs @@ -373,10 +373,38 @@ public enum file_space_type_t /// metadata items with checksum. Used by public routine /// H5F.get_metadata_read_retry_info /// + /* + * + * typedef struct H5F_retry_info_t { + * unsigned nbins; + * uint32_t *retries[H5F_NUM_METADATA_READ_RETRY_TYPES]; + * } H5F_retry_info_t; + * + */ public struct retry_info_t { public uint nbins; - public fixed uint32_t retries[NUM_METADATA_READ_RETRY_TYPES]; + public IntPtr retries0; + public IntPtr retries1; + public IntPtr retries2; + public IntPtr retries3; + public IntPtr retries4; + public IntPtr retries5; + public IntPtr retries6; + public IntPtr retries7; + public IntPtr retries8; + public IntPtr retries9; + public IntPtr retries10; + public IntPtr retries11; + public IntPtr retries12; + public IntPtr retries13; + public IntPtr retries14; + public IntPtr retries15; + public IntPtr retries16; + public IntPtr retries17; + public IntPtr retries18; + public IntPtr retries19; + public IntPtr retries20; } /// diff --git a/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs b/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs index f8709df..a82f32d 100644 --- a/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs +++ b/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs @@ -32,9 +32,17 @@ public partial class H5SWMRTest public void H5Fget_metadata_read_retry_infoTestSWMR1() { H5F.retry_info_t info = new H5F.retry_info_t(); + Assert.IsTrue( H5F.get_metadata_read_retry_info(m_v3_test_file_swmr, ref info) >= 0); + + Assert.IsTrue(info.nbins == 2); + + Assert.IsTrue(info.retries0 == IntPtr.Zero); + Assert.IsTrue(info.retries6 == IntPtr.Zero); + Assert.IsTrue(info.retries14 == IntPtr.Zero); + Assert.IsTrue(info.retries20 == IntPtr.Zero); } } } diff --git a/UnitTests/UnitTests.csproj b/UnitTests/UnitTests.csproj index 5e762db..deeef67 100644 --- a/UnitTests/UnitTests.csproj +++ b/UnitTests/UnitTests.csproj @@ -261,6 +261,7 @@ + From 5710bfd26d4cfdec1ac487989bd85763a1e3cad2 Mon Sep 17 00:00:00 2001 From: gheber Date: Thu, 21 Jul 2016 09:49:25 -0500 Subject: [PATCH 2/2] Added a strong name and fixed the retry info test. The library initializes the fields to NULL. --- HDF.PInvoke.csproj | 7 +++++++ HDF.PInvoke.snk | Bin 0 -> 596 bytes Properties/AssemblyInfo.cs | 6 +++--- .../H5SWMRTest/H5Fget_metadata_read_retry_info.cs | 5 +++++ UnitTests/Properties/AssemblyInfo.cs | 4 ++-- 5 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 HDF.PInvoke.snk diff --git a/HDF.PInvoke.csproj b/HDF.PInvoke.csproj index 4f5cdd0..d5e1b40 100644 --- a/HDF.PInvoke.csproj +++ b/HDF.PInvoke.csproj @@ -75,6 +75,12 @@ prompt MinimumRecommendedRules.ruleset + + true + + + HDF.PInvoke.snk + @@ -122,6 +128,7 @@ + diff --git a/HDF.PInvoke.snk b/HDF.PInvoke.snk new file mode 100644 index 0000000000000000000000000000000000000000..a5ed01acd5e2b0a4497a07b31e8cc46aaf168732 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097jw3JpFW;@YrJ{UhNDY()*N!Y0FyjRwf zIh76tfbx5{y0O0S9#eYE_#&5I;Y-;D>zS%8_M|4+v(>isTB@2fxgSRe#=`jn#t6$H z3KzYd?^5h$9KybDMEYfw!RnS9(&@u~B}a6RE*vL&Ywzf~z%AFyTNV|K*rhyb>`$b# z{7ThykEMivp^@~4Q`BWa$S}s07fibXFuRbXZO8^%FW#=p?dYvVI84r$xLXxJzlaS- zfqe-TWc;pxSlze#%O64z$Bd~(3NnFgKwHED=*NEQ@gjg|xiLaTy2+;Xz*KHO5}UIE zcOY5oH;hM?wm>Ifcaq^=ZKG?Q&c@_l8D0}xB7?72^Tvk#-KJt18j^i;1~p5I<-apP z>vSov&KlfhRbPUrYJoPbo8z%^jl2L(oas3BMHm{TsTVtyxIrGvFg`JRk~}tD&2AG! z=ufAxV8poT;rho`9m89zcD`}V9-Wx@<|1{o0_Y^yW9RIP|I5JwvityxharkwG?4}< zZ*0;^QVY$PtRXHnBDj1Mu6+OBn4j)O^oBC;+Pl7U1M1$QCVLmin&`lTBx6I%u(VQE zYw^3Zs`e$AiR!l&F>-Uk%S{{DM1^kBTDk;x&DXu ikve-tXCT*2G$%BDbUVu!YcH_ANl0%YgH(0zA-@T}EhT~g literal 0 HcmV?d00001 diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index f1e08d3..34c36e1 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -7,10 +7,10 @@ // associated with an assembly. [assembly: AssemblyTitle("HDF.PInvoke")] [assembly: AssemblyDescription(".NET interop with native HDF5 libraries")] -[assembly: AssemblyConfiguration("")] +[assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCompany("The HDF Group")] [assembly: AssemblyProduct("HDF.PInvoke")] -[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -42,4 +42,4 @@ #else [assembly: AssemblyVersion("1.8.17.0")] [assembly: AssemblyFileVersion("1.8.17.0")] -#endif +#endif \ No newline at end of file diff --git a/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs b/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs index a82f32d..ca1d516 100644 --- a/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs +++ b/UnitTests/H5SWMRTest/H5Fget_metadata_read_retry_info.cs @@ -33,6 +33,11 @@ public void H5Fget_metadata_read_retry_infoTestSWMR1() { H5F.retry_info_t info = new H5F.retry_info_t(); + info.retries0 = new IntPtr(10); + info.retries6 = new IntPtr(60); + info.retries14 = new IntPtr(140); + info.retries20 = new IntPtr(200); + Assert.IsTrue( H5F.get_metadata_read_retry_info(m_v3_test_file_swmr, ref info) >= 0); diff --git a/UnitTests/Properties/AssemblyInfo.cs b/UnitTests/Properties/AssemblyInfo.cs index 2674da8..5be9a16 100644 --- a/UnitTests/Properties/AssemblyInfo.cs +++ b/UnitTests/Properties/AssemblyInfo.cs @@ -8,9 +8,9 @@ [assembly: AssemblyTitle("UnitTests")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("The HDF Group")] [assembly: AssemblyProduct("UnitTests")] -[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]