@@ -96,14 +96,13 @@ impl Dirfile {
9696 let nframes = self . nframes ( ) ;
9797 let samples_per_frame = self . spf ( field) ;
9898 let total_samples = nframes * ( samples_per_frame as i64 ) ;
99-
99+
100100 let field_code = CString :: new ( field) . expect ( "CString::new failed" ) ;
101101 let field_code_ptr = field_code. as_ptr ( ) ;
102-
102+
103103 // Extract the data based on its type and convert to `Vec<f64>`.
104104 let data: Vec < f64 > = match field_type {
105105 gd_type_t_GD_UINT8 => {
106- // Handle unsigned 8-bit integer data.
107106 let mut raw_data = vec ! [ 0u8 ; total_samples as usize ] ;
108107 unsafe {
109108 gd_getdata (
@@ -119,7 +118,6 @@ impl Dirfile {
119118 raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
120119 }
121120 gd_type_t_GD_INT8 => {
122- // Handle signed 8-bit integer data.
123121 let mut raw_data = vec ! [ 0i8 ; total_samples as usize ] ;
124122 unsafe {
125123 gd_getdata (
@@ -134,15 +132,97 @@ impl Dirfile {
134132 }
135133 raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
136134 }
137- // Other data types (GD_UINT16, GD_INT16, GD_UINT32, etc.) follow a similar pattern.
138- gd_type_t_GD_UINT16 => { /* ... */ }
139- gd_type_t_GD_INT16 => { /* ... */ }
140- gd_type_t_GD_UINT32 => { /* ... */ }
141- gd_type_t_GD_INT32 => { /* ... */ }
142- gd_type_t_GD_UINT64 => { /* ... */ }
143- gd_type_t_GD_INT64 => { /* ... */ }
135+ gd_type_t_GD_UINT16 => {
136+ let mut raw_data = vec ! [ 0u16 ; total_samples as usize ] ;
137+ unsafe {
138+ gd_getdata (
139+ self . dirfile_open ,
140+ field_code_ptr,
141+ 0 , 0 ,
142+ nframes as usize ,
143+ samples_per_frame as usize ,
144+ gd_type_t_GD_UINT16,
145+ raw_data. as_mut_ptr ( ) as * mut :: std:: os:: raw:: c_void ,
146+ ) ;
147+ }
148+ raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
149+ }
150+ gd_type_t_GD_INT16 => {
151+ let mut raw_data = vec ! [ 0i16 ; total_samples as usize ] ;
152+ unsafe {
153+ gd_getdata (
154+ self . dirfile_open ,
155+ field_code_ptr,
156+ 0 , 0 ,
157+ nframes as usize ,
158+ samples_per_frame as usize ,
159+ gd_type_t_GD_INT16,
160+ raw_data. as_mut_ptr ( ) as * mut :: std:: os:: raw:: c_void ,
161+ ) ;
162+ }
163+ raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
164+ }
165+ gd_type_t_GD_UINT32 => {
166+ let mut raw_data = vec ! [ 0u32 ; total_samples as usize ] ;
167+ unsafe {
168+ gd_getdata (
169+ self . dirfile_open ,
170+ field_code_ptr,
171+ 0 , 0 ,
172+ nframes as usize ,
173+ samples_per_frame as usize ,
174+ gd_type_t_GD_UINT32,
175+ raw_data. as_mut_ptr ( ) as * mut :: std:: os:: raw:: c_void ,
176+ ) ;
177+ }
178+ raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
179+ }
180+ gd_type_t_GD_INT32 => {
181+ let mut raw_data = vec ! [ 0i32 ; total_samples as usize ] ;
182+ unsafe {
183+ gd_getdata (
184+ self . dirfile_open ,
185+ field_code_ptr,
186+ 0 , 0 ,
187+ nframes as usize ,
188+ samples_per_frame as usize ,
189+ gd_type_t_GD_INT32,
190+ raw_data. as_mut_ptr ( ) as * mut :: std:: os:: raw:: c_void ,
191+ ) ;
192+ }
193+ raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
194+ }
195+ gd_type_t_GD_UINT64 => {
196+ let mut raw_data = vec ! [ 0u64 ; total_samples as usize ] ;
197+ unsafe {
198+ gd_getdata (
199+ self . dirfile_open ,
200+ field_code_ptr,
201+ 0 , 0 ,
202+ nframes as usize ,
203+ samples_per_frame as usize ,
204+ gd_type_t_GD_UINT64,
205+ raw_data. as_mut_ptr ( ) as * mut :: std:: os:: raw:: c_void ,
206+ ) ;
207+ }
208+ raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
209+ }
210+ gd_type_t_GD_INT64 => {
211+ let mut raw_data = vec ! [ 0i64 ; total_samples as usize ] ;
212+ unsafe {
213+ gd_getdata (
214+ self . dirfile_open ,
215+ field_code_ptr,
216+ 0 , 0 ,
217+ nframes as usize ,
218+ samples_per_frame as usize ,
219+ gd_type_t_GD_INT64,
220+ raw_data. as_mut_ptr ( ) as * mut :: std:: os:: raw:: c_void ,
221+ ) ;
222+ }
223+ raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
224+ }
144225 gd_type_t_GD_FLOAT32 => {
145- // Handle 32-bit floating-point data.
146226 let mut raw_data = vec ! [ 0.0f32 ; total_samples as usize ] ;
147227 unsafe {
148228 gd_getdata (
@@ -158,7 +238,6 @@ impl Dirfile {
158238 raw_data. iter ( ) . map ( |& v| v as f64 ) . collect ( )
159239 }
160240 gd_type_t_GD_FLOAT64 => {
161- // Handle 64-bit floating-point data directly.
162241 let mut raw_data = vec ! [ 0.0f64 ; total_samples as usize ] ;
163242 unsafe {
164243 gd_getdata (
@@ -174,7 +253,6 @@ impl Dirfile {
174253 raw_data
175254 }
176255 gd_type_t_GD_STRING => {
177- // Handle string data and attempt to convert to f64.
178256 let mut raw_data = vec ! [ CString :: new( "" ) . unwrap( ) ; total_samples as usize ] ;
179257 unsafe {
180258 gd_getdata (
@@ -193,14 +271,13 @@ impl Dirfile {
193271 . collect ( )
194272 }
195273 _ => {
196- // Handle unknown field types.
197274 println ! ( "Unknown field type: {}" , field_type) ;
198275 Vec :: new ( )
199276 }
200277 } ;
201-
278+
202279 data // Return the processed data.
203- }
280+ }
204281}
205282
206283#[ cfg( test) ]
0 commit comments