@@ -17,7 +17,6 @@ use std::{
1717 borrow:: Cow ,
1818 collections:: { HashMap , HashSet } ,
1919 num:: NonZeroU16 ,
20- os:: raw:: c_char,
2120 path:: { Path , PathBuf } ,
2221} ;
2322
@@ -40,6 +39,7 @@ use crate::{
4039 io:: read:: {
4140 fits:: {
4241 fits_get_col, fits_get_optional_key, fits_get_required_key, fits_open, fits_open_hdu,
42+ fits_read_cell_f64_array,
4343 } ,
4444 VisRead , VisReadError ,
4545 } ,
@@ -149,7 +149,7 @@ impl UvfitsReader {
149149 let mut tile_xyzs: Vec < XyzGeodetic > = Vec :: with_capacity ( total_num_tiles) ;
150150 let mut average_xyz = XyzGeocentric :: default ( ) ;
151151 for i in 0 ..total_num_tiles {
152- let fits_xyz = read_cell_array :: < 3 > (
152+ let fits_xyz = fits_read_cell_f64_array :: < 3 > (
153153 & mut uvfits_fptr,
154154 & antenna_table_hdu,
155155 "STABXYZ" ,
@@ -1845,57 +1845,3 @@ impl Indices {
18451845 } )
18461846 }
18471847}
1848-
1849- /// Pull out fits array-in-a-cell values; useful for e.g. STABXYZ. This function
1850- /// assumes that the output datatype is f64, and that the fits datatype is
1851- /// TDOUBLE, so it is not to be used generally!
1852- fn read_cell_array < const NUM_ELEM : usize > (
1853- fits_ptr : & mut fitsio:: FitsFile ,
1854- hdu : & fitsio:: hdu:: FitsHdu ,
1855- col_name : & ' static str ,
1856- row : i64 ,
1857- ) -> Result < [ f64 ; NUM_ELEM ] , UvfitsReadError > {
1858- unsafe {
1859- // With the column name, get the column number.
1860- let mut status = 0 ;
1861- let mut col_num = -1 ;
1862- let keyword = std:: ffi:: CString :: new ( col_name) . expect ( "CString::new failed" ) ;
1863- // ffgcno = fits_get_colnum
1864- fitsio_sys:: ffgcno (
1865- fits_ptr. as_raw ( ) ,
1866- 0 ,
1867- keyword. as_ptr ( ) as * mut c_char ,
1868- & mut col_num,
1869- & mut status,
1870- ) ;
1871- // Check the status.
1872- fits_check_status ( status) . map_err ( |err| UvfitsReadError :: ReadCellArray {
1873- col_name,
1874- hdu_num : hdu. number + 1 ,
1875- err,
1876- } ) ?;
1877-
1878- // Now get the specified row from that column.
1879- let mut array = [ 0.0 ; NUM_ELEM ] ;
1880- // ffgcv = fits_read_col
1881- fitsio_sys:: ffgcv (
1882- fits_ptr. as_raw ( ) ,
1883- 82 , // TDOUBLE (fitsio.h)
1884- col_num,
1885- row + 1 ,
1886- 1 ,
1887- NUM_ELEM . try_into ( ) . expect ( "not larger than i64::MAX" ) ,
1888- std:: ptr:: null_mut ( ) ,
1889- array. as_mut_ptr ( ) . cast ( ) ,
1890- & mut 0 ,
1891- & mut status,
1892- ) ;
1893- fits_check_status ( status) . map_err ( |err| UvfitsReadError :: ReadCellArray {
1894- col_name,
1895- hdu_num : hdu. number + 1 ,
1896- err,
1897- } ) ?;
1898-
1899- Ok ( array)
1900- }
1901- }
0 commit comments